分类目录:《机器学习中的数学》总目录
相关文章:
· 距离定义:基础知识
· 距离定义(一):欧几里得距离(Euclidean Distance)
· 距离定义(二):曼哈顿距离(Manhattan Distance)
· 距离定义(三):闵可夫斯基距离(Minkowski Distance)
· 距离定义(四):切比雪夫距离(Chebyshev Distance)
· 距离定义(五):标准化的欧几里得距离(Standardized Euclidean Distance)
· 距离定义(六):马氏距离(Mahalanobis Distance)
· 距离定义(七):兰氏距离(Lance and Williams Distance)/堪培拉距离(Canberra Distance)
· 距离定义(八):余弦距离(Cosine Distance)
· 距离定义(九):测地距离(Geodesic Distance)
· 距离定义(十): 布雷柯蒂斯距离(Bray Curtis Distance)
· 距离定义(十一):汉明距离(Hamming Distance)
· 距离定义(十二):编辑距离(Edit Distance,Levenshtein Distance)
· 距离定义(十三):杰卡德距离(Jaccard Distance)和杰卡德相似系数(Jaccard Similarity Coefficient)
· 距离定义(十四):Ochiia系数(Ochiia Coefficient)
· 距离定义(十五):Dice系数(Dice Coefficient)
· 距离定义(十六):豪斯多夫距离(Hausdorff Distance)
· 距离定义(十七):皮尔逊相关系数(Pearson Correlation)
· 距离定义(十八):卡方距离(Chi-square Measure)
· 距离定义(十九):交叉熵(Cross Entropy)
· 距离定义(二十):相对熵(Relative Entropy)/KL散度(Kullback-Leibler Divergence)
· 距离定义(二十一):JS散度(Jensen–Shannon Divergence)
· 距离定义(二十二):海林格距离(Hellinger Distance)
· 距离定义(二十三):α-散度(α-Divergence)
· 距离定义(二十四):F-散度(F-Divergence)
· 距离定义(二十五):布雷格曼散度(Bregman Divergence)
· 距离定义(二十六):Wasserstein距离(Wasserstei Distance)/EM距离(Earth-Mover Distance)
· 距离定义(二十七):巴氏距离(Bhattacharyya Distance)
· 距离定义(二十八):最大均值差异(Maximum Mean Discrepancy, MMD)
· 距离定义(二十九):点间互信息(Pointwise Mutual Information, PMI)
相对熵(Relative Entropy)),又被称为KL散度(Kullback-Leibler Divergence)或信息散度(Information Divergence),是两个概率分布间差异的非对称性度量 。在信息理论中,相对熵等价于两个概率分布的信息熵的差值 。
相对熵也是一些优化算法,例如最大期望算法的损失函数 。此时参与计算的一个概率分布为真实分布,另一个为非真实(拟合)分布,相对熵表示使用非真实分布拟合真实分布时产生的信息损耗 。设
p
(
x
)
p(x)
p(x)、
q
(
x
)
q(x)
q(x)是随机变量
x
x
x上的两个概率分布,则在离散和连续随机变量的情形下,相对熵的定义分别为:
离散值:KL
(
p
∣
∣
q
)
=
∑
x
p
(
x
)
log
p
(
x
)
q
(
x
)
连续值:KL
(
p
∣
∣
q
)
=
∫
x
p
(
x
)
log
p
(
x
)
q
(
x
)
d
x
\begin{aligned} &\text{离散值:KL}(p||q)=\sum_xp(x)\log{\frac{p(x)}{q(x)}}\\ &\text{连续值:KL}(p||q)=\int_xp(x)\log{\frac{p(x)}{q(x)}}\text{d}x \end{aligned}
离散值:KL(p∣∣q)=x∑p(x)logq(x)p(x)连续值:KL(p∣∣q)=∫xp(x)logq(x)p(x)dx
在信息理论中,相对熵是用来度量使用基于
q
q
q的编码来编码来自
p
p
p的样本平均所需的额外的比特个数。典型情况下,
p
p
p表示数据的真实分布,
q
q
q表示数据的理论分布\模型分布或
p
p
p的近似分布。给定一个字符集的概率分布,我们可以设计一种编码,使得表示该字符集组成的字符串平均需要的比特数最少。假设这个字符集是
X
X
X,对
x
∈
X
x\in X
x∈X ,其出现概率为
p
(
x
)
p(x)
p(x),那么其最优编码平均需要的比特数等于这个字符集的信息熵:
H
(
x
)
=
−
∑
x
p
(
x
)
log
p
(
x
)
H(x)=-\sum_xp_(x)\log{p_(x)}
H(x)=−x∑p(x)logp(x)
在同样的字符集上,假设存在另一个概率分布
q
(
x
)
q_(x)
q(x),如果用概率分布
p
(
x
)
p_(x)
p(x)的最优编码(即字符
x
x
x的编码长度等于
−
log
p
(
x
)
-\log{p_(x)}
−logp(x)),来为符合分布
p
(
x
)
p_(x)
p(x)的字符编码,那么表示这些字符就会比理想情况多用一些比特数。相对熵就是用来衡量这种情况下平均每个字符多用的比特数,因此可以用来衡量两个分布的距离,即:
KL
(
p
∣
∣
q
)
=
∑
x
p
(
x
)
log
p
(
x
)
q
(
x
)
=
∑
x
p
(
x
)
log
p
(
x
)
−
∑
x
p
(
x
)
log
q
(
x
)
\text{KL}(p||q)=\sum_xp(x)\log{\frac{p(x)}{q(x)}}=\sum_xp(x)\log{p(x)}-\sum_xp(x)\log{q(x)}
KL(p∣∣q)=x∑p(x)logq(x)p(x)=x∑p(x)logp(x)−x∑p(x)logq(x)
下面我们来看一下相对熵的Python实现:
def RelativeEntropy(p, q):
import numpy as np
p = np.array(p)
q = np.array(q)
return np.sum(p * np.log(p/q))