神经网络之loss学习
影响一个网络性能的因素很多,网络结构,参数优化,loss约束等,这里就常见的几种loss进行比较总结。其中(1)(2)(3)为回归损失,(4)(5)(6)为分类损失。
(1)MSE(均方误差)
均方误差(MSE)是回归损失函数中最常用的误差,也常被称为L2 loss,它是预测值与目标值之间差值的平方和,其公式如下所示:
,有时也写成这样
优点:各点都连续光滑,方便求导,具有较为稳定的解
缺点:不是特别的稳健,因为当函数的输入值距离中心值较远的时候,使用梯度下降法求解的时候梯度很大,可能导致梯度爆炸。
(2)平均绝对误差
平均绝对误差(MAE)是另一种常用的回归损失函数,也常被称为L1 loss,它是目标值与预测值之差绝对值的和,表示了预测值的平均误差幅度,而不需要考虑误差的方向,范围是0到∞,其公式如下所示:
, 有时也写成这样
优点:无论对于什么样的输入值,都有着稳定的梯度,不会导致梯度爆炸问题,具有较为稳健性的解。
缺点:在中心点是折点,不能求导,不方便求解。
(3)smooth L1 loss
smooth L1说的是光滑之后的L1,前面说过了L1损失的缺点就是有折点,不光滑,导致不稳定,那如何让其变得光滑呢?smooth L1损失函数为:
smooth l1 loss对于离群点更加鲁棒,根据fast rcnn的说法,"...... L1 loss that is less sensitive to outliers than the L2 loss used in R-CNN and SPPnet." 也就是smooth L1 loss让loss对于离群点更加鲁棒,相比于L2损失函数,其对离群点、异常值(outlier)不敏感,梯度变化相对更小,训练时不容易跑飞。
补:在机器学习中,正规化是防止过拟合的一种重要技巧。从数学上讲,它会增加一个正则项,防止系数拟合得过好以至于过拟合。L1与L2的区别只在于,L2是权重的平方和,而L1就是权重的和。
L1正则化表达式:
L2正则化表达式:
下面是L1正则化和L2正则化的作用,
- L1正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择
- L2正则化可以防止模型过拟合(overfitting);一定程度上,L1也可以防止过拟合
L2正则化 | L1正则化 |
---|---|
计算效率高(因为有解析解) | 在非稀疏情形下计算效率低 |
非稀疏输出 | 稀疏输出 |
无特征选择 | 内置特征选择 |
(4)逻辑回归
逻辑回归一般用在二分类问题上,有时也被称为二值交叉熵,其算法表达式为
其中 y∈{0,1} 是真实标签,ŷ 是预测值。当然,对于二分类我们几乎都是用 sigmoid 函数** ŷ =σ(x),1- ŷ =σ(-x)。
(5)交叉熵
至于多分类损失,一般选用交叉熵,其算法公式如下, ,其中q(x)表示的是x样本出现的概率,一般经过Softmax回归处理之后的得到:
这样就把神经网络的输出也变成了一个概率分布,从而可以通过交叉熵来计算预测的概率分布和真实答案的概率分布之间的距离了。
补:交叉熵这个概念来自信息学,用来描述两个事物之间的相似程度,具体了解可参考https://zhuanlan.zhihu.com/p/74075915
下面补充几个简单的概念,
熵:是表示随机变量不确定的度量,计算公式为
以下几个都是用来衡量概率分布之间差异性的指标,
KL散度:
JS散度:
交叉熵:
推土机距离(Wasserstein距离):
Wasserstein距离相比KL散度、JS散度的优越性在于,即便两个分布没有重叠,Wasserstein距离仍然能够反映它们的远近,在WGAN中应用比较广。
(6)focal loss
Focal Loss的引入主要是为了解决难易样本数量不平衡(注意,有区别于正负样本数量不平衡)的问题,使用的范围非常广泛。
单阶段的目标检测器通常会产生高达100k的候选目标,只有极少数是正样本,正负样本数量非常不平衡。我们在计算分类的时候常用的损失——交叉熵的公式如下:
为了解决正负样本不平衡的问题,我们通常会在交叉熵损失的前面加上一个参数 ,即:
尽管 平衡了正负样本,但对难易样本的不平衡没有任何帮助。而实际上,目标检测中大量的候选目标都是像下图一样的易分样本。何凯明大神认为易分样本(即,置信度高的样本)对模型的提升效果非常小,模型应该主要关注与那些难分样本(这个假设是有问题的,是GHM的主要改进对象),于是结合上面的思想得到focal loss,
实验表明 取2,
取0.25的时候效果最佳。
补:
GHM是基于focal loss进行改进的,由于focal loss使模型过多关注那些特别难分的样本,当样本中有离群点(outliers),可能模型已经收敛了但是这些离群点还是会被判断错误,其次 和
的取值会相互影响,需要联合起来一起实验才行。
Focal Loss是从置信度p的角度入手衰减loss,而GHM是一定范围置信度p的样本数量的角度衰减loss。在GHM中先定义了一个梯度模长g:
同时定义了一个变量来衡量出一定梯度范围内的样本数量,即梯度密度
于是用于分类的GHM损失:
用于回归的GHM损失:
参考链接:
https://zhuanlan.zhihu.com/p/80594704(5分钟理解Focal Loss与GHM——解决样本不平衡利器)
https://blog.****.net/weixin_41940752/article/details/93159710(L1、L2、smooth L1三类损失函数)