当前位置: 首页 > article >正文

【深度学习】L1损失、L2损失、L1正则化、L2正则化

文章目录

  • 1. L1 损失(L1 Loss)
  • 2. L2 损失(L2 Loss)
  • 3. L1 正则化(L1 Regularization)
  • 4. L2 正则化(L2 Regularization)
  • 5. 总结
    • 5.1 为什么 L1 正则化会产生稀疏解 L2 正则化会让权重变小

L1损失、L2损失、L1正则化、L2正则化是机器学习中常用的损失函数和正则化技术,它们在优化过程中起着至关重要的作用。它们的作用分别在于如何计算模型误差和如何控制模型的复杂度。

1. L1 损失(L1 Loss)

L1损失又称为绝对误差损失,它是预测值和真实值之间的绝对差值的和。它的计算公式为:

L 1 L o s s = ∑ i = 1 n ∣ y i − y ^ i ∣ L1 Loss = \sum_{i=1} ^n |y_i-\hat y_i| L1Loss=i=1nyiy^i

  • y i y_i yi 是真实值
  • y ^ i \hat y_i y^i 是预测值
  • N N N 是样本数

特点:

  • 对于较大的误差,L1损失的惩罚较为平缓(线性增长),因此它对于异常值(outliers)的影响较小
  • L1损失函数产生的优化过程可能会导致稀疏解(一些参数变为0),这种特性在特征选择和稀疏模型中非常有用

优缺点:

  • 优点:L1损失对异常值不敏感,适用于一些具有较大噪声数据的场景
  • 缺点:L1损失的梯度在零点处不可导,这可能会导致某些优化算法(如梯度下降)在训练时出现问题

2. L2 损失(L2 Loss)

L2损失也叫均方误差损失(Mean Squared Error Loss, MSE)。它是预测值和真实值之间的平方差的和。公式为:
L 2 L o s s = ∑ i = 1 n ( y i − y ^ i ) 2 L2 Loss = \sum_{i=1} ^n (y_i-\hat y_i)^2 L2Loss=i=1n(yiy^i)2
L2损失函数通常用于回归问题,它鼓励模型产生小的误差

特点:

  • L2损失对误差的惩罚是平方的,意味着较大的误差会受到更大的惩罚,因此模型会倾向于减少较大误差。
  • L2损失函数是平滑的,在优化过程中更加稳定,且可以保证优化的梯度是可导的
  • L2损失更容易产生较为平滑的预测,不会像L1那样产生稀疏解

优缺点:

  • 优点:对于大多数情况,L2损失提供了更平滑和稳定的优化,特别是在无异常值数据上表现较好
  • 缺点:L2损失对异常值非常敏感,异常值会极大地影响模型性能

3. L1 正则化(L1 Regularization)

L1正则化通过向损失函数中添加一项L1范数(即参数绝对值的和)来控制模型的复杂度。L1正则化的公式为:

L 1   R e g u l a r i z a t i o n = λ ∑ i = 1 p ∣ w i ∣ L1\ Regularization = \lambda \sum_{i=1}^p|w_i| L1 Regularization=λi=1pwi

  • w i w_i wi 是模型参数
  • p p p 是参数的总数
  • λ \lambda λ 是正则化的超参数,用于控制正则化的权重

特点:

  • L1正则化的效果是稀疏化,它可以使一些参数变为零,从而使得模型更加简洁,适合进行特征选择
  • 当使用L1正则化时,优化过程中某些特征可能会被完全剔除,特别是当特征不重要时

优缺点:

  • 优点:L1正则化能够自动进行特征选择,产生稀疏解,减少过拟合的风险。
  • 缺点:如果特征之间有较强的相关性,L1正则化可能会不稳定,导致模型对特征的选择过于敏感

4. L2 正则化(L2 Regularization)

L2正则化通过向损失函数中添加一项L2范数(即参数的平方和)来约束模型的复杂度。L2正则化的公式为:

L 2   R e g u l a r i z a t i o n = λ ∑ i = 1 p w i 2 L2\ Regularization = \lambda \sum_{i=1}^p w_i^2 L2 Regularization=λi=1pwi2

  • w i w_i wi 是模型参数
  • p p p 是参数的总数
  • λ \lambda λ 是正则化的超参数,用于控制正则化的权重

特点:

  • L2正则化不会将参数置为零,而是减小参数的大小。它鼓励参数尽可能小,从而避免过拟合
  • L2正则化的优化过程是平滑的,因为它有一个可导的梯度

优缺点:

  • 优点:L2正则化会减少模型对训练数据的过度拟合,同时不会像L1正则化那样丢弃特征,因此适用于特征之间存在强相关性的情况。
  • 缺点:L2正则化不会像L1正则化那样产生稀疏解,因此无法进行特征选择

5. 总结

5.1 为什么 L1 正则化会产生稀疏解 L2 正则化会让权重变小

稀疏性:很多参数值为0

L1 的梯度:

