常见的损失函数

如题所述

第1个回答  2022-06-24
MSE也称为L2 loss:

随着预测与真实值的绝对误差的增加,均方差损失呈二次方增加。

Huber Loss将L1和L2结合起来,也被称做smoothed L1 Loss。增加了一个需要额外设置的超参数 ,来控制L2和L1的连接位置。 在误差接近0的时候使用L2,使损失函数可导,梯度更加稳定;误差较大的时候用L1,可以降低outlier带来的巨大误差的影响。

二分类中,通常使用Sigmoid函数将模型的输出压缩到(0, 1)区间。给定输入 ,模型判断为正类/负类的概率:

合并成一个:

取对数加负号之后,得到:

N是所有样本的数量。

图中曲线可以看出,当预测值越接近目标值损失越小,随着误差变差,损失呈现指数增长。

真实值 现在是一个One-hot向量,Sigmoid换成了Softmax来把输出值压缩到(0, 1)之间,所有维度的输出和为1.

Softmax公式:

表示K个类别中的一个,k只在对应的类别上是1,其他时候是0。
于是上式可以改写成:

是样本 的目标类。

分类问题中为什么不用MSE? 因为MSE假设了误差服从高斯分布,在分类任务下这个假设无法满足,因此效果会很差。

第二个论点是从信息论的角度来分析的,是关于由KL散度的角度来推导Cross Entropy的过程( 原文 )

是另一种二分类损失函数,适用于Maximum-margin的分类,SVM的损失函数就是hinge loss + L2正则化

下图为,当y为正类的时候( ),不同的输出 对应的loss图

当y为正类时,模型输出负值会有很大的惩罚。即使输出为正值在(0, 1)区间,也还是会有一个较小的惩罚。也就是只有置信度高的才会有零损失。使用hinge loss直觉上的理解是要找到一个决策边界,使得素有数据点被这个边界正确地,高置信度地被分类。
同时hinge loss也反应了一点,对于那些已经可以被很好分类的样本,它不再对loss产生贡献,可以让模型花更多的energy去学习难以分类的样本。

https://zhuanlan.zhihu.com/p/77686118
相似回答