机器学习的信息量,熵,交叉熵,相对熵(KL散度),条件熵,联合熵,互信息的区别

机器学习

    • 信息量
    • 信息熵(熵)
    • 条件熵
    • 联合熵
    • 互信息(信息增益)
    • 交叉熵
    • 相对熵Kullback–Leibler divergence(KL散度)

信息量

信息量的大小可以衡量事件的不确定性或发生的惊讶程度,具体事件的信息量随其概率的递增而递减,且不能为负。

x = x i , H ( x ) = − l o g p ( x ) x=x_i,H(x)=-logp(x) x=xiH(x)=logp(x)

信息熵(熵)

对于一个随机变量X,它的所有可能取值的信息量的期望称为信息熵。熵是服从某一特定概率分布事件的理论最小平均编码长度。通常P描述样本的真实分布,Q描述预测分布。

离 散 变 量 : H ( x ) = − ∑ x ∈ X p ( x ) l o g ⁡ p ( x ) … … … … ( 1 ) 离散变量:H(x)=-∑_{x∈X} p(x) log⁡p(x) …………(1) :H(x)=xXp(x)logp(x)(1)
连 续 变 量 : H ( x ) = − ∫ x ∈ X p ( x ) l o g p ⁡ ( x ) d x 连续变量:H(x)=-∫_{x∈X}p(x) log p⁡(x)dx H(x)=xXp(x)logp(x)dx
于是,如果随机变量的取值越多,那么它的信息熵越大。如果取值越均匀,信息熵越大。


条件熵

在随机变量Y条件下,X的条件概率分布的熵对Y的数学期望
H ( X ∣ Y ) = − ∑ x ∈ X p ( x ) ∑ y ∈ Y p ( y │ x ) l o g p ( y │ x ) H(X|Y)=-∑_{x∈X}p(x) ∑_{y∈Y}p(y│x) log p(y│x) H(XY)=xXp(x)yYp(yx)logp(yx)

联合熵

在随机变量X和Y条件下的数学期望
H ( X , Y ) = − ∑ x , y p ( x , y ) l o g p ( x , y ) H(X,Y)=-∑_{x,y}p(x,y) log p(x,y) H(X,Y)=x,yp(x,y)logp(x,y)

互信息(信息增益)

一个随机变量由于已知另一个随机变量而减少的不确定性。即两个随机变量引入一个后能给另一个带来多少信息。互信息=信息熵-条件熵
I ( X ∣ Y ) = H ( Y ) − H ( Y ∣ X ) I(X|Y)=H(Y)-H(Y|X) I(XY)=H(Y)H(YX)


交叉熵

使用H(P, Q)表示,意味着使用P计算Q的编码长度。描述P和Q的相似程度。
除了P=Q,有H(P,Q)=H(Q,P)=H( P )

H ( p , q ) = − ∑ i = 1 n p ( x ) l o g ⁡ q ( x ) … … … . . ( 2 ) H(p,q)=-∑_{i=1}^n p(x) log⁡ q(x)………..(2) H(p,q)=i=1np(x)logq(x)..(2)

相对熵Kullback–Leibler divergence(KL散度)

描述两个概率分布的差异,是非对称的。
KL散度是用来度量使用基于Q的编码来编码来自P的样本平均所需的额外的比特个数
而往往有 真实值=预测值+信息增量,则这种信息增量D_kl可表示为:
D k l ( p ∣ ∣ q ) = ∑ i = 1 n p ( x ) l o g ⁡ p ( x ) q ( x ) = H ( p , q ) − H ( p ) … … … … ( 3 ) D_{kl} (p||q)=∑_{i=1}^np(x) log⁡\frac{p(x )}{q(x)} =H(p,q)-H(p)…………(3) Dkl(pq)=i=1np(x)logq(x)p(x)=H(p,q)H(p)(3)
由公式(3)得出:相对熵=交叉熵-信息熵。
n为事件的所有可能性,KL散度越小,表示q与p分布越靠近。

性质:

  1. 尽管KL散度从直观上是个度量或距离函数,但它并不是一个真正的度量或者距离,因为它不具有对称性,即 D k l ( p ∣ ∣ q ) ≠ D k l ( q ∣ ∣ p ) D_{kl}(p||q) ≠D_{kl}(q||p) Dkl(pq)=Dkl(qp);且KL散度不满足三角距离公式,两边之和大于第三边,两边之差小于第三边。
  2. 相对熵的值为非负值,即 D k l ( p ∣ ∣ q ) ≥ 0 D_{kl}(p||q) ≥0 Dkl(pq)0.

Tips:在机器学习中评估真实数据与预测值的差距,使用 D k l D_{kl} Dkl刚刚好,但由于前一部分真实值P的信息熵不变,在优化过程中只需要关注交叉熵就可以了。所以在机器学习中直接使用交叉熵做损失loss。

你可能感兴趣的:(学习笔记,概率论,机器学习,深度学习)