如何才能看得懂變分貝葉斯方法(Variational Bayesian)?
基於概率模型的機器學習的方法,是對ML/MAP/EM等一系列參數估計方法的演進,融入了貝葉斯推理。概率論學的不好看不下去啊。現在對EM的理解還處在一知半解,只會用來做kmeans聚類的程度。
簡單羅列下:指數分布族具有一個最大熵性質,均值參數空間具有凸性,對其上的任意內部點,最小指數族都能找到相應的分布滿足一些性質。所以一般考慮指數族。具體到VB法,E步驟是對隱變數後驗概率的求解,其實質為計算相應的充分統計量,而M步驟為優化對應的參數向量(即參數的變分分布)。這兩者可以看做一組共軛函數之間的最大熵與極大似然的共軛對偶關係。因為這是在指數分布族上的找最優分布,因此稱為變分法。
如果想看variational inference的理論基礎的話,建議lz看Graphical models, exponential families, and variational inference 的第3,5,6章。看完指數分布族,凸優化,共軛對偶,心裡就很有底氣了。
簡單的入門,可以看下我以前寫的文章:變分貝葉斯演算法理解與推導 - Junhao Hua 博客
樓主既然對EM演算法有一些了解,建議就從EM演算法入手。EM演算法講得比較直觀明了的資料,我認為是Andrew NG的machine learning課程的講稿。CS 229: Machine Learning (Course handouts),第八章就是專門講EM演算法的,不長,但是講得很清晰。然後可以再去看一些EM的一些code實現。比如MachineLearning-C---code/main.cpp at master · pennyliang/MachineLearning-C---code · GitHub。熟悉完EM演算法之後,可以去看變分推斷了,關於變分推斷的方法,D.Blei一直在推,最近就寫了一篇文章和一份筆記。筆記在此https://www.cs.princeton.edu/courses/archive/fall11/cos597C/lectures/variational-inference-i.pdf。 文章在此https://arxiv.org/abs/1601.00670。筆記是對文章的總結。再往後就是結合了EM和variational inference的變分EM了,這個可以看香港大學的一份PPT,講得是使用變分EM推導LDA的過程,很詳細。http://www.cse.ust.hk/~lzhang/teach/6931a/slides/lda-zhou.pdf
EM:
作用對象是MLE,方法是拆出latent variables。expectation是指隱變數後驗分布的期望,maximization使似然函數的期望最大。Ref: Ng的講義(CS229 IX)VI:
最典型是用來在EM中E歩確定參數求latent variables後驗分布。基於p(x,z),對含變分參數的分布q,最小化KL散度即最大化ELBO。
平均場假設下,使用坐標上升法得到形式上似Gibbs的:迭代循環求解Ref: Blei的講義(Variational Inference)VB:
同樣在平均場假設下,對每一個參數分布q,用帶超參數的先驗分布改寫,得到相同形式的後驗分布迭代循環求解
Ref: Variational Bayesian methodsp.s.- VB與VI分開寫,並不表示VI與貝葉斯無關,KL divergence推導時用的就是貝葉斯公式
- 因為許多問題是含latent variables,所以VB迭代過程與EM相似,也被叫做VBE歩,VBM歩對應EM中的E歩和M歩
- EM可以看作VB的point-wise近似(可能有over-fitting問題)
- Bayesian approach(包括MCMC)一般是估計分布,而不是做點估計
- conjugate prior × likelihood -&> posterior i.d.
- 期望和似然通過分布統一
Ref: PRML Chapter 10
我想題主指的應該是變分推斷。變分EM只是在EM過程中計算隱變數的後驗分布時使用變分推斷來估計,和變分相關的地方仍然是變分推斷。
如果只是會用kmeans做聚類的程度,那還有很長的路要走,EM演算法是一種對含有不完整信息(如隱變數或者缺失特徵)的模型進行最大似然優化的通用方法。E步是使用上一步的參數,求取隱變數的後驗分布(或者說一些值在這個後驗分布上的期望),M步是利用剛才計算的一些期望(或者叫統計量)來最大化當前的參數。
如果樓主想搞懂變分推斷,請看bishop的prml一書的2,10兩章。第二章是一些常用概率分布的基礎,第10章介紹了變分推斷的方法,主要是mean-field和ep方法。這一章還給了許多具體的實例,最好全都看一下。也可以去參看blei的LDA論文的附錄,其中便是用mean-field做變分推斷的,並且提供了一個完整的LDA變分EM的演算法推導。
注意,一但得到了mean-filed方法的具體公式,剩下的就和變分兩字無關了,只是一些微積分的問題。當然,如題主的情況,並沒有基礎知識(比如只了解過一些具體模型或者閱讀過李航老師的書的同學),那麼請先從頭閱讀prml,認真推導每個公式,完成所有的習題。有些章節對於理解第九章沒有直接用處,但是這個過程可以幫助你熟悉概率分布,貝葉斯估計的思路以及矩陣和向量的運算,同時掌握一些常用的模型(包括它的貝葉斯擴展)。研讀prml是值得的,如果想在這個領域混,最好是徹底掌握。
另外,這個領域用到的數學都是幾門大學必修的數學,概率,統計,線性代數,矩陣論,基本的微積分。基本不涉及高深的數學理論,所以不要害怕,認真踏實的學就能學會。(當然,如果你掌握更深的數學知識,可以更好的完爆這個領域)。關於最優化理論,在貝葉斯學習里,其實不是那麼重要,如果模型參數真的很難優化,你最好是去找相關領域大牛幫你求解。
看下我的變分推斷視頻:
優酷網-中國第一視頻網,提供視頻播放,視頻發布,視頻搜索看到你的問題,最近在學,有一些小感悟,希望可以幫你理解。其實Bayes是做Variational Inference的基礎。
- Inference
為什麼inference這個詞頻繁出現在貝葉斯的學習過程中,以前沒有理解。
這是貝葉斯大道理,大家很熟悉,Z作為latent variable (也就是簡單分布里的參數,如果是複雜一點的模型比如cluster,除了包含均值方差,還包含所屬類別這個隱含參數),X作為observed data variable,目標很明確了,就是要通過X找到Z的後驗分布。machine learning終其一生都在學這個latent variable,但貝葉斯大道理不是必須的。既然是variable,只能用概率分布表達它,所以計算過程都是一些表達式。記住variable是不能脫離其分布概率存在的。
Inference就是這樣一個過程,先有一些不確定的Z,然後在Z下得到一些數據,通過貝葉斯計算他們的概率分布的乘積,推出一個更好的Z。在整個inference的過程里,什麼都是變的,除了 ,它是marginal distribution,理解為normalization 因子,或model evidence。Variational Inference 只是做inference的一種方法,關於它還有很多種,相對立的可以歸類成Deterministic Inference,比如Expectation Propagation(EP)。
- Variational
它定義了我們的方法,就是變化著來的。主要通過不斷的推理把不確定的Z推向最接近真實世界的Z。關於variation想多講一點entropy,熵,提他就得順便提泛函,但基於我沒有上過泛函課,只能說一些淺薄的理解。之前說的貝葉斯大道理里,都是表達式,也就是function,要得到一個function ,代入的也是function 和 ,這相當於比平時用數代入一個function得到另一個數 高出了一個維度,也就成了泛函,functional。目的相應也變成了:觀察整個function(在這裡是概率分布,比如,是帶Z1的分布好還是帶Z2的分布好)。entropy的表達式是
看的是概率分布function p怎麼樣,是個functional,樣子很Expectation,很像平時求的期望 ,但這裡這個只是function。
Variational用來optimize Z 的方法,就是一個functional的東西,KL divergence(Kullback-Leibler)。(圖片來 Bishop 「Pattern Recognition and Machine Learning )
藍框里的兩項分別是 lower bound (LB)和 KL divergence,注意 和 是不一樣的,EP就是用的後者,用gradient 來直接minimize ,涉及到Exponential family,但我還沒有仔細研究EP。可以看出LB 和KL 的形式都和entropy 有關。q是我們用來approximate p 的簡單不確定的分布,KL divergence 是用來描述q 和p 之間差距的functional 。由於p(X)不變,兩項和也不變。optimization的過程就是讓q 儘可能接近p,即減小 KL divergence,同時增大lower bound。但減小KL divergence的過程中牽扯到我們要infer的 (公式10.4里),通常情況下intractable,除非用於表達 的prior和likelihood有共軛屬性(共軛簡言之就是prior的分布 乘上likelihood的分布 ,得到的post 的分布形式,還是和prior一樣)。
所以這裡我們選擇增大 lower bound 來做優化,因為lower bound表達式10.3里的 可以直接獲得,不需要infer。具體怎麼得出以上(10.2)公式的,推導如下:
可以看到為了區分Z 的前驗(簡單不確定分布)和後驗,把p(Z) 換成了q(Z),整個推理過程沿用貝葉斯大道理,這個式子就是EM來的,用來做clustering。EM 就是一個不斷增大lower bound 的演算法,lower bound 的表達式是Expectation的樣子(學名是 expectation of complete -data log likelihood with respect to the posterior distribution of the latent variables。。。),不同點就是少一個normalization 因子。所以第一步是算Expectation,拿上一個不確定的z算出lower bound,第二步Maximize lower bound (expectation),用優化演算法得到一個新的Z,再循環。 z代表latent variable,也就是隱含的類別參數, 代表分布參數,如果是高斯分布的話就代表均值和方差兩個量。
所以inference 和 Bayesian,本來就分不開的。
用簡單分布去逼近複雜分布,計算效率提高,但是效果沒有太好
coding and reading and actually go over the math step by step
吐槽一句:你都知道這玩意用概率,你說你不好看不進去,然後你在這問什麼問啊,你咋不去補概率的知識啊?
心平氣和的說,ML裡面的知識大學的時候幾乎都沒教過,都是後來自己摸索著看的,這看懂了之後才有滿足感呢。祝你好運!剛看完prml的8(圖模型),9(EM),10(變分推斷)章。還有徐亦達老師的視頻。這些資料都很贊!
個人感覺,理解和認識一個東西,是個辨析判斷的過程,為什麼貓是貓,不是狗。所以,下面分享一張我基於混合高斯分布的例子比較EM解法和變分推斷解法的筆記。
注意兩者的概率圖模型的區別。EM中"已知"的參數(實心點表示)在變分中是未知的變數(空心圏表示),變分中」已知」的量是其引入的超參。
因為是筆記,所以信息量簡略。如果是新手,還請老老實實地看我第一句中推薦的資料,再看這筆記。
不知道這裡面的書對題主能否帶來幫助,
PDF下載|Bayesian Methods for Repeated Measures|@英國流行每日速遞
This book is intended to be a textbook for graduate students in statistics (including biostatistics) and as a reference for consulting statisticians. It will be an invaluable resource especially for those involved in biostatistics, where use of repeated measures is common.
PDF下載| Bayesian Networks|@英國流行每日速遞
This book deals with the theory and algorithms for learning and probabilistic inference in Bayesian networks. This book also provides selected applications of Bayesian networks in several fields, including adaptive risk management, operational risk analysis, rangeland management and resiliency and interdependency of critical urban infrastructure. The book chapters are original manuscripts written by experienced researchers that have made significant contributions to the field of Bayesian networks.
更多書可以搜索查找。
看不下去就不用看啦, 。。。。。 , 反正大多數的圖模型都是騙人的
推薦閱讀:
※線性可分的數據集下,感知機模型是否是凸優化問題?
※「過擬合」的嚴格定義是什麼?
※在利用支持向量機進行分類的時候怎麼選擇合適的核函數?
※除了 arxiv.org, 機器學習與數據挖掘相關在哪可以閱讀比較專業的文獻?
※如何有效的區分和理解RNN循環神經網路與遞歸神經網路?