损失函数:

L1损失:即平均绝对误差(MAE):MAE = 1/n*∑  | yi - yi^ |

L2损失:即均方误差(MSE):MSE = 1/n*∑ (yi - yi^ )^2

正则化:

L1正则化:即对权重矩阵的每个元素绝对值求和,λ * ||W||

L2正则化:即对权重矩阵的每个元素求平方和(先平方,后求和),1/2 * λ * ||W||^2

注意:正则化项不需要求平均数,因为权重矩阵和样本数量无关,只是为了限制权重规模。

L1损失函数:最小化绝对误差,因此L1损失对异常点有较好的适应更鲁棒,不可导,有多解,解的稳定性不好。
       关于L1损失函数的不连续的问题,可以通过平滑L1损失函数代替:

L2损失函数:最小化平方误差,因此L2损失对异常点敏感,L2损失函数会赋予异常点更大的损失值和梯度,调整网络参数向减小异常点误差的方向更新,因此容易造成训练的不稳定和发散。仅有一解,解的稳定更好。

一、常见的MSE、MAE损失函数
1.1 均方误差、平方损失
均方误差(MSE)是回归损失函数中最常用的误差,它是预测值与目标值之间差值的平方和,其公式如下所示:

下图是均方根误差值的曲线分布,其中最小值为预测值为目标值的位置。


优点:各点都连续光滑,方便求导,具有较为稳定的解

缺点:不是特别的稳健,为什么?因为当函数的输入值距离中心值较远的时候,使用梯度下降法求解的时候梯度很大,可能导致梯度爆炸。

什么是梯度爆炸?
误差梯度是神经网络训练过程中计算的方向和数量,用于以正确的方向和合适的量更新网络权重。
在深层网络或循环神经网络中,误差梯度可在更新中累积,变成非常大的梯度,然后导致网络权重的大幅更新,并因此使网络变得不稳定。在极端情况下,权重的值变得非常大,以至于溢出,导致 NaN 值。
网络层之间的梯度(值大于 1.0)重复相乘导致的指数级增长会产生梯度爆炸。

梯度爆炸引发的问题
在深度多层感知机网络中,梯度爆炸会引起网络不稳定,最好的结果是无法从训练数据中学习,而最坏的结果是出现无法再更新的 NaN 权重值。

1.2 平均绝对误差
平均绝对误差(MAE)是另一种常用的回归损失函数,它是目标值与预测值之差绝对值的和,表示了预测值的平均误差幅度,而不需要考虑误差的方向,范围是0到∞,其公式如下所示:


优点:无论对于什么样的输入值,都有着稳定的梯度,不会导致梯度爆炸问题,具有较为稳健性的解。
缺点:在中心点是折点,不能求导,不方便求解。

上面的两种损失函数也被称之为L2损失和L1损失。

二、L1_Loss和L2_Loss
2.1 L1_Loss和L2_Loss的公式
L1范数损失函数,也被称为最小绝对值偏差(LAD),最小绝对值误差(LAE)。总的说来,它是把目标值(Yi)与估计值(f(xi))的绝对差值的总和(S)最小化:

L2范数损失函数,也被称为最小平方误差(LSE)。总的来说,它是把目标值(Yi)与估计值(f(xi))的差值的平方和(S)最小化:


import numpy as np

def L1(yhat, y):
    loss = np.sum(np.abs(y - yhat))
    return loss

def L2(yhat, y):
    loss =np.sum(np.power((y - yhat), 2))
    return loss
#调用
yhat = np.array([0.1, 0.2, 0.3, 0.4, 0.5])
y = np.array([1, 1, 0, 1, 1])

print("L1 = " ,(L1(yhat,y)))
print("L2 = " ,(L2(yhat,y)))

L1范数与L2范数作为损失函数的区别能快速地总结如下:

L2损失函数 L1损失函数
不是非常的鲁棒(robust) 鲁棒
稳定解 不稳定解
总是一个解 可能多个解

2.2 几个关键的概念
(1)鲁棒性
最小绝对值偏差之所以是鲁棒的,是因为它能处理数据中的异常值。这或许在那些异常值可能被安全地和有效地忽略的研究中很有用。如果需要考虑任一或全部的异常值,那么最小绝对值偏差是更好的选择。
从直观上说,因为L2范数将误差平方化(如果误差大于1,则误差会放大很多),模型的误差会比L1范数来得大,因此模型会对这个样本更加敏感,这就需要调整模型来最小化误差。如果这个样本是一个异常值,模型就需要调整以适应单个的异常值,这会牺牲许多其它正常的样本,因为这些正常样本的误差比这单个的异常值的误差小。

(2)稳定性
最小绝对值偏差方法的不稳定性意味着,对于数据集的一个小的水平方向的波动,回归线也许会跳跃很大(如,在转折点处求导)。在一些数据结构上,该方法有许多连续解;但是,对数据集的一个微小移动,就会跳过某个数据结构在一定区域内的许多连续解。在跳过这个区域内的解后,最小绝对值偏差线可能会比之前的线有更大的倾斜。
相反地,最小平方法的解是稳定的,因为对于一个数据点的任何微小波动,回归线总是只会发生轻微移动;也就说,回归参数是数据集的连续函数。

三、smooth L1损失函数
其实顾名思义,smooth L1说的是光滑之后的L1,前面说过了L1损失的缺点就是有折点,不光滑,导致不稳定,那如何让其变得光滑呢?smooth L1损失函数为:

