关注微信公众号“机器学习算法面试”获得更多机器学习面试题
问题引入
在之前的文章中也说过为啥LR用sigmod函数,这里着重说一下为啥分类问题用到交叉熵比较多呢,为啥不用MSE这些呢?交叉熵有啥好处?本文主要比较小MSE以及交叉熵,关于LR为啥用sigmod函数,分类问题中为啥用交叉熵这些问题,在这里可以找到。
问题解答
首先来看两者的表达式:
MSE:
交叉熵:
可以看到,对于分类问题,实际的标签为0和1,那么交叉熵很多项是不用算的,举个例子,
实际标签是[1,0,0],模型预测得到的概率是[0.9,0.4,0.3],那么交叉熵损失函数的结果是 1log(0.9)+0log(0.4)+0log(0.3),而MSE则都得全部算一遍。因此我们得到结论1
结论1:MSE无差别得关注全部类别上预测概率和真实概率的差.交叉熵关注的是正确类别的预测概率.
其次,我们在之前的文章中也说到了关于求解优化模型的时候的问题,MSE会收敛的慢一些,因为它求导的结果相比于交叉熵还多乘以一个sigmod函数,但是交叉熵梯度中不再含有sigmoid的导数,有的是sigmoid的值和实际值之间的差,也就满足了我们之前所说的错误越大,下降的越快的要求,你说爽不爽,因而得到结论2,也就是交叉熵更有利于梯度更新。
第三点:MSE是假设数据符合高斯分布时,模型概率分布的负条件对数似然;交叉熵是假设模型分布为多项式分布时,模型分布的负条件对数似然。
还有一点要说明,MSE对残差大的样例惩罚更大些.,我们还举个例子看看,比如真实标签分别是(1, 0, 0).模型1的预测标签是(0.8, 0.2, 0),模型2的是(0.9, 0.1, 0). 但MSE-based算出来模型1的误差是MSE-based算出模型2的4倍,而交叉熵-based算出来模型1的误差是交叉熵-based算出来模型2的2倍左右.对于模型1和模型2输出的结果。其实也主要是由于MSE太苛刻了,想要把左右的值都预测的分毫不差,而交叉熵只关注正样本也也是就1的那些,计算那些损失函数就可以了,样本标签为0的压根不用算。
https://www.zhihu.com/collection/167905820
https://zhuanlan.zhihu.com/p/61944055
https://blog.csdn.net/b1055077005/article/details/100152102