机器学习_KL散度详解(全网最详细)

KL散度(Kullback-Leibler divergence),可以以称作相对熵(relative entropy)或信息散度(information divergence)。KL散度的理论意义在于度量两个概率分布之间的差异程度,当KL散度越大的时候,说明两者的差异程度越大;而当KL散度小的时候,则说明两者的差异程度小。如果两者相同的话,则该KL散度应该为0。

接下来我们举一个具体的🌰:

我们设定两个概率分布分别为 P P P Q Q Q,在设定为连续随机变量的前提下,他们对应的概率密度函数分别为 p ( x ) p(x) p(x) q ( x ) q(x) q(x)。如果我们用 q ( x ) q(x) q(x)去近似 p ( x ) p(x) p(x),则KL散度可以表示为:

K L ( P ∣ ∣ Q ) = ∫ p ( x ) log ⁡ p ( x ) q ( x ) d x KL(P||Q) = \int p(x)\log \frac{p(x)}{q(x)}dx KL(P∣∣Q)=p(x)logq(x)p(x)dx

从上面的公式可以看出,当且仅当 P = Q P=Q P=Q时, K L ( P ∣ ∣ Q ) = 0 KL(P||Q) = 0 KL(P∣∣Q)=0。此外我们可以知道KL散度具备非负性,即 K L ( P ∣ ∣ Q ) > = 0 KL(P||Q) >= 0 KL(P∣∣Q)>=0。并且从公式中我们也发现,KL散度不具备对称性,也就是说 P P P对于 Q Q Q的KL散度并不等于 Q Q Q对于 P P P的KL散度。因此,KL散度并不是一个度量(metric),即KL散度并非距离

我们再来看看离散的情况下用 q ( x ) q(x) q(x)去近似 p ( x ) p(x) p(x)的KL散度的公式:

K L ( P ∣ ∣ Q ) = ∑ p ( x ) log ⁡ p ( x ) q ( x ) KL(P||Q) = \sum p(x)\log \frac{p(x)}{q(x)} KL(P∣∣Q)=p(x)logq(x)p(x)

接下来我们对上面的式子进行展开:

K L ( P ∣ ∣ Q ) = ∑ p ( x ) log ⁡ p ( x ) q ( x ) = − ∑ p ( x ) log ⁡ ( q ( x ) ) + ∑ p ( x ) log ⁡ ( p ( x ) ) = H ( P , Q ) − H ( P ) KL(P||Q) = \sum p(x)\log \frac{p(x)}{q(x)} = -\sum p(x)\log(q(x)) + \sum p(x)\log(p(x)) = H(P,Q) - H(P) KL(P∣∣Q)=p(x)logq(x)p(x)=p(x)log(q(x))+p(x)log(p(x))=H(P,Q)H(P)

最后得到的第一项称作 P P P Q Q Q的交叉熵(cross entropy),后面一项就是熵。

在信息论中,熵代表着信息量, H ( P ) H(P) H(P)代表着基于 P P P分布自身的编码长度,也就是最优的编码长度(最小字节数)。而 H ( P , Q ) H(P,Q) H(P,Q)则代表着用 Q Q Q的分布去近似 P P P分布的信息,自然需要更多的编码长度。并且两个分布差异越大,需要的编码长度越大。所以两个值相减是大于等于0的一个值,代表冗余的编码长度,也就是两个分布差异的程度。所以KL散度在信息论中还可以称为相对熵(relative entropy)

对深度学习中的生成模型来说,我们希望最小化真实数据分布与生成数据分布之间的KL散度,从而使得生成数据尽可能接近真实数据的分布。在实际场景中,我们是几乎不可能知道真实数据分布 P d a t a ( x ) P_{data}(x) Pdata(x)的,我们使用训练数据形成的生成分布在逼近 P d a t a ( x ) P_{data}(x) Pdata(x)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rocky Ding*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值