1. 交叉熵损失
CLASS torch.nn.CrossEntropyLoss(reduction)
cross entropy loss
- 常用于多类的分类器
Parameters
-
reduction: 是否对output 做处理,
'none' | 'mean' | 'sum'
. Default:'mean'
Shape:
-
input: 模型输出,包含每个类的得分,
shape
为或者(
),
为batch,
为分类的类别数,
为其他更高维度
-
target: 标签,表示属于哪一类别,
shape
为或者(
)
- output: 如果 reduction is 'none', then the same size as the target,否则返回的是scalar
2. 均方误差MSE (L2 Loss)
均方误差(Mean Square Error,MSE)是模型预测值与真实样本值
之间差值平方的平均值,其公式如下
优点
- MSE的函数曲线光滑、连续,处处可导
- 随着误差的减小,梯度也在减小,这有利于收敛
缺点
差值大于1时,会放大loss误差;而当差值小于1时,则会缩小误差,这是平方运算决定的。MSE对于较大的误差(>1)给予较大的惩罚,较小的误差(<1)给予较小的惩罚。也就是说,对离群点比较敏感,受其影响较大,如图
3. 平均绝对误差(L1 Loss)
平均绝对误差(Mean Absolute Error,MAE) 是指模型预测值与真实样本值
之间距离的平均值,其公式如下:
优点
- 对离群点不那么敏感,对于任意大小的差值,其惩罚都是固定的
- 无论对于什么样的输入值,都有着稳定的梯度,不会导致梯度爆炸问题
缺点
- 0点不可导
- MAE 大部分情况下梯度都是相等的,这意味着即使对于小的损失值,其梯度也是大的,这不利于函数的收敛和模型的学习。因为损失值很小时应该降低学习率
4. Smooth L1 Loss(Huber)
在Faster R-CNN以及SSD中对边框的回归使用的损失函数都是使用 Smooth L1 Loss 作为损失函数
优点
- 差值过大时,梯度值不至于过大,对离群点、异常值不敏感,训练时不容易跑飞
- 差值很小时,梯度值也足够小,有利于收敛