常见的损失函数

参考:

常用损失函数小结 https://blog.youkuaiyun.com/zhangjunp3/article/details/80467350


本文主要总结一下常见的损失函数,包括:MSE均方误差损失函数、Cross Entropy交叉熵损失函数、目标检测中常用的Smooth L1损失函数。其中还会涉及到梯度消失、梯度爆炸等问题:ESM均方误差+Sigmoid激活函数会导致学习缓慢;Smooth L1损失是为了解决梯度爆炸问题。仅供参考。

二、均方误差损失

2.1 均方差损失函数的定义:

均方差损失函数常用在最小二乘法中。它的思想是使得各个训练点到最优拟合线的距离最小(平方和最小)。均方差损失函数也是我们最常见的损失函数了,相信大很熟悉了,我们以神经网络中激活函数的形式表达一下,定义如下:

其中, a=f(z)=f(w·x+b) :x是输入、w和b是网络的参数、 f(·) 是激活函数。

三、交叉熵损失

3.1 交叉损失的定义

交叉熵损失的计算分为两个部分。

3.1.1 soft max分类器

交叉熵损失是基于softmax计算来的,softmax将网络最后输出z通过指数转变成概率形式。首先看一下softmax计算公式: p_{i}=\frac{e^{z_{i}}}{\sum_{j=1}^{k}{e}^{z_{j}}}

其中, 分子e^{z_{i}} 是要计算的类别 i 的网络输出的指数;分母是所有类别网络输出的指数和,共k个类别。这样就得到了类别i的输出概率 p_{i} 。

→这里说点题外话,实际上,softmax是由逻辑斯的回归模型(用于二分类)推广得到的多项逻辑斯蒂回归模型(用于多分类)。具体可以参考李航大神的《统计学方法》第六章,这里给一个大致的过程。

逻辑回归的P(Y=y|x)表达式如下(为了将类别标签y统一为1和0,下面将表达式分开表示):

将它带入到上式,通过推导可以得到logistic的损失函数表达式,如下:

逻辑回归最后得到的目标式子如下:

3.1.2 交叉熵损失

公式定义如下: J=-\frac{1}{N}\sum_{1}^{N}{\sum_{i=1}^{k}{y_{i}·log(p_{i})}}

其中, y_{i} 是类别 i 的真实标签;p_{i}是上面softmax计算出的类别 i 的概率值;k是类别数,N是样本总数。

这里看一个计算交叉熵损失的小例子:

假设共有三个类别cat、dog、bird,那么一张cat的图片标签应该为 (1,0,0)^{T} 。并且训练过程中,这张cat的图片经过网络后得到三个类别网络的输出分别为3、1、-3。那么经过softmax可以得到对应的概率值,如下图:

 

3.2 交叉熵损失的两个图像

3.2.1 指数图像

softmax分类器将各个类别的“得分”(网络输出)转变成概率值。并取e指数使得“得分”高的类别对应的概率更大,使得损失函数对网络输出“更敏感”,更有利于分类。

3.2.2 对数图像

 

五、Smooth L1损失

Smooth L1损失是为了解决梯度爆炸问题的。在看Smooth L1损失之前,先看一下梯度爆炸。

1、梯度爆炸:

在深层神经网络或循环神经网络中,误差的梯度可在更新中累积相乘。如果网络层之间的梯度值大于 1.0,那么重复相乘会导致梯度呈指数级增长,梯度变的非常大,然后导致网络权重的大幅更新,并因此使网络变得不稳定。

梯度爆炸会伴随一些细微的信号,如:

①模型不稳定,导致更新过程中的损失出现显著变化;

②训练过程中,在极端情况下,权重的值变得非常大,以至于溢出,导致模型损失变成 NaN等等。

2、Smooth L1损失:

Smooth L1损失函数是在Fast R-CNN中被提出,主要目的是为了防止梯度爆炸。

对于目标检测中的回归问题,最初大多采用均方误差损失 ||y-f(z)||^{2} ,这样反向传播对w或者b求导时仍存在 y-f(z) 。那么当预测值和目标值相差很大时,就容易造成梯度爆炸。

所以我们将 ||y-f(z)||^{2} 这种均方误差形式,转变成 Smooth_{L1}(y-f(z)) 这种形式,其中:

通过上式可以看出:

①当 |y-f(z)|<1 时,即预测值和目标值相差小于1,不易造成梯度爆炸,此时还原成均方误差损失形式并给一个0.5的平滑系数,即 0.5||y-f(z)||^{2} ;

②当 |y-f(z)|\geq1 时,即预测值和目标值相差大于等于1,易造成梯度爆炸,此时降低损失次幂数,变成 |y-f(z)|-0.5 ,这时候反向传播求导时候就不存在 y-f(z) 这一项了,从而防止了梯度爆炸。

→这里最后再给出解决梯度爆炸的一些其他方法:

(1)减少学习率(个人理解梯度爆炸是模型训练发散的一种情况);

(2)使用ReLU函数,使得梯度稳定;

(3)使用正则化,即检查网络中权重的大小,对较大的权重进行惩罚,限制了梯度爆炸造成的权重变得很大的情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值