交叉熵和KL散度笔记

以下内容均参考王木头学科学B站up主的视频和专栏

导:比较两个概率分布的最大障碍出现了。两个不同类型的概率分布,它们无法直接公度。 所有的概率分布,都可以统一地被转换成熵,比较两个概率分布是不是相同,不同的话,它们之间又相差多少,都可以用熵来进行衡量了。

1.信息量

信息量它应该是,某个消息对“某个事件的确定程度改变了多少”进行的衡量。

具体例子在原博客中

信息量 ( P ( X ) ) : = − l o g 2 P ( X ) 信息量(P(X)):=-log_2P(X) 信息量(P(X)):=log2P(X)

2.熵

信息论和热力学中均有熵

熵:对一个系统的混乱程度的度量(是一个系统里信息量的期望值)

H ( S ) : = E ( I ( S ) ) = ∑ i = 1 m P ( x i ) I ( x i ) = ∑ i = 1 m P ( x i ) l o g 2 P ( x i ) ) = − ∑ i = 1 m P ( x i ) l o g 2 P ( x i ) H(S):=E(I(S)) = \textstyle \sum_{i=1}^mP(x_i)I(x_i)=\textstyle \sum_{i=1}^mP(x_i)log_2P(x_i))=-\textstyle \sum_{i=1}^mP(x_i)log_2P(x_i) H(S):=E(I(S))=i=1mP(xi)I(xi)=i=1mP(xi)log2P(xi))=i=1mP(xi)log2P(xi)

其中 H ( S ) H(S) H(S)表示 S S S系统的熵, E E E表示求期望, I ( x ) I(x) I(x)求信息量, P ( x i ) P(x_i) P(xi)表示 x i x_i xi事件的概率

现在有了熵,我们是不是就可以直接比较两个概率分布的差距了呢?把两个概率分布的熵都算出来,然后看看相差多少。

哪有这么简单,别忘了,真实规律我们是不知道的,既然不知道,那它的熵还怎么求呢?没有办法。

那么有没有什么方法,即便不知道一个概率分布的熵具体是多少,也能知道两个概率分布之间的差距是多少呢?
有!这就是KL散度和交叉熵了。

3.KL散度/相对熵

KL散度不是粗暴的比较一个总体的熵,而是对每一个事件xi对应的信息量,都会拿来进行比较。如果每一个事件的信息量都是相同的,那么两个概率分布肯定就是相同的了。

D K L ( S ∣ ∣ O ) : = ∑ i = 1 m P S ( x i ) ∗ ( I ( P O ( x i ) ) − I ( P S ( x i ) ) ) D_{KL}(S||O):=\textstyle\sum_{i=1}^mP_S(x_i)*(I(P_O(x_i))-I(P_S(x_i))) DKL(S∣∣O):=i=1mPS(xi)(I(PO(xi))I(PS(xi)))

其中系统 S S S代表的是真实的规律,系统 O O O代表的是机器学习模型里面猜测的那个规律, D K L ( S ∣ ∣ O ) D_{KL}(S||O) DKL(S∣∣O)表示在 S S S系统的基准下另一系统 O O O的熵, P S ( x i ) P_S(x_i) PS(xi)表示事件 x i x_i xi S S S系统中发生的概率, I ( P O ( x i ) ) − I ( P S ( x i ) ) I(P_O(x_i))-I(P_S(x_i)) I(PO(xi))I(PS(xi))表示事件 x i x_i xi在两个系统中信息量的差值。

给上式进行变形:

D K L ( S ∣ ∣ O ) : = ∑ i = 1 m P S ( x i ) ∗ ( I ( P O ( x i ) ) − I ( P S ( x i ) ) ) = ∑ i = 1 m P S ( x i ) ∗ ( ( − l o g 2 P O ( x i ) ) − ( − l o g 2 P S ( x i ) ) ) = ∑ i = 1 m P S ( x i ) ∗ ( ( − l o g 2 P O ( x i ) ) − ∑ i = 1 m P S ( x i ) ∗ ( − l o g 2 P S ( x i ) ) D_{KL}(S||O):= \textstyle\sum_{i=1}^mP_S(x_i)*(I(P_O(x_i))-I(P_S(x_i)))= \textstyle\sum_{i=1}^mP_S(x_i)*((-log_2P_O(x_i))-(-log_2P_S(x_i)))= \textstyle\sum_{i=1}^mP_S(x_i)*((-log_2P_O(x_i))- \textstyle\sum_{i=1}^mP_S(x_i)*(-log_2P_S(x_i)) DKL(S∣∣O):=i=1mPS(xi)(I(PO(xi))I(PS(xi)))=i=1mPS(xi)((log2PO(xi))(log2PS(xi)))=i=1mPS(xi)((log2PO(xi))i=1mPS(xi)(log2PS(xi))

前者是交叉熵,后者是系统 S S S的熵

4.交叉熵

H ( S , O ) : = − ∑ i = 1 m P S ( x i ) ∗ ( l o g 2 P O ( x i ) ) H(S,O):=-\textstyle\sum_{i=1}^mP_S(x_i)*(log_2P_O(x_i)) H(S,O):=i=1mPS(xi)(log2PO(xi))

特例:二分类交叉熵

用猫狗分类举例

H ( S , O ) : = − ∑ i = c a t , d o g P S ( x i ) ∗ ( l o g 2 P O ( x i ) ) = − P S ( c a t ) ∗ l o g 2 P O ( c a t ) − P S ( d o g ) l o g 2 P O ( d o g ) = − P S ( c a t ) ∗ l o g 2 P O ( c a t ) − P S ( 1 − P S ( c a t ) ) l o g 2 P O ( 1 − P S ( c a t ) ) H(S,O):=-\textstyle\sum_{i=cat,dog}P_S(x_i)*(log_2P_O(x_i))= -P_S(cat)*log_2P_O(cat)-P_S(dog)log_2P_O(dog)= -P_S(cat)*log_2P_O(cat)-P_S(1-P_S(cat))log_2P_O(1-P_S(cat)) H(S,O):=i=cat,dogPS(xi)(log2PO(xi))=PS(cat)log2PO(cat)PS(dog)log2PO(dog)=PS(cat)log2PO(cat)PS(1PS(cat))log2PO(1PS(cat))

B i n a r y C r o s s E n t r o p y = − P ∗ l o g P − ( 1 − P ) ∗ l o g ( 1 − P ) BinaryCrossEntropy=-P*logP-(1-P)*log(1-P) BinaryCrossEntropy=PlogP(1P)log(1P)

5.参考

https://www.bilibili.com/read/cv15258489/?spm_id_from=333.999.0.0

https://www.bilibili.com/video/BV15V411W7VB/?spm_id_from=333.999.0.0&vd_source=20c37d260c9535497db1af49e1fd2cbd

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值