主講人 網絡上的尼采
(新浪微博: @Nietzsche_復雜網絡機器學習)
網絡上的尼采(813394698) 9:05:00
今天的主要內容:Markov Chain Monte Carlo,Metropolis-Hastings,Gibbs Sampling,Slice Sampling,Hybrid Monte Carlo。
上一章講到的平均場是統計物理學中常用的一種思想,將無法處理的復雜多體問題分解成可以處理的單體問題來近似,變分推斷便是在平均場的假設約束下求泛函L(Q)極值的最優化問題,好處在於求解過程中可以推出精致的解析解。變分是從最優化的角度通過坐標上升法收斂到局部最優,這一章我們將通過計算從動力學角度見證Markov Chain Monte Carlo收斂到平穩分布。
先說sampling的原因,因為統計學中經常會遇到對復雜的分布做加和與積分,這往往是intractable的。MCMC方法出現后貝葉斯方法才得以發展,因為在那之前對不可觀測變量(包括隱變量和參數)后驗分布積分非常困難,對於這個問題上一章變分用的解決辦法是通過最優化方法尋找一個和不可觀測變量后驗分布p(Z|X)近似的分布,這一章我們看下sampling的解決方法,舉個簡單的例子:比如我們遇到這種形式,z是個連續隨機變量,p(z)是它的分布,我們求f(z)的期望。如果我們從p(z)中sampling一個數據集z(l),然后再求個平均
來近似f(z)的期望,so,問題就解決了,關鍵是如何從p(z)中做無偏的sampling。
為了說明sampling的作用,我們先舉個EM的例子,最大似然計算中求分布的積分問題,我們在第九章提到了,完整數據的log似然函數是對隱變量Z的積分:
如果Z是比較復雜的分布,我們就需要對Z進行采樣,從而得到:
具體就是從Z的后驗分布中進行采樣。
如果我們從貝葉斯的觀點,把EM參數theta也當成一個分布的話,有下面一個IP算法:
I步,我們無法直接對P(Z|X)取樣,我們可以先對P(theta|X)取樣,然后再對Z的后驗分布進行取樣:
P步,利用上一步對P(Z|X)的取樣,來確定新的參數分布:
然后按這個I步和P步的方式迭代。
接下來我們講sampling methods,為了節省時間,兩個基本的rejection sampling和Importance sampling不講了,這兩種方法在高維下都會失效,我們直奔主題MCMC(Markov Chain Monte Carlo )。蒙特卡洛,是個地中海海濱城市,氣候宜人,歐洲富人們的聚集地,更重要的是它是世界三大賭城之一,用這個命名就知道這種方法是基於隨機的,過會我們會講到。馬爾科夫大神就不用多說了,他當時用自己的名字命名馬爾科夫鏈是預見到這個模型巨大作用。他還有一個師弟叫李雅普洛夫,控制論里面的李雅普洛夫函數說的就是這位,他們的老師叫契比雪夫,都是聖彼得堡學派的。俄國數學家對人類的貢獻是無價的orz
最早的MCMC方法是美國科學家在研制原子彈時算積分發明的。我們先介紹一個最基本的Metropolis方法,這種方法的接受率是:
但有個要求,就是proposal distribution滿足。過程很簡單,我們先找個比較容易采樣的分布即proposal分布,然后從這個分布中取一個樣本Z*,如果
大於1直接接受,如果小於1就接着算出接受率,並且從(0,1)之間取一個隨機數和這個接受率做比較來決定是否接受這個樣本。過會會在Metropolis-Hastings algorithm方法中具體說。下圖是一個簡單的例子,對高斯分布做采樣,綠線是表示接受的步驟,紅線表示拒絕的:
講Metropolis-Hastings方法前,我們先來回顧下馬爾科夫鏈的性質,這個很重要。markov chains最基本的性質就是無后效性,就是這條鏈的下一個節點的狀態由當前節點狀態完全決定:
特定的齊次馬爾科夫鏈可以收斂到平穩分布,也就是經過相當長的一段時間轉移,收斂到的分布和初始值無關,轉移核起着決定的作用。關於馬爾科夫鏈的收斂,我們將介紹一個充分條件:detailed balance細致平穩條件。
先介紹兩個公式,馬爾科夫鏈節點狀態的marginal distribution計算公式,由於無后效性我們可以得到
上面公式的加和結合馬兒科夫鏈的狀態轉移矩陣是比較容易理解。
平穩分布的定義就是下面的形式:
其中是z'到z的轉移概率,上面的公式不難理解,就是轉移后分布不再發生變化。
下面我們給出細致平穩條件的公式:
滿足細致平穩條件就能收斂到平穩分布,下面是推導:
我們把上面細致平穩條件的公式11.40代入公式11.41最左邊,從左朝右推導就是平穩分布的公式11.39。細致平穩條件的好處,就是我們能控制馬爾科夫鏈收斂到我們指定的分布。以后的Metropolis-Hastings方法及改進都是基於這個基礎的。
前面我們提到,Metropolis方法需要先選一個比較容易取樣的proposal distribution,從這個分布里取樣,然后通過接受率決定是否采用這個樣本。一個簡單的例子就是對於proposal distribution我們可以采用Gaussian centred on the current state,其實很好理解,就是上一步節點的值可以做下一步節點需要采樣的proposal distribution即高斯分布的均值,這樣下一步節點的狀態由上一步完全決定,這就是一個馬爾科夫鏈。馬爾科夫鏈有了,我們怎么保證能收斂到目標分布呢?就是前面說的細致平穩條件,我們可以通過設置接受率的形式來滿足這個條件。Metropolis-Hastings接受率的形式:
來自於
,分布q便是proposal distribution。
范濤@推薦系統(289765648) 10:49:15
Zp 是什么?
網絡上的尼采(813394698) 10:52:04
Zp是分布中和z無關的部分。
為了使各位有個形象的理解,我描述一下過程,我們把當做高斯分布的均值,方差是固定的。然后從這個分布取一個樣本就是
,如果
大於1肯定接受,如果小於1,我們便從(0,1)之間取一個隨機數,和這個接受率做比較,如果接受率大於這個隨機數便接受,反之便拒絕。接受率這么設就能滿足細致平穩條件的原因,看這個(11.45)公式:
我們把接受率公式11.44代入上面的公式的左邊,會推出左右兩邊就是細致平穩條件的形式,紅框部分便是細致平穩條件公式11.40的轉移核,書上的公式明顯錯了,上面的這個是勘誤過的。
剛才說了proposal distribution一般采用Gaussian centred on the current state,高斯分布的方差是固定的,其實方差就是步長,如何選擇步長這是一個state of the art問題,步子太小擴散太慢,步子太大,拒絕率會很高,原地踏步。書中的一個例子,當用Gaussian centred on the current state作proposal distribution時,步長設為目標高斯分布的最小標准差最合適:
下面講Gibbs Sampling,Gibbs Sampling其實是每次只對一個維度的變量進行采樣,固定住其他維度的變量,然后迭代,可以看做是Metropolis-Hastings的特例,它的接受率一直是1.
步驟是比較容易理解的,跟上一章的變分法的有相似之處。假設有三個變量的分布,
先固定住z2 z3對z1進行采樣,;
然后固定住z1 z3對z2進行采樣,;
然后是Z3,
如此迭代。
根據Metropolis-Hastings,它的接受率恆為1。看下面的推導:
因為其他維度是固定不變的,所以,代入上式就都約去了,等於1.
最后對於圖模型采用gibbs sampling,條件概率可以根據馬爾科夫毯獲得,下面一個是無向圖,一個是有向圖,藍色的節點是和要采樣的變量有關的其他變量:
關於更多的gibbs sampling的內容可以看MLAPP,里面有blocked gibbs和collapsed gibbs。
剛才提到Metropolis-Hastings對步長敏感,針對這個問題,下面介紹兩個增加輔助變量的方法,這些方法也是滿足細致平穩條件的。先介紹slice sampling,這種方法增加了一個變量U,可以根據分布的特征自動調整步長:
步驟很簡單:在與
之間的這段距離隨機取個值U,然后通過U畫個橫線,然后在包含
並且
這段橫線對z進行隨機采樣,然后按這種方式迭代。圖(b)為了實際中便於操作,有時還需要多出那么一段,因為我們事先不知道目標分布的具體形式,所以包含
並且
這段橫線沒法確定,只能朝外延伸加單位長度進行試,最后會多出來一段,這一點書上並沒有介紹詳細。
下面介紹The Hybrid Monte Carlo Algorithm (Hamiltonian MCMC):哈密頓,神童,經典力學三巨頭之一,這個算法引入了哈密頓動力系統的概念,計算接受率時考慮的是系統的總能量。Hybrid Monte Carlo 定義了勢能和動能兩種能量,它們的和便是系統總能量哈密頓量。先看勢能,分布可以寫成這種形式:
E(z)便是系統的勢能。
另外增加一個變量,狀態變量變化的速率:
系統的動能便是:
總的能量便是:
比如高斯分布的哈密頓量就可表示為:
下面這個公式便是Hybrid Monte Carlo 的接受率:
可以證明 這種接受率是滿足detailed balance條件的。
ORC(267270520) 12:14:03
推薦一本相關的書 Introducing Monte Carlo Methods with R (use R) ,PS:R做MCMC很方便。
贊尼采講的很精彩,學習了,嘿嘿
網絡上的尼采(813394698) 12:36:37
Markov Chain Monte Carlo In Practice(Gilks)這本書也挺不錯。
紅燒魚(403774317) 12:38:06
這本讀研的時候生讀過,非常實用,隨書附帶code
網絡上的尼采(813394698)
最后需要補充的是:判斷MCMC的burn-in何時收斂是個問題,koller介紹了兩種方法,即同一條鏈上設置不同的時間窗做比較,另一種同時跑多條鏈然后作比較。當然也有一條鏈跑到黑的。
PRML讀書會講稿PDF版本以及更多資源下載地址:http://vdisk.weibo.com/u/1841149974