深度学习中的损失函数

损失函数是经验风险函数的核心部分,也是结构风险函数的重要组成部分。模型的结构风险函数包括了经验风险项和正则项,通常可以表示成如下式子:
在这里插入图片描述
其中,前面的均值函数表示的是经验风险损失函数,L表示的是损失函数,后面的是正则化项

损失函数

Pixel-wise损失函数

Pixel-wise损失函数用于计算预测图像和目标图像的像素间损失。主要有 L1损失函数、L2损失函数和交叉熵损失函数。由于这些损失函数分别对每个像素向量的类预测进行评估,然后对所有像素进行平均,因此它们断言图像中的每个像素都具有相同的学习能力。这在图像的语义分割中特别有用,因为模型需要学习像素级的密集预测。

L1损失函数和L2损失函数

在深度学习中,L1损失函数和L2损失函数一般用于回归
L1损失函数,即为最小绝对值偏差(MAE)。表达式如下:
在这里插入图片描述
L1损失函数由于导数不连续,可能存在多个解,当数据集有一个微笑的变化,解可能会有一个很大的跳动,L1的解不稳定。
L2损失函数,即为最小平方误差(MSE)。表达式如下:
在这里插入图片描述
L2损失函数对异常点比较敏感,因为L2将误差平方化,使得异常点的误差过大,模型需要大幅度的调整,这样会牺牲很多正常的样本。
训练过程中,容易出现过拟合现象。

L1损失函数L2损失函数
鲁棒不是非常鲁棒
不稳定解稳定解
可能多个解总是一个解
交叉熵损失函数

在深度学习中,交叉熵函数一般用于分类。(相对MSE而言,曲线整体呈单调性,是个凸函数,loss越大,梯度越大。便于梯度下降反向传播,利于优化。所以一般针对分类问题采用交叉熵作为loss函数。)

交叉熵损失函数刻画的是两个概率分布之间的距离。如下式,交叉熵刻画的的是通过概率分布q来表达概率分布p的困难程度,其中p为真实分布,q为预测,交叉熵越小,两个概率分布越接近
在这里插入图片描述
在神经网络中怎样把前向传播得到的结果也变成概率分布呢?Softmax回归就是一个非常有用的方法。
假设原始的神经网络的输出为
在这里插入图片描述
那么经过Softmax回归处理之后的输出为:
在这里插入图片描述
这样就把神经网络的输出也变成了一个概率分布,从而可以通过交叉熵来计算预测的概率分布和真实答案的概率分布之间的距离了。

在深度学习中,二分类通常通过sigmoid函数作为预测的输出,得到预测的分布,那对于多分类得到预测的分布则采用softmax。
Sigmoid =多标签分类问题=多个正确答案=非独占输出
Softmax =多类别分类问题=只有一个正确答案=互斥输出

Perceptual损失函数

Johnson et al (2016),Perceptual损失函数用于比较看起来相似的两个不同的图像,就像相同的照片,但移动了一个像素或相同的图像使用了不同的分辨率。在这种情况下,虽然图像非常相似,pixel-wise损失函数将输出一个大的误差值。而Perceptual损失函数比较图像之间的高级感知和语义差异。

考虑一个图像分类网络如VGG,已经在ImageNet的数以百万计的图像数据集上训练过,第一层的网络往往提取底层的特征(如线,边缘或颜色渐变)而最后的卷积层应对更复杂的概念(如特定的形状和模式)。根据Johnson等人的观点,这些在前几层捕获的低层次特征对于比较非常相似的图像非常有用

例如,假设你构建了一个网络来从输入图像重构一个超分辨图像。在训练期间,你的目标图像将是输入图像的超分辨率版本。你的目标是比较网络的输出图像和目标图像。为此,我们将这些图像通过一个预先训练好的VGG网络传递,并提取VGG中前几个块的输出值,从而提取图像的底层特征信息。这些低级的特征张量可以通过简单的像素级损失来进行比较。