L = L ( W ) + λ ∑ i = 1 p ∣ w i ∣ ∂ L ∂ w i = ∂ L ( W ) ∂ w i + λ ⋅ sign ( w i ) w i = w i − l r ∗ ∂ L ∂ w j − l r ∗ λ sign ( w i ) L = L(W) + \lambda \sum_{i=1}^p|w_i| \\ \frac{\partial L}{\partial w_i} = \frac{\partial L(W)}{\partial w_i} + \lambda \cdot \text{sign}(w_i) \\ w_i = w_i - lr*\frac{\partial L}{\partial w_j} - lr* \lambda \text{sign}(w_i) L=L(W)+λi=1pwiwiL=wiL(W)+λsign(wi)wi=wilrwjLlrλsign(wi)

其中:

  • ∂ L ( W ) ∂ w j \frac{\partial L(W)}{\partial w_j} wjL(W) 是损失函数 L ( W ) L(W) L(W) 对于 w j w_j wj 的偏导数,
  • λ \lambda λ 是正则化系数,
  • sign ( w j ) \text{sign}(w_j) sign(wj) 是符号函数,定义为:

sign ( w i ) = { 1 if  w i > 0 0 if  w i = 0 − 1 if  w i < 0 \text{sign}(w_i) = \begin{cases} 1 & \text{if } w_i > 0 \\ 0 & \text{if } w_i = 0 \\ -1 & \text{if } w_i < 0 \end{cases} sign(wi)= 101if wi>0if wi=0if wi<0

L2的梯度:

L = L ( W ) + λ ∑ i = 1 p w i 2 ∂ L ∂ w j = ∂ L ( W ) ∂ w j + 2 λ w i w i = w i − l r ∗ ∂ L ∂ w j − l r ∗ 2 λ w i L = L(W) + \lambda \sum_{i=1}^pw_i^2 \\ \frac{\partial L}{\partial w_j} = \frac{\partial L(W)}{\partial w_j} + 2\lambda w_i \\ w_i = w_i - lr*\frac{\partial L}{\partial w_j} - lr*2 \lambda w_i L=L(W)+λi=1pwi2wjL=wjL(W)+2λwiwi=wilrwjLlr2λwi

因此有 当 w i < 1 w_i<1 wi<1 的时候,L2 的惩罚项会越来越小,但是 L1 的惩罚项还是很大,因此 L1 会让参数变为 0, 但是L2 很难。

  • L2 的惩罚项对于较小的权重会越来越小,而 L1 的惩罚项仍然保持相对较大,所以 L1 会更容易将权重变为 0,而 L2 很难做到这一点
  • L2惩罚项的变化:当 w i w_i wi 很小(例如小于 1)时,L2 的惩罚项确实变得很小,但它不会像 L1 那样 直接将权重逼近零,而是让权重变得越来越小,但是不至于完全为零。L2 的惩罚项对权重的影响是 平滑的。
  • L1惩罚项的影响:L1 的惩罚项 不会随着 w i w_i wi 的变小而显著减小,它对小权重的影响依然存在,特别是在训练过程中,L1 会倾向于 将一些权重压缩为零,甚至当权重已经很小的时候,也会对其施加强迫。

总结:

  • L1 正则化更容易产生 稀疏解,因为它对权重值的绝对值施加线性惩罚,尤其当权重接近零时,它会强迫一些权重变为零
  • L2 正则化的惩罚项是平滑的平方项,它 不会强迫权重完全为零,而是倾向于使权重变小
  • L1 正则化更容易将权重压缩为零(产生稀疏解),而 L2 正则化会让权重变小,但很难让它们变为零

http://www.kler.cn/a/511457.html

相关文章:

  • 金仓Kingbase客户端KStudio报OOM:Java heap space socketTimeout
  • SQL-leetcode—626. 换座位
  • 日志收集Day002
  • Android系统开发(八):从麦克风到扬声器,音频HAL框架的奇妙之旅
  • 密钥轮换时,老数据该如何处理
  • OpenVela——专为AIoT领域打造的开源操作系统
  • opencv_KDTree_搜索介绍及示例
  • docker访问权限问题
  • 使用Python和FFmpeg批量转换视频为GIF
  • 49.向配置文件写入 C#例子
  • Windows截获系统鼠标消息转发到指定窗口
  • Unity 热更新对象绑定的替代方案--StrangeIoC 注入方式
  • 计算机毕业设计Python+卷积神经网络租房推荐系统 租房大屏可视化 租房爬虫 hadoop spark 58同城租房爬虫 房源推荐系统
  • 3D线上会议:打破空间限制,重塑会议未来
  • 管理口令安全和资源(二)
  • CSS笔记基础篇01——选择器、文字控制属性、背景属性、显示模式、盒子模型
  • HTTP/2 与 HTTP/3 的新特性
  • Matlab总提示内存不够用,明明小于电脑内存
  • DilateFormer: Multi-Scale Dilated Transformer for Visual Recognition 中的空洞自注意力机制
  • ACL基础理论
  • 跨境电商使用云手机用来做什么呢?
  • 网络系统管理Linux环境——ROUTERSRV之SSH
  • 怎么在iPhone手机上使用便签进行记录?
  • 在亚马逊云科技上高效蒸馏低成本、高精度的Llama 3.1 405B模型(上篇)
  • QT 使用OpenGL显示并查看点云图
  • LabVIEW 水电站厂内经济运行系统