关于KL散度的理解

本文介绍了KL散度的概念,它是衡量两种概率分布差异的度量,常用于评估信息损失。信息熵表示数据的不确定性,而KL散度则表示使用一个分布近似另一个分布时增加的平均编码长度。它等于原始分布p与近似分布q之间对数差值的期望。

几个结论:
1)信息熵:编码方案完美时,最短平均编码长度的是多少。
2)交叉熵:编码方案不一定完美时(由于对概率分布的估计不一定正确),平均编码长度的是多少。 平均编码长度 = 最短平均编码长度 + 一个增量
3)相对熵:编码方案不一定完美时,平均编码长度相对于最小值的增加值。(即上面那个增量)

KL散度

Kullback-Leibler Divergence,即K-L散度,是一种量化两种概率分布P和Q之间差异的方式,又叫相对熵。在概率学和统计学上,我们经常会使用一种更简单的、近似的分布来替代观察数据或太复杂的分布。K-L散度能帮助我们度量使用一个分布来近似另一个分布时所损失的信息量。

数据的熵

K-L散度源于信息论。信息论主要研究如何量化数据中的信息。最重要的信息度量单位是熵Entropy,一般用H表示。分布的熵的公式如下: H = − ∑ i = 1 N p ( x i ) log ⁡ p ( x i ) H = - \sum_{i=1}^{N}p(x_i)\log p(x_i) H=i=1Np(xi)logp(xi)
上面这个对数没有确定底数,可以是2、e或者10等,以2为底计算的H值可以看作

### KL的全称与定义 KL的全称是 **Kullback-Leibler Divergence**,它是一种衡量两个概率分布 \( P \) 和 \( Q \) 之间差异的方法。其定义为: \[ D_{\text{KL}}(P \| Q) = \sum_{x} P(x) \log \frac{P(x)}{Q(x)} \] 这里,\( P(x) \) 表示真实分布,\( Q(x) \) 表示近似分布。KL可以被理解为使用分布 \( Q \) 来近似真实分布 \( P \) 时所导致的“信息损失”的量[^2]。 在离情况下,KL通过求和计算;而在连续情况下,则用积分替代求和符号。公式如下: \[ D_{\text{KL}}(P \| Q) = \int_{-\infty}^{\infty} P(x) \log \frac{P(x)}{Q(x)} dx \] KL具有以下性质: - **非负性**:\( D_{\text{KL}}(P \| Q) \geq 0 \),这是由Gibbs不等式保证的,且当且仅当 \( P = Q \) 时,\( D_{\text{KL}}(P \| Q) = 0 \)[^2]。 - **不对称性**:KL是非对称的,即 \( D_{\text{KL}}(P \| Q) \neq D_{\text{KL}}(Q \| P) \)[^3]。 此外,KL也被称为相对熵(Relative Entropy),因为它可以被理解为两个分布之间的熵差。 ### 信息熵KL的关系 信息熵(Entropy)是衡量随机变量不确定性的指标,定义为: \[ H(P) = -\sum_{x} P(x) \log P(x) \] KL可以看作是交叉熵(Cross Entropy)与信息熵的差值。交叉熵定义为: \[ H(P, Q) = -\sum_{x} P(x) \log Q(x) \] 因此,KL可以表示为: \[ D_{\text{KL}}(P \| Q) = H(P, Q) - H(P) \] 这意味着KL不仅衡量了分布 \( P \) 和 \( Q \) 的差异,还反映了使用分布 \( Q \) 近似分布 \( P \) 时的信息损失[^4]。 ```python import numpy as np def kl_divergence(p, q): p = np.asarray(p, dtype=np.float64) q = np.asarray(q, dtype=np.float64) return np.sum(np.where(p != 0, p * np.log(p / q), 0)) ``` 上述代码实现了离分布下的KL计算。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值