Skip to content

第 5 章 正则化

正则化是在训练目标中加入约束或惩罚项,用来限制模型参数或模型函数的复杂度。

5.1 正则化的基本思想

没有正则化时,训练目标通常只包含经验损失:

minθ1mi=1mL(hθ(x(i)),y(i))

加入正则化后,目标函数变成:

minθ[1mi=1mL(hθ(x(i)),y(i))+λΩ(θ)]

其中:

符号含义
L原始损失函数
Ω(θ)正则化项
λ正则化强度
m训练样本数量
hθ(x)参数为 θ 时,模型对输入 x 的预测

正则化项不是用来拟合标签的,它负责表达对模型的偏好。例如 L2 正则化偏好较小且平滑的参数,L1 正则化偏好稀疏参数。

λ 控制经验损失和正则化项之间的权衡。λ 越大,参数约束越强;λ 越小,模型越接近没有正则化的训练目标。

5.2 代价函数

正则化代价函数由经验损失和参数惩罚项组成。

线性回归正则化代价函数:

J(θ)=12m[i=1m(hθ(x(i))y(i))2+λj=1nθj2]

注意:通常不惩罚 θ0

λ 是正则化参数:

  • λ 太小,正则化项影响很弱。
  • λ 太大,参数会被过度压缩,模型表达能力下降。

5.3 正则化线性回归

正则化线性回归中,θ0 和其他参数的更新略有不同。

后续公式中,n 表示特征数量,i 表示样本下标,j 表示特征或参数下标,α 表示学习率。

线性回归假设函数仍然是:

hθ(x)=θTx

正则化后的代价函数可以拆成两部分:

J(θ)=12mi=1m(hθ(x(i))y(i))2+λ2mj=1nθj2

第一部分是原来的均方误差,第二部分是 L2 正则化惩罚项。注意第二个求和从 j=1 开始,不包含 θ0

为什么梯度里会多出 λmθj?对 j1 求偏导:

θj[λ2mk=1nθk2]=λ2m2θj=λmθj

所以对 j1

J(θ)θj=1mi=1m(hθ(x(i))y(i))xj(i)+λmθj

θ0 没有被放进正则化项,所以它的梯度没有 λmθ0

θ0 不加正则化:

θ0θ0α1mi=1m(hθ(x(i))y(i))x0(i)

对于 j >= 1

θjθjα[1mi=1m(hθ(x(i))y(i))xj(i)+λmθj]

5.4 正则化的逻辑回归模型

逻辑回归也可以加入正则化。

正则化逻辑回归代价函数:

J(θ)=1mi=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]+λ2mj=1nθj2

同样不惩罚 θ0

对于 j >= 1,梯度更新中会额外多出正则化项:

λmθj

5.5 L1 正则化和 L2 正则化

L2 正则化惩罚参数平方和:

j=1nθj2

L1 正则化惩罚的是参数绝对值之和:

j=1n|θj|

两者的直观区别:

方法惩罚方式常见效果
L1 正则化惩罚参数绝对值更容易把部分参数压到 0,可用于特征选择
L2 正则化惩罚参数平方更倾向于让参数整体变小,训练更稳定

深度学习里常说的权重衰减通常和 L2 正则化关系很近,都是通过限制权重过大来提高泛化能力。

L1 和 L2 的几何直觉不同。L1 的约束区域有尖角,优化结果更容易落在坐标轴上,因此更容易得到稀疏参数;L2 的约束区域更平滑,通常会让参数整体变小,而不是直接压成 0

实际使用时:

  • 如果希望模型自动做特征选择,可以考虑 L1。
  • 如果希望训练更稳定、参数不要过大,可以考虑 L2。
  • 在线性模型中 L1 常用于稀疏化,L2 常用于控制模型复杂度。
  • 在深度学习中,权重衰减比纯 L1 更常见。

5.6 正则化的实际作用

广义上,凡是能限制模型自由度、提高泛化能力的方法,都体现了正则化思想。

常见方法包括:

