深度学习进阶:自然语言处理|6.1.4 QA|L2 范数、梯度裁剪与 L1/L2 正则化详解

一、L2 范数是什么

L2 范数就是向量的欧几里得长度(直线距离):

∥x∥2=x12+x22+⋯+xn2\|\mathbf{x}\|_2 = \sqrt{x_1^2 + x_2^2 + \cdots + x_n^2}∥x∥2=x12+x22+⋯+xn2

图解:从原点到 (3, 4) 的距离

1 2 3 4 1 2 3 4 (3, 4) L2 = √(9+16) = 5 横走 3 竖走 4 L2 = 5 L1 = 7


二、Lp 范数家族

通用公式:

∥x∥p=(∣x1∣p+∣x2∣p+⋯+∣xn∣p)1/p\|\mathbf{x}\|_p = \left( |x_1|^p + |x_2|^p + \cdots + |x_n|^p \right)^{1/p}∥x∥p=(∣x1∣p+∣x2∣p+⋯+∣xn∣p)1/p

范数 p 值 计算方式 直觉
L1 1 Σ|xᵢ| 沿街道走(曼哈顿距离)
L2 2 √(Σxᵢ²) 直线飞过去(欧几里得距离)

三、为什么范数要带绝对值

图解:正负抵消的问题

0 -100 +100 x1 = +100 x2 = -100 不加绝对值 100 + (-100) = 0 加绝对值 |100| + |-100| = 200 核心理解:范数本质是衡量大小,绝对值防止正负抵消。

⚠️ 易错点: 计算 L1 范数时忘记加绝对值

  • 错误示范: 向量 (1, -2, 3) 的 L1 范数 = 1 + (-2) + 3 = 2 ❌
  • 正确计算: 向量 (1, -2, 3) 的 L1 范数 = |1| + |-2| + |3| = 1 + 2 + 3 = 6

四、梯度裁剪(Gradient Clipping)

4.1 梯度爆炸问题

在 RNN 中,反向传播经过多个时间步,梯度会被反复相乘。如果每步乘以一个大于 1 的值,梯度就会指数级增长------这就是梯度爆炸

4.2 解决方案:用 L2 范数裁剪梯度

复制代码
if ‖ĝ‖ ≥ threshold:
    ĝ = (threshold / ‖ĝ‖) × ĝ

4.3 图解:梯度裁剪的几何意义

阈值圆 (threshold=2) 原点 原始梯度 ||g||=10 裁剪后 ||g||=2 方向不变 ||g||=1.5 < 2 不裁剪,保持不变 裁剪规则: 超出圆的 → 缩到圆上 | 圆内的 → 不动 ⚠️ 易错点: 以为所有梯度都会被裁剪

  • 错误理解: 梯度 L2 范数 = 1.5,阈值 = 2 → 也会被裁剪 ❌
  • 正确理解: 1.5 < 2,不进入 if 分支,梯度保持不变 ✓

五、L1 正则化 vs L2 正则化

5.1 正则化是什么

在 loss 函数中加一个惩罚项,防止权重过大(过拟合):

L=原始loss+λ⋅权重的惩罚L = \text{原始loss} + \lambda \cdot \text{权重的惩罚}L=原始loss+λ⋅权重的惩罚

正则化类型 惩罚项 别名
L1 正则化 λΣ|wᵢ| Lasso
L2 正则化 λΣwᵢ² Ridge / Weight Decay

5.2 图解:L1 vs L2 对权重分布的偏好

A = (0.5, 0.5, 0.5, 0.5) 分散均匀 0.5 0.5 0.5 0.5 B = (0, 0, 0, 2) 集中在一个 0 0 0 2 L1 惩罚 = 2 L2 惩罚 = 1 L1 惩罚 = 2 L2 惩罚 = 4 ← 重罚! 结论:L1 对两者一视同仁(都是2) L2 重罚集中权重(4 vs 1),逼模型分散权重 ⚠️ 易错点: 混淆 L2 范数和 L2 正则项

B = (0, 0, 0, 2) 的:

  • L2 范数 = √(0+0+0+4) = √4 = 2
  • L2 正则项 (范数的平方)= 0+0+0+4 = 4

正则化用的是 Σwᵢ²(平方和),不是 √(Σwᵢ²)(范数本身)


六、为什么梯度下降需要对正则项求导

正则化写的是 loss 函数 ,但更新权重用的是梯度下降

wnew=w−η⋅∂L∂ww_{\text{new}} = w - \eta \cdot \frac{\partial L}{\partial w}wnew=w−η⋅∂w∂L

