信息熵,散度

本文深入探讨信息熵的概念,包括其定义、计算方法及其在信息压缩中的应用。同时,介绍了交叉熵在机器学习中的作用,以及如何通过计算交叉熵评估模型的分类性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

信息熵

  熵是热力学和信息学中的一个概念,在这里我主要要讨论信息熵。信息熵描述了信息的多少,也可以说是不确定性的多少。打个比方,明天太阳从东边升起,这句话的信息量为0。因为太阳一定是从东边升起的,这是概率为1的事件,没有任何的不确定性。
  香农在定义信息熵的时候,考虑了如下几个性质:

  • 连续性。 改变事件发生的概率,信息熵也要随之发生变化,信息熵的变化随概率分布的变化是连续的。
  • 当事件发生的概率相同时,熵取得最大值,在这种情况下,事件的可能状态越多,熵越大。
  • 当事件的发生是确定的,此时熵为0。
    熵的计算式如下:
    H(X)=∑i=1np(xi)log⁡2(1p(xi))=−∑i=1np(xi)log⁡2p(xi)H(X)=\sum_{i=1}^{n}p(x_i)\log_2(\frac{1}{p(x_i)})=-\sum_{i=1}^{n}p(x_i)\log_2p(x_i)H(X)=i=1np(xi)log2(p(xi)1)=i=1np(xi)log2p(xi)

  熵的大小决定了编码信息所需要的最小比特数,它也是数据无损压缩的极限。熵还有其它的定义,在满足一下条件的情况下,熵函数H的形式是唯一的:

  • 对于概率序列p1,p2,...,pnp_1,p_2,...,p_np1,p2,...,pn, ∑i=1npi=1\sum_{i=1}^{n}p_i=1i=1npi=1, H(p1,...,pn)H(p_1,...,p_n)H(p1,...,pn)是连续的。
  • 对于正整数n,H满足以下条件:H(1n,...,1n)(n项)&lt;H(1n+1,...,1n+1)(n+1项)H(\frac{1}{n},...,\frac{1}{n})(n项)&lt; H(\frac{1}{n+1},...,\frac{1}{n+1})(n+1项)H(n1,...,n1)(n)<H(n+11,...,n+11)(n+1)
  • 对于正整数bib_ibi, ∑i=1kbi=n\sum_{i=1}^{k}b_i=ni=1kbi=n,有
    H(1n,...,1n)=H(b1n,...,bkn)+∑i=1kbinH(1bi,...,1bi)H(\frac{1}{n},...,\frac{1}{n})=H(\frac{b_1}{n},...,\frac{b_k}{n})+\sum_{i=1}^{k}\frac{b_i}{n}H(\frac{1}{b_i},...,\frac{1}{b_i})H(n1,...,n1)=H(nb1,...,nbk)+i=1knbiH(bi1,...,bi1)
    第三点表明系统的熵可以看作它的子系统的熵之和。假设我们有n个球,每个球取到的概率相等,为1n\frac{1}{n}n1, 系统的熵即为上式的左项;换个方法,我们把这n个球放进k个盒子里,每个盒子的球的数量为bib_ibi,每个球取到的概率依然为1n\frac{1}{n}n1, 球位于第i个盒子的概率为bin\frac{b_i}{n}nbi,在盒子内取到球的概率为1bi\frac{1}{b_i}bi1, 系统的熵可以看成每个盒子的熵与盒子组成的子系统的熵之和。

性质

  • Hn(p1,...,pn)H_n(p_1,...,p_n)Hn(p1,...,pn)对于概率序列p1,...,pnp_1,...,p_np1,...,pn是连续和对称的。
  • Hn+1(p1,...,pn,0)=Hn(p1,...,pn)H_{n+1}(p_1,...,p_n,0)=H_n(p_1,...,p_n)Hn+1(p1,...,pn,0)=Hn(p1,...,pn)
  • 当概率分布为均匀分布的时候,熵取得最大值。即
    Hn(p1,...,pn)≤Hn(1n,...,1n)H_n(p_1,...,p_n)\leq H_n(\frac{1}{n},..., \frac{1}{n})Hn(p1,...,pn)Hn(n1,...,n1)
    可以用琴生不等式证明
    H(X)=E[log⁡b(1p(X))]≤log⁡b(E[1p(X)])=log⁡b(n)H(X)=E[\log_b(\frac{1}{p(X)})]\leq \log_b(E[\frac{1}{p(X)}])=\log_b(n)H(X)=E[logb(p(X)1)]logb(E[p(X)1])=logb(n)

  以上是信息熵的离散形式,信息熵的连续形式如下:
