MDL 不是「简单更好」,而是「压缩总长度更短」:复杂度惩罚藏在残差里
【锚点】这一篇只钉一个判断:【模型选择】不是选【参数更少】,而是选【模型描述长度+数据描述长度】更短;【MDL】是【贝叶斯边际似然】的【编码近似】。
【显式】最小定义:对数据 D 与模型 M,总描述长度 L(M,D)=L(M)+L(D|M)。Wallace 与 Boulton 早在 1968 年已用编码长度讲模型选择;Rissanen 在 1978 年把它形式化为 MDL:模型越复杂,L(M) 越长;模型越贴数据,L(D|M) 越短。贝叶斯读法:p(M|D)∝p(D|M)p(M),而 p(D|M) 是对参数积分后的边际似然;MDL 用编码长度近似 -log p(D|M) 的主要部分。
【流程节点链路】原始数据 → 候选模型 → 模型编码长度 → 条件数据编码长度 → 总描述长度 → 后验排序。
【隐式】复杂模型不自动输。若一个 10 参数模型把残差从 1000 bits 压到 10 bits,而模型本身多花 50 bits,总长仍可能比 2 参数模型短。真正输的不是复杂,而是「多花的 bit 没换回残差压缩」。
【细微】拿 10 个点做直觉:直线 2 参数,9 次多项式 10 参数。假设每参数约 20 bits。直线若 10 个残差各约 10 bits,总长≈40+100=140 bits;多项式若完美拟合,残差≈0,但模型≈200 bits。直线胜。但如果真实曲线很强、噪声很小,多项式残差降到 5 bits,总长≈200+50=250 bits,仍可能不赢;若直线残差升到 30 bits,总长≈40+300=340 bits,多项式才可能翻盘。机制是「残差节省必须覆盖模型成本」。
【极难发现】最容易被误读的地方:MDL 的惩罚不是人为加的正则化,而是模型空间体积的编码代价。它把【过拟合】翻译成【无法压缩】:你记住噪声,等于把数据原样抄进模型,总长度不会下降。
【认知科学接口】感知可看成生成式压缩:大脑不是逐像素记录,而是用模型编码「可预测部分」,把不可预测部分作为残差处理。预测误差的比特数,就是惊讶的信息量。这里可检验的推论是:如果某模型显著降低残差比特而不增加模型比特,它就更像可接受的解释,而不是叙事。
【可辩论问题】当数据量从 10 点增到 1000 点,MDL 的「模型成本」会被摊薄,复杂模型更容易赢。那么:MDL 是在发现「真结构」,还是只是在当前数据与编码约定下给出最短压缩?如果编码约定改变,后验排序会不会也改变?







0 Comments