首页 > 其他分享 >L1损失和L2损失

L1损失和L2损失

时间:2024-09-13 19:23:57浏览次数:1  
标签:误差 mathbf epsilon 损失 L2 L1

L1 损失和 L2 损失是两种常用的损失函数,用于衡量模型的预测值与真实值之间的误差。它们的主要区别在于对误差的处理方式不同,导致它们的性质和应用场景有所不同。

1. L1 损失 (绝对值损失, MAE)

L1 损失计算的是预测值与真实值之间绝对误差的总和:

[
L_{\text{L1}} = |\mathbf{\epsilon} - \hat{\mathbf{\epsilon}}_\theta(\mathbf{x}t, t)|1 = \sum |\epsilon_i - \hat{\epsilon}\theta(\mathbf{x}_t, t)_i|
]

特点:

  • L1 损失函数的特点是对每个误差取绝对值,因此对异常值(outliers)的影响较小。
  • 由于 L1 损失对大误差的惩罚较小,它倾向于生成更稀疏的解(即许多参数为零),这在某些任务(如稀疏编码或特征选择)中很有用。

梯度特性:

  • L1 损失的梯度是常数:误差为正时梯度为 1,误差为负时梯度为 -1。这意味着当误差很小时,模型的更新速度不会很快。

2. L2 损失 (平方差损失, MSE)

L2 损失计算的是预测值与真实值之间误差的平方和:

[
L_{\text{L2}} = |\mathbf{\epsilon} - \hat{\mathbf{\epsilon}}_\theta(\mathbf{x}t, t)|2^2 = \sum (\epsilon_i - \hat{\epsilon}\theta(\mathbf{x}_t, t)_i)^2
]

特点:

  • L2 损失对大误差的惩罚较大,因为误差的平方会放大大的误差。这使得 L2 损失更敏感于异常值(outliers)。
  • 因为 L2 损失倾向于最小化所有误差,它更适合于均匀分布的数据或误差。

梯度特性:

  • L2 损失的梯度与误差成正比,因此当误差很大时,梯度会更大。这意味着 L2 损失在大误差的情况下会更快地更新参数。

3. 区别总结:

  • L1 损失:计算的是误差的绝对值,因此对每个误差的惩罚是线性的。它对异常值不敏感,适合处理含有噪声的数据。L1 损失也倾向于产生稀疏解。

  • L2 损失:计算的是误差的平方,因此对大误差的惩罚较重。它更适合没有太多噪声的情况,且对异常值敏感。

4. 选择何时使用 L1 或 L2 损失:

  • L1 损失 适合在噪声较大、异常值较多的场景中使用,因为它对大误差的影响较小,且能够产生稀疏解。

  • L2 损失 适合用于误差较为均匀分布的场景中,因为它会对所有误差施加较大的惩罚,从而最大程度地减少所有误差。

5. 在训练中的表现:

  • L2 损失:由于平方的惩罚机制,在大误差时,参数的更新速度较快,因此它可以更快地收敛于一个全局最小值。
  • L1 损失:由于对大误差的更新较为温和,收敛速度相对较慢,但对噪声和异常值的鲁棒性更好。

总结:

  • L1 损失:对误差的绝对值进行惩罚,适合对噪声和异常值不敏感的任务。
  • L2 损失:对误差的平方进行惩罚,更适合平滑且噪声较少的数据,同时可以加速大误差的修正。

标签:误差,mathbf,epsilon,损失,L2,L1
From: https://www.cnblogs.com/csjywu01/p/18412756

