机器学习中的各种熵

1、熵

:熵,热力学中表征物质状态的参量之一,用符号S表示,其物理意义是体系混乱程度的度量
从统计的角度来看,概率分布是对随机变量的刻画,而熵就是对不同概率分布的刻画!本质上,熵是为了描述不确定的程度,并以此对不同的概率分布进行比较。
举个例子,两枚硬币,一个上抛一次正面朝上概率是0.5,另一个是0.8,此时,假设两枚硬币上抛一次落下后朝上的面分别是x,y。此时,我们可以很容易确定随机变量x,y的概率分布,并借此对两个随机变量有准确的掌握。但我们要问,这两个随机变量哪个更随机?或者说,哪个随机变量包含的不确定性更大?如果发挥直觉,正面朝上概率为0.8的概率分布不确定性小于正面朝上概率为0.5的不确定性。我们知道一枚硬币抛出后正面朝上概率为0.8,要比知道概率为0.5,更容易猜对硬币抛出后哪面朝上。换句话说,0.8的概率分布比0.5的概率分布对我们来说,具有更大的信息量。
熵的本质是香农信息量(log(1/p))的期望

1.1熵的数学表达

概率越大,不确定性越小:可以表达此意的公式是-logP。-logP只是衡量了某个概率的不确定性,一个概率分布包含多个概率,而且概率相加等于1,一个概率大,必然会有其他的概率小。显然,我们要衡量一个概率的分布的不确定性,就要综合衡量所有概率表达的不确定性。也就是求一个概率分布综合的不确定性。
熵公式:-∑PlogP
熵可以理解成概率分布的不确定性的期望值。这个值越大,表示该概率分布不确定性越大。它为我们人类提供的“信息”就越小,我们越难利用这个概率分布做出一个正确的判断。从这个角度,我们可以看到,熵是对概率分布信息含量的衡量,这与它是不确定性的衡量,其实是两种解读角度而已。

1.2各种分布的熵

熵是描述不确定性的,在概率论中,方差用来描述变量变化程度。方差越大,不确定性就越大,熵也就越大。
机器学习中的各种熵

1.3熵与最优编码

那么这些定义有着什么样的性质呢?考虑一个随机变量x。这个随机变量有4种可能的状态,每个状态都是等可能的。为了把x的值传给接收者,我们需要传输2比特的消息。
机器学习中的各种熵
现在考虑一个具有4种可能的状态 {a,b,c,d}的随机变量,每个状态各自的概率为 (1/2,4/1,1/8,1/8),这种情况下的熵是:
机器学习中的各种熵

可以看到,非均匀分布比均匀分布的熵要小。现在让我们考虑如何把变量状态的类别传递给接收者。与之前一样,我们可以使用一个2比特的数字来完成这件事情。(此时,使用的就是定长编码的二进制来表示各个类别,如(00,01,10,11)分别代表 (1/2,4/1,1/8,1/8))。实际中,通讯往往需要付费,假设通讯按位(bit)收费。为了省钱,需要寻找合适的编码策略。因此,我们可以利用非均匀分布这个特点,使用更短的编码来描述更可能的事件,使用更长的编码来描述不太可能的事件(也就是变长编码)。我们希望这样做能够得到一个更短的平均编码长度。我们可以使用下面的编码串(哈夫曼编码):0、10、110、111来表示上述四种状态
{a,b,c,d}。传输的编码的平均长度就是:
机器学习中的各种熵

这个值与上方的随机变量的熵相等。熵和最短编码长度的这种关系是一种普遍的情形。
熵是传输一个随机变量状态值所需的比特位下界(最短平均编码长度)。因此,信息熵可以应用在数据压缩方面。

2 信息熵

信息熵 (information entropy),也被称为香农熵 (Shannon entropy),信息熵 (information entropy):信息量的度量就等于不确定性的多少

公式:I(x)=−logp(x)。log函数基的选择是任意的(信息论中基常常选择为2,因此信息的单位为比特bits;而机器学习中基常常选择为自然常数,因此单位常常被称为奈特nats)。I(x) 也被称为随机变量x的自信息 (self-information),描述的是随机变量的某个事件发生所带来的信息量
机器学习中的各种熵

H(X)就被称为随机变量x的熵,它是表示随机变量不确定的度量,是对所有可能发生的事件产生的信息量的期望
从公式可得,随机变量的取值个数越多,状态数也就越多,信息熵就越大,混乱程度就越大。当随机分布为均匀分布时,熵最大,且
0≤H(X)≤logn
机器学习中的各种熵

注意点

  • 1、熵只依赖于随机变量的分布,与随机变量取值无关,所以也可以将 X的熵记作H(p)
  • 2、令0log0=0(因为某个取值概率可能为0)。
  • 3、信息熵衡量了系统的不确定性,而我们要消除这个不确定性,所要付出的【最小努力】(猜题次数、编码长度等)的大小就是信息熵。

3 联合熵

将一维随机变量分布推广到多维随机变量分布,就得到联合熵。
联合熵与联合概率分布有关,对于随机变量X和Y,二者的联合概率分布为p(x,y),则这个联合概率分布的熵就叫做联合熵
H(x,y) = -Σp(x,y)log(p(x,y))

