KL散度 (Kullback-Leibler (KL) divergence) 是信息论中的一个重要概念,它可以用来衡量两个随机分布的差异,这篇文章会举一个例子用通俗易懂的方式来解释KL散度和与它密切联系的交叉熵 (cross-entropy) 概念
概念介绍
1. 什么是KL散度?
KL散度(Kullback-Leibler散度)就像是一个**“寻找差异的游戏”**。假设现在我们有一个盒子,这个盒子里有3种糖果分别是巧克力、水果糖和薄荷糖,但是我们不知道盒子里面三种糖果的比例是多少。此时我们又拿了一个盒子,往里面放入这三种糖果,作为我们的猜测:
- 盒子A:糖果的分布是你以为的样子(比如你以为盒子里有50%的巧克力、30%的水果糖、20%的薄荷糖)。
- 盒子B:糖果的分布是实际的样子(比如实际上是60%的巧克力、25%的水果糖、15%的薄荷糖)。
KL散度就是一种计算方法,用来告诉你:“你以为的糖果分布”和“实际的糖果分布”有多大的差异。
- 如果两种分布差不多(你猜得很准),KL散度会很小,意思是:你猜得不错!
- 如果两种分布差异很大(你猜得不准),KL散度会很大,意思是:你需要调整你的猜测啦!
KL散度就是在帮你看:你“以为的盒子A”和“真实的盒子B”到底差了多少。
2. 什么是交叉熵?
交叉熵有点像是一个**“惩罚游戏”**,用来告诉你:你猜得有多糟糕。
假设你在玩一个游戏,规则是这样:
- 盒子里有糖果,你需要猜每种糖果出现的概率(比如,巧克力50%,水果糖30%,薄荷糖20%)。
- 游戏主持人会根据真实的糖果分布,给你一种惩罚分数,如果你猜得不好,分数就会很高。
交叉熵就是计算你“猜测的分布”和“真实分布”之间的差异,然后告诉你:你猜得有多差。
- 如果你猜得很接近真实分布,惩罚分数会很低,这说明你很聪明!
- 如果你猜得离真实分布很远,惩罚分数会很高,主持人会说:“哎呀,你需要更努力猜准哦!”
3. KL散度和交叉熵的关系
根据上面的例子,我们可以知道KL散度与交叉熵之间的关系就是:
- 交叉熵 = “你猜得有多糟糕”(总的惩罚分数)。
- KL散度 = “你猜错的部分”(差异分数)。
所以,KL散度其实是交叉熵的一部分,它专门关注你“以为的分布”和“真实分布”之间的差异。
用公式计算KL散度和交叉熵:
下面我们用实际的公式去计算糖果问题的KL散度和交叉熵
- 你以为的分布(盒子A,猜测分布):
- 巧克力:50% (0.5)
- 水果糖:30% (0.3)
- 薄荷糖:20% (0.2)
- 实际的分布(盒子B,真实分布):
- 巧克力:60% (0.6)
- 水果糖:25% (0.25)
- 薄荷糖:15% (0.15)
1. KL散度公式:
KL散度的公式是:
DKL(P∣∣Q)=∑iP(i)⋅log(P(i)Q(i)) D_{KL}(P || Q) = \sum_{i} P(i) \cdot \log\left(\frac{P(i)}{Q(i)}\right) DKL(P∣∣Q)=i∑P(i)⋅log(Q(i)P(i))
其中:
- P(i)P(i)P(i)是你猜的概率(盒子A)。
- Q(i)Q(i)Q(i)是真实的概率(盒子B)。
- log\loglog是对数函数(一般用以2为底或自然对数)。这里用自然对数(ln\lnln)。
逐项计算:
第一种糖果:巧克力
- P(巧克力)=0.5,Q(巧克力)=0.6P(巧克力) = 0.5, Q(巧克力) = 0.6P(巧克力)=0.5,Q(巧克力)=0.6
- 0.5⋅ln(0.50.6)=0.5⋅ln(0.8333)=0