0


交叉熵简介

交叉熵(Cross Entropy)是用来衡量两个概率分布之间的差异性的一种方法。在机器学习和深度学习中,交叉熵常常被用作损失函数,用来衡量模型预测的结果与真实结果之间的差距。

设有两个概率分布p和q,p表示真实的分布,q表示模型预测的分布,交叉熵的定义如下:

      H 
     
    
      ( 
     
    
      p 
     
    
      , 
     
    
      q 
     
    
      ) 
     
    
      = 
     
    
      − 
     
     
     
       ∑ 
      
      
      
        i 
       
      
        = 
       
      
        1 
       
      
     
       n 
      
     
     
     
       p 
      
     
       i 
      
     
    
      log 
     
    
      ⁡ 
     
    
      ( 
     
     
     
       q 
      
     
       i 
      
     
    
      ) 
     
    
   
     H(p,q)=-\sum_{i=1}^{n}p_i\log(q_i) 
    
   
 H(p,q)=−i=1∑n​pi​log(qi​)

其中,

      p 
     
    
      i 
     
    
   
  
    p_i 
   
  
pi​表示真实分布中第i个事件发生的概率, 
 
  
   
    
    
      q 
     
    
      i 
     
    
   
  
    q_i 
   
  
qi​表示模型预测分布中第i个事件发生的概率。

交叉熵越小,表示模型预测的结果与真实结果越接近,反之则越不接近。因此,在机器学习中,我们通常将交叉熵作为损失函数,用来指导模型的优化。

以分类问题为例,假设有m个样本,每个样本有k个类别,用

      y 
     
     
     
       i 
      
     
       j 
      
     
    
   
  
    y_{ij} 
   
  
yij​表示第i个样本属于第j个类别的概率(0≤ 
 
  
   
    
    
      y 
     
     
     
       i 
      
     
       j 
      
     
    
   
  
    y_{ij} 
   
  
yij​≤1, 
 
  
   
    
    
      ∑ 
     
     
     
       j 
      
     
       = 
      
     
       1 
      
     
    
      k 
     
    
    
    
      y 
     
     
     
       i 
      
     
       j 
      
     
    
   
     = 
    
   
     1 
    
   
  
    \sum_{j=1}^{k}y_{ij}=1 
   
  
∑j=1k​yij​=1),用 
 
  
   
    
    
      t 
     
     
     
       i 
      
     
       j 
      
     
    
   
  
    t_{ij} 
   
  
tij​表示第i个样本的真实标签,如果第i个样本的真实标签是第j个类别,那么 
 
  
   
    
    
      t 
     
     
     
       i 
      
     
       j 
      
     
    
   
  
    t_{ij} 
   
  
tij​为1,否则为0。那么,模型的交叉熵损失函数可以表示为:


  
   
    
    
      L 
     
    
      = 
     
    
      − 
     
     
     
       1 
      
     
       m 
      
     
     
     
       ∑ 
      
      
      
        i 
       
      
        = 
       
      
        1 
       
      
     
       m 
      
     
     
     
       ∑ 
      
      
      
        j 
       
      
        = 
       
      
        1 
       
      
     
       k 
      
     
     
     
       t 
      
      
      
        i 
       
      
        j 
       
      
     
    
      log 
     
    
      ⁡ 
     
    
      ( 
     
     
     
       y 
      
      
      
        i 
       
      
        j 
       
      
     
    
      ) 
     
    
   
     L=-\frac{1}{m}\sum_{i=1}^{m}\sum_{j=1}^{k}t_{ij}\log(y_{ij}) 
    
   
 L=−m1​i=1∑m​j=1∑k​tij​log(yij​)

通过最小化交叉熵损失函数,我们可以训练出一个可以对输入进行有效分类的模型。

举例

交叉熵在机器学习中有广泛的应用,特别是在分类问题中。一个典型的例子是图像分类,假设我们有一张图片,我们需要将其分类到不同的类别中。我们可以使用神经网络模型进行分类,模型的输出是每个类别的概率。例如,我们将该图片分类为狗、猫或鸟的概率分别为0.6、0.3和0.1。我们可以使用交叉熵来计算模型输出和实际标签之间的差距。假设实际标签为狗,则交叉熵可以表示为:

     H 
    
   
     ( 
    
   
     p 
    
   
     , 
    
   
     q 
    
   
     ) 
    
   
     = 
    
   
     − 
    
    
    
      ∑ 
     
     
     
       i 
      
     
       = 
      
     
       1 
      
     
    
      n 
     
    
    
    
      p 
     
    
      ( 
     
     
     
       x 
      
     
       i 
      
     
    
      ) 
     
    
      l 
     
    
      o 
     
    
      g 
     
    
      ( 
     
    
      q 
     
    
      ( 
     
     
     
       x 
      
     
       i 
      
     
    
      ) 
     
    
      ) 
     
    
   
  
    H(p,q)=-\sum_{i=1}^{n}{p(x_i)log(q(x_i))} 
   
  
H(p,q)=−∑i=1n​p(xi​)log(q(xi​))

其中,

     p 
    
   
     ( 
    
    
    
      x 
     
    
      i 
     
    
   
     ) 
    
   
  
    p(x_i) 
   
  
p(xi​)表示实际标签为狗的概率, 
 
  
   
   
     q 
    
   
     ( 
    
    
    
      x 
     
    
      i 
     
    
   
     ) 
    
   
  
    q(x_i) 
   
  
q(xi​)表示模型预测为狗的概率。将实际标签代入上式,可以得到:


 
  
   
   
     H 
    
   
     ( 
    
   
     p 
    
   
     , 
    
   
     q 
    
   
     ) 
    
   
     = 
    
   
     − 
    
   
     1 
    
   
     l 
    
   
     o 
    
   
     g 
    
   
     ( 
    
   
     0.6 
    
   
     ) 
    
   
     − 
    
   
     0 
    
   
     l 
    
   
     o 
    
   
     g 
    
   
     ( 
    
   
     0.3 
    
   
     ) 
    
   
     − 
    
   
     0 
    
   
     ∗ 
    
   
     l 
    
   
     o 
    
   
     g 
    
   
     ( 
    
   
     0.1 
    
   
     ) 
    
   
     = 
    
   
     0.51 
    
   
  
    H(p,q)=-1log(0.6)-0log(0.3)-0*log(0.1)=0.51 
   
  
H(p,q)=−1log(0.6)−0log(0.3)−0∗log(0.1)=0.51

可以看到,交叉熵值越小,表示模型预测结果与实际标签越接近。因此,我们可以使用交叉熵作为损失函数,通过优化模型参数来最小化交叉熵,从而提高模型分类准确率。


本文转载自: https://blog.csdn.net/m0_57236802/article/details/129554878
版权归原作者 我想要身体健康 所有, 如有侵权,请联系我们删除。

“交叉熵简介”的评论:

还没有评论