Pytorch学习(二十二)soft label的交叉熵loss的实现(附加《信息论》基本知识)

本文介绍了信息熵、交叉熵和相对熵的概念,并详细阐述了在Pytorch中如何实现软标签的交叉熵损失。通过解释熵的数学意义,特别是其在编码长度中的应用,说明了最大化熵的含义。此外,讨论了分类问题中的交叉熵计算,区分了二分类和多分类任务的差异,并提供了SoftCrossEntropy的计算方法。
摘要由CSDN通过智能技术生成

总说

参考的链接:

  1. https://blog.csdn.net/tsyccnh
  2. https://www.zhihu.com/question/41252833/answer/140950659

先理解一下信息熵、交叉熵和相对熵

先找一下交叉熵的定义:
1)信息熵:编码方案完美时,最短平均编码长度的是多少。(第二个链接第三个答案)
2)交叉熵:编码方案不一定完美时(由于对概率分布的估计不一定正确),平均编码长度的是多少。 平均编码长度 = 最短平均编码长度 + 一个增量
3)相对熵:编码方案不一定完美时,平均编码长度相对于最小值的增加值。(即上面那个增量)
(即,相对熵就是信息增益,就是KL散度

作者:张一山
链接:https://www.zhihu.com/question/41252833/answer/140950659
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

信息熵

对于(1)没啥说的,就是如果某件事情概率已知,那么直接 H ( X ) = − ∑ i = 1 n p ( x i ) l o g ( p ( x i ) ) H(X)=-\sum_{i=1}^{n}p(x_i)log(p(x_i)) H(X)=i=1np(xi)log(p(xi))
这个表示,对于事件X只有 x 1 , ⋅ , x i , ⋅ , x n x_1, \cdot , x_i, \cdot, x_n x1,,xi,,xn种情况,而 x i x_i xi发生的概率是 p ( x i ) p(x_i) p(xi),那么直接 − p l o g ( p ) -plog(p) plog(p) OK?

稍微说一下原因,

  1. 主要是, l o g ( p ( x i ) ) log(p(x_i)) log(p(xi))代表就是 x i x_i xi事件的熵,也就是信息量。由于 x 1 x_1 x1 x 2 x_2 x2独立同分布,两个同时发生,那么概率是 p ( x 1 ) p ( x 2 ) p(x_1)p(x_2) p(x1)p(x2),信息量应该是累加的,也就是有 H ( p ( x 1 ) p ( x 2 ) ) = H ( p ( x 1 ) + H ( p ( x 2 ) ) H(p(x_1)p(x_2))=H(p(x_1)+H(p(x_2)) H(p(x1)p(x2))=H(p(x1)+H(p(x2)), 所以 H ( x ) H(x) H(x)是对数函数。底可以取 2 , e , 10 2, e, 10 2,e,10都行,问题不大。最后, p p p一般是小数,所以既然是信息,那得正数才符合,所以加个负号在座的没有意见吧~。。
  2. 那要表示一个概率分布的熵,肯定是该变量所有可能性的熵的期望值,所以自然就是 H ( X ) = − ∑ i = 1 n p ( x i ) l o g ( p ( x i ) ) H(X)=-\sum_{i=1}^{n}p(x_i)log(p(x_i)) H(X)=i=1np(xi)log(p(xi))

总结:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值