信息论中的香农熵、条件熵、最大熵、相对熵、交叉熵理解

时间:2024-03-28 19:29:32

信息论基础

前几天朋友问我决策树中的香农熵公式来源的理解,我很早以前看过,但是发现现在又什么都回答不出了,所以决定补一下信息论的基础。这里记录下自己的理解

信息熵、香农熵

  • 信息熵也叫香农熵
  • 信息熵用于表示随机变量不确定性,即信息熵越大则变量的不确定性越大,即包含的信息量越大
  • 先来看看信息熵的定义
  • 设X是离散型随机变量,分布概率如下
  • P ( X = x k ) = p k , k ∈ ( 1 , 2 , ⋯   , n − 1 , n ) P(X=x_k)=p_k,\quad k \in (1,2,\cdots,n-1,n) P(X=xk)=pk,k(1,2,,n1,n)
  • 那么随机变量X的信息熵则被定义如下
  • H ( X ) = − ∑ i = 1 n p i × l o g p i H(X)=-\sum_{i=1}^n p_i \times log^{p_i} H(X)=i=1npi×logpi
  • 可以先从具体的实例看一看,比如说取值如下
取值 0 1
概率 0.5 0.5
  • 这时候我们的信息熵就为
  • H ( X ) = − 1 2 ∗ l o g 1 2 − 1 2 ∗ l o g 1 2 = 1 H(X)=-\frac {1}{2}*log^{\frac{1}{2}}-\frac {1}{2}*log^{\frac{1}{2}}=1 H(X)=21log2121log21=1
  • 换一换当我们取值为四种的时候
取值 0 1 2 3
概率 0.25 0.25 0.25 0.25
  • 这时候我们的信息熵就为
  • H ( X ) = − 1 4 ∗ l o g 1 4 − 1 4 ∗ l o g 1 4 − 1 4 ∗ l o g 1 4 − 1 4 ∗ l o g 1 4 = 2 H(X)=-\frac {1}{4}*log^{\frac{1}{4}}-\frac {1}{4}*log^{\frac{1}{4}}-\frac {1}{4}*log^{\frac{1}{4}}-\frac {1}{4}*log^{\frac{1}{4}}=2 H(X)=41log4141log4141log4141log41=2
  • 很清晰,当我们变量选择变多的时候,包含的信息变多,信息熵也变多了
  • 接下来看看抽象的描述
  • 假设X服从0-1分布,既如下表示
  • P ( X = 1 ) = p , P ( x = 0 ) = 1 − p , 0 ≤ p ≤ 1 P(X=1)=p,P(x=0)=1-p,\quad \quad 0\leq p \leq 1 P(X=1)=p,P(x=0)=1p,0p1
  • 此时对于的信息熵的展开表达式为如下
  • H ( X ) = − ∑ i = 1 n p i × l o g p i = − p × l o g p − ( 1 − p ) × l o g 1 − p H(X)=-\sum_{i=1}^np_i\times log^{p_i} \quad \quad\quad\quad\quad\quad\quad\quad\\ \quad=-p\times log^p-(1-p)\times log^{1-p} H(X)=i=1npi×logpi=p×logp(1p)×log1p
  • 让我们用python把这个图画出来
  • 信息论中的香农熵、条件熵、最大熵、相对熵、交叉熵理解
  • 这里可以看出当p的概率为0.5的时候这个0-1系统的信息最大,当p的概率越大或者越小的时候,系统的确定性就越高,那么对应的信息熵也会变小,符合我们的认知

最大熵定理

  • 其实这个定理就是更具上面那些例子显示的,什么时候一个随机系统的信息量最大?就是那些变量可以取到的值的概率都为等值分布的时候信息量最大即
  • p i = 1 n i = 1 , 2 , 3... n H ( X ) = − ∑ i = 1 n 1 n ∗ l o g 1 / n = l o g 2 n p_i=\frac{1}{n}\quad\quad i=1,2,3...n\\H(X)=-\sum_{i=1}^n\frac{1}{n}*log^{1/n}=log_2^n pi=n1i=1,2,3...nH(X)=i=1nn1log1/n=log2n

条件熵

