Markov-Chain-Montecarlo

為什麼在某些情況下哈密頓動力學優於 MCMC 中的隨機遊走提議?

  • February 13, 2017

在某些情況下,哈密頓動力學總是優於 Metropolis 算法中的隨機遊走。有人可以用簡單的單詞解釋原因而無需太多數學嗎?

首先,讓我聲明,我不相信 HMC(哈密頓蒙特卡洛)的接受率總是高於 Metropolis 算法。正如@JuhoKokkala 所指出的,Metropolis 的接受率是可調的,高接受率並不意味著您的算法在探索後驗分佈方面做得很好。如果您只使用極窄的提案分佈(例如用一個非常小的),您將獲得極高的接受率,但這只是因為您基本上總是停留在同一個地方,而沒有探索完整的後驗分佈。

我認為您真正要問的是(如果我是對的,請相應地編輯您的問題)是為什麼 Hamiltonian Monte Carlo(在某些情況下)比 Metropolis 具有更好的性能。“更好的性能”是指,對於許多應用程序,如果您將 HMC 生成的鏈與等長(相同數量的樣本) 鏈由 Metropolis 算法生成,HMC 鏈比 Metropolis 鏈更早達到穩定狀態,為負對數似然找到較低的值(或相似的值,但迭代次數較少),有效樣本量較小,樣本的自相關隨著滯後等原因衰減得更快。

我將嘗試說明為什麼會發生這種情況,而不會過多地討論數學細節。因此,首先回想一下,MCMC 算法通常可用於計算函數(或更多函數)的高維積分(期望) 關於目標密度,特別是當我們沒有辦法直接從目標密度中採樣時:

在哪裡是向量參數和依賴,並且是參數空間。現在,在高維中,對上述積分貢獻最大的參數空間的體積不是模態的鄰域(即,它不是圍繞 MLE 估計的狹窄體積),因為這裡很大,但是體積很小。

例如,假設您要計算一個點的平均距離從起源,當它的坐標是具有零均值和單位方差的獨立高斯變量時。那麼上面的積分就變成了:

現在,目標密度顯然在 0 處有一個最大值。但是,通過更改為球坐標並引入,您可以看到被積函數與. 這個函數顯然在離原點一定距離處有一個最大值。裡面的區域對積分值貢獻最大的稱為典型集,對於這個積分,典型集是一個半徑為球殼的球殼。.

現在可以證明,在理想條件下,MCMC 生成的馬爾可夫鏈首先收斂到典型集合中的一點,然後開始探索整個集合,最後繼續探索集合的細節。在這樣做的過程中,期望的 MCMC 估計變得越來越準確,偏差和方差隨著步數的增加而減小。

然而,當典型集合的幾何形狀很複雜時(例如,如果它在二維上有一個尖點),那麼標準的隨機遊走 Metropolis 算法在探索集合的“病態”細節方面有很多困難。它傾向於隨機“繞過”這些區域,而不去探索它們。在實踐中,這意味著積分的估計值傾向於圍繞正確值振盪,並且以有限的步數中斷鍊將導致嚴重偏差的估計。

哈密​​頓蒙特卡羅試圖克服這個問題,通過使用目標分佈中包含的信息(在其梯度中)來通知新樣本點的提議,而不是簡單地使用與目標無關的提議分佈。所以,這就是為什麼我們說 HMC 使用目標分佈的導數來更有效地探索參數空間。然而,目標分佈的梯度本身並不足以告知提案步驟。如隨機點到原點的平均距離的例子,目標分佈的梯度本身就將我們引向分佈的眾數,但眾數周圍的區域不一定是對上述積分貢獻最大的區域,即它不是典型集合。

為了得到正確的方向,我們在 HMC 中引入了一組輔助變量,稱為動量變量。物理模擬可以在這裡提供幫助。圍繞行星運行的衛星,只有在其動量具有“正確”值的情況下才會保持在穩定的軌道上,否則它要么漂流到空曠的空間,要么被萬有引力拖向行星(這裡扮演角色目標密度的梯度,它“拉”向模式)。同樣,動量參數的作用是將新樣本保持在典型集合內,而不是讓它們向尾部或模式漂移。

這是 Michael Betancourt 的一篇非常有趣的論文的一個小總結,該論文在沒有過多數學的情況下解釋了哈密頓蒙特卡洛。您可以在此處找到更詳細的論文。

IMO,這篇論文沒有詳細介紹的一件事是,HMC 何時以及為什麼會比隨機遊走 Metropolis 做得更糟。這不會經常發生(以我有限的經驗),但它可能會發生。畢竟,你引入了梯度,它幫助你在高維參數空間中找到自己的方式,但你也使問題的維度加倍。從理論上講,由於維數增加而導致的減速可能會克服利用梯度帶來的加速。此外(這在論文中有所介紹)如果典型集合具有高曲率區域,HMC 可能會“過衝”,即它可能會開始在尾部很遠的地方採樣無用的點,這對預期沒有任何貢獻。然而,這會導致辛積分器的不穩定性,辛積分器在實踐中用於實現數值 HMC。因此,這種問題很容易被診斷出來。

引用自:https://stats.stackexchange.com/questions/261571

comments powered by Disqus