【机器学习】信息熵、交叉熵、相对熵
信息熵、交叉熵、相对熵(KL散度)
学习资源:一文彻底搞懂信息熵、相对熵、交叉熵和条件熵(配举例题说明)
- 信息熵
H(X)=-\sum_{i=1}^N{p(x_i)\log p(x_i)}
一个系统越是有序,信息熵就越低;反之,一个系统越是混乱,信息熵就越高
- 交叉熵
H(X)=-\sum_{i=1}^N{p(x_i)\log q(x_i)}
主要度量两个概率分布间的差异性信息。
我们常用交叉熵函数来衡量预测值与真实样本之间的差异程度,并将其作为重要的损失函数应用在各种机器学习模型中。同样地,在计算信息论中的相对 entropy(即 KL 散度)时也可以使用它与其他指标结合的方式来进行评估。值得注意的是,在优化模型参数的过程中我们可以直接使用交叉墒来进行目标函数的最小化求解而无需额外计算其他指标如信息墒等从而简化了整个优化过程并降低了计算复杂性
- 相对熵
Kullback-Leibler散度(D_{KL})定义为:
D_{K L}(p \| q)= \sum_{i} p(i) * \log \frac{p(i)}{q(i)}= \sum_{i=1}^{N} p\left(x_i\right) · (\log p\left(x_i\right)-\log q\left(x_i\right))
其中,
D_{K L}(p \| q)= \sum_{x=1}^{N} p(x) · [\ln p(x)-ln q(x)]
这种衡量两个概率分布之间差异的方法被称为相对熵
相对熵 = 交叉熵 - 信息熵
也被用来量化两个概率分布之间的差异性信息。当相对熵数值较小时,则表明q分布在某种程度上更为接近p分布。
相对熵计算示例
例如随机变量X遵循分布P,在取值1、2、3时的概率分别为[...];同样地,随机变量Y遵循分布Q,在取值1、2、3时的概率分别为[...]. 则计算如下:
- D_{KL}(P||Q)≥0,即非负性 。
- D_{KL}(P||Q)\neq D_{KL}(Q||P),即不对称性 。
Python代码实现,离散型KL散度可通过SciPy进行计算:
from scipy import stats
P = [0.2, 0.4, 0.4]
Q = [0.4, 0.2, 0.4]
stats.entropy(P,Q) # 0.13862943611198905
P = [0.2, 0.4, 0.4]
Q = [0.5, 0.1, 0.4]
stats.entropy(P,Q) # 0.3195159298250885
P = [0.2, 0.4, 0.4]
Q = [0.3, 0.3, 0.4]
stats.entropy(P,Q) # 0.03533491069691495
AI助手
