机器学习之KL散度

为了解释KL散度,我们首先来讨论信息熵

信息熵

​ 1948年,香农将统计物理中熵的概念,引申到信道通信的过程中,从而开创了“信息论”这门学科。香农定义的“熵”又被称为“香农熵”或“信息熵”即:
S ( p 1 , p 2 , … , p n ) = K ∑ i = 1 n p i l o g i p i S(p_1,p_2,\dots,p_n) = K\sum_{i=1}^{n}p_i{log}_ip_i S(p1,p2,,pn)=Ki=1npilogipi
​ 其中, i i i标记概率空间中所有可能的样本, p i p_i pi表示该样本的出现几率,K是和单位选取相关的任意常数。

  • 信息熵具有以下良好的性质:

    • 连续性:若样本的概率值有微小变化,由此引起的熵变化也是微小的。
    • 对称性:样本重新排序后,信息熵不变。
    • 极值性:在所有样本等几率出现的情况下,熵达到最大值,即

    S ( p 1 , p 2 , … , p n ) ≤ S ( 1 n , … , 1 n ) = l o g 2 ( n ) S(p_1,p_2,\dots,p_n)\leq S(\frac{1}{n},\dots,\frac{1}{n})=log_2(n) S(p1,p2,,pn)S(n1,,n1)=log2(n)

    • 可加性:如果一个系统被划分为一批子系统,如果子系统之间的相互作用是已知的,则可以通过子系统的熵来计算一个系统的熵。

      整体熵为,每个子系统在整体中的熵+每个子系统各自内部的熵*子系统的权重(子系统中的样本在整体样本的总概率)

KL散度

​ KL散度(Kullback-Leibler divergence)也称为相对熵。

​ 从相对熵这个词来理解,我们很容易的想到KL散度适合熵有关系的,x_1,x_2,x_3当然是香农熵,而不是物理学意义的熵。我们现在假设一个采样 X = { x 1 , x 2 , x 3 } X=\{x_1,x_2,x_3\} X={x1,x2,x3}他的概率分布为 P ( x ) = { p 1 , p 2 , p 3 } P(x)=\{p_1,p_2,p_3\} P(x)={p1,p2,p3}现在我们可以很轻易的根据前面的公式,得到这个分布的信息熵为:
S ( p 1 , p 2 , p 3 ) = p 1 l o g 2 p 1 + p 2 l o g 2 p 2 + p 3 l o g 2 p 3 S(p_1,p_2,p_3)=p_1{log}_2p_1+p_2{log}_2p_2+p_3{log}_2p_3 S(p1,p2,p3)=p1log2p1+p2log2p2+p3log2p3
​ 如果我们假设 Y = { l o g 2 p 1 , l o g 2 p 2 , l o g 2 p 3 } 且 P ( y ) = P ( x ) Y=\{{log}_2p_1,{log}_2p_2,{log}_2p_3\}且P(y)=P(x) Y={log2p1,log2p2,log2p3}P(y)=P(x)那么上面分布X的信息熵就可以表示为分布Y的期望:
S ( p 1 , p 2 , p 3 ) = E Y = E x ∼ P ( x ) l o g P ( x ) S(p_1,p_2,p_3)=\mathbb{E}Y=\mathbb{E}_{x\sim P(x)}{log}P(x) S(p1,p2,p3)=EY=ExP(x)logP(x)
​ 因此分布 P ( x ) P(x) P(x)的信息熵,就可以理解为 l o g P ( x ) logP(x) logP(x)的期望。而KL散度,也就是相对熵,既然有“相对”这个词来形容,那么肯定就不只会是一个分布的信息熵,而会是两个分布在一起的比较。因此,我们假设现在对于同样的采样 X = { x 1 , x 2 , x 3 } X=\{x_1,x_2,x_3\} X={x1,x2,x3}还有另外一个概率分布为 Q ( x ) = { q 1 , q 2 , q 3 } Q(x)=\{q_1,q_2,q_3\} Q(x)={q1,q2,q3}。我们应该怎么将这两个概率分布联系在一起呢?

​ 这就用到了另一个概念,叫做交叉熵。对于 P ( x ) 和 Q ( x ) P(x)和Q(x) P(x)Q(x),其交叉熵的定义为:
H ( P , Q ) = − ∑ x P ( x ) l o g Q ( x ) = − E x ∼ P ( x ) l o g Q ( x ) H(P,Q)=-\sum_{x}P(x)logQ(x)=-\mathbb{E}_{x\sim P(x)}logQ(x) H(P,Q)=xP(x)logQ(x)=ExP(x)logQ(x)
​ 可以把 P ( x ) 和 Q ( x ) P(x)和Q(x) P(x)Q(x)的交叉熵理解为在 P ( x ) P(x) P(x)的概率下, l o g Q ( x ) logQ(x) logQ(x)的期望的相反数。

​ 进一步的我们就可以得到 P ( x ) 和 Q ( x ) P(x)和Q(x) P(x)Q(x)的KL散度,也就是相对熵。就是 P ( x ) P(x) P(x)自己的信息熵和其与 Q ( x ) Q(x) Q(x)的交叉熵的和。

这里注意 P ( x ) 和 Q ( x ) P(x)和Q(x) P(x)Q(x)的顺序是不能颠倒的,就是 P ( x ) 相对 Q ( x ) 的相对熵为 D K L ( P ∣ ∣ Q ) P(x)相对Q(x)的相对熵为D_{KL}(P||Q) P(x)相对Q(x)的相对熵为DKL(P∣∣Q)

D K L ( P ∣ ∣ Q ) = E x ∼ P ( x ) l o g P ( x ) − E x ∼ P ( x ) l o g Q ( x ) = E x ∼ P ( x ) l o g P ( x ) Q ( x ) D_{KL}(P||Q)=\mathbb{E}_{x\sim P(x)}{log}P(x)-\mathbb{E}_{x\sim P(x)}logQ(x)\\ =\mathbb{E}_{x\sim P(x)}log\frac{P(x)}{Q(x)} DKL(P∣∣Q)=ExP(x)logP(x)ExP(x)logQ(x)=ExP(x)logQ(x)P(x)

​ 通俗的可以将KL散度理解为,在 P ( x ) P(x) P(x)的概率下, l o g P ( x ) logP(x) logP(x) l o g Q ( x ) logQ(x) logQ(x)的差的期望。当然如果P,Q为连续变量的时候,KL散度定义为:
D K L ( P ∣ ∣ Q ) = ∫ x P ( x ) ∗ l o g P ( x ) Q ( x ) d x D_{KL}(P||Q)=\int_{x}P(x)*log\frac{P(x)}{Q(x)}dx DKL(P∣∣Q)=xP(x)logQ(x)P(x)dx

补充

​ 在进行机器学习训练的过程中,想要拟合的分布一般为 P ( x ) P(x) P(x)而我们网络进行训练得到的分布为 Q ( x ) Q(x) Q(x)。为了衡量拟合的效果,通常就会将KL散度来作为目标函数的一部分或原始形式。而我们可以很明显的注意到,因为 P ( x ) P(x) P(x)是固定的,因此, E x ∼ P ( x ) l o g P ( x ) \mathbb{E}_{x\sim P(x)}{log}P(x) ExP(x)logP(x)就是固定的。因此想要计算KL散度的变化,只需要计算交叉熵的变化就可以。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值