h[f]=−∫−∞∞f(x)log⁡f(x)dxh[f]=- \int _{-\infty}^{\infty} f(x)\log f(x) \mathrm{d}x h[f]=f(x)logf(x)dx
其中,f为概率密度函数。
综上,熵的计算式为H(P)=Ex∼P(−log⁡1P(x))H(P)=E_{x \sim P}(-\log \frac{1}{P(x)})H(P)=ExP(logP(x)1)

交叉熵

  在机器学习中,我们经常要用到交叉熵损失函数,交叉熵和信息熵有很深的联系。在机器学习中,我们经常要估计变量的分布,那么我们估计的概率分布和变量的真实分布到底有多接近呢?交叉熵就是用来衡量这个真实概率分布和估计的概率分布的差异的。
  假设真实的概率分布为P,估计的概率分布为Q,熵的估计值为
H(Q)=Ex∼Q(log⁡1Q(x))H(Q)=E_{x \sim Q}(\log\frac{1}{Q(x)})H(Q)=ExQ(logQ(x)1)
如果Q和P非常接近的话,那么H(Q)也会接近H(P)。但是X的真实分布是P而不是Q,所以这样计算出来的期望值并不准确,于是我们用交叉熵来表示这个期望值:
H(P,Q)=Ex∼P(log⁡1Q(x))H(P,Q)=E_{x \sim P}(\log\frac{1}{Q(x)})H(P,Q)=ExP(logQ(x)1)
这和我们根据样本计算变量的方差有点类似,由于样本的均值不是变量的均值,所以前面的系数为1n−1\frac{1}{n-1}n11而不是1n\frac{1}{n}n1
  交叉熵利用概率分布P和编码大小log⁡1Q\log\frac{1}{Q}logQ1来计算熵的期望值。交叉熵不是对称的,一般地,H(P,Q)≠H(Q,P)H(P,Q) \ne H(Q,P)H(P,Q)̸=H(Q,P)。当P=Q,有H(P,Q)=H(P,P)=H(P)H(P,Q)=H(P,P)=H(P)H(P,Q)=H(P,P)=H(P)
H(P,Q)≥H(P)H(P,Q)\geq H(P)H(P,Q)H(P)
当P=Q时,上式取等号。
  在做分类任务的时候,我们经常使用交叉熵作为损失函数,进行分类的时候,训练数据一般采用的是one-hot编码。比如[0,1,0,0,0][0,1,0,0,0][0,1,0,0,0]表示样本的类别为第二类,这就是损失函数中的概率分布P。假设我们的模型最后输出的分类结果是[0.5,0.2,0.1,0.1,0.1][0.5,0.2,0.1,0.1,0.1][0.5,0.2,0.1,0.1,0.1],那么计算得到的交叉熵为
H(P,Q)=0+log⁡10.2+0+0+0=1.609H(P,Q)=0+\log\frac{1}{0.2}+0+0+0=1.609H(P,Q)=0+log0.21+0+0+0=1.609
我用的是底数为e的对数函数,这里底数并不重要,因为对数可以用换底公式进行变形,所以相对大小不会有影响。
假设模型经过训练后,分类正确率得到提高,分类结果变为[0.1,0.9,0,0,0][0.1,0.9,0,0,0][0.1,0.9,0,0,0],再次计算交叉熵,得到
H(P,Q)=0+log⁡10.9+0+0+0=0.105H(P,Q)=0+\log\frac{1}{0.9}+0+0+0=0.105H(P,Q)=0+log0.91+0+0+0=0.105
交叉熵的数值减少了,这和我们的直觉是相符合的,因为分类结果变好了。

KL散度

  衡量两个分布之间的相似性,还可以用KL散度。KL散度的定义如下:
