从交叉熵(CrossEntropy)到交叉熵损失函数(CrossEntropy Loss)

所谓交叉熵,这篇文章《什么是交叉熵》讲的很明白。设X是预测分布,Y是真实分布,交叉熵H(X, Y)的表达式为:
H ( X , Y ) = − ∑ i Y [ i ] log ⁡ X [ i ] H(X,Y)=-\sum_i Y[i]\log X[i] H(X,Y)=iY[i]logX[i]

其中 l o g log log表示自然对数,以 e e e为底数,不是10为底数。
再看到Pytorch Document中对交叉熵损失函数的描述为:
l o s s ( X , c l a s s ) = − log ⁡ ( e x p ( X [ c l a s s ] ) ∑ j e x p ( X [ j ] ) ) loss(X, class)=-\log (\frac{exp(X[class])}{\sum_j exp(X[j])}) loss(X,class)=log(jexp(X[j])exp(X[class]))

那么交叉熵 H ( X , Y ) H(X,Y) H(X,Y)是怎么到交叉熵损失函数 l o s s ( X , c l a s s ) loss(X, class) loss(X,class)的呢?
首先,一般网络的流程是,将神经网络的输出值X输入 S o f t m a x Softmax Softmax后再输入交叉熵损失函数, S o f t m a x Softmax Softmax的表达式如下:
S o f t m a x ( X , i ) = e x p ( X [ i ] ) ∑ j e x p ( X [ j ] ) Softmax(X,i)=\frac{exp(X[i])}{\sum_j exp(X[j])} Softmax(X,i)=jexp(X[j])exp(X[i])

用以训练的标签通常是在正确的那一类标1,其他错误的类全标0,交叉熵损失函数 l o s s ( X , c l a s s ) loss(X, class) loss(X,class)中的 c l a s s class class即表示这个样本的正确分类,也就是 H ( X , Y ) H(X,Y) H(X,Y)中的真实分布 Y Y Y,即 Y i = c l a s s = 1 , Y i ≠ c l a s s = 0 Y_{i=class}=1,Y_{i\neq class}=0 Yi=class=1,Yi=class=0,所以有
H ( X , Y ) = − ∑ i Y [ i ] log ⁡ X [ i ] = − log ⁡ X [ c l a s s ] H(X,Y)=-\sum_i Y[i]\log X[i] =-\log X[class] H(X,Y)=iY[i]logX[i]=logX[class]

又有 X c l a s s = S o f t m a x ( X , c l a s s ) X_{class}=Softmax(X,class) Xclass=Softmax(X,class),所以
H ( X , Y ) = − log ⁡ X [ c l a s s ] = − log ⁡ S o f t m a x ( X , c l a s s ) = − log ⁡ ( e x p ( X [ c l a s s ] ) ∑ j e x p ( X [ j ] ) ) = l o s s ( X , c l a s s ) H(X,Y)=-\log X[class]=-\log Softmax(X,class)=-\log (\frac{exp(X[class])}{\sum_j exp(X[j])}) = loss(X,class) H(X,Y)=logX[class]=logSoftmax(X,class)=log(jexp(X[j])exp(X[class]))=loss(X,class)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值