所以必须对 loss(包括正则项)求导,才能得到更新方向。

正则项 对 wᵢ 求导后的梯度 说明
λwᵢ² 2λwᵢ 幂函数求导:(x²)' = 2x
λ|wᵢ| λ · sign(wᵢ) 绝对值求导:正数→+1,负数→-1

注:有些教材把 L2 正则项写成 (λ/2)Σwᵢ²,求导后 2 和 1/2 抵消,梯度变为 λwᵢ。两种约定都对。


七、手算对比:L1 vs L2 更新权重

设定

  • 两个权重:w₁ = 0.5,w₂ = 0.02
  • 原始 loss 的梯度 = 0(只有正则项在推)
  • 学习率 η = 0.1,正则化强度 λ = 1

L2 正则化更新

梯度 = 2λwᵢ(与权重大小成正比

复制代码
w₁: 梯度 = 2×1×0.5 = 1.0    →  w₁_new = 0.5 - 0.1×1.0 = 0.4
w₂: 梯度 = 2×1×0.02 = 0.04  →  w₂_new = 0.02 - 0.1×0.04 = 0.016

L1 正则化更新

梯度 = λ × sign(wᵢ)(固定大小,与权重无关

复制代码
w₁: 梯度 = 1×sign(0.5) = 1   →  w₁_new = 0.5 - 0.1×1 = 0.4
w₂: 梯度 = 1×sign(0.02) = 1  →  w₂_new = 0.02 - 0.1×1 = -0.08

⚠️ 易错点: 把 L1 的梯度算成 λ×wᵢ(跟 L2 搞混)

  • 错误: L1 对 w₂ 的梯度 = 1 × 0.02 = 0.02 ❌
  • 正确: L1 对 w₂ 的梯度 = 1 × sign(0.02) = 1 × 1 = 1

sign() 只看正负号,不看大小!正数永远给 +1,负数永远给 -1。

图解:L1 vs L2 对小权重 w₂ 的不同命运

w₂ = 0.02 经过一步更新后的命运 L2: 0 0.02 (原值) 0.016 (新值) 推力=0.04 (很小) L1: 0 0.02 -0.08 (穿过零!) 推力=1 (恒定!) 穿过零 → 截断为 0 L2: 推力与权重成正比,越小推越轻 | L1: 推力恒定,小权重直接被杀


八、实际应用场景:房价预测

100 个特征中只有 ~10 个真正有用,其余是噪声。

图解:训练后的权重分布

训练后权重分布对比 L2 正则化 有用特征 噪声(小但非0) 100个权重全部非零 "所有特征都有点用" 全局音量旋钮 L1 正则化 0 0 0 0 0 0 有用特征 噪声(全=0) 只剩 8-12 个非零权重 "自动选出重要特征" 自动特征选择器


九、一句话总结

  • L2 正则化 = 全局音量旋钮(所有权重均匀缩小)
  • L1 正则化 = 自动特征选择器(不重要的权重直接归零)
  • 梯度裁剪 = 速度限制器(梯度太大时等比缩小,方向不变)
相关推荐
陈嘿萌15 小时前
恶劣天气红外与可见光图像融合:佛山大学团队系列研究与 AWMM-100k 基准数据集
人工智能·图像融合·恶劣天气条件·佛山大学·系列研究
菜鸡旭旭15 小时前
【AI培训中台场景润色】
人工智能
wuweijianlove15 小时前
算法调优中的性能回归与基准测试分析的技术7
人工智能·数据挖掘·回归
迈威通信15 小时前
储能BMS、PCS设备协议繁多,工业网关该如何选型才能支撑边缘计算?
网络·人工智能·安全·边缘计算·信息与通信
小飞侠是个胖子15 小时前
10个全栈聚合平台项目实战:AI提示词与架构设计指南
人工智能
qq_5469372715 小时前
内置 AI 搜索、换肤、PDF 工具、100G 网盘,这款浏览器有点东西
人工智能·pdf
“码”力全开15 小时前
容器化架构下的边缘计算:基于Docker与GB28181/RTSP多协议汇聚的AI视频管理平台架构解析与源码交付实践
人工智能·架构·边缘计算
企学宝15 小时前
3分钟了解企学宝AI培训学习平台的收费标准与权益
人工智能·saas·企业培训
土星云SaturnCloud15 小时前
边缘计算微服务器自然散热技术详解
服务器·人工智能·ai·边缘计算