-
损失函数定义:
在深度学习中, 损失函数是用来衡量一组参数的质量的函数, 衡量的方式是比较网络输出和真实输出的差异。 -
损失函数训练过程:
一般使用梯度下降法:试图找到一组参数使得损失函数的值越小越好,参数(大小和方向)的调整取决于损失函数相对于参数的偏导数。
1.回归任务的损失函数
网络输出是一个连续的数值。
常用的损失函数为:绝对值误差, 平方差。
1)绝对值误差
绝对误差函数是非常直观的损失函数。
○ 得到的解会比较稀疏:因而在高纬任务中表现比较好、预测速度快
○ 对异常值不敏感
2)方差函数
是回归任务中最常用的损失函数。
○ 比绝对误差函数得到的结果更精准
○ 对大的误差输出更敏感
○ 对outliers很敏感
2.分类任务的损失函数
网络的输出为一个类别。
损失函数: hinge loss, Cross-entropy loss
- 如何设计分类任务的损失函数?
首先将真实的输出类别进行独热编码 -->One-hot encoding;
然后,将网络模型的预测值与One-hot encoding后的真实类别值作为输入,计算hinge loss与Softmax。
1)hinge loss:非概率的解释
- 损失值:
单个样本的损失值:
全部样本的损失值:
-
hinge loss计算案例
-
原理
正确类别的输出值,一定要大于不正确类别的输出值(并且至少大于delta值)。
Hinge Loss.png
2)Softmax
概率解释,将输出转换为概率函数。
概率的取值范围为(0~1),且所有类别的概率之和为1。
-
softmax数学公式:
-
softmax分类的损失函数:
softmax损失函数原理图.png
单个样本的损失值:
全部样本的损失值:
3.案例
-
分类任务损失函数计算案例
分类损失函数计算实例(1).png
分类损失函数计算实例(2).png
4.分类任务为什么不用均方差作为损失函数?
- 方差函数多误差的输出惩罚非常大
- 当softmax作为激活函数时,如果使用方差函数作为损失函数,梯度公式中包含,当输出接近于0或者1的时候,梯度值非常小,网络的训练就会非常慢。
1)使用均方差作为损失函数
当使用均方差作为softmax分类的损失函数时,梯度公式为:
均方差损失函数的梯度值.png
2)使用交叉熵作为损失函数
当使用交叉熵作为softmax分类的损失函数时,梯度公式为:
交叉熵损失函数的梯度值.png
5.多标签分类
- 输出类别属于多个类中的一个或者多个类
- 例如:一副包含猫咪的图像可以同时属于’猫‘,’哺乳动物‘,’宠物‘
- 多标签分类:应该每一个输出独立使用Sigmoid激活函数(二分类),不能直接使用Softmax激活函数。
网友评论