从熵到交叉熵损失函数的理解

从熵到交叉熵损失函数的理解

说在前面

首先,热力学中的“熵”和我们要说的机器学习中的也就是信息学中的“熵”是不一样的。记得高中化学老说说过,熵越大说明状态越不稳定,气态的熵就大于固态的熵。但是

现在要说的“熵”就不一样了。

本文主要的内容:熵-->相对熵(KL散度)-->交叉熵。先来总结一下:

  • 熵(信息熵)

表示事件所含信息量的大小。熵越大,所含信息量越大。

  • 相对熵(KL散度)

衡量两个分布的差异

  • 交叉熵

K L 散 度 = 交 叉 熵 − 信 息 熵 KL散度 = 交叉熵 - 信息熵 KL=,所以当信息熵固定的时候,可以用交叉熵变化反应KL散度的变化。

KL散度可以被用来计算代价,而在特定情况下最小化KL散度等价于最小化交叉熵。所以用交叉熵来当做代价。

熵(Entropy)

随机变量 X X X,其取值有 x 1 , x 2 , . . . {x_1, x_2, ...} x1,x2,...,称这些取值为不同的事件。

  1. 信息量

P ( x i ) = P ( X = x i ) P(x_i) = P(X=x_i) P(xi)=P(X=xi)越小,也就是事件发生的概率越小,我们认为该事件的信息量就越大。

信息量的计算: I ( x i ) = − l o g P ( x i ) I(x_i) = -logP(x_i) I(xi)=logP(xi)

熵:各类事件信息量的期望。

熵的计算: H ( X ) = ∑ P ( x i ) I ( x i ) = − ∑ P ( x i ) l o g P ( x i ) H(X) = \sum P(x_i)I(x_i) = -\sum P(x_i)logP(x_i) H(X)=P(xi)I(xi)=P(xi)logP(xi)

相对熵(KL散度 Kullback-Leibler Divergence)

KL散度,也称KL距离,一般被用来计算两个分布的差异。KL散度不具有对称性。

  • 离散变量A和B分布的差别

D K L ( A ∥ B ) = ∑ P A ( x i ) log ⁡ ( P A ( x i ) P B ( x i ) ) = ∑ P A ( x i ) log ⁡ ( P A ( x i ) ) − ∑ P A ( x i ) log ⁡ ( P B ( x i ) ) D_{KL}(A \| B)=\sum P_{A}(x_i) \log (\frac{P_{A}(x_i)}{P_{B}(x_i)})=\sum P_{A}(x_i) \log (P_{A}(x_i))-\sum P_{A}(x_{i}) \log (P_{B}(x_{i})) DKL(AB)=PA(xi)log(PB(xi)PA(xi))=PA(xi)log(PA(xi))PA(xi)log(PB(xi))

  • 连续变量A和B分布的差别

D K L ( A ∥ B ) = ∫ a ( x ) log ⁡ ( a ( x ) b ( x ) ) D_{K L}(A \| B)=\int a(x) \log \left(\frac{a(x)}{b(x)}\right) DKL(AB)=a(x)log(b(x)a(x))

观察上面公式可以知道:

  1. P ( A ) = P ( B ) P(A) = P(B) P(A)=P(B),即两个随机变量分布完全相同,KL散度等于0;
  2. 注意离散事件的公式,减号的前一部分即随机变量A的熵的相反数。
  3. D K L ( A ∣ ∣ B ) ≠ D K L ( B ∣ ∣ A ) D_{KL}(A||B) \ne D_{KL}(B||A) DKL(AB)̸=DKL(BA)

交叉熵(Cross Entropy)

我们可以使用KL散度来度量两个分布之间的差异,为什么还需要交叉熵?

根据上面的推导,我们得到 D K L ( A ∥ B ) = ∑ P A ( x i ) log ⁡ ( P A ( x i ) ) − ∑ P A ( x i ) log ⁡ ( P B ( x i ) ) D_{KL}(A \| B) = \sum P_{A}(x_i) \log (P_{A}(x_i))-\sum P_{A}(x_{i}) \log (P_{B}(x_{i})) DKL(AB)=PA(xi)log(PA(xi))PA(xi)log(PB(xi))

D K L ( A ∣ ∣ B ) = − H ( A ) + H ( A , B ) D_{KL}(A||B) = -H(A) + H(A, B) DKL(AB)=H(A)+H(A,B)

该公式说明,KL散度 = - 熵 + 交叉熵,也就是熵,当熵固定的时候,我们要用KL散度来衡量两个分布的差异时,等价于用交叉熵来衡量。

交叉熵公式: H ( A , B ) = − ∑ P A ( x i ) l o g P B ( x i ) H(A, B) = -\sum P_A(x_i)logP_B(x_i) H(A,B)=PA(xi)logPB(xi)

注意,交叉熵和KL散度一样,不具有对称性

机器学习中交叉熵的应用

机器学习的过程,就是希望模型上学到的分布 P M P_M PM和真实数据的分布 P R P_R PR(一般用训练集的分布 P T P_T PT)越接近越好,所以,用KL散度来衡量这个差异,也就是说最小化 D K L ( P T ∣ ∣ P M ) D_{KL}(P_T||P_M) DKL(PTPM)

由上面的推导我们知道 D K L ( P T ∣ ∣ P M ) = − H ( P T ) + H ( P T , P M ) D_{KL}(P_T||P_M) = -H(P_T) + H(P_T, P_M) DKL(PTPM)=H(PT)+H(PT,PM)

对于训练集来说,其信息熵 H ( P T ) H(P_T) H(PT)是固定的,所以,最小化 D K L ( P T ∣ ∣ P M ) D_{KL}(P_T||P_M) DKL(PTPM)等价于最小化交叉熵 H ( P T , P M ) H(P_T, P_M) H(PT,PM).

参考博客

知乎

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值