| 维度 | L1 归一化 | L2 归一化 |
|---|---|---|
| 公式 | x^=x∣x∣1=x∑i∣xi∣\hat{x}=\dfrac{x}{|x|_1}=\dfrac{x}{\sum_i |x_i|}x^=∣x∣1x=∑i∣xi∣x | x^=x∣x∣2=x∑ixi2\hat{x}=\dfrac{x}{|x|_2}=\dfrac{x}{\sqrt{\sum_i x_i^2}}x^=∣x∣2x=∑ixi2x |
| 归一化后约束 | ∑i∣x^i∣=1\sum_i |\hat{x}_i|=1∑i∣x^i∣=1 | ∣x^∣2=1|\hat{x}|_2=1∣x^∣2=1 |
| 几何含义 | 把向量缩放到 L1 单位球上 | 把向量缩放到单位超球面上 |
| 对大元素敏感度 | 相对更鲁棒,异常值不会被平方放大 | 对大元素更敏感,因为平方会放大 |
| 与稀疏性关系 | 归一化本身不会把元素变成 0;只是让绝对值之和为 1 | 归一化本身不会把元素变成 0;只是让欧氏长度为 1 |
| 常见场景 | 概率化表示、稀疏特征、词频/直方图归一 | 特征向量单位化、余弦相似度、检索/匹配 |
在深度学习/检索里的典型用法:
在特征匹配、图像检索、向量相似度搜索里,L2 归一化更常见。因为对两个 L2 归一化后的向量做点积,就等价于余弦相似度,所以很多 pipeline 会先对特征向量做 L2 归一化,再用内积或余弦相似度做匹配。
L1 归一化则更常用于需要“概率化/占比化”的场景,比如把直方图、词频向量归一成总和为 1 的形式。
| 方法 | 正则化项 | 效果 |
|---|---|---|
| L1 正则化 | λ∑iwi\lambda \sum_i w_iλ∑iwi | 倾向产生稀疏解,部分权重被压到 0,可做特征选择 |
| L2 正则化 | λ∑iwi2\lambda \sum_i w_i^2λ∑iwi2 | 让权重整体变小但通常不为 0,模型更平滑稳定 |
L1/L2 正则化是对模型参数加约束,用来防止过拟合;而前面说的 L1/L2 归一化是对特征向量做缩放,用来统一尺度或做相似度计算。两者虽然都叫 L1/L2,但作用对象完全不同。
为什么能防过拟合?
模型过拟合时,往往会依赖某些特别大的权重去“死记”训练样本。正则化通过在损失函数里加入惩罚项,迫使模型在“拟合训练数据”和“保持参数较小”之间做平衡。
L1:绝对值惩罚对大权重和小权重都是线性惩罚,容易把不重要的权重直接压到 0,从而筛掉冗余特征。
L2:平方惩罚对大权重惩罚更重,所以它会把所有权重一起压小,但通常不会精确变成 0。
几何直观
如果把原始损失函数的等高线画出来,再叠上正则化约束区域:
L1 约束区域是菱形,等高线更容易在菱形顶点处相切,而顶点往往落在坐标轴上,所以某些权重会变成 0。
L2 约束区域是圆形,等高线通常在圆边上相切,权重会整体缩小,但不太会精确落在坐标轴上。
贝叶斯视角
L1 正则化等价于假设参数服从拉普拉斯先验;
L2 正则化等价于假设参数服从高斯先验。
这也解释了为什么 L1 更偏向稀疏,而 L2 更偏向平滑。
在深度学习中的使用
在深度神经网络里,L2 正则化更常见,也常被称为权重衰减。因为深层网络通常希望保留全部特征表示,只是限制参数幅度,避免某些权重过大导致不稳定。
L1 正则化在浅层模型、高维稀疏特征、需要自动特征选择的场景里更有用,比如文本分类、基因数据分析等。