posteriordb: Testing, Benchmarking andDeveloping Bayesian Inference Algorithms
posteriordb:貝葉斯推理算法的測(cè)試、基準(zhǔn)測(cè)試與開發(fā)
https://arxiv.org/pdf/2407.04967
摘要
推理算法的通用性和魯棒性對(duì)于當(dāng)前廣泛使用的概率編程語言(如 Stan、PyMC、Pyro 和 Turing.jl)的成功至關(guān)重要。在設(shè)計(jì)新的通用推理算法時(shí),無論是涉及蒙特卡洛采樣還是變分近似方法,都會(huì)面臨一個(gè)根本性問題:如何評(píng)估其在一系列代表性目標(biāo)模型上的準(zhǔn)確性和效率。為了解決這個(gè)問題,我們提出了posteriordb2,這是一個(gè)包含模型和數(shù)據(jù)集的數(shù)據(jù)庫,用于定義目標(biāo)密度函數(shù),并附帶參考的蒙特卡洛抽樣結(jié)果。我們還進(jìn)一步提供了使用 posteriordb 進(jìn)行模型評(píng)估和比較的最佳實(shí)踐指南。為了提供廣泛且真實(shí)的目標(biāo)密度函數(shù),posteriordb 目前包含了 120 個(gè)代表性模型,并已在多個(gè)通用推理算法的開發(fā)中發(fā)揮了重要作用。
1 引言
posteriordb 軟件包的開發(fā)旨在解決在概率編程語言(PPL)中常見的一類概率推理算法的評(píng)估問題。在本節(jié)中,我們將回顧這一問題的重要性以及我們通過 posteriordb 解決該問題的方法。
概率編程語言概率編程語言(PPL)是一種(通常是嵌入式的)面向概率建模的領(lǐng)域特定編程語言。在過去三十年中,概率編程語言吸引了數(shù)十萬名用戶。這些框架使用戶能夠靈活地指定涉及數(shù)據(jù)和未知參數(shù)的模型,并提供基于數(shù)據(jù)的通用概率推理功能(例如參數(shù)估計(jì)、事件概率估計(jì)、預(yù)測(cè)推理)。根據(jù)學(xué)術(shù)論文引用情況,PPL 已經(jīng)幾乎被應(yīng)用于應(yīng)用統(tǒng)計(jì)學(xué)和機(jī)器學(xué)習(xí)的各個(gè)領(lǐng)域,包括物理、生物與社會(huì)科學(xué)、醫(yī)學(xué)、工程、教育、金融和娛樂等行業(yè)。目前最廣泛使用的 PPL(根據(jù)文獻(xiàn) [51] 的統(tǒng)計(jì))包括 Stan [10]、Tensorflow Probability [15]、PyMC [48]、Pyro [6]、JAGS [40] 和 Turing.jl [53]。
PPL 支持統(tǒng)計(jì)模型的開發(fā)與編程,并提供通用推理以支持下游應(yīng)用。對(duì)于上述列出的 PPL 來說,這一過程是以“黑盒”方式進(jìn)行的,僅依賴于模型的對(duì)數(shù)密度及其梯度,而不是模型的具體結(jié)構(gòu)。給定一個(gè)關(guān)于未知參數(shù) θ 和觀測(cè)數(shù)據(jù) y 的(不一定是歸一化的)聯(lián)合概率模型 p(y, θ),我們通常的主要興趣是基于 θ 估計(jì)期望值,例如參數(shù)估計(jì)、事件概率或預(yù)測(cè)。一開始,我們使用 PPL 的語法來指定一個(gè)非歸一化的聯(lián)合模型 p(θ, y)。在給定數(shù)據(jù) y 的情況下,貝葉斯定理告訴我們感興趣的后驗(yàn)分布正比于聯(lián)合密度,可以分解為似然乘以前驗(yàn),即 p(θ | y) ∝ p(θ, y) = p(y | θ)·p(θ)。利用后驗(yàn)密度,我們可以計(jì)算新數(shù)據(jù) ? 的后驗(yàn)預(yù)測(cè)分布 p(? | y),估計(jì)事件概率 Pr[θ ∈ E],以及將參數(shù)估計(jì)為 E[θ | y] [19]。
在大多數(shù)情況下,計(jì)算 p(θ|y) 是解析上難以處理的,因此我們無法直接獲得后驗(yàn)分布。PPL 則使用近似推理算法來解決這個(gè)問題。
近年來,研究興趣集中在適用于多種模型的“黑盒”推理算法上。已經(jīng)提出了幾種這樣的推理算法,如哈密頓蒙特卡洛(HMC,Hamiltonian Monte Carlo)[HMC, 37, 22]、變分推理(VI,Variational Inference)[VI, 24, 42, 7]、拉普拉斯近似(Laplace Approximations,LA)[55, 47, LA],以及這些方法的各種改進(jìn)和變體 [1, 14, 63, 33, 60]。這些黑盒推理算法具有不同的性質(zhì)。HMC 以及其他馬爾可夫鏈蒙特卡洛(MCMC)方法,在許多情況下會(huì)在總變差距離下收斂到真實(shí)后驗(yàn) [54]。但 MCMC 算法通常計(jì)算成本較高。另一方面,VI 和 LA 可能計(jì)算成本較低,但在估計(jì)后驗(yàn)期望時(shí)往往引入偏差 [61],從而在準(zhǔn)確性和計(jì)算成本之間形成權(quán)衡。
posteriordb 鑒于不同的推理算法和 PPL 實(shí)現(xiàn)、算法改進(jìn)、初始化方式及一般性優(yōu)化手段,要判斷這些提出的方法之間的優(yōu)劣變得頗具挑戰(zhàn)。通常,新的方法只在少量后驗(yàn)分布上進(jìn)行評(píng)估,這使得我們難以了解特定推理算法在整體上的表現(xiàn)如何。在開發(fā)和維護(hù) PPL 與推理算法時(shí),理想情況下,我們希望測(cè)試它們是否在大量后驗(yàn)分布上都能按預(yù)期運(yùn)行。在開發(fā)新算法時(shí),我們也希望評(píng)估其性能,從而了解哪些后驗(yàn)分布上算法表現(xiàn)良好,哪些地方存在失敗風(fēng)險(xiǎn)。最后,我們希望對(duì)提出的算法進(jìn)行基準(zhǔn)測(cè)試,以評(píng)估新提出的方法相較于已有方法的表現(xiàn)。
我們介紹posteriordb,這是一個(gè)旨在輔助算法和 PPL 開發(fā)的數(shù)據(jù)庫,用于測(cè)試、性能評(píng)估和基準(zhǔn)測(cè)試。為了實(shí)現(xiàn)這一目標(biāo),posteriordb 包含了數(shù)百個(gè)后驗(yàn)分布、模型、數(shù)據(jù)集以及參考后驗(yàn)結(jié)果,且存儲(chǔ)結(jié)構(gòu)簡(jiǎn)單(見圖1和圖2)。該數(shù)據(jù)庫還包括論文引用、后驗(yàn)細(xì)節(jié)、模型和數(shù)據(jù)的元信息,以便簡(jiǎn)化性能分析。posteriordb 是一個(gè)完全開放的后驗(yàn)數(shù)據(jù)庫,我們鼓勵(lì)貢獻(xiàn)者分享他們的后驗(yàn)分布和模型,尤其是那些更復(fù)雜的后驗(yàn)。目前,posteriordb 已經(jīng)被用于多項(xiàng)關(guān)于后驗(yàn)近似的相關(guān)研究 [例如:14, 62, 2, 29]。
在此之前,有關(guān)收集模型和數(shù)據(jù)集的工作主要集中在某些特定類型的子類模型上。例如因果結(jié)構(gòu)圖模型 [43] 和貝葉斯神經(jīng)網(wǎng)絡(luò) [56]。此外,大多數(shù)流行的 PPL 當(dāng)前也提供了示例模型用于比較和評(píng)估目的,比如 Stan [50]、BUGS 和 JAGS [30, 40]、PyMC(3) [48]、(Num)Pyro [6, 39]、Turing.jl [53]、ADMB/TMB [35] 和 NIMBLE [12] 等等,還有像 emcee [18] 這樣不依賴 PPL 或梯度的黑盒 MCMC 軟件包。一些用于更通用基準(zhǔn)測(cè)試的小型后驗(yàn)集合包括 Inference Gym [49] 和 PPLbench [41, 27]。這些后驗(yàn)中的許多也被包含在 posteriordb 中。
第2節(jié)介紹了后驗(yàn)倉庫的主要用途。第3節(jié)介紹 posteriordb 及其使用方式。第4節(jié)描述了一個(gè)使用 posteriordb 評(píng)估 Pathfinder 算法 [65] 的實(shí)例。第5節(jié)總結(jié)全文。
2 貝葉斯后驗(yàn)數(shù)據(jù)庫的使用場(chǎng)景
盡管我們可能對(duì)許多不同的期望感興趣,但通常的關(guān)注點(diǎn)集中在參數(shù)以及預(yù)測(cè)變量的均值、方差和尾部分位數(shù)上,這些預(yù)測(cè)變量是通過對(duì)參數(shù)和數(shù)據(jù)的變換定義的(例如后驗(yàn)預(yù)測(cè)和事件概率預(yù)測(cè))。
評(píng)估一個(gè)推理算法的性能并不簡(jiǎn)單。從總體角度來看,我們可以從以下三個(gè)方面來評(píng)估推理算法的表現(xiàn),而所有這些方面都可以使用 posteriordb 中的目標(biāo)模型來進(jìn)行度量:
準(zhǔn)確性(Accuracy)該算法對(duì)目標(biāo)密度的近似程度如何?(例如使用 KL 散度、平方誤差、Wasserstein 距離等指標(biāo))
效率(Efficiency)該算法的計(jì)算成本是多少?(包括時(shí)間消耗、浮點(diǎn)運(yùn)算次數(shù)、梯度評(píng)估次數(shù)、內(nèi)存占用、功耗等)
通用性(Generality)該算法能夠在哪些類型的后驗(yàn)分布和后驗(yàn)推理問題上運(yùn)行?其在準(zhǔn)確性和效率方面的表現(xiàn)如何?
2.1 測(cè)試算法及其實(shí)現(xiàn)
對(duì)后驗(yàn)推理算法的測(cè)試比標(biāo)準(zhǔn)的軟件測(cè)試 [16] 更具挑戰(zhàn)性,并且與功能測(cè)試(functional testing)[25] 有相似之處。在測(cè)試后驗(yàn)推理算法時(shí),尤其是那些漸近無偏的算法(如 MCMC 和 HMC),通常關(guān)注的是后驗(yàn)期望的估計(jì)。
表示某個(gè)期望值的平方近似誤差。那么,后驗(yàn)的邊緣均值和方差具有一個(gè)優(yōu)勢(shì):如果它們是有限的,則可以使用馬爾可夫鏈中心極限定理來評(píng)估推理算法的表現(xiàn) [23]。如果算法運(yùn)行正常,近似誤差的速率隨迭代次數(shù)增加而減小。因此,我們可以使用高質(zhì)量的參考后驗(yàn)近似來進(jìn)行測(cè)試;詳見第3.3節(jié)。
一種“可測(cè)試正確”的算法生成的樣本其邊緣分布符合目標(biāo)密度,因此可用于評(píng)估推理算法。獨(dú)立采樣器是可測(cè)試正確的,而在某些可驗(yàn)證假設(shè)下(例如幾何遍歷性 [44]),有限時(shí)間內(nèi)運(yùn)行的 MCMC 方法也是可測(cè)試正確的。然而,在面對(duì)具有復(fù)雜幾何結(jié)構(gòu)的后驗(yàn)密度時(shí),計(jì)算資源的限制可能導(dǎo)致 MCMC 在有限運(yùn)行時(shí)間內(nèi)的精度較低。例如,盡管在理論上具有漸近保證,隨機(jī)游走 Metropolis、Gibbs 和 HMC 在有限時(shí)間內(nèi)都無法對(duì)“漏斗密度”(funnel density)進(jìn)行有效采樣 [36],這是因?yàn)樵诼┒返摹翱凇焙汀邦i”部分條件較差且變化劇烈 [38, 32]。
盡管如此,我們有兩種方式可以走出這一困境。第一種方法是對(duì)模型進(jìn)行重新參數(shù)化,從而可以在漏斗示例中進(jìn)行獨(dú)立抽樣。第二種方法是從有限時(shí)間內(nèi)估計(jì)期望的角度出發(fā),評(píng)估混合效果差甚至漸近有偏的算法的實(shí)際表現(xiàn)如何。
就評(píng)估的可靠性而言,最佳做法是使用解析已知的期望值,這在許多情況下是可以推導(dǎo)出來的(例如,漏斗模型中的所有均值參數(shù)都為零)。次優(yōu)的做法是采用獨(dú)立抽樣,因?yàn)槠錁?biāo)準(zhǔn)誤是已知的。最不得已的做法是使用 MCMC 抽樣,并嘗試驗(yàn)證結(jié)果是否正確(例如通過基于仿真的校準(zhǔn) [52, 34]),然后對(duì)其進(jìn)行稀釋(thinning),直到大致獨(dú)立為止。
盡管后驗(yàn)期望是我們關(guān)注的主要統(tǒng)計(jì)量,但為了更全面地評(píng)估后驗(yàn)的一般性質(zhì),也可以使用各種分布之間的差異度量,例如 Wasserstein 距離 [59, 11]、最大均值差異(MMD)[20] 或 Pareto- k? 診斷指標(biāo) [58]。
為了評(píng)估準(zhǔn)確性,我們建議以下幾種方法:
- RMSE(均方根誤差):將感興趣的后驗(yàn)矩與參考后驗(yàn)的真實(shí)解析矩或通過可信算法及高計(jì)算預(yù)算獲得的高精度矩估計(jì)進(jìn)行比較;
- Wasserstein 散度:衡量近似分布與真實(shí)后驗(yàn)之間的距離;
- 最大均值差異(MMD):衡量近似分布與真實(shí)后驗(yàn)之間的差異;
一些推理算法,如變分推理或拉普拉斯近似,在大多數(shù)應(yīng)用中是有偏的(即期望誤差不為零)。這些方法還可能因直接建模協(xié)方差矩陣而導(dǎo)致問題維度爆炸。因此,對(duì)于這些算法來說,評(píng)估其對(duì)真實(shí)后驗(yàn)的近似程度變得尤為重要。同樣地,我們可以使用后驗(yàn)期望或更全面的方法來判斷其準(zhǔn)確性。
當(dāng)測(cè)試后驗(yàn)推理算法的正確性和準(zhǔn)確性時(shí),擁有一組易于運(yùn)行的多樣化后驗(yàn)分布可以大大簡(jiǎn)化任務(wù)。posteriordb 提供了不同形狀、規(guī)模和幾何結(jié)構(gòu)(因而難度各異)的后驗(yàn)分布,使得開發(fā)者能夠在廣泛的現(xiàn)實(shí)場(chǎng)景中掌握算法的表現(xiàn)。
在測(cè)試后驗(yàn)參數(shù)估計(jì)時(shí),評(píng)估參數(shù)平方的估計(jì)是一個(gè)良好的實(shí)踐。準(zhǔn)確估計(jì)參數(shù)平方是有用的,因?yàn)樗峭ㄟ^公式 var[θ]=E[θ2]?E2[θ]來估計(jì)方差所必需的部分。像 HMC 這樣的算法可能在估計(jì)參數(shù)期望方面表現(xiàn)極佳,但在估計(jì)參數(shù)平方方面卻表現(xiàn)不佳。
2.2 新算法的開發(fā)
后驗(yàn)分布倉庫的第二個(gè)使用場(chǎng)景是新后驗(yàn)近似算法的開發(fā)。在開發(fā)新的推理方法時(shí),某些算法可能在一些后驗(yàn)分布上表現(xiàn)良好,而在其他后驗(yàn)上則失敗。例如,HMC 在處理“漏斗型”(funnel-shaped)后驗(yàn)時(shí)存在困難,而正態(tài)近似方法則在后驗(yàn)大致為多元正態(tài)分布時(shí)效果最佳。
我們希望了解一個(gè)新的算法在哪種類型的后驗(yàn)分布上表現(xiàn)良好,在哪種情況下會(huì)失效。因此,許多不同的后驗(yàn)分布既可以用于發(fā)現(xiàn)未知的失敗情況,也可以用來展示預(yù)期中的難點(diǎn)。
在開發(fā)后驗(yàn)近似算法時(shí),一個(gè)更重要的方面是準(zhǔn)確性和計(jì)算成本之間的權(quán)衡。評(píng)估后驗(yàn)近似算法的計(jì)算性能可以是與實(shí)現(xiàn)相關(guān)(implementation-dependent)或與實(shí)現(xiàn)無關(guān)(implementation-independent)的指標(biāo)。
- 與實(shí)現(xiàn)相關(guān)的指標(biāo)
包括運(yùn)行時(shí)間(wall time)或消耗的能量;
- 與實(shí)現(xiàn)無關(guān)的指標(biāo)
包括每秒浮點(diǎn)運(yùn)算次數(shù)(flops)、對(duì)數(shù)密度評(píng)估次數(shù)、梯度評(píng)估次數(shù)等。
通常,計(jì)算的瓶頸主要在于對(duì)數(shù)密度和/或梯度的計(jì)算;使用自動(dòng)微分時(shí),對(duì)數(shù)密度及其梯度通常是同時(shí)計(jì)算的 [31]。
在開發(fā)算法時(shí),無論這些算法是有偏的還是漸近無偏的,我們都可以在固定計(jì)算量下比較它們的準(zhǔn)確性。其中一些與實(shí)現(xiàn)相關(guān)的衡量標(biāo)準(zhǔn)包括:
每秒對(duì)數(shù)密度評(píng)估次數(shù)(LDE/s),
每秒梯度評(píng)估次數(shù)(GE/s),
每秒有效樣本數(shù)(ESS/s),其中有效樣本數(shù)可以通過多次運(yùn)行的標(biāo)準(zhǔn)差和標(biāo)準(zhǔn)誤來估計(jì): 這是核心的與實(shí)現(xiàn)相關(guān)的性能指標(biāo),因?yàn)樗饬苛嗽诮o定實(shí)際時(shí)間預(yù)算內(nèi)可達(dá)到的近似精度 [9]。
計(jì)算與準(zhǔn)確性的權(quán)衡凸顯了對(duì)算法進(jìn)行比較和基準(zhǔn)測(cè)試的重要性。作為方法開發(fā)的一部分,我們希望做出明智的決策,選擇哪些算法值得實(shí)現(xiàn)和使用,也就是說,我們需要對(duì)各種方法進(jìn)行基準(zhǔn)測(cè)試。這也適用于現(xiàn)有算法的一些雖小但重要的改進(jìn),比如預(yù)熱階段的自適應(yīng)機(jī)制和計(jì)算效率的提升。
開發(fā)與基準(zhǔn)測(cè)試都需要具有挑戰(zhàn)性的模型和后驗(yàn)分布,對(duì)于這些后驗(yàn),我們可能還沒有高效的算法,或者當(dāng)前的算法無法在可行的時(shí)間內(nèi)進(jìn)入漸近狀態(tài)。
對(duì)大量后驗(yàn)分布進(jìn)行基準(zhǔn)測(cè)試至關(guān)重要,這有助于恰當(dāng)?shù)卦u(píng)估某類算法能夠以高精度近似的后驗(yàn)范圍,并評(píng)估其相關(guān)的計(jì)算成本。即使某個(gè)漸近無偏的算法及其實(shí)現(xiàn)對(duì)于某些后驗(yàn)幾何結(jié)構(gòu)表現(xiàn)良好,它也可能在其他結(jié)構(gòu)上完全失效。例如,使用固定步長(zhǎng)積分器的動(dòng)態(tài) HMC 在可行時(shí)間內(nèi)無法對(duì)許多漏斗型后驗(yàn)進(jìn)入漸近狀態(tài) [5]。另一方面,如果維度足夠低,拉普拉斯近似和變分近似結(jié)合重要性采樣可以在某些相同的漏斗型后驗(yàn)上進(jìn)入漸近狀態(tài) [64]。
一組大量的后驗(yàn)分布,如漏斗型后驗(yàn)、多峰后驗(yàn)、離散型和混合離散連續(xù)型后驗(yàn)、高維后驗(yàn)、有限與無限后驗(yàn)(如狄利克雷過程)、大數(shù)據(jù)后驗(yàn)以及簡(jiǎn)單且解析可解的后驗(yàn),可以用于評(píng)估算法的通用性。
一個(gè)后驗(yàn)近似算法如果能在某些模型上表現(xiàn)良好,并且在不適用時(shí)能被診斷出來,那它就是有用的。算法的通用性也描述了不同算法在哪些類型的后驗(yàn)上存在性能問題。因此,我們希望了解錯(cuò)誤和問題的類型,以評(píng)估基準(zhǔn)測(cè)試中算法的通用性。
2.4 算法開發(fā)與維護(hù)
測(cè)試算法的過程包括多個(gè)步驟。在開發(fā)新算法時(shí),采用之前經(jīng)過充分測(cè)試的算法所使用的同樣嚴(yán)格的測(cè)試方法是一種常見做法。這確保了新實(shí)現(xiàn)符合預(yù)期的功能和可靠性標(biāo)準(zhǔn)。
同樣地,在維護(hù)現(xiàn)有軟件時(shí),測(cè)試有兩個(gè)目的:一是驗(yàn)證更改沒有破壞推理算法的完整性;二是確保算法的性能沒有受到影響。在計(jì)算機(jī)科學(xué)中被稱為回歸測(cè)試(regression testing)的方法,通過對(duì)整個(gè)開發(fā)周期中的算法輸出進(jìn)行比較,以捕捉任何行為或性能上的“退化”(regressions)。
3 posteriordb:一個(gè)用于測(cè)試、基準(zhǔn)測(cè)試與開發(fā)的數(shù)據(jù)庫
我們?cè)谠O(shè)計(jì)posteriordb時(shí)充分考慮了上述所有使用場(chǎng)景。它是一個(gè)綜合性倉庫,包含后驗(yàn)分布、模型、數(shù)據(jù)以及參考后驗(yàn)結(jié)果。其主要目標(biāo)是利用這一組后驗(yàn)分布來對(duì)概率編程語言(PPL)和后驗(yàn)近似算法進(jìn)行測(cè)試、評(píng)估、基準(zhǔn)測(cè)試、開發(fā)和維護(hù)。該數(shù)據(jù)庫既包含較為復(fù)雜/困難的后驗(yàn)分布,例如新冠疫情流行模型 [17]、貝葉斯神經(jīng)網(wǎng)絡(luò) [28],也包含較簡(jiǎn)單、標(biāo)準(zhǔn)的后驗(yàn)分布,例如“八所學(xué)校”示例 [46, 19]。所有的后驗(yàn)、數(shù)據(jù)和模型都以統(tǒng)一格式存儲(chǔ),便于在通用性和基準(zhǔn)測(cè)試方面對(duì)大量后驗(yàn)進(jìn)行估計(jì)。
3.1 posteriordb 的組成部分
posteriordb 包含四種主要類型的對(duì)象(參見圖1和圖2以獲得概覽)。
后驗(yàn)(posterior)對(duì)象(1)匯總了集合中某一特定后驗(yàn)的所有信息。一個(gè) posterior 對(duì)象指向一個(gè)(不一定是歸一化的)聯(lián)合模型 p(y,θ)、數(shù)據(jù) y,以及一個(gè)參考后驗(yàn)(如果有的話)。
將模型與數(shù)據(jù)分開的原因在于:一些模型使用相同的數(shù)據(jù),這對(duì)于模型比較診斷和基準(zhǔn)測(cè)試是有意義的;同時(shí)一些模型可以應(yīng)用于多個(gè)數(shù)據(jù)集,從而支持跨數(shù)據(jù)集的模型比較診斷和基準(zhǔn)測(cè)試。
最后,如果存在參考后驗(yàn),posterior 對(duì)象也會(huì)指向該參考后驗(yàn)。
在 posteriordb 中,模型(2)對(duì)象以 PPL 代碼和 JSON 信息文件的形式存儲(chǔ)一個(gè)(非歸一化的)聯(lián)合模型 p(y,θ)。雖然目前大多數(shù)模型是用 Stan 編寫的,但該結(jié)構(gòu)設(shè)計(jì)使得我們可以輕松地包含其他概率編程語言(PPL)的代碼,例如 PyMC、Tensorflow Probability、Pyro 等。
數(shù)據(jù)(3)對(duì)象y被存儲(chǔ)為壓縮的 JSON 文件,以便簡(jiǎn)化和方便數(shù)據(jù)的使用。每個(gè)數(shù)據(jù)文件還包括一個(gè)信息 JSON 文件。如果數(shù)據(jù)經(jīng)過處理,data-raw 文件夾中會(huì)包含用于數(shù)據(jù)處理的代碼及相關(guān)說明。
參考后驗(yàn)(4)對(duì)象(從 JSON 的“對(duì)象”意義上講)表示真實(shí)的后驗(yàn)分布,通常以后驗(yàn)抽樣結(jié)果(posterior draws)的形式呈現(xiàn),前提是能夠計(jì)算出這種表示方式。要作為參考后驗(yàn),這些抽樣結(jié)果必須具有非常高的質(zhì)量,詳見第 3.3 節(jié)。根據(jù)后驗(yàn)分布的大小和可計(jì)算性,參考后驗(yàn)的抽樣結(jié)果本身和/或相應(yīng)的后驗(yàn)期望值會(huì)被存儲(chǔ)在參考后驗(yàn)對(duì)象中,并以壓縮的 JSON 文件形式保存。
擁有一個(gè)真實(shí)或高度近似的參考后驗(yàn)的好處在于,我們可以在給定誤差容忍度和特定計(jì)算預(yù)算下,判斷某個(gè)算法輸出的結(jié)果是否符合真實(shí)的潛在后驗(yàn)分布。信息 JSON 文件中包含了關(guān)于如何計(jì)算這些后驗(yàn)抽樣結(jié)果的詳細(xì)信息。
以 posteriordb 中的一個(gè)后驗(yàn)示例為例:eight_schools-eight_schools_centered
后驗(yàn)對(duì)象指向eight_schools
數(shù)據(jù)集以及八所學(xué)校模型的中心參數(shù)化版本eight_schools_centered
[5]。此外,該 posterior 對(duì)象還包含后驗(yàn)的維度信息,并指向參考后驗(yàn)eight_schools-eight_schools_noncentered
。中心參數(shù)化方法由于其后驗(yàn)的漏斗幾何結(jié)構(gòu)而眾所周知存在采樣困難。因此,使用了非中心參數(shù)化方法來為該中心模型計(jì)算參考后驗(yàn)。
在選擇包含哪些模型時(shí),我們遵循了一個(gè)原則:目標(biāo)是構(gòu)建一個(gè)廣泛且多樣化的后驗(yàn)集合。我們也特別關(guān)注那些數(shù)據(jù)和模型均已公開發(fā)布的后驗(yàn)。這使得 posteriordb 的用戶可以查閱更多關(guān)于特定模型和數(shù)據(jù)的詳細(xì)信息,因?yàn)閭}庫中已包含相關(guān)引用。
訪問 posteriordb 有兩種方式:
- 直接訪問倉庫:通過 GitHub 地址 https://github.com/stan-dev/posteriordb 訪問。
倉庫中的
posteriord_database
文件夾以文件夾結(jié)構(gòu)組織數(shù)據(jù)(如圖2所示)。數(shù)據(jù)和參考后驗(yàn)抽樣結(jié)果被壓縮為 zip 壓縮包。
- 通過 R 包或 Python 庫訪問
R 包:https://github.com/stan-dev/posteriordb-r
Python 庫:https://github.com/stan-dev/posteriordb-python
這些工具簡(jiǎn)化了對(duì)數(shù)據(jù)庫的快速訪問。
所有后驗(yàn)分布、數(shù)據(jù)、模型、參考后驗(yàn)以及軟件都使用語義版本控制(semantic versioning)進(jìn)行版本管理。
3.2 額外的元信息
我們?cè)谒兴姆N對(duì)象中都包含了潛在相關(guān)的元信息,例如后驗(yàn)對(duì)象的參數(shù)數(shù)量、關(guān)鍵詞等,以簡(jiǎn)化后驗(yàn)的選擇過程。我們還為后驗(yàn)添加了關(guān)鍵詞,以增強(qiáng)對(duì)不同性能方面的評(píng)估能力,從而全面理解算法的行為,并服務(wù)于基準(zhǔn)測(cè)試和新算法開發(fā)的目的。這也有助于在新算法診斷或基準(zhǔn)測(cè)試環(huán)境中識(shí)別問題。
此外,如果可用的話,后驗(yàn)、模型和數(shù)據(jù)也包含參考文獻(xiàn)條目,以便為用戶提供更多關(guān)于后驗(yàn)的信息。
3.3 參考后驗(yàn)對(duì)象
posteriordb 的一個(gè)核心組成部分是參考后驗(yàn)(Reference Posterior, RP)對(duì)象。RP 對(duì)象由(近似)獨(dú)立同分布的蒙特卡洛抽樣組成,這些抽樣來自于對(duì)應(yīng)的后驗(yàn)?zāi)P蛯?duì)象,并用于表示真實(shí)的潛在后驗(yàn)分布。
根據(jù)后驗(yàn) p(θ∣y)的形式,RP 對(duì)象中的抽樣可以通過以下兩種方式之一生成:獨(dú)立抽樣或MCMC 方法。
對(duì)于一些簡(jiǎn)單模型,我們可以解析地計(jì)算真實(shí)后驗(yàn)并從中抽樣,但大多數(shù)后驗(yàn)并不具備這種條件。我們通過納入那些我們有高度信心能夠獲得足夠高質(zhì)量抽樣的模型來擴(kuò)展參考后驗(yàn)集合,這些抽樣可以被認(rèn)為是來自真實(shí)后驗(yàn)的樣本。我們使用 MCMC 方法,特別是 Stan 實(shí)現(xiàn)的 NUTS 算法,為那些無法進(jìn)行獨(dú)立抽樣的表現(xiàn)良好的模型生成參考后驗(yàn)。
具體步驟如下:
我們首先計(jì)算一組抽樣結(jié)果 {θ(s)} ,并將它們包含在 posteriordb 中;
然后我們計(jì)算后驗(yàn)參數(shù)的期望值(可通過解析方法或抽樣結(jié)果得到)。
后驗(yàn)均值支持直接的誤差評(píng)估,而抽樣結(jié)果則允許更全面的評(píng)估,例如使用 Wasserstein 距離。抽樣結(jié)果的引入還有助于識(shí)別哪些區(qū)域和哪種類型的后驗(yàn)表現(xiàn)出次優(yōu)性能以及存在困難的區(qū)域。
即使 posteriordb 提供了大約 10,000 個(gè)近似獨(dú)立的抽樣結(jié)果,參數(shù)估計(jì)的標(biāo)準(zhǔn)誤仍然是該參數(shù)標(biāo)準(zhǔn)差除以 100(即 10,000 的平方根)。例如,估計(jì)一個(gè)標(biāo)準(zhǔn)正態(tài)分布(其均值為 0)的均值時(shí),標(biāo)準(zhǔn)誤為 0.01。這為被評(píng)估系統(tǒng)的精度設(shè)定了一個(gè)上限,在參考后驗(yàn)本身的誤差成為主導(dǎo)因素之前,這是必須考慮的。
我們將一個(gè)參考后驗(yàn)(或其期望值)定義為從真實(shí)后驗(yàn)分布中抽取的至少 10,000 個(gè)抽樣。在實(shí)踐中,這種情況僅在有限的幾個(gè)解析可解的場(chǎng)景中才可能實(shí)現(xiàn)。
在使用 MCMC 的情況下,我們需要對(duì)鏈進(jìn)行稀釋處理,使得抽樣結(jié)果大致獨(dú)立,以便進(jìn)一步比較更加容易。然而,我們也確實(shí)使用 MCMC 來從真實(shí)后驗(yàn)分布中生成抽樣結(jié)果。要將 MCMC 生成的抽樣視為參考后驗(yàn),我們需要滿足以下要求:
每個(gè)參數(shù)至少有10,000 個(gè)抽樣(或更多);
抽樣應(yīng)大致獨(dú)立,即所有參數(shù)在各鏈中滯后 1 的平均自相關(guān)絕對(duì)值小于0.05;
所有參數(shù)的R? 值低于 1.01[參見 57];
所有參數(shù)的預(yù)期缺失信息比例(E-FMI)低于 0.2[參見 4];
如果使用 HMC,則不應(yīng)出現(xiàn)任何發(fā)散轉(zhuǎn)移(divergent transitions)[參見 3]。
為了使用 MCMC 計(jì)算參考后驗(yàn)抽樣,我們采用的是 Stan 的 HMC/NUTS 算法。不過,在某些特殊情況下,如果明確需要(例如對(duì)于具有離散參數(shù)的模型),也可以使用其他特定模型的算法。
我們的倉庫還包括一些有趣且具有挑戰(zhàn)性的后驗(yàn)分布,即使在這些后驗(yàn)無法或不實(shí)際計(jì)算出參考后驗(yàn)的情況下也是如此。例如,在組合多模態(tài)后驗(yàn)中,如高維聚類模型(如潛在狄利克雷分布模型 [8])或貝葉斯神經(jīng)網(wǎng)絡(luò)中,就常常遇到這種情況。
3.4 posteriordb 的當(dāng)前范圍
目前,posteriordb 包含147 個(gè)后驗(yàn)分布、120 個(gè)模型、91 個(gè)數(shù)據(jù)集和46 組參考后驗(yàn)抽樣結(jié)果。其中大約三分之一屬于較簡(jiǎn)單的情況,而剩下的三分之二則更具挑戰(zhàn)性。
表1中列出了一些可以使用 Stan 的 HMC 運(yùn)行的后驗(yàn)示例,但標(biāo)準(zhǔn)設(shè)置下會(huì)出現(xiàn)大量發(fā)散轉(zhuǎn)移(divergent transitions)或 Leapfrog 步數(shù)較多的情況,這表明這些后驗(yàn)具有更復(fù)雜的幾何結(jié)構(gòu)。請(qǐng)注意,提高 HMC 的接受率可以改善發(fā)散情況,而最大樹深度(max tree depth)則限制了 Leapfrog 步數(shù)的平均值。因此,這些結(jié)果可以被看作是對(duì) posteriordb 中某些后驗(yàn)采樣難度的一種指示。
我們可以看到,一些后驗(yàn)分布,如soil_carbon-soil_incubation
,會(huì)產(chǎn)生發(fā)散轉(zhuǎn)移,這表明曲率發(fā)生了較大的變化;而像synthetic_grid_RBF_kernels-kronecker_gp
這樣的模型則需要大量的 Leapfrog 步數(shù)來探索后驗(yàn)空間。
納入那些沒有參考抽樣結(jié)果的復(fù)雜后驗(yàn),也包括一些場(chǎng)景,例如當(dāng)前的 Stan 動(dòng)態(tài) HMC 在效率上較低,或存在固有的限制與困難。這種有意識(shí)的納入不僅促進(jìn)了新推理算法的發(fā)展,也為研究社區(qū)提供了寶貴的資源。
4 案例研究:Pathfinder 算法
posteriordb 的內(nèi)容已經(jīng)被用于多個(gè)場(chǎng)景中,以評(píng)估和開發(fā)新算法 [例如參見 13]。在此,我們舉例說明 posteriordb 是如何被用來開發(fā)和評(píng)估 Pathfinder 變分推理算法 [65] 的。
該方法利用擬牛頓算法——具體來說是有限內(nèi)存的 Broyden-Fletcher-Goldfarb-Shanno 算法(L-BFGS)——沿著擬牛頓優(yōu)化路徑尋找目標(biāo)分布的低秩正態(tài)近似。每個(gè)近似的協(xié)方差矩陣由 L-BFGS 所產(chǎn)生的緊湊且高效的逆海森矩陣估計(jì)值提供。Pathfinder 并行計(jì)算每個(gè)正態(tài)近似的證據(jù)下界(ELBO),并返回來自 ELBO 最小化近似的抽樣結(jié)果。Pathfinder 能夠快速找到高概率質(zhì)量區(qū)域,并從中抽取近似樣本。
Pathfinder 被與 ADVI [26] 和短鏈 MCMC 運(yùn)行進(jìn)行了比較,其中使用的是 Stan 實(shí)現(xiàn)的 ADVI 和 HMC/NUTS [50]。后者的過程對(duì)應(yīng)于 MCMC 預(yù)熱階段的第一步,或者本身也可視為一種變分推理算法,如文獻(xiàn) [21] 所述。近似性能通過1-Wasserstein 距離的離散形式以及對(duì)數(shù)密度和梯度評(píng)估次數(shù)來進(jìn)行評(píng)估。
Pathfinder 算法在 posteriordb 中選取的20 個(gè)后驗(yàn)分布上進(jìn)行了測(cè)試。這些模型包括廣義線性模型、層次元分析模型、(異方差)高斯過程模型、混合模型、微分方程動(dòng)力學(xué)模型、隱馬爾可夫模型和時(shí)間序列模型。
對(duì)于 posteriordb 中的每一個(gè)模型,作者運(yùn)行了100 次 Pathfinder,并與以下三種方法各運(yùn)行 100 次的結(jié)果進(jìn)行對(duì)比:
- Stan 第一階段預(yù)熱(phase I adaptation)
:使用 Stan 的無 U 型轉(zhuǎn)彎采樣器(NUTS)進(jìn)行自適應(yīng)哈密頓蒙特卡洛;
- 密集 ADVI(dense ADVI)
:使用全協(xié)方差矩陣的 ADVI;
- 均場(chǎng) ADVI(mean-field ADVI)
:使用對(duì)角協(xié)方差矩陣的 ADVI。
圖3的右側(cè)面板比較了各種算法在梯度評(píng)估次數(shù)(GE)方面的計(jì)算效率。實(shí)現(xiàn)無關(guān)的計(jì)算成本通過對(duì)數(shù)密度評(píng)估次數(shù)(LDE)和梯度評(píng)估次數(shù)(GE)來衡量。實(shí)驗(yàn)表明,在所評(píng)估的算法中,Pathfinder 的計(jì)算成本最低。總體來看,Stan 第一階段采樣的成本低于均場(chǎng) ADVI,而密集 ADVI 的計(jì)算成本最高。不同測(cè)試模型和算法之間的計(jì)算成本差異明顯。
圖3的左側(cè)面板展示了單路徑 Pathfinder、ADVI 和 Stan 第一階段采樣器之間通過1-Wasserstein 距離進(jìn)行的比較。為了調(diào)整不同目標(biāo)密度下 1-Wasserstein 距離的尺度差異,結(jié)果相對(duì)于每個(gè)模型下 100 次單路徑 Pathfinder 的 1-Wasserstein 距離的中位數(shù)進(jìn)行了歸一化處理。這使得我們可以比較不同方法之間 1-Wasserstein 距離的比例關(guān)系。
總體而言,Pathfinder 相較于各種 ADVI 方法產(chǎn)生了更低的 1-Wasserstein 距離。對(duì)于 20 個(gè)測(cè)試模型中的 8 個(gè)模型,均場(chǎng) ADVI 的中位 1-Wasserstein 距離是單路徑 Pathfinder 的兩倍以上。密集 ADVI 在逼近真實(shí)后驗(yàn)時(shí)表現(xiàn)出最大的不穩(wěn)定性。
值得注意的是,在隱馬爾可夫模型bball_drive_event_0-hmm_drive_0
上,均場(chǎng) ADVI 的中位 1-Wasserstein 距離甚至不到單路徑 Pathfinder 的十分之一。這個(gè)特定模型具有多個(gè)有意義的后驗(yàn)?zāi)B(tài),而 ADVI 所使用的隨機(jī)梯度下降方法固有的噪聲使其能夠逃離那些可能困住 Pathfinder 所用 L-BFGS 優(yōu)化器的次要模態(tài)。
與 Stan 第一階段預(yù)熱相比,在本實(shí)驗(yàn)中,單路徑 Pathfinder 在面對(duì)具有挑戰(zhàn)性的后驗(yàn)時(shí)表現(xiàn)相對(duì)穩(wěn)定。在 20 個(gè)測(cè)試模型中,有 7 個(gè)模型的 Stan 第一階段預(yù)熱產(chǎn)生的 1-Wasserstein 距離是單路徑 Pathfinder 中位距離的兩倍以上。除了bball_drive_event_0-hmm_drive_0
模型外,其余模型中單路徑 Pathfinder 的 1-Wasserstein 距離最多是 Stan 第一階段預(yù)熱的兩倍。
5 討論與結(jié)論
我們提出了posteriordb,這是一個(gè)用于開發(fā)概率編程語言(PPL)和后驗(yàn)近似算法的模型、數(shù)據(jù)、后驗(yàn)分布以及參考抽樣結(jié)果的集合。在構(gòu)建 posteriordb 的過程中,我們積累了一些關(guān)于基準(zhǔn)測(cè)試項(xiàng)目的重要經(jīng)驗(yàn)。
首先,我們添加了許多相對(duì)簡(jiǎn)單的后驗(yàn)分布,這些后驗(yàn)可以使用標(biāo)準(zhǔn)默認(rèn)的動(dòng)態(tài) HMC 輕松估計(jì)。但事后來看,更困難的后驗(yàn)分布對(duì)于算法開發(fā)尤其重要。
其次,我們發(fā)現(xiàn)后驗(yàn)的標(biāo)簽和相關(guān)信息比最初設(shè)想的更加關(guān)鍵。一些后驗(yàn)過于復(fù)雜(例如多模態(tài)且識(shí)別性較弱),導(dǎo)致計(jì)算非常緩慢;而另一些則過于簡(jiǎn)單。當(dāng)我們?cè)谶M(jìn)行基準(zhǔn)測(cè)試和算法開發(fā)時(shí),意識(shí)到必須根據(jù)實(shí)驗(yàn)?zāi)繕?biāo)選擇合適的后驗(yàn)(例如排除或特別關(guān)注非對(duì)數(shù)凹函數(shù)形式的后驗(yàn))。
第三,一個(gè)重要的結(jié)論是:為了便于組件的廣泛使用和重復(fù)利用,應(yīng)將模型、數(shù)據(jù)和后驗(yàn)分布分開存儲(chǔ)。
5.1 局限性與未來工作
目前,絕大多數(shù)模型是用 Stan 編寫的(也包含少量 PyMC 模型);因此,當(dāng)前的 posteriordb 在很大程度上依賴于 Stan。不過,通過bridgestan[45],我們可以在許多不同的編程語言中訪問這些模型的對(duì)數(shù)密度和梯度信息,從而簡(jiǎn)化這些語言中的算法開發(fā)。
此外,有些后驗(yàn)分布極具挑戰(zhàn)性,以至于目前尚無法生成參考后驗(yàn),這使得它們暫時(shí)難以用于基準(zhǔn)測(cè)試。
我們計(jì)劃對(duì) posteriordb 進(jìn)行多個(gè)方面的擴(kuò)展與改進(jìn):
- 增加更多類型的后驗(yàn)分布
,特別是更具挑戰(zhàn)性的后驗(yàn);
- 納入來自更多 PPL 的后驗(yàn)?zāi)P痛a
,以便簡(jiǎn)化不同 PPL 之間的比較與基準(zhǔn)測(cè)試;
- 擴(kuò)展數(shù)據(jù)庫功能,加入預(yù)測(cè)分布或支持預(yù)測(cè)分布的計(jì)算功能
。這將有助于基于預(yù)測(cè)分布的比較和診斷,并促進(jìn)模型評(píng)估方法的發(fā)展;
我們還意識(shí)到需要從抽樣結(jié)果中實(shí)證地識(shí)別后驗(yàn)幾何結(jié)構(gòu),例如漏斗型后驗(yàn)、抽樣集中海森矩陣非正定的后驗(yàn),或多模態(tài)后驗(yàn)。雖然目前這項(xiàng)任務(wù)并不容易,但在后驗(yàn)近似算法開發(fā)中亟需進(jìn)一步簡(jiǎn)化這一過程。
原文鏈接:https://arxiv.org/pdf/2407.04967
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.