机器学习的L1、L2损失函数

**

问题一:损失函数是什么?

**

损失函数就一个具体的样本而言,模型预测的值与真实值之间的差距。
哦哦,这句话怎么理解呢,就是我们使用自己的算法模型,然后就是自己的模型产生了一个自己进行判断出来的y(猜),然后我们放入模型进行训练的值就有一个y(真正),如何衡量我们模型产生的一个预测值和原本的值之间的差距呢,就是使用这个损失函数进行一个配对,让我们可以直观地看到机器学习的效果。

还有一种说法是:对于一个样本(xi,yi)其中yi为真实值,而f(xi)为我们的预测值。使用损失函数L(f(xi),yi)来表示真实值和预测值之间的差距。两者差距越小越好,最理想的情况是预测值刚好等于真实值。

**

下面来介绍一些主流的损失函数

**

L1 Loss损失函数

机器学习的L1、L2损失函数

L1 Loss损失函数的优点与缺点

观察L1 Loss的图像如图下图所示:在图中我们可以看到的就是L1 Loss对于进行求导之后的线段是一个直线,因为我们可以联想提到的L1 Loss的损失函数公式,就能进行推导出来这个求导的线段。

机器学习的L1、L2损失函数
pytorch实现:
x = torch.Tensor([1, 2, 3])
y = torch.Tensor([1, 0, 6])
L1loss = nn.L1Loss()
loss1 = L1loss(x, y)
print(loss1)

优点:

  1. L1 loss的鲁棒性(抗干扰性)比L2 loss强。 概括起来就是L1对异常点不太敏感,而L2则会对异常点存在放大效果。因为L2将误差平方化,当误差大于1时,误会会放大很多,所以使用L2 loss的模型的误差会比使用L1 loss的模型对异常点更敏感。如果这个样本是一个异常值,模型就需要调整以适应单个的异常值,这会牺牲许多其它正常的样本,因为这些正常样本的误差比这单个的异常值的误差小。如果异常值对研究很重要,最小均方误差则是更好的选择。

缺点:

  1. L1 loss 对 x(损失值)的导数为常数,在训练后期,x较小时,若学习率不变,损失函数会在稳定值附近波动,很难收敛到更高的精度。
  2. L2 loss的稳定性比L1 loss好。概括起来就是对于新数据的调整,L1的变动很大,而L2的则整体变动不大。

L2 Loss损失函数

机器学习的L1、L2损失函数

L2 Loss损失函数的图像如下:

缺点:

从L2 loss的图像可以看到, 图像(上图左边红线)的每一点的导数都不一样的,离最低点越远,梯度越大,使用梯度下降法求解的时候梯度很大,可能导致梯度爆炸。

比如在深度学习的领域里面一般是不适用L1 Loss损失函数,一般使用L2Loss损失函数。

Original: https://blog.csdn.net/blockshowtouse/article/details/124630394
Author: 在西湖雾雨中起舞
Title: 机器学习的L1、L2损失函数

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/618137/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球