机器学习里面,经常会看到各种熵,特意在此简单总结下。
前言
信息熵是由香农1948年提出的用来定量描述信息量大小的概念。在机器学习中用来表示随机变量分布的混乱程度,分布越混乱,熵越大。
1.自信息
自信息表示某单一事件发生时所包含的信息量多少,大小和事件发生的概率有关,概率越大,自信息越小,计算公式如下:
I(pi)=−log(pi) I(p_i) =-log(p_i)I(pi)=−log(pi)
pip_ipi表示事件发生的概率。
2.信息熵
自信息表示的是单一事件发生时包含的信息量,而信息熵表示的是整个随机分布平均信息量。由香农提出,所以也叫香农熵,计算公式如下:
KaTeX parse error: No such environment: split at position 7: \begin{̲s̲p̲l̲i̲t̲}̲H(x)&=E_{x\sim …
这个公式实际计算的就是随机分布中每个自信息的加权和,表示的是随机分布的混乱程度,信息熵越大,分布越混乱。机器学习里面很多Loss的基于熵提出的。
3.条件熵
条件熵的定义是:在X给定条件下,Y的条件概率分布的熵对X的数学期望。计算公式如下:
KaTeX parse error: No such environment: split at position 7: \begin{̲s̲p̲l̲i̲t̲}̲H(Y|X)&=E_{x\si…
条件熵可以这样理解:Y在条件X=xX=xX=x下概率分布的熵H(Y∣X=x)=∑j=1mp(y∣x)log p(y∣x)H(Y|X=x)=\sum_{j=1}^mp(y|x)log~p(y|x)H(Y∣X=x)=j=1∑mp(y∣x)log p(y∣x)
然后对X求数学期望Ex∼p[H∣X=x]=∑i=1np(x)H(Y∣X=x)E_{x\sim p}[H|X=x]=\sum_{i=1}^np(x)H(Y|X=x)Ex∼p[H∣X=x]=i=1∑np(x)H(Y∣X=x)
如果对上面的条件熵公式进一步推导,可以得到:H(X∣Y)=H(X,Y)−H(X)H(X|Y)=H(X,Y)-H(X)H(X∣Y)=H(X,Y)−H(X)
即Y对X的条件熵等于X,Y的联合信息熵减去X的熵。
4.交叉熵
交叉熵的定义是:假如有随机分布p,q,p对q的交叉熵表示q分布的自信息对p分布的期望,计算公式如下:
H(p,q)=Ex∼p[−log q(x)]=−∑i=1np(x)log q(x)H(p,q)=E_{x\sim p}[-log~q(x)]=-\sum_{i=1}^np(x)log~q(x)H(p,q)=Ex∼p[−log q(x)]=−i=1∑np(x)log q(x)
其中,p表示真实分布,q表示预测分布,交叉熵在逻辑回归中有广泛的应用,下面给出二分类Sigmoid的损失函数:
J(θ)=−1m∑i=1m(yilog hθ(xi)+(1−yi)log (1−hθ(xi)))J(\theta)=-\frac1m\sum_{i=1}^m(y_ilog~h_\theta(x_i)+(1-y_i)log~(1-h_\theta(x_i)))J(θ)=−m1i=1∑m(yilog hθ(xi)+(1−yi)log (1−hθ(xi)))
另外,如果观察多分类Softmax逻辑回归的损失函数,会发现,Softmax就是Sigmoid在多分类上的推广。
5.相对熵
相对熵又称KL散度,用来表示两个概率分布的差异性,差异性越大,相对熵越大,当两者相等时熵为0,计算公式如下:KaTeX parse error: No such environment: split at position 7: \begin{̲s̲p̲l̲i̲t̲}̲D_{KL}(p||q)&=E…
需要注意的是KL散度是非对称的,即DKL(p∣∣q)≠DKL(q∣∣p)D_{KL}(p||q)\ne D_{KL}(q||p)DKL(p∣∣q)̸=DKL(q∣∣p)。对比相对熵和交叉熵会发现两者仅差一个H(p)H(p)H(p),所以当p是固定分布,H(P)H(P)H(P)为确定值的时候,KL散度和交叉熵并没有什么区别。
6.JS散度
JS散度用来度量两个概率分布的相似度,是KL散度的一个变体,与KL散度的主要区别在于JS散度是对称的,取值为0到1。计算公式如下:
JS(P1∣∣P2)=12KL(P1∣∣P1+P22+12KL(P2∣∣P1+P22)JS(P_1||P_2)=\frac{1}{2}KL(P_1||\frac{P_1+P_2}2+\frac{1}{2}KL(P_2||\frac{P_1+P_2}2)JS(P1∣∣P2)=21KL(P1∣∣2P1+P2+21KL(P2∣∣2P1+P2)
KL散度和JS散度有一个共同的问题:当两个分布p,q相距很远时,KL散度是没有意义的,而JS散度是一个常数,这时梯度为0,这在机器学习算法中是一个很致命的缺点。
7.互信息
互信息用来度量两个分布之间的距离,定义是:一个随机变量由于已知另一随机变量而减少的不确定性。计算公式如下:
KaTeX parse error: No such environment: split at position 7: \begin{̲s̲p̲l̲i̲t̲}̲I(X,Y)&=\sum_{i…
这里只是列出一些常见的熵,在机器学习中还会经常看到为了满足特殊的要求,经常会提出一些奇奇怪怪的熵。