本文目录导读:

这是一个非常核心的机器学习概念。正则化 (Regularization) 是一种防止模型过拟合的技术,它通过在损失函数中加入一个惩罚项,来限制模型参数(权重)的大小,从而让模型变得更简单、更具泛化能力。
L1和L2正则化是两种最常见的方式,下面我从核心思想、数学公式、主要效果、直观理解和适用场景这几个维度为你详细拆解。
核心思想与数学公式
想象一下,原始的损失函数(比如均方误差MSE)是 Loss_original,正则化就是在它的后面加上一个“惩罚项”。
通用形式:
Loss = Loss_original + λ * 惩罚项
- λ (Lambda): 正则化强度系数,λ越大,惩罚力度越强,模型参数会被压缩得越厉害;λ越小,则越接近原始模型。
L1 正则化 (Lasso Regression)
- 惩罚项: 所有模型参数(权重)的绝对值之和。
- 数学公式:
Loss = Loss_original + λ * Σ|wi|wi 是模型的权重系数。
L2 正则化 (Ridge Regression)
- 惩罚项: 所有模型参数(权重)的平方和。
- 数学公式:
Loss = Loss_original + λ * Σ(wi²)wi 是模型的权重系数。
主要效果与区别 (这是最核心的部分)
这是最需要理解的部分,也是面试或应用中常考的点。
| 特性 | L1 正则化 (Lasso) | L2 正则化 (Ridge) |
|---|---|---|
| 主要效果 | 特征选择 (产生稀疏权重) | 权重衰减 (让权重均匀变小) |
| 最终权重 | 许多不重要的特征权重会变成精确的0 | 所有权重都趋近于0,但很少精确为0 |
| 模型复杂度 | 使模型更简单,因为去掉了无用特征 | 使模型更稳定,但保留了所有特征 |
| 解的特性 | 稀疏解 | 稠密解 |
| 导数/梯度 | 梯度为常数(±1),在0点不可导 | 梯度为2*w,在0点可导 |
| 对异常值 | 更鲁棒 (因为不受平方放大的影响) | 更敏感 (因为平方放大了异常值的影响) |
一句话总结:
- L1 是一个“剪刀”,把不重要的特征“剪掉”(权重置0)。
- L2 是一个“压路机”,把所有权重都“压扁”一点,但不会彻底压没。
直观几何解释
想象一个二维损失函数的等高线图(椭圆形),中心点(红点)是最小化原始损失的点,正则化项会施加一个“约束区域”。
- L1: 约束区域是一个菱形 (正方形旋转45度)。
- L2: 约束区域是一个圆。
优化的过程是:在椭圆等高线上找到一个点,使其既能尽可能接近中心(原始损失小),又落在约束区域内(惩罚小)。
-
L1 (菱形): 菱形有“尖角”,这些角落在坐标轴上(比如w1=0),等高线非常容易与菱形的尖角相切,一旦相切,其中一个权重就为0,这就是为什么L1能产生稀疏解。
- 图示: 椭圆与菱形的角相切,得到一个坐标轴上的点。
-
L2 (圆形): 约束区域是光滑的圆形,没有尖角,等高线与圆的切点几乎不可能恰好落在坐标轴上,而是在圆上的某一点,所有权重都非零,但都向圆心收缩。
- 图示: 椭圆与圆的一个弧面相切,得到一个非零的二维点。
(想象图)
L1 (菱形): L2 (圆形):
| w2 | w2
| ██ | ╰─╮
|████ | ╭───╮
| ██ │ │ │
└─────── w1 └─────── w1
(切点可能在角上,导致w1或w2=0) (切点在弧上,w1和w2都不为0)
为什么L1能产生稀疏解?(更容易理解的解释)
想象一个特征非常不重要,它的最优权重值很小,比如0.1。
- L2 情况: 惩罚项是
λ * (0.1)² = 0.01λ,惩罚很小,模型觉得“留着也没太大关系”,于是保留了这个0.1的权重。 - L1 情况: 惩罚项是
λ * |0.1| = 0.1λ,惩罚相对较大,模型一算:“为了保留这个0.1的权重,我要付出0.1λ的代价,不如直接把它设成0,还能省下这个惩罚。” 这个特征的权重就被精确地“剪掉”了。
对于稍微重要一点的特征(比如权重=10):
- L2:
λ * 100(平方放大) - L1:
λ * 10
所以L2对大权重的惩罚更重(100 vs 10),会迫使所有大权重都变小,而L1则对所有非零权重一视同仁地惩罚,导致小权重被优先“清理”掉。
适用场景
| 场景 | 推荐正则化 | 原因 |
|---|---|---|
| 特征非常多,且大部分无用 | L1 (Lasso) | 自动进行特征选择,只保留最关键特征,模型更易解释,文本分类(词袋模型),生物信息学(基因芯片数据)。 |
| 特征数量中等,且可能有关联 | L2 (Ridge) | 能处理多重共线性问题,让所有相关特征都发挥作用,而非只选一个,时间序列预测,价格预测。 |
| 不确定,想结合两者优点 | Elastic Net | 结合了L1和L2,既能做特征选择,又能处理多重共线性,是很多场景下的首选,公式: Loss + λ1*L1 + λ2*L2 |
| 深度学习 | L2 (Weight Decay) | L2几乎是神经网络训练的标配,用于控制模型复杂度、防止过拟合,L1在深度学习中较少用,但在某些稀疏性要求的场景(如自编码器)也会使用。 |
实践中的注意事项
- 特征缩放: 使用正则化前,务必进行特征缩放(如标准化)。 因为正则化惩罚项
|w|或w²对特征尺度敏感,如果一个特征的单位是“米”,另一个是“毫米”,不缩放的话,正则化会不公平地惩罚大尺度特征。 - λ 的选择: 通常通过交叉验证来选择最佳的 λ 值,λ 越大,模型越简单,λ 设为零,则退化为普通线性回归。
- 偏置项 (bias/intercept): 通常不对偏置项进行正则化,因为偏置项只影响模型整体平移,不会影响特征的重要性。
- L1 (Lasso): 像个激进的门卫,把没用的特征直接挡在门外(权重=0),适合特征选择。
- L2 (Ridge): 像个和事佬,让所有人都低调一点(权重都变小),但没有开除任何人,适合保持特征完整性。
- 共同目标: 防止过拟合,提高模型的泛化能力。