DKL(P∣∣Q)=H(P,Q)−H(P)=Ex∼P(−log⁡Q(x))−Ex∼P(−log⁡P(x))=Ex∼P(log⁡P(x)−log⁡Q(x))=Ex∼P(log⁡P(x)Q(x)) \begin{aligned} D_{KL}(P||Q)&amp;=H(P,Q)-H(P) \\ &amp; =E_{x\sim P}(-\log Q(x))-E_{x\sim P}(-\log P(x)) \\ &amp; =E_{x\sim P}(\log P(x)-\log Q(x)) \\ &amp; =E_{x\sim P}(\log \frac{P(x)}{Q(x)}) \end{aligned}DKL(PQ)=H(P,Q)H(P)=ExP(logQ(x))ExP(logP(x))=ExP(logP(x)logQ(x))=ExP(logQ(x)P(x))
KL散度有离散和连续两种情况:
DKL(P∣∣Q)=∑iPilog⁡P(i)Q(i)D_{KL}(P||Q)=\sum_{i}P_i\log\frac{P(i)}{Q(i)}DKL(PQ)=iPilogQ(i)P(i)
DKL(P∣∣Q)=∫P(x)log⁡P(x)Q(x)dxD_{KL}(P||Q)=\int P(x)\log\frac{P(x)}{Q(x)}\mathrm{d}xDKL(PQ)=P(x)logQ(x)P(x)dx

性质

  • KL散度是非负的。前面我们已经提到H(P,Q)≥H(P)H(P,Q)\geq H(P)H(P,Q)H(P)
  • KL散度是非对称的。DKL(P∣∣Q)≠DKL(Q∣∣P)D_{KL}(P||Q)\ne D_{KL}(Q||P)DKL(PQ)̸=DKL(QP)

JS散度

  JS散度也可以衡量两个概率分布的相似性。对于两个分布P,Q,它们的JS散度定义如下:
JSD(P∣∣Q)=12DKL(P∣∣M)+12DKL(Q∣∣M)JSD(P||Q)=\frac{1}{2}D_{KL}(P||M)+\frac{1}{2}D_{KL}(Q||M)JSD(PQ)=21DKL(PM)+21DKL(QM)
其中,M=12(P+Q)M=\frac{1}{2}(P+Q)M=21(P+Q).
  JS散度有以下性质:

  • 对称性。 JSD(P∣∣Q)=JSD(Q∣∣P)JSD(P||Q)=JSD(Q||P)JSD(PQ)=JSD(QP)
  • 有界性。0≤JSD(P∣∣Q)≤10\leq JSD(P||Q) \leq 10JSD(PQ)1
    证明如下:前面我们知道,D(P,Q)≥0D(P,Q)\geq 0D(P,Q)0,所以JSD(P,Q)≥0JSD(P,Q)\geq 0JSD(P,Q)0
    JSD(P,Q)=12DKL(P∣∣12(P+Q))+12DKL(Q∣∣12(P+Q))=12{H(P,12(P+Q))−H(P)+H(Q,12(P+Q))−H(Q)}=12{Ex∼Plog⁡2P(x)P(x)+Q(x)+Ex∼Qlog⁡2Q(x)P(x)+Q(x)}≤12(log⁡2+log⁡2)=log⁡2\begin{aligned} JSD(P,Q)&amp;=\frac{1}{2}D_{KL}(P||\frac{1}{2}(P+Q))+\frac{1}{2}D_{KL}(Q||\frac{1}{2}(P+Q))\\&amp;=\frac{1}{2}\{H(P,\frac{1}{2}(P+Q))-H(P)+H(Q,\frac{1}{2}(P+Q))-H(Q)\}\\&amp;=\frac{1}{2}\{{E_{x\sim P}\log \frac{2P(x)}{P(x)+Q(x)}}+E_{x\sim Q}\log \frac{2Q(x)}{P(x)+Q(x)}\}\\&amp;\leq \frac{1}{2}(\log 2+\log 2)\\&amp;=\log 2 \end{aligned}JSD(P,Q)=21DKL(P21(P+Q))+21DKL(Q21(P+Q))=21{H(P,21(P+Q))H(P)+H(Q,21(P+Q))H(Q)}=21{ExPlogP(x)+Q(x)2P(x)+ExQlogP(x)+Q(x)2Q(x)}21(log2+log2)=log2
    如果以2为底数,则上界为1;如果以e为底,则上界为ln⁡2\ln2ln2

互信息

  介绍互信息之前,我们先来介绍一下条件熵。条件熵的定义如下:
H(X∣Y)=∑yPY(y)[−∑xPX∣Y(x∣y)log⁡(PX∣Y(x∣y))]=EPY(−EPX∣Ylog⁡PX∣Y)\begin{aligned}H(X|Y)&amp;=\sum_{y}P_Y(y)[-\sum_{x}P_{X|Y}(x|y)\log(P_{X|Y}(x|y))]\\&amp;=E_{P_Y}(-E_{P_{X|Y}} \log P_{X|Y})\end{aligned}H(XY)=yPY(y)[xPXY(xy)log(PXY(xy))]=EPY(EPXYlogPXY)
其中,PX∣Y(x∣y)=PXY(x,y)PY(y)P_{X|Y}(x|y)=\frac{P_{XY}(x,y)}{P_Y(y)}PXY(xy)=PY(y)PXY(x,y),是给定y以后x的概率。熵描述了变量的不确定性,条件熵则描述了在给定变量y的条件下,变量x的不确定性。
  互信息的定义如下:
I(X;Y)=∑x,yPXY(x,y)log⁡PXY(x,y)PX(x)PY(y)=EPXYlog⁡PXYPXPY\begin{aligned}I(X;Y)&amp;=\sum_{x,y}P_{XY}(x,y)\log \frac{P_{XY}(x,y)}{P_X{(x)P_Y(y)}}\\&amp;=E_{P_{XY}} \log \frac{P_{XY}}{P_XP_Y}\end{aligned}I(X;Y)=x,yPXY(x,y)logPX(x)PY(y)PXY(x,y)=EPXYlogPXPYPXY
互信息与熵的关系如下:
I(X;Y)=H(X)−H(X∣Y)I(X;Y)=H(X)-H(X|Y)I(X;Y)=H(X)H(XY)
证明如下:
I(X;Y)=∑x,yPXY(x,y)log⁡PXY(x,y)PX(x)PY(y)=∑x,yPXY(x,y)log⁡PXY(x,y)−∑x,yPXY(x,y)log⁡PX(x)−∑x,yPXY(x,y)log⁡PY(y)\begin{aligned}I(X;Y)&amp;=\sum_{x,y}P_{XY}(x,y)\log \frac{P_{XY}(x,y)}{P_X{(x)P_Y(y)}}\\&amp;=\sum_{x,y}P_{XY}(x,y)\log P_{XY}(x,y)-\sum_{x,y}P_{XY}(x,y)\log P_X(x)- \sum_{x,y}P_{XY}(x,y)\log P_Y(y)\end{aligned}I(X;Y)=x,yPXY(x,y)logPX(x)PY(y)PXY(x,y)=x,yPXY(x,y)logPXY(x,y)x,yPXY(x,y)logPX(x)x,yPXY(x,y)logPY(y)
(1)∑x,yPXY(x,y)log⁡PX(x)=∑x[∑yPXY(x,y)log⁡PX(x)]=∑x[log⁡PX(x)∑yPXY(x,y)]=∑xPX(x)log⁡PX(x)=−H(X)\begin{aligned}\sum_{x,y}P_{XY}(x,y)\log P_X(x)&amp;=\sum_x[\sum_yP_{XY}(x,y)\log P_X(x)]\\&amp;=\sum_x[\log P_X(x)\sum_yP_{XY}(x,y)]\\&amp;=\sum_xP_X(x)\log P_X(x)\\&amp;=-H(X)\end{aligned}\tag{1}x,yPXY(x,y)logPX(x)=x[yPXY(x,y)logPX(x)]=x[logPX(x)yPXY(x,y)]=xPX(x)logPX(x)=H(X)(1)
(2)∑x,yPXY(x,y)log⁡PXY(x,y)−∑x,yPXY(x,y)log⁡PY(y)=∑y[∑xPXY(x,y)log⁡PXY(x,y)]−∑y[∑xPXY(x,y)log⁡PY(y)]=∑y[∑xPXY(x,y)log⁡PXY(x,y)]−∑yPY(y)log⁡PY(y)=∑yPY(y)[∑xPX∣Y(x∣y)log⁡PXY(x,y)]−∑yPY(y)log⁡PY(y)=∑yPY(y)[∑xPX∣Y(x∣y)log⁡PXY(x,y)]−∑yPY(y)[∑xPX∣Y(x∣y)log⁡PY(y)]=∑yPY(y)[∑xPX∣Y(x∣y)[log⁡PXY(x,y)−log⁡PY(y)]]=∑yPY(y)[∑xPX∣Y(x∣y)log⁡PX∣Y(x∣y)]=−H(X∣Y)\begin{aligned}\sum_{x,y}P_{XY}(x,y) \log P_{XY}(x,y)-\sum_{x,y}P_{XY}(x,y)\log P_Y(y) \\ = \sum_y [\sum_x P_{XY}(x,y)\log P_{XY}(x,y)] - \sum_y[\sum_xP_{XY}(x,y)\log P_Y(y)] \\=\sum_y[\sum_xP_{XY}(x,y)\log P_{XY}(x,y)] - \sum_{y}P_Y(y)\log P_Y(y) \\=\sum_yP_Y(y)[\sum_xP_{X|Y}(x|y)\log P_{XY}(x,y)]-\sum_yP_Y(y)\log P_Y(y) \\=\sum_yP_Y(y)[\sum_xP_{X|Y}(x|y)\log P_{XY}(x,y)]-\sum_yP_Y(y) [\sum _xP_{X|Y}(x|y)\log P_Y(y)] \\=\sum_yP_Y(y)[\sum_xP_{X|Y}(x|y)[\log P_{XY}(x,y)-\log P_Y(y)]]\\ =\sum_yP_Y(y)[\sum_xP_{X|Y}(x|y)\log P_{X|Y}(x|y)]\\=-H(X|Y)\end{aligned}\tag{2}x,yPXY(x,y)logPXY(x,y)x,yPXY(x,y)logPY(y)=y[xPXY(x,y)logPXY(x,y)]y[xPXY(x,y)logPY(y)]=y[xPXY(x,y)logPXY(x,y)]yPY(y)logPY(y)=yPY(y)[xPXY(xy)logPXY(x,y)]yPY(y)logPY(y)=yPY(y)[xPXY(xy)logPXY(x,y)]yPY(y)[xPXY(xy)logPY(y)]=yPY(y)[xPXY(xy)[logPXY(x,y)logPY(y)]]=yPY(y)[xPXY(xy)logPXY(xy)]=H(XY)(2)
(2)中有个地方说明一下,∑yPY(y)log⁡PY(y)=∑y1∗log⁡PY(y)=∑y[log⁡PY(y)∑xPX∣Y(x∣y)]=∑y[∑xPX∣Y(x∣y)log⁡PX∣Y(x∣y)]\begin{aligned}\sum_y P_Y(y)\log P_Y(y)&amp;=\sum_y 1* \log P_Y(y)\\&amp;=\sum_y[\log P_Y(y)\sum_xP_{X|Y}(x|y)]\\&amp;=\sum_y[\sum_x P_{X|Y}(x|y)\log P_{X|Y}(x|y)] \end{aligned}yPY(y)logPY(y)=y1logPY(y)=y[logPY(y)xPXY(xy)]=y[xPXY(xy)logPXY(xy)]
在给定y的条件下,∑xPX∣Y(x∣y)=1\sum_x P_{X|Y}(x|y)=1xPXY(xy)=1
(2)式还有一种简单的证法,
(3)∑x,yPXY(x,y)log⁡PXY(x,y)−∑x,yPXYP(x,y)log⁡PY(y)=∑x,yPXY(x,y)log⁡PX∣Y(x∣y)=∑y[∑xPXY(x,y)log⁡PX∣Y(x∣y)]=∑y[∑xPX∣Y(x∣y)PY(y)log⁡PX∣Y(x∣y)]=∑yPY(y)[∑xPX∣Y(x∣y)log⁡PX∣Y(x∣y)]=−H(X∣Y)\begin{aligned}\sum_{x,y}P_{XY}(x,y)\log P_{XY}(x,y)-\sum_{x,y}P_{XY}P(x,y)\log P_Y(y)\\=\sum_{x,y}P_{XY}(x,y)\log P_{X|Y}(x|y)\\=\sum_y[\sum_xP_{XY}(x,y)\log P_{X|Y}(x|y)]\\=\sum_y[\sum_x P_{X|Y}(x|y)P_Y(y)\log P_{X|Y}(x|y)] \\= \sum_{y} P_Y(y)[\sum_xP_{X|Y}(x|y)\log P_{X|Y}(x|y)]\\=-H(X|Y) \tag{3}\end{aligned}x,yPXY(x,y)logPXY(x,y)x,yPXYP(x,y)logPY(y)=x,yPXY(x,y)logPXY(xy)=y[xPXY(x,y)logPXY(xy)]=y[xPXY(xy)PY(y)logPXY(xy)]=yPY(y)[xPXY(xy)logPXY(xy)]=H(XY)(3)
上式得证。

互信息可以表示给定Y的条件下,X的不确定性的减少量,如果互信息越大,说明X和Y的相关性越大,如果互信息为0,则X和Y相互独立。

性质

  • 互信息是非负的
  • 对称性 I(X;Y)=H(X)−H(X∣Y)=H(Y)−H(Y∣X)=I(Y;X)I(X;Y)=H(X)-H(X|Y)=H(Y)-H(Y|X)=I(Y;X)I(X;Y)=H(X)H(XY)=H(Y)H(YX)=I(Y;X)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值