方法作用
增加训练数据让模型看到更多真实变化,减少记忆训练集噪声
数据增强对图像做旋转、平移、裁剪等,扩充训练样本
Dropout训练时随机丢弃一部分神经元,减少神经元之间的过度依赖
早停(Early Stopping)验证集误差开始变差时停止训练
权重衰减(Weight Decay)惩罚过大的权重
标签平滑不让分类标签过于绝对,降低模型过度自信
批归一化稳定训练过程,也可能带来轻微正则化效果

图像任务里常见的数据增强包括随机旋转、随机平移、随机裁剪、颜色扰动等。它们不会改变图像的语义类别,但能让模型不要只记住训练图片的固定位置和细节。

Dropout 常用于神经网络。训练时随机让一部分神经元暂时失效,测试时再使用完整网络。它的目的不是减少参数量,而是降低模型对某些局部特征组合的依赖。

5.7 常见正则化方法的细节

权重衰减

权重衰减的直观作用是让权重不要无限变大。对于很多模型来说,过大的权重意味着模型对输入的微小变化非常敏感,决策边界容易变得曲折。

在线性模型里,L2 正则化会在损失函数里加入参数平方和。用梯度下降更新时,它会让权重每次都被轻微往 0 拉回。

对参数 θj 来说,正则化项带来的梯度是:

λmθj

所以参数越大,被惩罚得越明显。

深度学习里常见的 AdamW 是把权重衰减从 Adam 的梯度更新中解耦出来,通常比直接在 Adam 中加 L2 项更清晰。

Dropout

Dropout 在训练阶段随机屏蔽一部分神经元,相当于每次只使用一个较小的子网络参与更新。

例如 dropout rate 为 0.5 时,训练阶段每次随机让一半神经元输出为 0。这样模型不能过度依赖某个固定神经元或固定特征组合。

测试阶段不再随机丢弃神经元,而是使用完整网络,并按实现方式对激活值或权重做缩放,使训练和测试的输出尺度保持一致。

Dropout 更常用于全连接层,在卷积层中通常要谨慎使用。卷积层参数共享,本身已经有一定约束,过强 Dropout 可能破坏空间特征。

数据增强

数据增强的作用是向训练过程加入任务允许的变化,而不是无条件扩充样本数量。

图像分类中,猫左右翻转后仍然是猫,所以水平翻转通常合理;但医学图像或数字识别中,翻转和旋转可能改变语义,就要谨慎。

常见增强和作用:

增强方式让模型更鲁棒于
随机裁剪目标位置变化
随机翻转左右方向变化
颜色扰动光照和色彩变化
随机旋转拍摄角度变化
Mixup / CutMix样本组合变化,降低过度自信

数据增强的原则是:增强后的样本仍然应该属于原标签。

早停

早停依赖验证集。训练过程中,如果训练误差继续下降,但验证误差开始上升,说明模型正在逐渐记住训练集细节。

早停的做法是保存验证集表现最好的那一轮模型,而不是最后一轮模型。

常见流程:

text
每轮训练 -> 计算验证误差 -> 如果验证误差更低就保存模型 -> 长时间不提升则停止

早停的优点是不需要显式修改损失函数;缺点是它依赖验证集质量,如果验证集太小或分布不稳定,判断也会不稳定。

标签平滑

普通 one-hot 标签会把真实类别设为 1,其他类别设为 0。标签平滑会把真实类别稍微降一点,把其他类别稍微抬一点。

例如三分类中,原始标签可能是:

[1,0,0]

标签平滑后可能变成:

[0.9,0.05,0.05]

这样可以降低模型过度自信,尤其在分类任务中有用。

5.8 贝叶斯视角

从贝叶斯角度看,正则化相当于给参数加入先验偏好。

L2 正则化倾向于让参数不要太大,相当于认为“较小的权重更合理”。这和给参数设置以 0 为中心的高斯先验有关系。训练时,模型不仅要拟合数据,还要符合这个先验偏好。

从这个角度看,正则化并不追求训练集误差最低,而是要求模型参数符合先验约束,从而在新数据上更可靠。它通常会牺牲一部分训练集拟合能力,换取更好的泛化能力。

不同正则化方法虽然形式不同,但目标一致:限制模型在训练集上的自由度,让它学习更稳定、更能迁移到新数据的规律。

Powered by VitePress