损失函数

  • 损失函数定义:
     在深度学习中, 损失函数是用来衡量一组参数的质量的函数, 衡量的方式是比较网络输出和真实输出的差异。

  • 损失函数训练过程:
     一般使用梯度下降法:试图找到一组参数使得损失函数的值越小越好,参数(大小和方向)的调整取决于损失函数相对于参数的偏导数。

1.回归任务的损失函数

 网络输出是一个连续的数值。
 常用的损失函数为:绝对值误差, 平方差。

1)绝对值误差
 绝对误差函数是非常直观的损失函数。
\mathit{L} = \frac{1}{n}\sum_{i=1}^{n}\left | y_{i} - f_{\theta }\left ( x_{i} \right ) \right |

绝对值误差.png

 ○ 得到的解会比较稀疏:因而在高纬任务中表现比较好、预测速度快
 ○ 对异常值不敏感

2)方差函数
 是回归任务中最常用的损失函数。
\mathit{L} = \frac{1}{n}\sum_{i=1}^{n}\left ( y_{i} - f_{\theta }\left ( x_{i} \right )\right )^{2}

方差损失函数.png

 ○ 比绝对误差函数得到的结果更精准
 ○ 对大的误差输出更敏感
 ○ 对outliers很敏感

2.分类任务的损失函数

 网络的输出为一个类别。
 损失函数: hinge loss, Cross-entropy loss

  • 如何设计分类任务的损失函数?
    首先将真实的输出类别进行独热编码 -->One-hot encoding;
    然后,将网络模型的预测值与One-hot encoding后的真实类别值作为输入,计算hinge loss与Softmax。
1)hinge loss:非概率的解释
  • 损失值:

 单个样本的损失值:
\mathit{L}_{i} = \sum_{j\neq y_{i}}max\left ( 0,s_{j} - s_{y_{i}}+\Delta \right )

 全部样本的损失值:
\mathit{L} = \frac{1}{N}\sum_{i}\sum_{j\neq y_{i}}\left [max\left ( 0,f\left ( x_{i};W \right )_{j} - f\left ( x_{i};W \right )_{y_{i}}+\Delta \right ) \right ]

  • hinge loss计算案例
    \begin{align*}\label{2} & s = \left [ 13,-7,11 \right ] \\ & y_{i} = 0 \\ & \Delta = 10 \\ & L_{i} = max\left ( 0,-7 - 13 + 10 \right ) + max\left ( 0, 11 - 13 + 10 \right ) & & \end{align*}
  • 原理
    正确类别的输出值,一定要大于不正确类别的输出值(并且至少大于delta值)。
    Hinge Loss.png
2)Softmax

 概率解释,将输出转换为概率函数。
 概率的取值范围为(0~1),且所有类别的概率之和为1。

  • softmax数学公式:S\left ( l_{i} \right ) = \frac{e^{l_{i}}}{\sum _{k}e^{l_{k}}}

  • softmax分类的损失函数:

    softmax损失函数原理图.png

    单个样本的损失值:
    L_{i} = -\sum_{k}^{}y_{k}\cdot log\left ( S\left ( l_{k} \right ) \right )
    全部样本的损失值:
    \begin{align*}\label{2} & L = -\frac{1}{n}\sum_{i=1}^{n}L_{i} \\ & L = -\sum_{i=1}^{n}y_{i}\cdot log\left ( S\left ( f_{\Theta} \left ( x_{i} \right ) \right ) \right ) \\ \end{align*}

\color{red}{以上softmax分类的损失函数称为:交叉熵损失函数}

3.案例

  • 分类任务损失函数计算案例


    分类损失函数计算实例(1).png

    分类损失函数计算实例(2).png

4.分类任务为什么不用均方差作为损失函数?

  • 方差函数多误差的输出惩罚非常大
  • 当softmax作为激活函数时,如果使用方差函数作为损失函数,梯度公式中包含\hat{y}\left ( 1-\hat{y} \right ),当输出接近于0或者1的时候,梯度值非常小,网络的训练就会非常慢。
1)使用均方差作为损失函数

 当使用均方差作为softmax分类的损失函数时,梯度公式为:


均方差损失函数的梯度值.png
2)使用交叉熵作为损失函数

 当使用交叉熵作为softmax分类的损失函数时,梯度公式为:


交叉熵损失函数的梯度值.png

5.多标签分类

  • 输出类别属于多个类中的一个或者多个类
  • 例如:一副包含猫咪的图像可以同时属于’猫‘,’哺乳动物‘,’宠物‘
  • 多标签分类:应该每一个输出独立使用Sigmoid激活函数(二分类),不能直接使用Softmax激活函数。
1)Sigmoid函数公式

\sigma \left ( l_{i} \right ) = \frac{1}{1+e^{-l_{i}}}

2)多标签分类损失函数

L_{i} = -\sum_{k}^{}y_{k}\cdot log\left ( \sigma \left ( l_{i} \right ) \right )+\left ( 1-y_{k}\right )log\left ( 1-\sigma \left ( l_{i} \right ) \right )

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容