top of page

AutoStan:以 NLPD 與 MCMC 診斷驅動的 Stan 貝葉斯模型自主改進

  • 8小时前
  • 讀畢需時 4 分鐘

貝葉斯建模在概念上簡潔:先寫下生成機制與先驗,再按觀測資料更新信念。然而實務上,即使已採用 StanMCMC,分析人員仍須反覆處理 divergenceR-hateffective sample size(ESS)、重新參數化與先驗調校。AutoStan(Dürr, 2026)提出一套極簡框架:讓 CLI coding agent 自行撰寫及迭代修改 Stan 程式碼,並以 held-out negative log predictive density(NLPD) 配合抽樣器診斷,決定每次改動應保留抑或還原。下文整理其設計要旨、實驗觀察與限制,供關注 probabilistic programmingagentic workflow 的讀者參考。

一、動機與定位

傳統 Bayesian workflow 高度依賴人手試錯;近年亦有研究以 LLM 協助提出或評論概率程式,但往往須額外模組(例如專用 critic、搜尋演算法或 SMC 架構)。AutoStan 的取向接近 Karpathy 的 autoresearch 思路:以單一可解釋的標量目標(此處為 NLPD,屬 strictly proper scoring rule)驅動代理在「編輯—執行—讀取輸出」迴圈中改進程式,而無須為每個數據集撰寫專屬指令或搜尋邏輯。

二、系統組成與操作迴圈

代理啟動時僅獲簡短指示:閱讀 `program.md`,數據置於 `datasets/<name>`

`program.md`(文中約 56 行,屬領域無關的通用流程)要求:閱讀數據說明、檢視訓練集、修改 `model.stan`、執行評估指令、解讀 NLPDMCMC diagnostics、決定 keeprevert,並將歷史寫入 `results/`。文中列舉可考慮的策略(例如 non-centered parameterization、更換 likelihood、調整先驗),但不包含任何特定數據集的劇透。

`dataset.md` 則說明欄位、Standata block 介面,以及如何呼叫 `python evaluate.py`。合成數據的變量名經匿名化,真實 generative process 不向代理披露

唯一硬性合約`model.stan` 須在 `generated quantities` 輸出長度對應測試樣本數的 `log lik` 向量,供評估腳本計算 NLPD。除此以外,先驗、似然與模型結構均由代理自行決定;代理亦可主動做探索性數據分析(摘要統計、離群檢查等),該行為來自模型推理而非固定腳本。

三、評估與「黑盒」測試集

`evaluate.py` 對代理而言為可執行但不可讀(檔案權限設計);測試集與數據生成腳本亦不可讀。腳本透過 cmdstanpy 編譯並呼叫 CmdStan 抽樣(預設 4 chains、多數實驗 1000 post-warmup draws;大型一維迴歸則用 30000 draws 以降低 NLPD 的 Monte Carlo 噪音),再從 `log lik` 計算測試集上的 NLPD。文中採用之 NLPD 為對各測試點、各 posterior draw 之預測密度取平均後取負對數再平均;作為 proper scoring rule,同時懲罰點估誤差與概率校準不當,較單純 RMSEaccuracy 更適合作為模型比較的準則。

停機條件為:連續三次 NLPD 無改善,或達 20 次迭代(含 baseline)。

四、主案例:含離群之一維迴歸

真實 DGP(代理不知)結合非線性均值、異方差噪聲,以及訓練集約 6% 之污染離群;測試集則無離群。論文將軌跡歸納為多項發現:由 Gaussian linear baseline 經 Student-t 與多項式/正弦均值大幅改善 NLPD;再加入 heteroscedasticlog σ(x);最後以兩成分 Gaussian mixture 顯式刻劃離群,並透過固定離群成分尺度等方式緩解 label switching 所致之 poor mixing(例如 R-hat 升高)。在大樣本設定下,最終模型之 NLPD 略優於 TabPFN;作者強調 TabPFN 雖能給出預測分布,但缺乏可讀的生成假設,而 AutoStan 輸出完整 Stan 程式,便於審查與延伸。

五、其他實驗(節略)

同一機制套用於:hierarchical partial pooling(小樣本時 baseline 已接近最優;大樣本則逐步加入 NCP、組別方差、Student-t 等)、varying slopes 與相關隨機效應,以及 Bundesliga 賽果之 Poisson attack/defense 層次模型。部分迭代中,最佳 NLPD 略優於文中用以對照之 oracle,作者歸因於對固定測試集反覆優化所引致之輕微 test-set adaptation,並建議以 cross-validation、更換測試集或 PSIS-LOO 等緩解。

六、限制與實務含意

除上述測試集洩漏風險外,以訓練數據調整先驗在嚴格推斷語境下會模糊 priorlikelihood 分界;若目標為預測,held-out NLPD 仍屬誠實準則。計算方面,大型迴歸單次迭代可達數十分鐘級別;代理的 token 用量中,重讀歷史脈絡佔比甚高,屬此類迴圈之常態成本。

Reference

  1. O. Dürr. AutoStan: Autonomous Bayesian Model Improvement via Predictive Feedback. arXiv:2603.27766v1 [cs.LG], 29 Mar 2026. https://arxiv.org/abs/2603.27766

  2. Stan Development Team. Stan Modeling Language Users Guide and Reference Manual. https://mc-stan.org

  3. T. Gneiting & A. E. Raftery. Strictly Proper Scoring Rules, Prediction, and Estimation. Journal of the American Statistical Association, 102(477), 359–378, 2007.

  4. N. Hollmann et al. Accurate Predictions on Small Data with a Tabular Foundation Model. Nature, 637, 319–326, 2025. (TabPFN)

  5. CmdStanPy Developers. CmdStanPy: Python interface to CmdStan. https://mc-stan.org/cmdstanpy/

  6. A. Karpathy. autoresearch (repository). https://github.com/karpathy/autoresearch

  7. A. Vehtari, A. Gelman & J. Gabry. Practical Bayesian Model Evaluation using Leave-One-Out Cross-Validation and WAIC. Statistics and Computing, 27(5), 1417–1432, 2017. (PSIS-LOO)

  8. AutoStan code & materials: https://github.com/tidit-ch/autostan

相關文章

查看全部
足球角球時間:以 Frailty Model 處理同場內相關性

職業足球賽事中,**corner kick(角球)**既是攻勢延續的常見結果,亦為博彩市場中「角球數量」「首個角球時間」等產品的基礎隨機量。Isaacs、Hu、Peng 與 Swartz(2026)之預印本 **arXiv:2602.22684** 延續 Peng、Hu 與 Swartz(2024)對角球出現時間的 **event history** 分析,在原有 **finite mixture

 
 
bottom of page