相关文章

  • YOLOv9改进策略【损失函数篇】| 引入Soft-NMS,提升密集遮挡场景检测精度,包括GIoU-NMS、
    一、背景:传统的非极大值抑制(NMS)算法在目标检测中存在一个问题,即当一个物体的检测框与具有最高得分的检测框M有重叠(在预定义的重叠阈值内)时,会将该检测框的得分设置为零,从而导致该物体可能被遗漏,降低了平均精度。为了解决这个问题,作者提出了Soft-NMS算法。本文将YOLOv9默认......
  • LLM驱动的NL2SQL方法论:现状、难点、优化
    阅读原文NL2SQL在大型语言模型(LLM)的支持下得到了广泛应用,为了对基于LLM的NL2SQL解决方案进行系统化研究,我们需要全面理解和实践,包括Prompt工程、指令微调(SFT)、Agent、RAG等技术方案。为深入研究NL2SQL提供一些参考和指导。1.什么是NL2SQL简言之,NaturalLanguagetoSQL......
  • C++竞赛初阶L1-15-第六单元-多维数组(34~35课)556: T456506 矩阵转置
    题目内容输入一个 n 行 m 列的矩阵 A,输出它的转置 AT。输入格式第一行包含两个整数 n 和 m,表示矩阵 A 的行数和列数。1≤n≤100,1≤m≤100。接下来 n 行,每行 m 个整数,表示矩阵 A 的元素。相邻两个整数之间用单个空格隔开,每个元素均在 1∼1000 之间。输......
  • C++竞赛初阶L1-15-第六单元-多维数组(34~35课)557: T456507 图像旋转
    题目内容输入一个 n 行 m 列的黑白图像,将它顺时针旋转 90 度后输出。输入格式第一行包含两个整数 n 和 m,表示图像包含像素点的行数和列数。1≤n≤100,1≤m≤100。接下来 n 行,每行 m 个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空格隔开,每个元素......
  • C++竞赛初阶L1-15-第六单元-多维数组(34~35课)555: T456505 矩阵乘法
    题目内容计算两个矩阵的乘法。n×m 阶的矩阵 A 乘以 m×k 阶的矩阵 B 得到的矩阵 C 是 n×k 阶的,且 C[i][j]=A[i][0]×B[0][j]+A[i][1]×B[1][j]+ …… +A[i][m−1]×B[m−1][j](C[i][j] 表示 C 矩阵中第 i 行第 j 列元素)。输入格式第一行为 n,m,k,表......
  • C++竞赛初阶L1-15-第六单元-多维数组(34~35课)554: T456504 矩阵加法
    题目内容输入两个 n 行 m 列的矩阵 A 和 B,输出它们的和 A+B,矩阵加法的规则是两个矩阵中对应位置的值进行加和,具体参照样例。输入格式第一行包含两个整数 n 和 m,表示矩阵的行数和列数 (1≤n≤100,1≤m≤100)。接下来 n 行,每行 m 个整数,表示矩阵 A 的元素......
  • 【小白深度教程 1.16】手把手教你使用 Pytorch3D(1)使用 3D 损失函数来拟合 Mesh
    【小白深度教程1.16】手把手教你使用Pytorch3D(1)使用3D损失函数来拟合Mesh1.安装和导入模块2.加载.obj文件并创建Mesh对象3.可视化源Mesh和目标Mesh4.迭代优化进行拟合5.可视化损失6.保存结果在这篇文章中,我们将学习如何使用3D损失函数变形源......
  • PDshell16反向pgsql中 Unable to list the columns. SQLSTATE = 22003不良的类型值 sh
    问题原因:pdshell逆向pg的sql脚本滞后,与pg新版本不兼容,解决方案:修改掉不兼容的sql代码1、Database->EditCurrentDBMS,如下 2、PostgreSQL9.x->Script->Objects找到Column和Key;如下 3、将Column->SqlListQuery选项里SELECT中的c.attnotnull替换为cast(nullif(c.att......
  • PDshell16逆向PostgreSQL 工程显示字段comment备注
    现状:当刚逆向成功的表结构是没有原来表结构中的,comment备注如下 然后pd逆向工程的sql已经返回了这个备注的含义 解决方案:1、设置显示注释列tools——DisplayPreferences…如下    勾选-按照下面得方式勾选这三个 复制这里的VBS脚本,打开菜单Tools>Execute......
  • TARC/CCL17 Protein, Human 是第一个发现的与 T 细胞具有高亲和力相互作用的 CC 趋化
    品牌:MedChemExpress(MCE)纯度:Greaterthan95%asdeterminedbyreducingSDS-PAGE.分子式:Lyophilizedafterextensivedialysisagainst20mMPB,pH7.4,150mMNaCl.分子量:Approximately8.1kDa存储条件:在-20°C下可保存2年。复溶后,在4°C下可稳定保存1周......