说起熵,相信看本文的你一定听过这个概念,我们以前高中的时候在化学里学过,我们有一种大致的概念就是:熵是描述系统混乱程度的一种物理量,而且我们知道世界是向着熵增的方向进行的。那么在信息论里面,熵又是一种什么样的存在呢,为什么要引入这样抽象的一个概念,香农大佬为啥要把人搞得迷迷糊糊的?而你搞机器学习的话,肯定会遇到什么联合熵,条件熵,交叉熵。这些熵,到底是什么关系,有什么用?本文将会尽量把信息熵之间的关系给阐述清楚,让你茅塞顿开,一泻千里。
1. 信息熵
我们说信息熵,当然就不再是化学中的熵的概念了,但是他们的内在精神十分相似,信息熵是描述一个随机变量的不确定性的,如X是一个随机变量,概率分布是 p ( x ) = P ( X = x ) p(x) = P(X=x) p(x)=P(X=x),那么X的熵的定义为式子:
H ( X ) = − Σ x p ( x ) l o g 2 p ( x ) H(X) = -\Sigma_xp(x)log_2p(x) H(X)=−Σxp(x)log2p(x)
我们看到底数是2,因此熵的单位是比特,以后可以省略底数2。
你可以试图取两个分布,A是0.2,0.8;B是0.5,0.5,算算谁的熵更大呢?很容易可以算出后者的熵更大,这是什么意思呢?我们看A和B谁的不确定性更大?当然是B了,那么它的熵算出来更大,是不是也是更合理的呢?就是基于这样的一种思想,信息熵被创造了出来。你问我有啥用?单纯的一个熵确实发挥不出来威力,我们往后看。
2. 联合熵
简而言之,我们有两个变量的联合分布 p ( x , y ) p(x,y) p(x,y),为什不能有两个变量的联合熵呢?答案当然是可以的,那么我们如何定义的呢?
H ( X , Y ) = Σ x Σ y p ( x , y ) l o g p ( x , y ) H(X,Y)=\Sigma_x\Sigma_y p(x,y)logp(x,y) H(X,Y)=ΣxΣyp(x,y)logp(x,y)
联合熵的含义也很简单,就是描述这样一对随机变量平均所需要的信息量。这个也很好理解。
3. 条件熵
有同学说,我知道,熵是 H ( X ) = − Σ x p ( x ) l o g 2 p ( x ) H(X) = -\Sigma_xp(x)log_2p(x) H(X)=−Σxp(x)log2p(x)
联合熵是 H ( X , Y ) = Σ x Σ y p ( x , y ) l o g p ( x , y ) H(X,Y)=\Sigma_x\Sigma_y p(x,y)logp(x,y) H(X,Y)=ΣxΣyp(x,y)logp(x,y)
那条件熵肯定是 H ( X ∣ Y ) = Σ x Σ y p ( x ∣ y ) l o g p ( x ∣ y ) H(X|Y)=\Sigma_x\Sigma_y p(x|y)logp(x|y) H(X∣Y)=