在这里插入图片描述
Perceptual损失的数学表达式
在这里插入图片描述
其中, V j ( Y ) V_{j}(Y) Vj(Y)表示VGG网络第j层在处理图像Y时的激活情况。我们使用L2损失的平方,根据图像的形状归一化,比较了ground truth图像Y和预测图像Y^的激活情况。

content-style损失函数

已经发现,CNNs在较高的层次上捕获内容的信息,而较低的层次更关注单个像素值。
因此,我们使用一个或多个CNN顶层,计算原始内容图像©和预测输出§ 的激活图。

在这里插入图片描述
同样,通过计算预测图像§和风格图像(S)的下一级特征图的L2距离,可以计算出风格损失,
在这里插入图片描述

最终得到的损失函数定义为:
在这里插入图片描述

GAN损失

Min-Max损失函数

在这里插入图片描述
在这里插入图片描述

循环一致性损失

循环一致性损失出自CycleGAN, 主要由 L G A N L_{GAN} LGAN L c y c L_{cyc} Lcyc两部分构成。
在这里插入图片描述
a'a
在这里插入图片描述

正则化

训练过程中,容易出现过拟合现象。一般采用以下三种方法:

  • 数据增强
  • 减少变量个数,去掉不重要的变量(dropout)
  • 正则化项:保留所有变量,但减小特征变量的数量级。这种处理方法更合适,因为实际所有变量对结果都有一定贡献,只是有些变量对结果的影响很小。

正规化背后的思路:这些参数的值越小,通常对应于越光滑的函数,也就是更加简单的函数。因此 就不易发生过拟合的问题。

这个链接对于正则化的介绍非常详细,值得参考。

正则项一般分为L1正则化L2正则化两种,或者 L1范数 和 L2范数。

L1正则化

使用L1正则化的模型建叫做Lasso Regularization(Lasso回归),直接在原来的损失函数基础上加上权重参数的绝对值。
假设损失函数为
在这里插入图片描述则Lasso Regularization为
在这里插入图片描述
L 1 L_{1} L1等于第二项,则 J = J 0 + L 1 J=J_{0}+L_{1} J=J0+L1,此时任务变成在 L 1 L_{1} L1约束下求出J取得最小值的解。
在这里插入图片描述
最终的损失函数就是求等高圆圈+黑色黑色矩形的和的最小值。由图可知等高圆圈+黑色黑色矩形首次相交时,J取得最小值。

L2正则化

使用L2正则化的模型叫做Ridge Regularization(岭回归),直接在原来的损失函数基础上加上权重参数的平方和:
令损失函数为 J 0 J_{0} J0,则Ridge Regularization为:

在这里插入图片描述
使最终的损失函数最小,要考虑 J 0 J_{0} J0在这里插入图片描述
两个因素,最终的损失函数就是求等高 圆圈+黑色圆圈的和的最小值。由图可知两个圆相交时,J取得最小值。
在这里插入图片描述

平衡多个loss

Bayesian框架

从预测不确定性的角度引入Bayesian框架,根据各个loss分量当前的大小自动设定其权重。可参考 Multi-Task Learning Using Uncertainty to Weigh Losses for Scene Geometry and Semantics(CVPR2018)
两个loss为例, σ 1 \sigma_{1} σ1 σ 2 \sigma_{2} σ2由网络输出,由于整体loss要求最小,所以式子前两项希望 σ \sigma σ越大越好,第三项希望 σ \sigma σ越小越好。当两个loss中某个比较大时,其对应的 σ \sigma σ也会取较大值,使得整体loss最小化,也就自然处理量纲不一致或某个loss方差较大问题。
在这里插入图片描述

focal loss

关于focal loss可参考该篇博客

一开始训练的时候不要用focal loss,要确保网络的权重更新到一定时候再加入 focal loss。

分多个阶段训练。stage 0 : task 0, stage 1: task 0 and 1. 以此类推。在stage 1以后都用的是focal loss。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值