這是一份貝葉斯機器學習路線圖, 正在不斷更新中. 路線圖由簡短的介紹配以相應的學習資源組成, 讀者不一定要按順序學習, 可以直接定位到自己需要的地方. 很多時候, 我們希望自學某個領域的知識, 學習能力是不差的, 但苦於不知該學哪些, 從何學起, 看什麼書/視頻好? 各個概念/知識點之間是怎樣的聯繫... ...
這是一份貝葉斯機器學習路線圖, 正在不斷更新中. 路線圖由簡短的介紹配以相應的學習資源組成, 讀者不一定要按順序學習, 可以直接定位到自己需要的地方. 很多時候, 我們希望自學某個領域的知識, 學習能力是不差的, 但苦於不知該學哪些, 從何學起, 看什麼書/視頻好? 各個概念/知識點之間是怎樣的聯繫? 這份路線圖是為解決以上問題而生的, 對於學習貝葉斯機器學習應該十分有幫助. 若您發現錯漏, 歡迎評論指正! 也希望有更多的人願意分享自己所在領域的"學習路線圖"! (註意: 文中部分資源鏈接需要科學上網方可打開)
本文目錄結構如下:
- 核心主題
- 進階主題
- 模型
- 邏輯回歸(Logistic regression)
- 貝葉斯網路(Bayesian networks)
- Latent Dirichlet allocation(LDA)
- 線性動態系統(Linear dynamical systems)
- 稀疏編碼(Sparse coding)
- 貝葉斯非參數
- 高斯過程(Gaussian processes)
- Chinese restaurant process(CRP)
- Hierarchical Dirichlet process
- Indian buffet process(IBP)
- Dirichlet diffusion trees
- Pitman-Yor process
- 採樣演算法
- 摺疊Gibbs採樣(Collapsed Gibbs sampling)
- 哈密爾頓蒙特卡洛(Hamiltonian Monte Carlo)(HMC)
- 切片採樣(Slice sampling)
- 可逆跳躍MCMC(reversible jump MCMC)
- Sequential Monte Carlo(SMC)
- 粒子濾波器(Particle filter)
- 退火重要性採樣(Annealed importance sampling)
- 變分推斷
- 變分貝葉斯(Variational Bayes)
- 平均場近似(Mean field approximation)
- 期望傳播(expectation propagation)
- 信念傳播(Belief propagation)
- 樹結構圖模型
- Sum-product algorithm
- Max-product algorithm
- 非樹結構圖模型
- 迴圈信念傳播(Loopy belief propagation)
- 連接樹演算法(Junction tree algorithm)
- 樹結構圖模型
- 理論
- 無信息先驗(uninformative priors)
- Jeffreys prior
- 最大似然的漸進(asymptotics of maximum likelihood)
- 無信息先驗(uninformative priors)
- 模型
貝葉斯統計是統計的一個分支, 它的特點是把我們感興趣的量(比如統計模型的參數)看作隨機變數. 給定觀察數據後, 我們對這些量的後驗分佈進行分析從而得出結論. 雖然貝葉斯統計的核心思想已經歷經很多年了, 但貝葉斯的思想在過去近20年對機器學習產生了重大影響, 因為它在對真實世界現象建立結構化模型時提供了靈活性. 演算法的進步和日益增長的計算資源使得我們可以擬合豐富的, 高度結構化的模型, 而這些模型在過去是很棘手的.
這個路線圖旨在給出貝葉斯機器學習中許多關鍵思想的指引. 如果您正考慮在某些問題中使用貝葉斯方法, 您需要學習"核心主題"中的所有內容. 即使您只是希望使用諸如 BUGS, Infer.NET, 或 Stan等軟體包, 這些背景知識也對您很有幫助. 如果這些軟體包不能馬上解決您的問題, 知道模型的大致思想可幫助您找出問題所在.
如果您正考慮研究貝葉斯機器學習, 那麼許多論文會假設您已經掌握了核心主題的內容以及部分進階主題的內容, 而不再給出參考文獻. 閱讀本路線圖時, 我們不需要按順序學習, 希望本文可以在您需要時為您提供幫助.
核心主題
這一章覆蓋了貝葉斯機器學習的核心概念. 如果您希望使用這些工具, 建議您學習本章的所有內容.
中心問題
什麼是貝葉斯機器學習? 一般來說, 貝葉斯方法旨在解決下麵給出的某一個問題:
- 參數估計(parameter estimation)
假設您已經建好了一個統計模型, 並且希望用它來做預測. 抑或您認為模型中的參數很有意義, 所以希望擬合這些參數來學習到某些東西. 貝葉斯方法是在給定觀察數據後, 去計算或者近似這些參數的後驗分佈.
- 您通常會希望使用訓練好的模型來作出一些決策行為. 貝葉斯決策理論(Bayesian decision theory)提供了選擇行為的一個框架.
- 模型比較(model comparison)
您可能有許多個不同的候選模型, 那麼哪一個是最貼切給定數據的呢? 一種常見的情形是: 您有一些形式相同但複雜度不同的模型, 並且希望在複雜度和擬合度間權衡.
- 與選擇單個模型相比, 您可以先為模型定義先驗, 並且根據模型的後驗對預測進行平均. 這便是貝葉斯模型平均(bayesian model averaging).
此外, 貝葉斯網路(Bayesian networks) (Bayes nets)的基礎知識也值得一學, 因為這些符號在討論貝葉斯模型時會經常用到. 由於貝葉斯方法把模型參數也看作隨機變數, 所以我們可以把貝葉斯推斷問題本身表達為貝葉斯網路.
閱讀本章內容會告訴您貝葉斯方法解決什麼問題, 但是沒告訴您一般情況下, 如何真正地解決這些問題. 這是本路線圖剩餘部分將討論的內容.
非貝葉斯方法(Non-Bayesian techniques)
作為背景知識, 瞭解如何使用非貝葉斯方法擬合生成模型是有助於理解的. 這麼做的其中一個理由是: 這些方法更易於理解, 並且一般來說結果已經足夠好了. 此外, 貝葉斯方法跟這些方法存在一些相似性, 學習這些方法後, 通過類比可以幫助我們學習貝葉斯方法.
最基礎的, 您需要明白 泛化(generalization)的符號, 或者知道一個機器學習演算法在未知數據上表現如何. 這是衡量機器學習演算法的基礎. 您需要理解以下方法:
- 最大似然(maximum likelihood)
擬合模型參數的準則. - 正則化(regularization)
防止過擬合的方法. - EM演算法(the EM algorithm)
為每個數據點都有與之相關聯的潛在變數(未觀測變數)的生成模型擬合參數.
基本推斷演算法
一般來說, 貝葉斯推斷需要回答的問題是: 給定觀察數據後, 推斷關於模型參數(或潛在變數(latent variables))的後驗分佈. 對於一些簡單模型, 這些問題擁有解析解. 然而, 大多數時候, 我們得不到解析解, 所以需要計算近似解.
如果您需要實現自己的貝葉斯推斷演算法, 以下可能是最簡單的選擇:
- MAP估計(MAP estimation)
使用最優參數的點估計來近似後驗. 這把積分問題替換為了優化問題. 但這並不代表問題就很簡單了, 因為優化問題本身也常常很棘手. 然而, 這通常會簡化問題, 因為優化軟體包比採樣軟體包更普適(general)也更魯棒(robust). - 吉布斯採樣(Gibbs sampling)
吉布斯採樣是一種迭代的採樣過程, 每一個隨機變數都從給定其他隨機變數的條件分佈中採樣得到. 採樣的結果很有希望是後驗分佈中的一個近似樣本.
您還應該知道下列常用的方法. 他們的一般公式大多數時候都過於寬泛而難以使用, 但是在很多特殊情形下, 他們還是很強大的
- 馬爾科夫鏈蒙特卡洛(Markov chain Monte Carlo)
一類基於採樣的演算法, 這些演算法基於參數的馬爾科夫鏈, 該馬爾科夫鏈的穩態分佈是後驗分佈.
1.特別的, Metropolis-Hastings (M-H)演算法是一類實用的構建有效MCMC鏈的方法. 吉布斯採樣也是M-H演算法的特例. - 變分推斷(Variational inference)
嘗試用易於處理的分佈去近似難以處理的分佈. 一般來說, 易處理分佈的參數通過最小化某種度量指標來選擇, 這個度量指標衡量了近似分佈和真實分佈之間的距離.
模型
以下是一些簡單的生成模型, 這些模型常常運用貝葉斯方法.
- 混合高斯(mixture of Gaussians)
混合高斯模型中, 每個數據點屬於若幹簇或者群組中的其中一個, 每個簇中的數據點都服從高斯分佈. 擬合這樣一個模型可以讓我們推斷出數據中有意義的分組情況. - 因數分析(factor analysis)
因數分析中, 每個數據點被更低維度的線性函數近似表達. 我們的想法是, 潛在空間(latent space)中每個維度對應一個有意義的因數, 或者數據中變化的維度. - 隱馬爾科夫模型(hidden Markov models)
隱馬爾科夫模型適用於時間序列數據, 其中有一個潛在的離散狀態隨著時間的推移而演變.
雖然貝葉斯方法大多數時候與生成模型相聯繫, 但它也可以被用於判別模型的情況. 這種情形下, 我們嘗試對已知觀測數據時目標變數的條件分佈直接進行建模. 標準的例子是貝葉斯線性回歸(Bayesian linear regression).
貝葉斯模型比較
推斷演算法的小節為我們提供了近似後驗推斷的工具. 那麼比較模型的工具是什麼呢? 不幸的是, 大多數模型比較演算法相當複雜, 在您熟悉下麵描述的高級推理演算法前, 您可能不想自己實現它們. 然而, 有兩個相當粗略的近似模型比較是較為容易實現的.
貝葉斯信息準則(Bayesian information criterion )(BIC)
貝葉斯信息準則簡單地使用MAP解並添加一個罰項, 該罰項的大小正比於參數的數量.-
使用均值與真實後驗分佈MAP相同的高斯分佈對後驗分佈進行近似.
進階主題
本章將討論貝葉斯機器學習中更進階的主題. 您可以以任何順序學習以下內容
模型
在"核心主題"一章中, 我們列出了一些常用的生成模型. 但是大多數的數據集並不符合那樣的結構. 貝葉斯建模的強大之處在於其在處理不同類型的數據時提供了靈活性. 以下列出更多的模型, 模型列出的順序沒有特殊意義.
- 邏輯回歸(logistic regression)
邏輯回歸是一個判別模型, 給定輸入特征後, 對二元目標變數進行預測. - 貝葉斯網路(Bayesian networks) (Bayes nets).
概括地說, 貝葉斯網路是表示不同隨機變數間概率依賴關係的有向圖, 它經常被用於描述不同變數間的因果關係. 儘管貝葉斯網路可以通過非貝葉斯方法學習, 但貝葉斯方法可被用於學習網路的 參數(parameters) 和 結構(structure)(網路中的邊)
- 線性高斯模型(Linear-Gaussian models)是網路中的變數都服從聯合高斯的重要特殊情況. 即使在具有相同結構的離散網路難以處理的情況下, 這些網路的推論都常易於處理.
- latent Dirichlet allocation(LDA)
LDA模型是一個"主題模型", 其假定一組文檔(例如網頁)由一些主題組成, 比如電腦或運動. 相關模型包括非負矩陣分解(nonnegative matrix factorization)和 概率潛在語義分析(probabilistic latent semantic analysis) - 線性動態系統(linear dynamical systems)
一個時間序列模型. 其中, 低維高斯潛在狀態隨時間演變, 並且觀察結果是潛在狀態的雜訊線性函數. 這可以被認為是HMM的連續版本. 可以使用卡爾曼濾波器(Kalman filter)和平滑器(smoother)來精確地執行該模型中的判斷. - 稀疏編碼(sparse coding)
稀疏編碼中每一個數據點被建模為從較大的字典中抽取的少量元素的線性組合. 當該模型被應用於自然圖像像素時, 學習的字典類似於主視覺皮層中的神經元的接受欄位. 此外, 另一個密切相關的模型稱為獨立成分分析(independent component analysis).
貝葉斯非參數
上述所有模型都是參數化的, 因為它們是以固定的有限數量的參數表示的. 這是有問題的, 因為這意味著我們需要預先指定一些參數(比如聚類中的簇的數目), 而這些參數往往是我們事先不知道的.
這個問題可能對上述模型看起來並無大礙, 因為對於諸如聚類的簡單模型, 我們通常可以使用交叉驗證來選擇好的參數. 然而, 許多廣泛應用的模型是更為複雜的, 其中涉及許多獨立的聚類問題, 簇的數量可能是少數幾個, 也可能是數千個.
貝葉斯非參數是機器學習和統計學中不斷研究的領域, 通過定義無限複雜的模型來解決這個問題. 當然, 我們不能明確地表示無限的對象. 但是關鍵的觀點是, 對於有限數據集, 我們仍然可以在模型中執行後驗推斷, 而僅僅明確地表示它們的有限部分.
下麵給出一些重要的組成貝葉斯非參數模型的構建模塊:
- 高斯過程(Gaussian processes)
高斯過程是函數上的先驗, 使得在任何有限集合點處採樣的值是服從聯合高斯的. 在許多情況下, 為在函數上賦予先驗, 您需要假設後驗推理是易於處理的. - Chinese restaurant process(CRP)
CRP是無限對象集合的劃分的先驗
- 這常被用於聚類模型, 使得簇的數目無需事先指定. 推理演算法相當簡單且易於理解, 所以沒有理由不使用CRP模型代替有限聚類模型.
- 這個過程可以等價於Dirichlet process.
- Hierarchical Dirichlet process
包含一組共用相同base measure的Dirichlet process, baase measure本身也是從Dirichlet process中選取的. - Indian buffet process(IBP)
IBP無限二進位矩陣的先驗, 使得矩陣的每一行僅具有有限個1. 這是在每個對象可以擁有多個不同屬性時最常用的模型. 其中, 矩陣的行對應於對象, 列對應於屬性, 如果對象具有某屬性, 對應列的元素為1.
- 最簡單的例子可能是IBP linear-Gaussian model. 其中, 觀察到的數據是屬性的線性函數.
- 還可以根據beta process來看IBP過程. 本質上, beta process之於IBP正如Dirichlet process之於CRP.
- Dirichlet diffusion trees
一個分層聚類模型. 其中, 數據點以不同的粒度級別聚類. 即可能存在一些粗粒度的簇, 但是這些簇又可以分解成更細粒度的簇. - Pitman-Yor process
類似於CRP, 但是在聚類大小上有更重尾的分佈(比如冪律分佈). 這說明您希望找到一些非常龐大的簇, 以及大量的小簇. 比起CRP選擇0的指數分佈, 冪律分佈對於許多真實數據有更好的擬合效果.
採樣演算法
從"核心主題"章節, 您已經學習了兩個採樣演算法:Gibbs採樣和Metropolis-Hastings(M-H)演算法. Gibbs採樣涵蓋了很多簡單的情況, 但在很多模型中, 您甚至不能計算更新. 即使對於適用的模型, 如果不同的變數緊密耦合(tightly coupled), 採樣過程也會mix得非常緩慢. M-H演算法是更一般的, 但是M-H演算法的一般公式中沒有提供關於如何選擇提議分佈(proposals)的指導, 並且為實現良好的mix, 通常需要非常仔細地選擇提議分佈.
下麵是一些更先進的MCMC演算法, 這些演算法在特定情形中表現更為良好:
- collapsed Gibbs sampling
變數的一部分在理論上被邊緣化(marginalized)或摺疊(collapsed)掉, 併在剩下的變數上進行Gibbs採樣. 例如, 當擬合CRP聚類模型時, 我們通常將聚類參數邊緣化掉, 並對聚類分配執行Gibbs採樣. 這可以顯著地改善mix, 因為聚類分配和簇參數是緊密耦合的. - Hamiltonian Monte Carlo (HMC)
連續空間中M-H演算法的實例, 其使用對數概率的梯度來選擇更好的探索方向. 這是驅動 Stan的演算法. - slice sampling
一種從一維分佈中採樣的輔助變數方法. 其關鍵賣點是演算法不需要指定任何參數. 因此, 它經常與其他演算法(例如HMC)結合, 否則將需要指定步長參數. - reversible jump MCMC
在不同維度的空間之間構造M-H提議分佈的方式. 最常見的用例是貝葉斯模型平均
雖然在實踐中使用的大多數採樣演算法是MCMC演算法, 但Sequential Monte Carlo(SMC)演算法值得一提. 這是從一系列相關分佈中近似採樣的另一類技術.
- 最常見的例子可能是粒子濾波器(particle filter), 通常應用於時間序列模型的推理演算法. 它每次一步地考慮觀察數據, 並且在每個步驟中, 用一組粒子表示潛在狀態的後驗
- 退火重要性採樣(Annealed importance sampling) (AIS)是另一種SMC方法, 其通過一系列中間分佈從簡單的初始分佈(比如先驗)到難處理的目標分佈(例如後驗)逐漸"退火" 針對每個中間分佈執行MCMC轉換. 由於在初始分佈附近mixing通常更快, 這應該有助於採樣器避免困在局部模式中.
- 演算法計算一組權重, 這些權重亦可被用於 估計邊際似然(estimate the marginal likelihood). 當使用了足夠多的中間分佈時, 權重的方差會很小, 因此產生了一個精確的邊際似然估計.
變分推斷(Variational inference)
變分推斷是基於優化而不是採樣的另一類近似推斷方法. 其基本想法是用一個易處理的近似分佈來逼近難處理的後驗分佈. 選擇近似分佈的參數以使近似分佈和後驗分佈之間的距離的某些度量(通常使用KL散度)最小化.
我們很難對變分推斷和採樣方法之間的折中作出任何一般性的陳述, 因為這些都是一個廣泛的類別, 其中包括了許多特殊的演算法, 既有簡單的又有複雜的. 然而, 有一些一般的經驗規則:
- 變分推斷演算法具有與採樣方法不同的實現困難
- 變分推斷演算法更難, 因為它們需要冗長的數學推導來確定更新規則.
- 然而, 一旦實現, 變分貝葉斯方法可以更容易地被檢驗, 因為可以對優化代碼採用標準檢查(梯度檢查, 局部最優測試等).
- 此外, 大多數變分推斷演算法收斂到(局部)最優解, 這消除了檢查收斂診斷的需要.
- 大多數變分推理分佈的輸出是一個分佈, 而不是樣本.
- 為了回答許多問題, 例如模型參數的期望或者方差, 可以簡單地檢查變分分佈. 相比之下, 採樣方法通常需要收集大量採樣樣本, 這可能需要很大的開銷.
- 然而, 使用變分法, 近似的精度受到近似分佈族的表達能力的限制, 並且近似分佈與後驗分佈有多大不同並不總是那麼明顯. 相反, 如果您運行一個採樣演算法足夠長時間, 最終您會得到較為準確的結果.
這裡給出一些變分推斷演算法的重要例子:
- 變分貝葉斯(variational Bayes)
貝葉斯模型的變分推斷應用, 其中參數的後驗分佈不能精確地表示, 如果模型還包括潛在變數, 則可以使用變分貝葉斯EM演算法(variational Bayes EM) - 平均場近似(mean field approximation)
近似分佈具有特別簡單的形式:假定所有變數是獨立的.
- 平均場也可以根據 凸對偶性(convex duality)來觀察, 這將導出與普通解釋不同的拓展
- 期望傳播(expectation propagation)
對迴圈置信傳播(loopy belief propagation)的一種近似. 它發送近似消息, 這些消息僅代表相關變數的充分統計量的期望.
下麵給出一些使用變分推斷方法的經典例子. 儘管你可能不會直接使用這些模型, 但是它們給出了變分技巧如何更一般地用於貝葉斯模型的指引:
- 線性回歸(linear regression)
- 邏輯回歸(logistic regression)
- 混合高斯(mixture of Gaussians)
- 指數族模型(exponential family models)
信念傳播(Belief propagation)
信念傳播是用於如貝葉斯網路(Bayes nets) 和馬爾科夫場(Markov random fields) (MRFs)等圖模型的另一類推斷演算法. 模型中的變數相互"傳遞消息", 它們總結了關於其他變數的聯合分佈的信息. 信念傳播有兩種一般形式:
- 當應用於樹結構圖模型時, BP執行精確的後驗推斷. 有兩種特殊的形式:
- the sum-product algorithm
計算每個單獨變數(以及每一對相鄰變數)的邊際分佈. - the max-product algorithm
計算所有變數的最可能的聯合分配
- 還可以在不是樹結構的圖中應用相同的消息傳遞規則. 這沒有給出確切的結果, 事實上甚至缺少基本的保證, 例如收斂到固定點, 但通常它在實踐中能很有效. 這通常被稱為迴圈信念傳播(loopy belief propagation), 以區別於樹結構的版本, 但令人困惑的是, 一些研究人員簡單地將其稱為"信念傳播"
- Loopy BP被解釋為一種變分推斷演算法
連接樹演算法(junction tree algorithm)給出了通過定義粗糙的"超變數(super-variables)"來對非樹結構圖應用精確的BP的方法. 定義"超變數"後的圖是樹結構的.
樹上的BP最常見的特殊情況是HMMs的前向-後向演算法(forward-backward algorithm) .卡爾曼平滑(Kalman smoothing)也是前向-後向演算法的一種特例, 因此也是一種BP.
BP在電腦視覺和資訊理論中被廣泛使用, 在這兩個領域中, 推斷問題往往具有規則的結構. 在貝葉斯機器學習中, BP不常被單獨使用, 但是它可以是基於變分或採樣的演算法中的強大組成部分.
理論
最後, 給出貝葉斯方法中的一些理論問題.
- 定義貝葉斯模型需要指定先驗. 如果對於參數沒有較大的先驗信念, 我們可能希望選擇 無信息先驗(uninformative priors). 一個常見的選擇是Jeffreys prior.
- 準確地估計模型中的參數需要多少數據?最大似然的漸進(asymptotics of maximum likelihood) 提供了對於這個問題的許多洞見, 因為對於有限模型, 後驗分佈具有與最大似然估計的分佈相似的漸進行為.