那么,H(x,y)和H(x),H(y)有什么关系呢?

  • 假设X和Y是相互独立:H(x,y)大于等于H(x)和H(y)
    直观理解:Y原先只有两个概率p2和(1-p2),联合分布却有四个概率,这四个概率又可以认为是将Y的每个概率进行了分拆,p2 被分成了p1 * p2和(1-p1) * p2。也就是说,对于Y的每个取值,本身就具有一个不确定性(p2),由于要与X联合起来,就在每个取值的不确定性上又引入了不确定性,不确定性显然是增大了。当x没有不确定性时,H(x,y)=H(y)。
  • 假设X和Y不是相互独立:此时的联合熵H(x,y)小于相互独立时的联合熵H(x,y)

4 条件熵

x,y的联合熵大于等于x和y单独的熵,对于y来说,引入的x增大了熵,那么,x的引入增加了多大的熵呢?这就是条件熵。
条件熵H(Y|X)表示在已知随机变量X的条件下随机变量Y的不确定性。条件熵H(Y|X)定义为X给定条件下Y的条件概率分布的熵对X的数学期望
机器学习中的各种熵

条件熵H(Y|X)相当于联合熵H(X,Y)减去单独的熵H(X),即H(Y|X)=H(X,Y)−H(X),证明如下:
机器学习中的各种熵

可以这样理解,描述X和Y所需的信息是描述 X自己所需的信息,加上给定X的条件下具体化Y所需的额外信息。

注意

  • 有一个容易搞错的地方,H(x|y)叫做条件熵,它可不是条件概率p(x|y)的熵。为啥?因为p(x|y)压根就不是一个概率分布!!!

  • H(x|y) <= H(x),当x,y独立互相独立时相等。
    X原有的不确定性是H(x),现在我们引入Y,得到了联合的不确定性H(x,y),从这个不确定性中减去Y自身带来的不确定性H(Y),剩下的就是H(x|y),这个值小于等于H(x),说明什么?说明,由于Y的引入,X的不确定性变小了,不确定性变小,就是信息含量的增加。不确定性变小的多少就是信息增益:
    gain(X) = H(x) - H(x|y)
    信息增益也叫做互信息。二者完全一样。

5 交叉熵 (Cross entropy)

信息熵H(X)可以看做,对X中的样本进行编码所需要的编码长度的期望值。
假设现在有两个分布,真实分布p和非真实分布q,我们的样本来自真实分布p。

  • 按照真实分布p来编码样本所需的编码长度的期望为机器学习中的各种熵
    这就是上面说的信息熵H( p )
  • 按照不真实分布q来编码样本所需的编码长度的期望为机器学习中的各种熵
    这就是所谓的交叉熵H( p,q )

交叉熵,其用来衡量在给定的真实分布下,使用非真实分布所指定的策略消除系统的不确定性所需要付出的努力的大小。

因此,交叉熵越低,这个策略就越好,最低的交叉熵也就是使用了真实分布所计算出来的信息熵,因为此时 p k = q k p_k=q_k pk=qk,交叉熵 = 信息熵。这也是为什么在机器学习中的分类算法中,我们总是最小化交叉熵,因为交叉熵越低,就证明由算法所产生的策略最接近最优策略,也间接证明我们算法所算出的非真实分布越接近真实分布。
机器学习中的各种熵

6 相对熵 (Relative entropy),也称KL散度 (Kullback–Leibler divergence)

我们如何去衡量不同策略之间的差异呢?这就需要用到相对熵,其用来衡量两个取值为正的函数或概率分布之间的差异,即:
机器学习中的各种熵

可以发现
机器学习中的各种熵

当用非真实分布q(x)得到的平均码长比真实分布p(x)得到的平均码长多出的比特数就是相对熵。

机器学习中,我们用非真实分布q去预测真实分布p,因为真实分布p是固定的, D ( p ∣ ∣ q ) = H ( p , q ) − H ( p ) D(p||q) = H(p,q) -H(p) D(pq)=H(p,q)H(p) H ( p ) H(p) H(p)固定,也就是说交叉熵H(p,q)越大,相对熵D(p||q)越大,两个分布的差异越大。所以交叉熵用来做损失函数就是这个道理,它衡量了真实分布和预测分布的差异性。因此,最小化相对熵D(p||q)等价于最小化交叉熵H(p,q)也等价于最大化似然估计

  • 香农也证明了哈夫曼这样的编码是最佳编码(平均码长为能达到的最小的极限)。
  • 从编码的角度,可以这样简单总结,信息熵是最优编码(最短的平均码长),交叉熵是非最优编码(大于最短的平均码长),KL散度是两者的差异(距离最优编码的差距)。
    机器学习中的各种熵

7总结

  • 信息熵是衡量随机变量分布的混乱程度,是随机分布各事件发生的信息量的期望值,随机变量的取值个数越多,状态数也就越多,信息熵就越大,混乱程度就越大。当随机分布为均匀分布时,熵最大;信息熵推广到多维领域,则可得到联合信息熵;条件熵表示的是在 X 给定条件下,Y 的条件概率分布的熵对 X的期望。
  • 相对熵可以用来衡量两个概率分布之间的差异。
  • 交叉熵可以来衡量在给定的真实分布下,使用非真实分布所指定的策略消除系统的不确定性所需要付出的努力的大小。
    或者:
  • 信息熵是传输一个随机变量状态值所需的比特位下界(最短平均编码长度)。
  • 相对熵是指用 q 来表示分布 p 额外需要的编码长度。
  • 交叉熵是指用分布 q 来表示本来表示分布 p 的平均编码长度。