设有二维离散随机变量(X,Y),它的概率密度为:
P ( X = x i , Y = y i ) = p i j i = 1 , 2 , . . . n , j = 1 , 2 , . . . m P(X=x_i,Y=y_i)=p_{ij}\quad\quad\quad i=1,2,...n,\quad j=1,2,...m P(X=xi,Y=yi)=piji=1,2,...n,j=1,2,...m
条件熵H(Y|X)表示在已知随机变量X的条件下,随机变量Y的不确定性,公式如下:
H ( Y ∣ X ) = − ∑ i = 1 n ∑ j = 1 m p ( X = x i , Y = y i ) l o g p ( Y = y j ∣ X = x i ) H(Y|X)=-\sum_{i=1}^n \sum_{j=1}^mp(X=x_i,Y=y_i)log^{p(Y=y_j|X=x_i)} H(YX)=i=1nj=1mp(X=xi,Y=yi)logp(Y=yjX=xi)
条件熵H(Y|X)和信息熵H(Y)的关系满足:
H ( Y ∣ X ) ≤ H ( Y ) H(Y|X)\leq H(Y) H(YX)H(Y)
先撇开公式,思考下,如果A与B有关系,那我们知道B以后是不是对A的把握就大一些?此时,在B发生下的A的信息量是不是自然就比起直接给一个A的信息量小了.当然,如果两个都是独立分布,那么这时候就满足等于号

信息增益

信息增益是描述两个随机变量之间的相关程度、即确定一个随机变量X后另一个随机变量Y不确定性的削弱程度。如下公式:
I ( X , Y ) = H ( Y ) − H ( Y ∣ X ) I(X,Y)=H(Y)-H(Y|X) I(X,Y)=H(Y)H(YX)

信息增益与决策树算法

在决策树中,信息增益就被选取为特征选取的一种度量指标,给定训练集D每个数据集都有n个特征,构建决策树的核心是用哪个变量来划分数据集,这时候一种合理的方式就是计算所有的 I ( D , X i ) I(D,X_i) I(D,Xi)即计算第i维特征的信息增益,若信息增益越大,则说明与数据集D越相关,此时我们就认为这个维度包含的信息量最大,可以以他为依据划分。

相对熵与GAN算法

相对熵

  • 相对熵又成为KL散度、KL距离,常常在图像和音频中描述两个分布的差距
  • 公式如下,其中q(x)为当前分布,p(x)为真实分布,真实在前
  • K L ( p ( x ) ∣ ∣ q ( x ) ) = ∑ x ∈ X p ( x ) × l o g p ( x ) q ( x ) KL(p(x)||q(x))=\sum_{x \in X}p(x)\times log\frac{p(x)}{q(x)} KL(p(x)q(x))=xXp(x)×logq(x)p(x)
  • 上面这个公式用于描述q(x)对于p(x)的拟合程度、如果两个分布差异越大,那么相对熵越大
  • 如果当预测的q(x)和真实p(x)完全相同,那么KL散度的值为0
  • KL散度不具有对称性、即如下公式
  • K L ( p ( x ) ∣ ∣ q ( x ) ) ≠ K L ( q ( x ) ∣ ∣ p ( x ) ) KL(p(x)||q(x)) \not =KL(q(x)||p(x)) KL(p(x)q(x))=KL(q(x)p(x))

相对熵的致命问题

