美文网首页
损失函数

损失函数

作者: 南国_ | 来源:发表于2021-03-02 20:54 被阅读0次
    • 损失函数定义:
       在深度学习中, 损失函数是用来衡量一组参数的质量的函数, 衡量的方式是比较网络输出和真实输出的差异。

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

    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 )

    相关文章

      网友评论

          本文标题:损失函数

          本文链接:https://www.haomeiwen.com/subject/pmutqltx.html