从 L1/L2 到 Dropout:深度解析正则化,为何推荐系统"只能练一次"?
前言:
在机器学习面试中,"正则化"是一个出现率极高的话题。很多人能背出"L1产生稀疏解,L2防止过拟合",但如果面试官追问:"从微积分角度解释为什么L1能稀疏?"或者"在推荐系统中,过拟合了能通过增加 Epoch 解决吗?" 很多人就会卡壳。
今天,我们从几何直观到数学本质,再到工业界实战,彻底把"抗过拟合"这套组合拳讲清楚。
一、 为什么我们需要正则化?
在训练模型时,我们经常面临一个核心矛盾:我们希望模型在训练集上表现好(Loss低),但又怕它"记性太好"(过拟合)。
过拟合(Overfitting)的本质是模型学会了"死记硬背"。它记住了训练数据中的噪声和偶然特征,导致在面对从未见过的测试集时表现糟糕。
为了解决这个问题,我们在损失函数中引入了正则项(Penalty):
<math xmlns="http://www.w3.org/1998/Math/MathML"> T a r g e t = L o s s + λ ⋅ P e n a l t y Target = Loss + \lambda \cdot Penalty </math>Target=Loss+λ⋅Penalty
这里的 <math xmlns="http://www.w3.org/1998/Math/MathML"> λ \lambda </math>λ 是一个超参数,用来控制惩罚的力度。
二、 L1 vs L2:几何与数学的双重降维打击
这是正则化最经典的双子星:Lasso (L1) 和 Ridge (L2) 。
1. 几何直观:圆与菱形的碰撞
我们在二维平面上观察(假设只有两个参数 <math xmlns="http://www.w3.org/1998/Math/MathML"> w 1 , w 2 w_1, w_2 </math>w1,w2):
- L2 正则化 ( <math xmlns="http://www.w3.org/1998/Math/MathML"> w 1 2 + w 2 2 ≤ C w_1^2 + w_2^2 \le C </math>w12+w22≤C) :约束区域是一个圆。
- L1 正则化 ( <math xmlns="http://www.w3.org/1998/Math/MathML"> ∣ w 1 ∣ + ∣ w 2 ∣ ≤ C |w_1| + |w_2| \le C </math>∣w1∣+∣w2∣≤C) :约束区域是一个菱形(旋转45度的正方形)。
模型训练的过程,就是损失函数的等高线(绿圈)不断膨胀,去接触约束区域(黄色图形)的过程。
- L2的圆 通常在圆弧边缘被切到,接触点很少落在坐标轴上,所以参数 <math xmlns="http://www.w3.org/1998/Math/MathML"> w w </math>w 只是变小,但不会为 0。
- L1的菱形 有尖锐的角(Corner) ,且这些角都在坐标轴上。等高线极大概率会先碰到这些尖角,直接导致某个 <math xmlns="http://www.w3.org/1998/Math/MathML"> w w </math>w 变为 0。
2. 数学本质:恒定力 vs 衰减力
如果面试官让你写出梯度下降的更新公式,这才是拉开差距的地方。
-
L2 的权重衰减 (Weight Decay):
在梯度下降中,L2 的更新公式隐含了一个系数:
<math xmlns="http://www.w3.org/1998/Math/MathML"> θ n e w = θ o l d ( 1 − α λ n ) − α ⋅ Gradient \theta_{new} = \theta_{old}(1 - \alpha\frac{\lambda}{n}) - \alpha \cdot \text{Gradient} </math>θnew=θold(1−αnλ)−α⋅Gradient
这里的 <math xmlns="http://www.w3.org/1998/Math/MathML"> ( 1 − α λ n ) (1 - \alpha\frac{\lambda}{n}) </math>(1−αnλ) 通常是一个像 <math xmlns="http://www.w3.org/1998/Math/MathML"> 0.99 0.99 </math>0.99 这样的数。这意味着:每次更新前,L2 都会按比例"缩小"旧权重。这种力是线性的,越接近 0,拉力越小,所以很难减到 0。
-
L1 的恒定推力:
L1 的导数包含符号函数 <math xmlns="http://www.w3.org/1998/Math/MathML"> sgn ( w ) \text{sgn}(w) </math>sgn(w):
<math xmlns="http://www.w3.org/1998/Math/MathML"> θ n e w = θ o l d − α λ sgn ( w ) n − α ⋅ Gradient \theta_{new} = \theta_{old} - \frac{\alpha\lambda \text{sgn}(w)}{n} - \alpha \cdot \text{Gradient} </math>θnew=θold−nαλsgn(w)−α⋅Gradient
这意味着:无论 <math xmlns="http://www.w3.org/1998/Math/MathML"> w w </math>w 是大是小,L1 都施加一个恒定的力把它推向 0。如果推过了头,符号函数反向,瞬间锁死在 0。这就是 L1 具备特征选择能力的数学原理。
| 特性 | L1 正则化 | L2 正则化 |
|---|---|---|
| 解的性质 | 稀疏解 (Sparse) | 稠密解 (Dense) |
| 核心作用 | 特征选择,去除无用噪声 | 权重平滑,防止过拟合 |
| 适用场景 | 高维稀疏特征 (如NLP) | 通用场景,保持模型鲁棒性 |
三、 深度学习时代的"核武器":Dropout
到了神经网络时代,模型参数动辄上亿,我们需要更暴力的手段------Dropout。
什么是 Dropout?
简单说,就是在训练过程中,按照一定概率(比如 50%)随机"删号" ,让神经元暂时停止工作(输出置为 0)。
为什么它有效?
- 拒绝"抱大腿": 模型不能依赖某个特定的强力神经元,因为该神经元随时可能下线。这强迫所有神经元都学会独立提取特征,增强了鲁棒性。
- 低配版集成学习: 每次 Dropout 后的网络结构都不同。训练一个 Dropout 网络,相当于训练了 <math xmlns="http://www.w3.org/1998/Math/MathML"> 2 n 2^n </math>2n 个子网络,最后预测时取平均,这天然就是一种 Ensemble Learning。
四、 工业界实战:推荐系统中的"One-Epoch"悖论
这是书本上学不到的实战经验。
问题: 如果你的推荐模型(如 DeepFM)出现了欠拟合,能否像 CV/NLP 那样,通过增加训练轮数(Epochs)来解决?
答案:绝对不行。推荐算法的数据通常只能训练一次(One-Epoch)。
深度剖析
推荐系统主要依赖 ID 类特征(User ID, Item ID)。这些特征是极度稀疏的。
- 过拟合风险极高: ID 特征太具体了。如果同一个 User ID 对应的样本被模型看了两遍,模型会迅速"死记硬背"住这个用户的历史行为,而不是学习他的兴趣偏好。这会导致严重的过拟合。
- 数据分布漂移 (Distribution Shift): 用户的兴趣是流动的。昨天的数据和今天的数据分布可能完全不同。推荐系统追求的是 Online Learning,数据像流水一样过一遍即可,模型要永远追逐最新的数据分布,而不是在旧数据上反复纠缠。
正确的改进方向:
正如资料中所述,如果你在推荐系统中遇到性能瓶颈,不要加 Epoch,而应该:
- 添加新特征: 给模型更多信息量。
- 增加网络复杂度: 提升模型的容量。
- 调参: 减小正则化系数 <math xmlns="http://www.w3.org/1998/Math/MathML"> λ \lambda </math>λ。
五、 总结
- L1 是屠龙刀,砍掉无用特征,留下稀疏骨架。
- L2 是紧箍咒,限制权重膨胀,保持模型稳重。
- Dropout 是分身术,通过随机失活实现集成效果。
- 推荐系统是特种兵 ,面对稀疏 ID 特征,切记 One-Epoch 原则,不要贪杯。
掌握了这些,你不仅能应对面试中的连环追问,更能理解工业界模型设计的底层逻辑。