常用的损失函数
1.L1损失(绝对损失函数) 和 L2 损失(平方损失函数)
L1范数损失函数,也被称为 最小绝对值偏差(LAD),最小绝对值误差(LAE)。
![](https://img.haomeiwen.com/i17672498/cb618e286f688ad3.png)
![](https://img.haomeiwen.com/i17672498/4f3af6d84a40a5a9.png)
2.MMSE-Loss(Minest Mean Square Error)最小均方误差
先求差的平方、再求和、再求平均,其实也就是L2损失函数
最小均方误差通常用在回归问题上,具体的推导可以见我的另一篇文章线性回归,其本质是通过假设样本服从高斯分布然后推出来的。
3. CrossEntropy-loss 交叉熵损失函数
(注意,交叉熵损失函数分为基于sigmoid的交叉熵损失函数以及基于softmax的交叉熵损失函数)
交叉熵损失函数定义如下:
![](https://img.haomeiwen.com/i17672498/ddf8e8140f0c9e5c.png)
交叉熵损失函数从 logistic回归讲起, logistic回归实际上是在做二分类,也即0,1分类,它是假设样本服从伯努利分布,然后假设正例样本概率是sigmoid函数形式,负例样本是1-sigmoid函数形式,通过极大化似然函数求得问题最优解。
![](https://img.haomeiwen.com/i17672498/612ad0cab0054124.png)
![](https://img.haomeiwen.com/i17672498/456cb326506c6283.png)
因为要将似然函数极大化,因此我们将连乘的形式改为累加,即将似然函数取对数,并极大化,也就是将其加符号并取极小值(神经网络中一般用梯度下降求最小值)
![](https://img.haomeiwen.com/i17672498/9e280841e1f01942.png)
这个Loss其实就是一个二元分类的交叉熵损失函数,也叫BCE —( Binary Cross Entropy)二元交叉熵
延伸一下,那么扩展到多分类问题上呢?
只需要把sigmoid函数换成softmax函数
那么此时,交叉熵损失函数写成
![](https://img.haomeiwen.com/i17672498/3b2423e2463fa156.png)
这里P代表正确答案,q代表预测值,交叉熵值越小,两个概率分布越接近。
例如:假设有一个三分类问题,某个样例的正确答案是(1,0,0)。某模型经过Softmax回归之后的预测答案是(0.5,0,4,0.1),那么这个预测和正确答案直接的交叉熵是:
![](https://img.haomeiwen.com/i17672498/a01e47563ccc0e50.png)
如果另外一个模型的预测是(0.8,0.1,0.1),那么这个预测值和真实值的交叉熵是:
![](https://img.haomeiwen.com/i17672498/2cb489de0856307d.png)
从直观上可以很容易知道第二个答案要优于第二个。通过交叉熵计算得到的结果也是一致的(第二个交叉熵的值更小)。
面试问题
-
为什么sigmoid和softmax的损失函数不一样?
答:这个问题涉及到sigmoid和softmax本身函数性质,先来看信息论中交叉熵的定义:
交叉熵是用来描述两个分布的距离的,神经网络训练的目的就是使 g(x) 逼近 p(x)。
现在来看softmax作为最后一层的情况。g(x)是什么呢?就是最后一层的输出 y 。p(x)是什么呢?就是我们的one-hot标签。我们带入交叉熵的定义中算一下,就会得到第一个式子:
然而,对于sigmoid的交叉熵损失函数,p(x)的输出并不是one-hot形式的,而是样本标签为1的分布以及样本为0的分布(sigmoid作为最后一层输出的话,那就不能吧最后一层的输出看作成一个分布了,因为加起来不为1。)现在应该将最后一层的每个神经元看作一个分布,对应的 target 属于二项分布(target的值代表是这个类的概率),那么第 i 个神经元交叉熵为:
可以参考这里
-
对数似然和交叉熵的关系?
损失函数的目标是最小化,似然函数则是最大化
最大似然估计最后算出来的东西是交叉熵。我们用最大释然估计来求参,用交叉熵损失函数来评价相识情况。
我的看法:极大似然是一个求参的指导思想,交叉熵损失函数是执行方案。
网友评论