這是一份貝葉斯機器學習路線圖, 正在不斷更新中. 路線圖由簡短的介紹配以相應的學習資源組成, 讀者不一定要按順序學習, 可以直接定位到自己需要的地方. 很多時候, 我們希望自學某個領域的知識, 學習能力是不差的, 但苦於不知該學哪些, 從何學起, 看什么書/視頻好? 各個概念/知識點之間是怎樣的聯系? 這份路線圖是為解決以上問題而生的, 對於學習貝葉斯機器學習應該十分有幫助. 若您發現錯漏, 歡迎評論指正! 也希望有更多的人願意分享自己所在領域的"學習路線圖"! (注意: 文中部分資源鏈接需要科學上網方可打開)
本文目錄結構如下:
- 核心主題
- 進階主題
- 模型
- 邏輯回歸(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). 當使用了足夠多的中間分布時, 權重的方差會很小, 因此產生了一個精確的邊際似然估計.
變分推斷是基於優化而不是采樣的另一類近似推斷方法. 其基本想法是用一個易處理的近似分布來逼近難處理的后驗分布. 選擇近似分布的參數以使近似分布和后驗分布之間的距離的某些度量(通常使用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)
信念傳播是用於如貝葉斯網絡(Bayes nets) 和馬爾科夫場(Markov random fields) (MRFs)等圖模型的另一類推斷算法. 模型中的變量相互"傳遞消息", 它們總結了關於其他變量的聯合分布的信息. 信念傳播有兩種一般形式:
- 當應用於樹結構圖模型時, BP執行精確的后驗推斷. 有兩種特殊的形式:
- the sum-product algorithm
計算每個單獨變量(以及每一對相鄰變量)的邊際分布. - the max-product algorithm
計算所有變量的最可能的聯合分配
- the sum-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) 提供了對於這個問題的許多洞見, 因為對於有限模型, 后驗分布具有與最大似然估計的分布相似的漸進行為.