在介绍常见损失函数之前,我想先就选择损失函数的意义做一下探讨,我认为损失函数应该从两个方面去进行考量:
(1) 如果损失函数达到最优了,在多大程度上可以认为模型的性能是非常好的?这点是最基本的要求,如果即使损失函数达到了全局最优,模型性能仍然不能很好的工作(例如MSE对比MAE,即使找到了全局最优仍然不能获取很好的性能),那应该考虑换个模型或者损失函数。
(2) 损失函数是否可以到达最优点或者局部最优点,如果可以,代价是什么?这就需要我们考虑优化算法的收敛速度,时间复杂度,空间复杂度等等。
分类损失函数
(1) 0-1 Loss
最简单的损失函数形式,但不可对x求导(阶跃函数),应用受局限。
(2) cross-entropy Loss
交叉熵:,其可以衡量分布p和分布q的距离,并可作为神经网络的一种损失函数。假设神经网络的原始输出为
,在经过softmax变换后可转为概率分布形式
,这里softmax定义为:
实际神经网络输出为(形式为[0,0,...,1,0,...,0]),则二者的距离为
上式即为和
之间的交叉熵损失函数。实际上,逻辑回归的损失函数也可以理解为交叉熵损失函数,假设数据为
,其对于总体数据的损失函数为:
;对于固定数据
,其属于类别j的概率为
,损失函数为:
这正是交叉熵损失函数的形式。
(3)Hinge Loss
我们来观察一下hinge loss的形式,如果把yf(x)看做是分类置信度或者是margin的话,其实样本的置信度在超过1之后就不会对损失函数有很大影响了。这一点也说明了SVM方法解的稀疏性(之和支持向量有关)。
SVM的损失函数也是hinge loss。下面我们就来看下svm中的hinge loss 是如何被推导出来的:带有软间隔的SVM的最优化形式为:
约束条件第一行可以改为。结合约束条件第二行,约束条件可以转化为:
再进而优化问题可以转化为:
可以看到SVM损失函数可以转化为hinge loss 加上一个正则项,而正则项的大小取决于SVM的松弛度。
(4) Exponential Loss
指数损失函数从形式上就可以看出,其非常容易放大异常点对模型的影响。
(5) Modified Huber Loss
modified huber loss 结合了 hinge loss 和 cross entropy loss 的优点,其在yf(x) 在-1到1之间的函数形式令其以概率的形式判断分类,另外,在小于-1和大于1的区域,它保证了对于异常点的鲁棒性,和解的稀疏性。
参考资料:
[1] 常见回归和分类损失函数比较