交叉熵损失函数

交叉熵损失是分类任务中的经常使用损失函数,可是是否注意到二分类与多分类状况下的交叉熵形式上的不一样呢?网络

两种形式

这两个都是交叉熵损失函数,可是看起来长的却有天壤之别。为何同是交叉熵损失函数,长的却不同?函数

由于这两个交叉熵损失函数对应不一样的最后一层的输出:
第一个对应的最后一层是softmax,第二个对应的最后一层是sigmoid3d

先来看下信息论中交叉熵的形式

 

 

 

交叉熵是用来描述两个分布的距离的,神经网络训练的目的就是使 g(x) 逼近 p(x)。orm

 

softmax层的交叉熵

(x)是什么呢?就是最后一层的输出 y 。
p(x)是什么呢?就是咱们的one-hot标签。咱们带入交叉熵的定义中算一下,就会获得第一个式子:
-t_jlog(y_i)
其中 j 表明样本 x 属于第 j 类。blog

 

sigmoid做为输出的交叉熵

sigmoid做为最后一层输出的话,那就不能吧最后一层的输出看做成一个分布了,由于加起来不为1。get

如今应该将最后一层的每一个神经元看做一个分布,对应的 target 属于二项分布(target的值表明是这个类的几率),那么第 i 个神经元交叉熵为:io


 
 

因此最后一层总的交叉熵损失函数是:form


 
 
 

可是在二分类中,逻辑回归的交叉熵损失函数一样具备两种形式,其缘由是由类别取值所致使的。

  1. 类别取值为0和1

    1. 逻辑回归中咱们给定的假设函数(目标函数)是给定x的条件下,预测其属于类别1的几率,线性回归中的目标函数是:class


       
       

      其中z是一个实数值,显然不能直接做为逻辑分类的预测值,所以想办法将其映射为几率值,引入了sigmoid函数,那么逻辑回归的假设函数就是:file


       
       
    2. 有了假设函数,咱们先尝试借鉴线性回归的方式定义损失函数:


       
       

      可是发现这样的损失函数并非一个严格的凸函数,容易陷入局部最优解,所以摒弃该损失函数。
      因为咱们引入的sigmoid可视做是类别为1的后验几率(说白了,就是给一个x,那么能够经过sigmoid算出来该样本点属于类别1的几率),因此能够获得类别为1以及类别为0时的条件几率为:


       
       

      上面两式合并在一块儿:
       
       
    3. MLE
      ok,如今咱们获得了逻辑回归的分布函数(即最终的目标函数),那么咱们如今为了惟一肯定最优的模型,须要对模型中的参数进行估计。引入极大似然估计法,回忆一下MLE的目标,就是经过极大化已出现样本的联合几率来求解出咱们认为最优的参数。
      根据极大似然法以及联合几率求解,获得:


       
       

      为了简化运算,咱们对上面这个等式的两边取对数:


       
       

      目标就是找到使得上式最大的参数w,没错,对上式加上负号,就获得了逻辑回归的代价函数:
       

    类别为 1 和 -1 的状况

    首先回忆sigmoid的特殊性质:


     
     

    若是 y = +1 时


     
     

    若是 y = -1 时:
     
     

    由于 y 取值为 +1 或 -1,能够把 y 值带入,将上面两个式子整合到一块儿:


     
     

     
     

    引入MLE:
     
     

     
     

    将sigmoid形式代入:
     
     

    那么就推导出该状况下的交叉熵的损失函数形式了。

    若是有N个样本,那么:


     
相关文章
相关标签/搜索