AutoStan:以 NLPD 與 MCMC 診斷驅動的 Stan 貝葉斯模型自主改進
- 8小时前
- 讀畢需時 4 分鐘
貝葉斯建模在概念上簡潔:先寫下生成機制與先驗,再按觀測資料更新信念。然而實務上,即使已採用 Stan 與 MCMC,分析人員仍須反覆處理 divergence、R-hat、effective sample size(ESS)、重新參數化與先驗調校。AutoStan(Dürr, 2026)提出一套極簡框架:讓 CLI coding agent 自行撰寫及迭代修改 Stan 程式碼,並以 held-out negative log predictive density(NLPD) 配合抽樣器診斷,決定每次改動應保留抑或還原。下文整理其設計要旨、實驗觀察與限制,供關注 probabilistic programming 與 agentic workflow 的讀者參考。
一、動機與定位
傳統 Bayesian workflow 高度依賴人手試錯;近年亦有研究以 LLM 協助提出或評論概率程式,但往往須額外模組(例如專用 critic、搜尋演算法或 SMC 架構)。AutoStan 的取向接近 Karpathy 的 autoresearch 思路:以單一可解釋的標量目標(此處為 NLPD,屬 strictly proper scoring rule)驅動代理在「編輯—執行—讀取輸出」迴圈中改進程式,而無須為每個數據集撰寫專屬指令或搜尋邏輯。
二、系統組成與操作迴圈
代理啟動時僅獲簡短指示:閱讀 `program.md`,數據置於 `datasets/<name>`。
`program.md`(文中約 56 行,屬領域無關的通用流程)要求:閱讀數據說明、檢視訓練集、修改 `model.stan`、執行評估指令、解讀 NLPD 與 MCMC diagnostics、決定 keep 或 revert,並將歷史寫入 `results/`。文中列舉可考慮的策略(例如 non-centered parameterization、更換 likelihood、調整先驗),但不包含任何特定數據集的劇透。
`dataset.md` 則說明欄位、Stan 的 data 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,同時懲罰點估誤差與概率校準不當,較單純 RMSE 或 accuracy 更適合作為模型比較的準則。
停機條件為:連續三次 NLPD 無改善,或達 20 次迭代(含 baseline)。
四、主案例:含離群之一維迴歸
真實 DGP(代理不知)結合非線性均值、異方差噪聲,以及訓練集約 6% 之污染離群;測試集則無離群。論文將軌跡歸納為多項發現:由 Gaussian linear baseline 經 Student-t 與多項式/正弦均值大幅改善 NLPD;再加入 heteroscedastic 的 log σ(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 等緩解。
六、限制與實務含意
除上述測試集洩漏風險外,以訓練數據調整先驗在嚴格推斷語境下會模糊 prior 與 likelihood 分界;若目標為預測,held-out NLPD 仍屬誠實準則。計算方面,大型迴歸單次迭代可達數十分鐘級別;代理的 token 用量中,重讀歷史脈絡佔比甚高,屬此類迴圈之常態成本。
Reference
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
Stan Development Team. Stan Modeling Language Users Guide and Reference Manual. https://mc-stan.org
T. Gneiting & A. E. Raftery. Strictly Proper Scoring Rules, Prediction, and Estimation. Journal of the American Statistical Association, 102(477), 359–378, 2007.
N. Hollmann et al. Accurate Predictions on Small Data with a Tabular Foundation Model. Nature, 637, 319–326, 2025. (TabPFN)
CmdStanPy Developers. CmdStanPy: Python interface to CmdStan. https://mc-stan.org/cmdstanpy/
A. Karpathy. autoresearch (repository). https://github.com/karpathy/autoresearch
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)
AutoStan code & materials: https://github.com/tidit-ch/autostan
