从调参玄学到概率建模:大模型时代的贝叶斯生存指南
从调参玄学到概率建模:大模型时代的贝叶斯生存指南
调参靠经验?不如试试概率思维。
为什么加了L2正则化就不容易过拟合?为什么微调大语言模型时,学习率通常要比预训练小一个数量级?为什么同样的模型结构,换一批数据训练出来的性能波动很大?
很多工程师能熟练运用这些经验法则,却很难说清它们背后是否藏着统一的逻辑。
事实上,这些看似分散的工程技巧,都可以被同一个概率框架优雅地解释。机器学习真正要处理的,从来都是不确定性——而非某个虚幻的“正确”参数值。
这种视角在当下显得尤为迫切。一个拥有百亿参数的模型,仅用几千条高质量数据微调后,居然没有陷入严重的过拟合。
若按频率学派的经典理论,这几乎不可能发生;但在贝叶斯视角下,这恰恰是先验信息与似然达成新平衡的自然结果。理解这一点,你就不再只是调参的执行者,而是能看透模型行为的设计者。
本文将从你最熟悉的工程实践出发,按需引入基础概率概念,逐步拆解贝叶斯定理如何统一解释正则化、早停与微调现象。
本文不堆砌公式推导,只聚焦于“这个概念对应代码里的哪一行”“这个直觉如何指导你的下一次实验”。文章最后,也会坦诚讨论贝叶斯思维在大模型时代的局限与前沿。
从点估计到分布:为什么模型会记住噪声
以线性回归过拟合为例,训练误差持续下降但验证误差反弹的经典曲线,本质上揭示了模型正在“记住”噪声而非学习规律。
这里的关键词是「方差」。不谈数学定义,只把它理解为模型输出对输入扰动的敏感度。高频震荡的过拟合曲线,反映了模型对训练样本扰动的高度敏感,这与参数估计方差过大是同一现象的两个侧面。
当我们说“参数估计的方差”时,其实已隐含地将参数看作随机变量,其取值依赖于训练样本。而似然函数则刻画了“给定参数时数据的生成机制”。
频率学派的极大似然估计,正是在这个似然函数上取极值。问题在于,当数据有限时,这个极值点对噪声极度敏感。
值得注意的是,当特征间高度相关时,参数估计不仅方差大,且彼此强耦合。这正是L2正则化试图缓解的问题之一(L1则主要通过诱导稀疏性间接应对共线性)。
频率学派当然也可以通过正则化、偏差-方差权衡来缓解过拟合,L1/L2本身就能在约束优化框架下得到合理解释。但一旦把正则化视为先验、把过拟合视为不确定性建模的缺失,获得的远不止一种解释,而是一套能串联起不同技巧的思维语言——它让我们在不同技巧间看到深层联系,而非孤立经验。
贝叶斯定理作为统一框架:先验如何充当正则化器
贝叶斯公式可以简洁地写为:后验 ∝ 似然 × 先验。
「先验」是你对参数的初始信念。在LLM微调中,这就是预训练权重所编码的世界知识;在传统ML中,它等价于L2或L1正则化项。
「似然」是数据对当前参数的支持程度。最小化交叉熵Loss,就是在最大化这个似然。
「后验」是结合数据与先验后的更新信念。微调后的模型参数,不再是某个最优值,而是一个围绕预训练权重、被新数据拉扯过的分布。
贝叶斯方法的核心是后验分布,预测时理论上应对参数积分。但在工程中,我们常通过MAP、变分均值或采样近似来获得点估计或简单分布。因此,“贝叶斯”在实践中往往意味着“以分布思维指导点估计”,而非彻底放弃点估计。
复杂模型的先验概率质量分散在更大参数空间上,导致边缘似然被稀释。这一现象在贝叶斯模型比较中体现为奥卡姆因子。严格来说,不同文献对其定义略有差异(如先验预测与后验预测之比、或先验中与后验匹配区域的比例),但工程直觉上可理解为“先验体积与后验有效体积之比”,这有助于解释为何简单模型常获更高边缘似然。
不过,这一结论成立的前提是边缘似然有明确定义、先验的有效支撑范围与后验集中区域存在有意义的比较,且模型结构无强约束。若先验本身高度集中,或模型有内在正则化,该效应可能减弱甚至反转。
在贝叶斯视角下,正则化可以被理解为先验的表达,过拟合可以被看作对不确定性的忽视。这并非否定其他解释的有效性,而是提供一种能串联起不同工程实践的连贯叙事。
正则化即先验:从L2到MAP估计的工程对齐
当你写下weight_decay=1e-4时,你是在表达一个高斯先验的信念,但其对应的先验方差并非固定值。它取决于损失函数的缩放方式、是否与学习率耦合、以及数据批量大小。
更准确地说,L2正则化等价于高斯先验下的MAP估计,但正则系数到先验方差的换算需结合具体训练配置校准,不存在框架无关的通用公式。
PyTorch等框架将L2正则化实现为优化器更新时的隐式梯度项,而非直接加到Loss上,这意味着它与学习率耦合在一起。
AdamW将weight decay从自适应学习率的梯度二阶矩缩放中解耦,使先验强度不再随梯度尺度动态漂移。但它仍与学习率耦合,而学习率调度本身依赖训练进度。因此,AdamW让weight decay的强度不再被梯度二阶矩缩放,更接近一个稳定的正则项,而非完全脱离数据与优化动态的绝对先验。
切换优化器或调整学习率时,即使weight_decay数值不变,实际生效的先验强度也会改变。这正是为何微调时需重新校准正则系数,而非简单沿用预训练配置。
BatchNorm的缩放与偏移参数通常不施加weight_decay,主因是它们并非过拟合主因,且额外正则可能干扰归一化层的尺度稳定性。但这并非铁律,在某些任务或架构中适度正则可能有益,需通过实验验证。
微调LLM时的先验继承:学习率为何要小
预训练权重不是普通的初始化,而是一个编码了海量世界知识的强先验。
微调时若学习率过大,少量新数据的似然会像锤子一样砸碎这个先验,导致模型在验证集上表现骤降。这其实不是过拟合,根源在于先验被噪声覆盖、后验质量集中到由少量新数据决定的区域,先验的约束作用被淹没——这里姑且叫它“后验坍缩”,此处“坍缩”并非指分布退化为点质量,而是强调先验信息被数据主导所淹没的状态,意指不确定性被虚假置信取代。
“微调LR设为预训练的1/10到1/100”是一个有用的工程隐喻,暗示小步长有助于保护预训练先验。但学习率并不直接等于先验方差;它影响的是优化轨迹的有效步长,而先验的实际强度还受训练步数、batch size、weight decay等多因素共同调制。
当然,小学习率也可能仅为避免优化失稳或灾难性遗忘,未必总在主动“保护先验”。它的实际作用,得看具体的训练动态才能定论。
更优雅的做法是采用LoRA等参数高效微调方法,它显式约束可更新参数位于低秩子空间。但即便使用LoRA,若rank设置过高或初始化方差过大,仍会破坏先验的完整性。
我通常会从极小rank起步,密切观察验证loss曲线。若出现快速下降后反弹,往往意味着先验已被过度拉扯,此时应降低rank或减小学习率,而非增加数据量。
早停作为隐式贝叶斯:迭代次数作为先验强度的代理指标
早停可被理解为一种隐式正则化,在某些简化模型下等价于L2正则。但在深度网络中,其效果高度依赖优化器、学习率、数据顺序与batch size。
迭代次数本身不等于先验强度,而是一个受多重训练动态调制的代理指标。warmup阶段因参数变化主要由优化器驱动,通常不应计入有效正则化迭代。
实践中,仅监控验证loss可能错过关键信号。你可以试试同时追踪参数相对于初始值的L2距离。
若该距离在验证loss尚未上升时已急剧增大,说明模型正快速偏离先验,即使当前验证指标尚可,也应考虑提前干预。
在分布式训练环境中,早停判断必须基于全局同步指标。单卡过早终止会导致各副本优化轨迹分叉,最终融合出的模型不再对应一个统一的贝叶斯更新过程,从而丧失可解释的先验-似然平衡结构。
贝叶斯思维的代价与未竟之问
贝叶斯框架提供了令人信服的解释力,但它的计算代价从未消失。
精确后验推断在高维参数空间中是不可行的,我们不得不依赖变分推断、MCMC采样或MAP近似等妥协方案。这些近似本身引入了新的偏差。
在大模型时代,这种张力尤为尖锐。我们渴望用贝叶斯思维理解微调行为,却又无法承受完整后验的计算成本。于是工程实践常常陷入一种悖论:我们用贝叶斯语言描述问题,却用频率学派工具解决问题。
但这并不意味着贝叶斯视角失去了价值。恰恰相反,当点估计屡屡失效时,正是概率思维重新校准直觉的时刻。
LLM微调中的先验继承、小样本下的稳健泛化、乃至提示工程中隐含的信念更新,都在提醒我们:在贝叶斯视角下,模型早已超越函数拟合器的角色,成为承载信念的容器。
比起让贝叶斯方法更可计算,更紧迫的问题是:当近似不可避免时,怎样守住贝叶斯思维的核心洞见?
前面提到的两个开放问题之所以困难,根源在于高维非凸后验的几何复杂性:轻量级不确定性度量需在计算可行性与对真实不确定性的忠实反映之间取得平衡,而现有近似方法要么低估尾部风险,要么无法捕捉多模态结构;将预训练理解为隐式贝叶斯更新,则需解决目标不对齐的根本矛盾——当前自监督损失虽可视为某个隐式概率模型下的似然,但该模型与下游任务的生成机制并不一致,因此预训练权重无法直接解释为下游任务的后验。
这些障碍恰恰说明,贝叶斯思维在大模型时代的价值,不在于提供完备解决方案,而在于持续校准我们对“模型究竟在学习什么”的基本直觉。放下对方法纯粹性的执念,在理论理想与工程现实之间,找到属于自己的锚点。
所以下次调LoRA rank或weight_decay时,不妨停下来想一想:你此刻调整的,究竟是超参数,还是自己对模型的信念?