smooth L1损失函数曲线如下图所示,作者这样设置的目的是想让loss对于离群点更加鲁棒,相比于L2损失函数,其对离群点(指的是距离中心较远的点)、异常值(outlier)不敏感,可控制梯度的量级使训练时不容易跑飞。

L1、L2损失 和 L1、L2正则化相关推荐

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

    损失函数: L1损失: n个样本的平均绝对误差(MAE): 即,真实值和预测值之间的差值的绝对值的和. 使用L1损失函数,就是最小化MAE. L2损失: n个样本的均方误差(MSE): 即,真实值和预 ...

  2. ML之ME/LF:机器学习中常见模型评估指标/损失函数(LiR损失、L1损失、L2损失、Logistic损失)求梯度/求导、案例应用之详细攻略

    ML之ME/LF:机器学习中常见模型评估指标/损失函数(LiR损失.L1损失.L2损失.Logistic损失)求梯度/求导.案例应用之详细攻略 目录 常见损失函数求梯度案例 1.线性回归求梯度 2.L ...

  3. 机器学习02——回归问题中的损失函数 (L2损失L1损失Huber损失函数)

    回归问题预测中的残差 • 预测残差:真实值和预测值之间的差异: ? = ? − ?1 • 忽略预测残差的正负号:残差的平方:?**2 • 最佳模型:残差平方和(Residual Sum of Squa ...

  4. AI笔记: 损失函数之L1损失、L2损失、Huber损失

    损失函数 之前我们知道预测残差和残差平方和,在机器学习中,我们用专门的术语叫损失函数(loss function)度量样本真实值与模型预测值之间差异 如果我们采用残差平方来作为你的损失函数的话,那我们 ...

  5. 范数与L1损失(MAE)、L2损失(MSE)的关系

    L0范数是指向量中非0的元素的个数.(L0范数很难优化求解) L1范数是指向量中各个元素绝对值之和 L2范数是指向量各元素的平方和然后求平方根 L1范数可以进行特征选择,即让特征的系数变为0. L2范 ...

  6. l2高斯分布_L1和L2正则的区别,如何选择L1和L2正则?L1在0处不可导,怎么处理...

    首先毫无疑问的,他们都是可以防止过拟合,降低模型复杂度 L1是在loss function后面加上模型参数的1范数(也就是|xi|)L0范数的最小化问题在实际应用中是NP难问题,无法实际应用.L2是在 ...

  7. 【回归损失函数】L1(MAE)、L2(MSE)、Smooth L1 Loss详解

    1. L1 Loss(Mean Absolute Error,MAE) 平均绝对误差(MAE)是一种用于回归模型的损失函数.MAE 是目标变量和预测变量之间绝对差值之和,因此它衡量的是一组预测值中的平 ...

  8. 目标检测回归损失函数——L1、L2、smooth L1

    一. L1 Loss 1. 函数特性 L1 Loss也称为平均绝对值误差(MAE),是指模型预测值f(x)和真实值y之间绝对差值的平均值,公式如下: 其中 和 分别表示第 个样本的预测值及相应真实值, ...

  9. 目标检测中的BBox 回归损失函数-L2,smooth L1,IoU,GIoU,DIoU,CIoU,Focal-EIoU,Alpha-IoU,SIoU

    目标检测的两个任务,分类和位置回归,本帖将经典的位置回归损失函数总结如下,按发表时间顺序. L1.L2.smooth L1 loss 提出smooth L1 loss的论文: L1最低点是不可导的,所 ...

最新文章

  1. 在EXCEL指定SHEET页,指定文字位置,插入批注
  2. 数据库不推荐使用外键的9个理由!
  3. CentOS下二进制包/源码安装方式的MySQL卸载步骤
  4. 机器学习资料升级版来了!!!
  5. python实现var模型_copula函数及其Var计算的Python实现
  6. 关于在软件中添加扫描二维码功能的详细步骤及对应的资源。
  7. 计算机科技与技术对应岗位,计算机技术与软件专业技术资格名称及岗位基本任职条件...
  8. 理解osi参考模型分层
  9. HDURevenge of Segment Tree(第二长的递增子序列)
  10. 案例篇-HBase 实战之 MOB 使用指南
  11. 大地高、正高和正常高及高程异常
  12. CAD图纸打印出来后很多CAD文字消失了怎么办?
  13. Unity -- 正交/透视相机切换(2D/3D相机切换)
  14. RESTfull API简单项目的快速搭建
  15. 计算机科学与技术专业成功人士,我校2002级计算机科学与技术专业校友重返母校...
  16. 小程序的大于小于等于的写法
  17. 关于nba的html设计,关于NBA篮球网页的设计毕业设计论文.pdf
  18. 9月20日云栖精选夜读:异构计算高性能计算分论坛——揭秘拿什么实现超算平民化、国际化?...
  19. 昨天辞职,年前的年终奖等福利1W多公司不给我了,我该怎么办
  20. postgresql + postgis 离线安装

热门文章

  1. AMD和CMD出生的背景和它们解决的问题
  2. JavaScript的运动——模拟重力场
  3. ThreadLocal 是什么?有哪些使用场景?——Spring系列学习笔记
  4. 【终极方法】Syntax error on tokens, delete these tokens
  5. 极简代码:害死人不偿命的(3n+1)猜想 (15分)
  6. 浅谈万进制算法与大数定理的结合(高精度乘除法,阶乘)
  7. Squid代理(传统代理、透明代理、反向代理)、日志分析、ACL访问控制
  8. python代码检查工具_基于Python3的漏洞检测工具 ( Python3 插件式框架 )
  9. java之网站发送手机短信实现
  10. win7硬盘安装过程图解