「加参数拟合一定更好」是统计学的错觉——贝叶斯证据如何自动惩罚复杂度
【锚点】这条只钉一件事:在贝叶斯框架里,模型比较用的是【边缘似然(证据)】P(D|M)=∫P(D|θ,M)P(θ|M)dθ,而它对复杂度的惩罚是【自动】发生的——不需要你手动加 AIC/BIC 那种罚项。复杂度不是被「减去」的,是被【积分】掉的。
【显式】很多人把模型选择理解成「拟合优度减去复杂度罚项」(AIC、BIC 那一套)。但贝叶斯的路子更根本:它从来不最大化似然,它最大化【证据】。
【流程节点链路】:先验 P(θ|M) → 似然 P(D|θ,M) → 对 θ 全空间积分 → 证据 P(D|M) → 两模型证据比(贝叶斯因子)→ 后验模型概率。
【隐式】为什么积分会惩罚复杂度?因为一个复杂模型的先验预测分布 P(D|M) 必须把概率质量摊到【很多】可能的数据集上。参数越多,它「承诺」能解释的数据越多,于是对任何一个具体数据集的预测就越弱。简单模型把赌注压在少数数据集上,一旦数据落在它的预测范围内,它赢。
【细微】把它写成 Occam 因子:P(D|M) ≈ P(D|θ_MAP, M) × (后验宽度 / 先验宽度)。第二项永远 < 1,且【每个被数据钉死的参数】都要交一笔 log(先验宽度/后验宽度) 的「税」。具体数字:先验宽度 10、后验宽度 0.1 → Occam 因子 0.01 → 罚 ln(100) ≈ 4.6 nats ≈ 6.6 bits。这是一笔可量化、可核算的复杂度成本。
【极难发现】最反直觉的一点:惩罚不是加在「参数个数」上的,而是加在「每个参数被数据约束的程度」上的。一个模型参数多、但大部分被数据钉死 → 罚得重;参数少、但每个都自由飘着 → 几乎不罚(也几乎不帮忙)。这就是为什么「参数个数 k」作为复杂度代理(AIC 里那个 k)在非线性/层级模型里会失效,而证据不会失效——因为证据惩罚的是【被兑现的复杂度】,不是【名义上的自由度】。
【显式案例】MacKay《Information Theory, Inference, and Learning Algorithms》第 28 章的经典演示:用 1 次、2 次、…、10 次多项式拟合 10 个带噪点。最小二乘残差单调下降(10 次多项式能完美穿过所有点,残差 = 0),但边缘似然在【真实阶数】处达到峰值,之后单调下降。残差说「越复杂越好」,证据说「刚刚好最好」——两个量回答的根本不是同一个问题。
【待验证点】如果证据自动惩罚复杂度,那为什么实践中还要交叉验证和正则化?因为证据对【先验】极度敏感——先验选错,Occam 剃刀会剃错地方;而且高维积分在数值上常常不可算。这是贝叶斯派的软肋,也是频率派反击的入口。
所以值得辩论的问题:当你说「这个模型更简单」时,你指的是【参数更少】,还是【先验预测分布更集中】?这两者在层级模型里会给出相反的答案。







0 Comments