美文网首页
熵、互信息、信息增益、交叉熵、KL散度

熵、互信息、信息增益、交叉熵、KL散度

作者: 剑侠飞蓬 | 来源:发表于2023-03-16 14:53 被阅读0次

    甲在A处,乙在B处,现在从一个图库中,随机地选择其中一个图形给甲看然后放回,这样重复多次形成一个图形序列,甲要将自己看到的图形序列信息编码成二进制传递给乙,乙需要根据这个二进制编码还原甲看到的图形序列信息。甲乙可以约定编码,我们的目标是求什么样的编码既能够准确传递信息,又能使得总平均编码长度最短。

    情形一:单随机变量

    1.1 最简单的情况

    均匀分布.png

    在这种情形下,一个显然的编码方案是,从左到右依次为:00,01,10,11。平均一个图案的编码长度为2。

    1.2 如果各种形状不均衡呢?

    不均匀分布.png

    这种情况下,我们可以相应地设计不均衡的编码方案,我们希望出现的频率越高的图案,对应的编码越短:
    从左到右依次为:0,10,11。这种编码方案的平均编码长度为1.5。这个编码是可以被乙识别的:从头开始读二进制数,读到0,就直接理解为正方形,读到1,则需要下一位数来决定是什么形状。

    1.3 更复杂的情况

    假如信息是这样的:A出现概率\frac{1}{2},B出现概率\frac{1}{4},C,D出现概率\frac{1}{8},此时我们的编码为:A=0, B=10, C=110, D=111, 平均长度为1.25。
    相信大家已经有能力为这种频率刚好是\frac{1}{2}的n次方的特殊情况进行编码了。
    如果将这个结论拓展到一般情形,那么,为了使得信息可读并且最短,出现频率为p的信息的编码长度应该是log_2\frac{1}{p}=-log_2p,这个结论也非常符合我们的直觉:频率越高的信息编码长度应该越短。
    这个一般结论的证明非常复杂,这里我就不写了(主要还是因为我不会)。我们记住结论即可。在这个编码方案下,一段信息的平均编码长度是:

    \sum_{i=1}^N -p(x_i)log_2p(x_i)

    这个就是信息熵的公式。熵就是最短编码长度,是复杂的程度。
    如果用X表示随机变量,那么熵可以用H(X)来表示。

    情形二:双变量

    2.1 一个最让人舒服的情形

    形状与颜色独立.png

    X表示图形的形状,Y表示图形的颜色。
    情形一:如果只要求乙答出甲看到的图形的形状,那么我们只需要对形状进行编码,总共四种形状,每种都是\frac{1}{4},因此H(X)=-4\times\frac{1}{4}\times log_2\frac{1}{4}=2
    情形二:如果只要求乙答出甲看到的图形的颜色,同理可得H(Y)=2
    情形三:如果要求乙答出甲看到的图形的颜色和形状,那么我们需要考虑联合分布(X,Y),我们有H(X,Y)=-16\times\frac{1}{16}\times log_2\frac{1}{16}=4
    这个结果似乎很好理解,即,我们用两位编码来表示颜色,两位编码来表示形状,那么总共需要四位编码。我们猜测H(X,Y)=H(X)+H(Y)。然而:

    2.2 真的这么简单么?

    形状与颜色恰好匹配.png

    显然,如果只考虑形状,H(X)=2
    如果只考虑颜色,H(Y)=2
    而如果两个都考虑,H(X,Y)=-4\times\frac{1}{4}\times log_2\frac{1}{4}=2
    这是为什么呢?
    由于这个图库的特殊性,只要我们知道颜色,我们就可以推断出形状,只要我们知道形状,我们就能推断出颜色,因此,我们没必要把颜色和形状全部编码进去。
    从这个分析看出,公式H(X,Y)=H(X)+H(Y)是有条件的,如果我们知道了形状,推测不出颜色的任何关于分布的信息,并且当我们知道形状,也推测不出关于颜色的任何信息,此时,公式应该是成立的。也就是说,形状和颜色需要是独立的。
    下面我们用公式来验证一下这个想法,当颜色与形状独立时:
    H(X,Y)=-\sum_{i=1}^N\sum_{j=1}^Mp(x_i,y_j)log_2 p(x_i,y_j) \\=-\sum_{i=1}^N\sum_{j=1}^Mp(x_i,y_j)(log_2 p(x_i) +log_2 p(y_j) ) \\=-\sum_{i=1}^N\sum_{j=1}^Mp(x_i)p(y_j|x_i)log_2 p(x_i)-\sum_{i=1}^N\sum_{j=1}^Mp(y_j)p(x_i|y_j)log_2 p(y_j)\\=-\sum_{i=1}^N[p(x_i)log_2 p(x_i)\sum_{j=1}^Mp(y_j|x_i)]-\sum_{j=1}^M[p(y_j)log_2 p(y_j)\sum_{x=1}^Np(x_i|y_j)]\\=H(X)+H(Y)

    当X与Y独立的时候,H(X, Y)=H(X) + H(Y)

    2.3 那么,如果不独立呢?

    我们前面分析了,形状与颜色独立的情形,以及形状和颜色恰好一一对应的情形,我们再来分析一下,形状决定颜色的情形:


    形状决定颜色.png

    此时H(X)=2, H(Y)=1.5, H(X,Y)=2
    以及颜色决定形状的情形:

    颜色决定形状.png

    此时H(X)=1.5, H(Y)=2, H(X,Y)=2

    从这两个例子可以看出,如果一个变量A完全决定另外一个变量B,那么,H(A, B) = H(A),这个结论也可以很容易地证明。(对任意j, 有且仅有一个i使得p(b_i|a_j)=1,其他的都等于0)。

    但如果既不独立,又谁也决定不了谁呢?

    2.4 根据X推断Y

    更一般的情形.png

    通过之前的分析,我们知道,如果X能够完全确定Y的信息,那么我们只需要传递X的信息就可以了(H(X, Y)=H(X))。如果XY的信息一无所知,我们传递完X信息后,要完整地传递Y的信息(H(X, Y)=H(X)+H(Y))。但是大多数情况,已知X就可以部分地推断出Y的信息,也就是说:H(X,Y)<H(X)+H(Y)

    我们的问题是,如果我们已经知道了X的信息,那么我们还需要多少编码,才能确定(X, Y)的信息?
    如上面的图库,我们对形状的编码为:正方形=0,三角形=10,菱形=11,此时H(X)=1.5

    在已知形状以后,对当前形状下的颜色进行编码,需要知道当前形状下各个颜色的概率,然后用信息熵的公式就可以得出在这个颜色下后面还需要加多少长度的编码才能把颜色区分开。即H(Y|x_i)=\sum_{j=1}^M -p(y_j|x_i)log_2p(y_j|x_i),如果我们关心的是整体编码长度,我们可以定义H(Y|X)=\sum_{i=1}^N p(x_i)H(Y|x_i)。于是,我们有:

    1. H(Y|x_1)=1因为正方形的前提下有两个颜色进行区分。此时编码:正方形-蓝=00,正方形-桔=01。
    2. H(Y|x_2)=1因为三角形的前提下有两个颜色进行区分。此时编码:三角形-黑=100,三角形-桔=101。
    3. H(Y|x_3)=1.5因为菱形的前提下有三个颜色区分,此时编码:菱形-绿=1100,菱形-黄=1101,菱形-桔=111。
      既然每个形状下需要增加的编码位数已经确定,那么他们综合的需要增加的编码位数也就可以确定了,即
      H(Y|X)=1.125

    当我们先知道X的编码需要H(X)位,然后再在已知X的基础上计算如果想要区分Y额外平局需要编码长度为H(Y|X), 此时:

    H(X,Y)=H(X)+H(Y|X)

    这个公式通过信息熵的定义和条件概率公式可以证明。
    理解起来也很容易,H(X)代表对X的信息编码,H(Y|X)代表的是,在已知X的基础上,再增加多少位的编码就可以推测出(X,Y)了。

    如果X无法推测出Y的任何信息,那么H(X,Y)=H(X)+H(Y),但是现在的情况是H(X,Y)=H(X)+H(Y|X),也就是说,X中蕴含了一部分Y的信息,记为U,但是I不足以完全推测出Y, 还需要额外的H(Y|X)才能推测出Y,也就是说,我们认为H(Y)=H(Y|H)-U,即:

    H(X,Y)=H(X)+H(Y)-U

    2.5 根据Y来推测X

    还是刚才的图,为了避免大家屏幕滚来滚去,我们复制一下这个图在这里:

    更一般的情形.png
    这次我们先对Y编码,容易算出来H(Y)=1.376, H(X|Y)=1.25, H(Y,X)=2.625,并且,我们可以计算出Y里面蕴含的X的编码长度为0.25,我们可以看出,已知X时里可以推断出的Y的信息长度,与已知Y时,可以推断出的X的长度一致,这是这两个变量公共的一部分信息,叫做互信息,用I(X,Y)表示。

    2.6 一张图显示关系

    几个关系.png

    这个图可以很好的理解这些值的关系,要证明这张图中的内容,核心是下面的公式:

    p(x,y)=p(x)p(y|x)=p(y)p(x|y)

    取对数的时候,乘法会变成加法,也就有了上面的图。熵的计算除了取对数外,前面又有个求平均数的算子\underset{x,y}{E},这个东西大家都有,因此不用管他。
    在这个前提下,利用加法变乘法,根据公式I(X,Y)=H(X)+H(Y)-H(X,Y),我们可以迅速推出互信息的公式:I(X,Y)=-\underset{x,y}{E}log_2\frac{p(x)p(y)}{p(x,y)},即:

    I(X,Y)=\sum_{i=1}^NI(X,Y)=\sum_{j=1}^M p(x_i,y_j)log_2\frac{p(x_i,y_j)}{p(x_i)p(y_i)}

    显然,XY独立时,I(x,y)=0

    I(x,y)=0时,XY毫不相干,彼此独立。
    H(X|Y)=0时,一旦知道Y的信息,不需要任何额外编码就可以知道(X,Y),这就意味着,Y可以完全决定X。同理,当H(Y|X)=0时, X可以完全决定Y。这两种情况表明了推理中的因果关系。
    H(X|Y)=H(Y|X)=0时,XY在信息上是完全等价的。

    2.7 信息增益

    描述一个事物需要编码越长,说明这个事物越复杂,越不纯粹,确定性越差,当这个事物的编码长度变为0时,事件就变成了确定性事件(1的对数是0)。
    从图中我们可以看出这样一个不等式:

    H(X)\ge H(X|Y)

    在已知Y的基础上,X的编码通常会变短,(除非YX独立,这种情况虽然不会使得X编码变短,但至少不会边长。)如果了解了足够多的与X不独立的信息,X总是会一步一步地确定下来。

    如果我们要度量这种确定性呢?就是要度量I(X,Y)=H(X)-H(X|Y),这个值量化了“当我们知道Y的时候,我们附带可以减少多少比特的关于X的混乱度、复杂度,使得X比原来更清晰,更纯粹了多少?”。这个变化量在决策树算法中被称为信息增益。

    I(X,Y)=H(X)-H(X|Y)

    2.8 独立程度的度量

    我们知道,当I(X,Y)=0时,XY是独立的。因此,I(X,Y)可以作为XY互相不独立的程度的度量。但这个度量只有下限,没有上限。

    我们可以用\frac{I(X,Y)}{H(X)}来度量不独立性,这个值有上限,最大为1,当这个值为1时,表明Y可以完全决定X,也就是说,X的值可以完全依赖于Y,因此这个值度量了XY的依赖程度。在决策树中,这个依赖程度被称为信息增益率。对称地,我们可以用\frac{I(X,Y)}{H(Y)}来度量YX的依赖程度。

    但是,如果想要度量XY的相互依赖程度,我们可以用这两个值的调和平均数。一般被称为NMI。

    NMI=\frac{2I(X,Y)}{H(X)+H(Y)}

    这个值是介于0到1之间的。并且只有当XY等价的时候取1。

    另外一个指标是IQR:

    IQR=\frac{I(X,Y)}{H(X,Y)}

    从图中的面积关系可以理解这个指标的含义,显然它也是介于0到1的。这个值比NMI小一点,因为它可以由NMI上下都去掉一个I(X,Y)得到。

    情形三:哎呀,看错图库了

    3.1 交叉熵

    故事是这样的,一开始出题的时候,我们跟甲、乙约定的是在在下面这个图库中随机取图片:


    分布Q.png

    甲乙愉快地约定好了规则:正方形-蓝=000,正方形-黄=001,三角形-蓝=01,三角形-黄=1。

    但是万万没想到哇,甲乙看错题了,他们的图库不是上图,而是下图:


    分布P.png

    但是这时候编码已经被确定下来了,只能按照约定进行编码,此时的平均编码长度为\frac{3+3+2+1}{4}=2.5,这个结果也是一个熵,但是,它的编码是由Q图库产生的,而实际上传递信息的时候,用的P图库。对x_i的编码会用Q的分布概率来计算,为log_2q(x_i),但是这个编码实际出现的概率为p(x_i),因此交叉熵为:

    -\sum plog_2q

    3.2 KL散度

    甲乙真的是悔不当初的,如果当时没有看错题库,他们的结果本来应该是2,但是现在结果2.5,这多出来的0.5就是因为看错题库造成的,这多出来的0.5就是这两个题库(的分布)之间的KL散度。

    KL(p,q)=-\sum plog_2q-(-\sum plog_2p)=\sum plog_2\frac{p}{q}

    KL散度的含义就是,两个分布之间有差异,会造成实际分布为p但是按照分布为q时的编码进行传输信息时,比实际分布为p并且按照分布为p编码进行传输时,新增加的那部分平均编码长度。这两个分布越接近,KL散度越小,反之,越大。

    交叉熵和KL散度都可以用来度量两个分布的接近程度。最小交叉熵与最小KL散度是同一个优化目标,都是期望得到最接近实际统计出来的分布。

    3.3 KL散度与互信息的关系

    观察KL散度的公式和互信息的计算公式,我们可以看出,互信息公式中对应KL散度p的位置,就是实际的(X,Y)的频率分布。而对应的q的位置,是假定XY独立时的频率分布,也就是说:

    互信息本质上是一个KL散度,它度量的是实际的联合分布与假定XY独立的条件下的联合分布之间的编码长度的差别。

    这个事实也可以从公式I(X,Y)=H(X)+H(Y)-H(X,Y)中看出。

    相关文章

      网友评论

          本文标题:熵、互信息、信息增益、交叉熵、KL散度

          本文链接:https://www.haomeiwen.com/subject/oxqrrdtx.html