Hamiltonian Monte Carlo:如何理解 Metropolis-Hasting 提議?
我試圖理解哈密頓蒙特卡洛(HMC)的內部工作,但是當我們用 Metropolis-Hasting 提議替換確定性時間積分時無法完全理解部分。我正在閱讀 Michael Betancourt 撰寫的很棒的介紹性論文A Conceptual Introduction to Hamiltonian Monte Carlo,因此我將遵循其中使用的相同符號。
背景
馬爾可夫鏈蒙特卡羅 (MCMC) 的總體目標是近似分佈目標變量.
HMC 的想法是引入一個輔助“動量”變量,結合原始變量這被建模為“位置”。位置-動量對形成擴展的相空間,可以用哈密頓動力學來描述。聯合分佈可以寫成微正則分解:
,
在哪裡表示參數在給定的能量水平上,也稱為典型集。參見論文的圖 21 和圖 22 進行說明。
原始 HMC 程序由以下兩個交替步驟組成:
- 在能級之間執行隨機轉換的隨機步驟,以及
- 沿給定能級執行時間積分(通常通過越級數值積分實現)的確定性步驟。
在論文中,有人認為越級(或辛積分器)具有會引入數值偏差的小誤差。因此,我們不應將其視為確定性步驟,而應將其轉化為 Metropolis-Hasting (MH) 提議,以使該步驟具有隨機性,由此產生的過程將從分佈中產生精確的樣本。
MH提案將執行越級操作的步驟,然後翻轉的勢頭。然後,該提案將被接受,接受概率如下:
問題
我的問題是:
1)為什麼這種將確定性時間積分轉化為 MH 提議的修改取消了數值偏差,從而使生成的樣本完全遵循目標分佈?
2)從物理學的角度來看,能量在給定的能級上是守恆的。這就是為什麼我們能夠使用漢密爾頓方程:
.
從這個意義上說,能量在典型集合上的任何地方都應該是恆定的,因此應該等於. 為什麼存在允許我們構建接受概率的能量差異?
確定性哈密頓軌蹟之所以有用,是因為它們與目標分佈一致。特別是,具有典型能量的軌跡投射到目標分佈的高概率區域。 如果我們可以精確地整合哈密爾頓方程並構造明確的哈密頓軌跡,那麼我們已經有了一個完整的算法,並且不需要任何接受步驟。
不幸的是,除了一些非常簡單的例子之外,我們不能精確地整合漢密爾頓方程。 這就是為什麼我們必須引入辛積分器。辛積分器用於構建我們無法解析求解的精確哈密頓軌蹟的高精度*數值近似。*辛積分器中固有的小誤差導致這些數值軌跡偏離真實軌跡,因此數值軌蹟的投影將偏離目標分佈的典型集合。我們需要引入一種方法來糾正這種偏差。
Hamiltonian Monte Carlo 的最初實現將固定長度軌跡中的最後一點視為提議,然後對該提議應用 Metropolis 接受程序。如果數值軌跡累積了太多的誤差,因此偏離初始能量太遠,那麼這個提議就會被拒絕。換句話說,接受過程會丟棄最終與目標分佈的典型集合相距太遠的提案,因此我們保留的唯一樣本是那些屬於典型集合的樣本。
請注意,我在概念論文中提倡的更現代的實現實際上並不是 Metropolis-Hastings 算法。對隨機軌跡進行採樣,然後從該隨機軌跡中抽取一個隨機點是校正辛積分器引入的數值誤差的更通用方法。Metropolis-Hastings 只是實現這種更通用算法的一種方法,但切片採樣(如在 NUTS 中所做的)和多項式採樣(如目前在 Stan 中所做的)工作得一樣好,甚至更好。但最終的直覺是相同的——我們概率性地選擇具有小數值誤差的點,以確保來自目標分佈的精確樣本。