信息论( Information Theory) 是数学、 物理、 统计、 计算机科学等多个学科的交叉领域。 信息论是由克劳德· 香农最早提出的, 主要研究信息的量化、存储和通信等方法.这里,“信息” 是指一组消息的集合。 假设在一个噪声通道上发送消息, 我们需要考虑如何对每一个信息进行编码、 传输以及解码, 使得接收者可以尽可能准确地重构出消息。
在机器学习相关领域, 信息论也有着大量的应用,比如特征抽取、 统计推断、自然语言处理等。
熵( Entropy) 最早是物理学的概念, 用于表示一个热力学系统的无序程度。在信息论中, 熵用来衡量一个随机事件的不确定性。
==自信息( Self Information) ==表示一个随机事件所包含的信息量。 一个随机
事件发生的概率越高, 其自信息越低. 如果一个事件必然发生, 其自信息为0。
对于一个随机变量 X X X( 取值集合为 χ \chi χ, 概率分布为 p ( x ) p(x) p(x), x ∈ χ x\in\chi x∈χ), 当 X = x X=x X=x时的自信息 I ( x ) I(x) I(x)定义为:
I ( x ) = − log p ( x ) I(x)=-\log p(x) I(x)=−logp(x)
在自信息的定义中, 对数的底可以使用 2、 自然常数 或是 10。当底为 2 时,自信息的单位为bit;当底为时, 自信息的单位为nat。
对于分布为 p ( x ) p(x) p(x)的随机变量SXS, 其自信息的数学期望 E X [ I ( X ) ] E_X[I(X)] EX[I(X)], 也就是X的熵,记作 H ( X ) H(X) H(X):
H ( x ) = E x [ I ( X ) ] = E X [ − log p ( x ) ] = − ∑ x ∈ χ p ( x ) log p ( x ) \begin{aligned} H(x)&=E_x[I(X)] \\ &=E_X[-\log p(x)]\\ &=-\sum_{x\in\chi}p(x)\log p(x) \end{aligned} H(x)=Ex[I(X)]=EX[−logp(x)]=−x∈χ∑p(x)logp(x)
其中,当 p ( x i ) = 0 p(x_i)=0 p(xi)=0时,定义 0 log 0 = 0 0\log 0 = 0 0log0=0,因为 lim p → 0 + p log p = 0 \lim_{p\rightarrow0^{+}}p\log p = 0 limp→0+plogp=0。
熵越高, 则随机变量的信息越多; 熵越低, 则随机变量的信息越少。 如果变量
X X X 当且仅当在 x x x时, p ( X = x ) = 1 p(X=x)=1 p(X=x)=1, 则熵为 0. 也就是说, 对于一个确定的信息, 其熵为0, 信息量也为0。 如果其概率分布为一个均匀分布, 则熵最大。
对随机变量 X X X来说,只有一种取值可能, X X X是一个确定事件,熵最小为0。
对随机变量 Y Y Y来说,一共有三种取值可能,不是一个均匀分布,熵为1.5。
对随机变量 Z Z Z来说,一共有四种可能,每种可能的概率一样,是均匀分布,熵为2,此时的熵是所有共有四种可能取值变量的熵中的最大值。
信息论的研究目标之一是如何用最少的编码表示传递信息. 假设我们要传递一段文本信息, 这段文本中包含的符号都来自于一个字母表 , 我们就需要对字母表中的每个符号进行编码. 以二进制编码为例, 我们常用的ASCII码就是用固定的 8bits 来编码每个字母. 但这种固定长度的编码方案不是最优的. 一种高效的编码原则是字母的出现概率越高, 其编码长度越短. 比如对字母 , , 分别编码为0, 10, 110。
给定一串要传输的文本信息, 其中字母 x x x的出现概率为 p ( x ) p(x) p(x), 其最佳编码长度为 − log 2 p ( x ) -\log_2p(x) −log2p(x), 整段文本的平均编码长度为 − ∑ x p ( x ) log 2 p ( x ) = H ( X ) -\sum\limits_xp(x)\log_2p(x)=H(X) −x∑p(x)log2p(x)=H(X), 即底为 2的熵。
在对分布 p ( x ) p(x) p(x)的符号进行编码时, 熵 H ( p ) H(p) H(p)也是理论上最优的平均编码长度, 这种编码方式称为熵编码( Entropy Encoding)。
由于每个符号的自信息通常都不是整数, 因此在实际编码中很难达到理论上的最优值。霍夫曼编码( Huffman Coding) 和算术编码( Arithmetic Coding)是两种最常见的熵编码技术。
对于两个离散随机变量X和Y, 假设X取值集合为 X \mathcal{X} X;Y取值集合为 Y \mathcal{Y} Y, 其联合概率分布满足为 p ( x , y ) p(x,y) p(x,y), 则X和Y的联合熵为:
H ( X , Y ) = − ∑ x ∈ X ∑ y ∈ Y p ( x , y ) log p ( x , y ) H(X,Y)=-\sum_{x\in\mathcal{X}}\sum_{y\in\mathcal{Y}}p(x,y)\log p(x,y) H(X,Y)=−x∈X∑y∈Y∑p(x,y)logp(x,y)
X和Y的条件熵为:
H ( X ∣ Y ) = ∑ y ∈ Y p ( y ) H ( X ∣ Y = y ) = − ∑ y ∈ Y p ( y ) ∑ x ∈ X p ( x ∣ y ) l o g p ( x ∣ y ) = − ∑ x ∈ X ∑ y ∈ Y p ( x , y ) log p ( x ∣ y ) = − ∑ x ∈ X ∑ y ∈ Y p ( x , y ) log p ( x , y ) p ( y ) = − ∑ x ∈ X ∑ y ∈ Y p ( x , y ) log p ( x , y ) − [ − ∑ x ∈ X ∑ y ∈ Y p ( x , y ) log p ( y ) ] = H ( X , Y ) − [ − log p ( y ) ∑ x ∈ X ∑ y ∈ Y p ( x , y ) ] = H ( X , Y ) − [ − log p ( y ) ∑ y ∈ Y p ( y ) ] = H ( X , Y ) − H ( Y ) \begin{aligned} H(X|Y)&=\sum_{y\in\mathcal{Y}}p(y)H(X|Y=y)\\ &=-\sum_{y\in\mathcal{Y}}p(y)\sum_{x\in\mathcal{X}}p(x|y)logp(x|y)\\ &=-\sum_{x\in\mathcal{X}}\sum_{y\in\mathcal{Y}}p(x,y)\log p(x|y)\\ &=-\sum_{x\in\mathcal{X}}\sum_{y\in\mathcal{Y}}p(x,y)\log \frac{p(x,y)}{p(y)}\\ &=-\sum_{x\in\mathcal{X}}\sum_{y\in\mathcal{Y}}p(x,y)\log p(x,y)-[-\sum_{x\in\mathcal{X}}\sum_{y\in\mathcal{Y}}p(x,y)\log p(y)]\\ &=H(X,Y)-[-\log p(y)\sum_{x\in\mathcal{X}}\sum_{y\in\mathcal{Y}}p(x,y)]\\ &=H(X,Y)-[-\log p(y)\sum_{y\in\mathcal{Y}}p(y)]\\ &=H(X,Y)-H(Y) \end{aligned} H(X∣Y)=y∈Y∑p(y)H(X∣Y=y)=−y∈Y∑p(y)x∈X∑p(x∣y)logp(x∣y)=−x∈X∑y∈Y∑p(x,y)logp(x∣y)=−x∈X∑y∈Y∑p(x,y)logp(y)p(x,y)=−x∈X∑y∈Y∑p(x,y)logp(x,y)−[−x∈X∑y∈Y∑p(x,y)logp(y)]=H(X,Y)−[−logp(y)x∈X∑y∈Y∑p(x,y)]=H(X,Y)−[−logp(y)y∈Y∑p(y)]=H(X,Y)−H(Y)
==互信息(Mutual Information)==是衡量已知一个变量时, 另一个变量不确定性的减少程度. 两个离散随机变量X和Y的互信息定义为:
I ( X ; Y ) = ∑ x ∈ X ∑ y ∈ Y p ( x , y ) log p ( x , y ) p ( x ) p ( y ) I(X;Y)=\sum_{x\in\mathcal{X}}\sum_{y\in\mathcal{Y}}p(x,y)\log\frac{p(x,y)}{p(x)p(y)} I(X;Y)=x∈X∑y∈Y∑p(x,y)logp(x)p(y)p(x,y)
互信息的一个性质为:
I ( X ; Y ) = H ( X ) − H ( X ∣ Y ) = H ( Y ) − H ( Y ∣ X ) I(X;Y)=H(X)-H(X|Y)=H(Y)-H(Y|X) I(X;Y)=H(X)−H(X∣Y)=H(Y)−H(Y∣X)
如果变量X和Y相互独立,则他们的互信息为0。
对于分布为 p ( x ) p(x) p(x)的随机变量, 熵 H ( p ) H(p) H(p)表示其最优编码长度。 交叉熵( Cross
Entropy)是按照概率分布 q q q的最优编码对真实分布为 p p p的信息进行编码的长度,
定义为:
H ( p , q ) = E p [ − log q ( x ) ] = − ∑ x p ( x ) log q ( x ) \begin{aligned} H(p,q)&=E_p[-\log q(x)]\\ &=-\sum_xp(x)\log q(x) \end{aligned} H(p,q)=Ep[−logq(x)]=−x∑p(x)logq(x)
在给定 p p p的情况下,如果 q q q和 p p p越接近,交叉熵越小;如果 q q q和 p p p越远,交叉熵越大。在实际应用中,例如在多分类任务模型的学习中,p为标签的one-hot编码,而q为模型经过softmax层的输出,代表每一类分类的概率。
例如一个手写数字识别,一共10类:
若分类正确
若分类错误时:
此时的损失远远大于分类正确的损失,所以在训练的时候最小化交叉熵损失。