KL散度有个致命的问题,那就是当两个分布差距过于大的时候,此时KL散度没有意义了,因为太大了。
下面描述一种情形,假设真实的分布为0-1分布,p(x=1)逼近0,p(x=0)逼近1,而我们生成的分布为q,q(x=1)逼近1,q(x=0)逼近0。这时候再看我们的KL散度
K L ( p ( x ) ∣ ∣ q ( x ) ) = p ( x 1 ) l o g p ( x 1 ) q ( x 1 ) + p ( x 0 ) l o g p ( x 0 ) q ( x 0 ) 我 们 知 道 p ( x 0 ) 是 逼 近 1 的 , q ( x 0 ) 是 逼 近 0 的 , 那 么 lim ⁡ p ( x 0 ) → 1 q ( x 0 ) → 0 p ( x 0 ) l o g p ( x 0 ) q ( x 0 ) = + ∞ 而 p ( x 1 ) → 0 , q ( x 1 ) → 1 即 有 lim ⁡ p ( x 1 ) → 0 q ( x 1 ) → 1 p ( x 1 ) l o g p ( x 1 ) q ( x 1 ) = 0 最 终 有 公 式 : K L ( p ( x ) ∣ ∣ q ( x ) ) = + ∞ , 此 时 K L 散 度 无 意 义 KL(p(x)||q(x))=p(x_1)log \frac{p(x_1)}{q(x_1)}+p(x_0)log \frac{p(x_0)}{q(x_0)}\\ 我们知道p(x_0)是逼近1的,q(x_0)是逼近0的,那么\\ {\lim_{p(x_0) \to 1\atop q(x_0) \to 0}}p(x_0)log \frac{p(x_0)}{q(x_0)}=+ \infty \\ 而p(x_1) \to 0 ,q(x_1) \to 1 \\ 即有{\lim_{p(x_1) \to 0\atop q(x_1) \to 1}}p(x_1)log \frac{p(x_1)}{q(x_1)}=0\\ 最终有公式:KL(p(x)||q(x))=+\infty,此时KL散度无意义 KL(p(x)q(x))=p(x1)logq(x1)p(x1)+p(x0)logq(x0)p(x0)p(x0)1,q(x0)0q(x0)0p(x0)1limp(x0)logq(x0)p(x0)=+p(x1)0,q(x1)1q(x1)1p(x1)0limp(x1)logq(x1)p(x1)=0KL(p(x)q(x))=+KL
KL散度的升级版本包括JS、Wasserstein距离,WGAN可以看下面的内容

更多关于JS\KL\Wassersterin距离在下面链接
https://zhuanlan.zhihu.com/p/74075915

交叉熵

交叉熵-cross entropy,定义如下
H ( p ( x ) , q ( x ) ) = H ( X ) + K L ( p ( x ) ∣ ∣ q ( x ) ) H(p(x),q(x))=H(X)+KL(p(x)||q(x)) H(p(x),q(x))=H(X)+KL(p(x)q(x))
H(X)不用说了把,就是我们随机变量X的信息熵,是个固定值
H ( X ) = − ∑ x ∈ X p ( x ) × l o g p ( x ) 展 开 公 式 得 H ( x ) = − ∑ x ∈ X p ( x ) × l o g p ( x ) + ∑ x ∈ X p ( x ) × l o g p ( x ) q ( x ) 由 等 价 变 换 l o g p ( x ) q ( x ) = l o g p ( x ) − l o g q ( x ) 可 知 H ( x ) = − ∑ x ∈ X p ( x ) × l o g p ( x ) + ∑ x ∈ X p ( x ) × ( l o g p ( x ) − l o g q ( x ) ) = − ∑ x ∈ X p ( x ) × l o g q ( x ) ( 1 ) H(X)=-\sum_{x \in X} p(x) \times logp(x) 展开公式得\\ H(x)=-\sum_{x \in X} p(x) \times logp(x)+\sum_{x \in X}p(x)\times log\frac{p(x)}{q(x)}\\ 由等价变换 log\frac{p(x)}{q(x)}=log p(x)-logq(x)可知\\ H(x)=-\sum_{x \in X} p(x) \times logp(x)+\sum_{x \in X}p(x)\times (log p(x)-logq(x))\\ =-\sum_{x \in X}p(x)\times logq(x)\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad(1)\\ H(X)=xXp(x)×logp(x)H(x)=xXp(x)×logp(x)+xXp(x)×logq(x)p(x)logq(x)p(x)=logp(x)logq(x)H(x)=xXp(x)×logp(x)+xXp(x)×(logp(x)logq(x))=xXp(x)×logq(x)1
公式(1)就是我们在深度学习中常用得目标损失函数,交叉熵是由KL散度加上原始的信息熵得到的,很符合我们的观念嘛,信息熵为负、KL散度为正,一正一负抵消,剩下的就是差距,也就是损失函数。

结束语

到这里,基本的信息论知识都over了,以后还会更新概率论方向的知识
求各位看官点赞,敲公式不易,我想涨粉