Information Bottleneck【信息瓶颈IB】

Information Bottleneck【IB】

预备知识

交叉熵损失函数(CrossEntropy Loss)

在DL中,交叉熵损失函数是用作分类问题的,使用它作为Loss Function时,在模型的输出层总会接一个softmax函数。交叉熵是信息论中的一个重要概念,主要时用来度量两个概率分布函数之间的差异性,理解交叉熵之前,需要先了解下面几个概念。
信息量
信息量用来消除随机不确定性的东西,也就是说衡量信息量的大小就是看该消息消除不确定性的程度。例如:

  • “CSDN是中国研发的”,这条信息没有减少不确定性,因为CSDN是中国研发的,这是一句废话,信息量为0。
  • “JDG能进入四强(2022)”,从直觉上看,这条信息量很大,因为JDG进入四强的不确定因素很大,这句话消除了进入四强的不确定因素,所以这句话信息量很大。

根据上面两条,可以总结为:信息量的大小与信息发生的概率成反比。即,概率越大,信息量越小;概率越小,信息量越大。 设 某一事件发生的概率为P(x),其信息量表示为:
I ( x ) = − l o g ( P ( x ) ) I(x) = - log(P(x)) I(x)=log(P(x))
其中I(x)表示信息量。

注:用log函数的目的,以2为底时可以简单理解为用多少个bits可以表示这个变量。 用负号是因为0≤p(x)≤1,而信息量是≥0的。

信息熵
信息熵用来表示所有信息量的期望。期望是试验中每次可能结果的概率乘以其信息量的总和。所以信息量的熵可以表示为:
H ( x ) = − ∑ i = 1 n P ( x i ) l o g ( P ( x i ) ) ( X = x 1 , x 2 , . . . , x n ) H(x) = - \sum_{i=1}^nP(x_i) log(P(x_i)) (X = x_1,x_2,...,x_n) H(x)=i=1nP(xi)log(P(xi))(X=x1,x2,...,xn)
相对熵(KL散度)
如果对于同一个随机变量X有两个单独的概率分布P(x) 和Q(x),则我们可以使用KL散度来衡量这两个概率分布之间的差异。
D K L ( p ∣ ∣ q ) = ∑ i = 1 n p ( x i ) l o g ( p ( x i ) q ( x i ) ) D_{KL}(p||q) = \sum_{i=1}^np(x_i) log(\frac {p(x_i)} {q(x_i)}) DKL(p∣∣q)=i=1np(xi)log(q(xi)p(xi))
在ML中,常用P(x)来表示样本的真实分布,Q(x)来表示模型所预测的分布,比如在一个三分类的任务中, x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3分别代表猫、狗、马,例如一张马的图片实际真实分布P(X) = [1, 0, 0],预测分布Q(X) = [0.7,0.2,0.1],计算KL散度:
D K L ( p ∣ ∣ q ) = ∑ i = 1 n p ( x i ) l o g ( p ( x i ) q ( x i ) ) = p ( x 1 ) l o g ( p ( x 1 ) q ( x 1 ) + p ( x 2 ) l o g ( p ( x 2 ) q ( x 2 ) + p ( x 3 ) l o g ( p ( x 3 ) q ( x 3 ) = 1 ∗ l o g ( 1 0.7 ) = 0.36 D_{KL}(p||q) = \sum_{i=1}^np(x_i) log(\frac {p(x_i)} {q(x_i)}) = p(x_1)log(\frac {p(x_1)} {q(x_1)} + p(x_2)log(\frac {p(x_2)} {q(x_2)} + p(x_3)log(\frac {p(x_3)} {q(x_3)} = 1 * log(\frac 1 {0.7}) = 0.36 DKL(p∣∣q)=i=1np(xi)log(q(xi)p(xi))=p(x1)log(q(x1)p(x1)+p(x2)log(q(x2)p(x2)+p(x3)log(q(x3)p(x3)=1log(0.71)=0.36
KL散度越小,表示P(x) 和Q(x)的分布越接近,通过反复训练Q(x)可以使得Q(x)的分布逼近P(x)。
交叉熵
交叉熵 = 信息熵+KL散度
H ( p , q ) = − ∑ i = 1 n p ( x i ) l o g ( p ( x i ) ) + D K L ( p ∣ ∣ q ) = − ∑ i = 1 n p ( x i ) l o g ( p ( x i ) ) + ∑ i = 1 n p ( x i ) l o g ( p ( x i ) q ( x i ) ) = − ∑ i = 1 n p ( x i ) l o g ( q ( x i ) ) H(p,q) = - \sum_{i=1}^np(x_i) log(p(x_i)) + D_{KL}(p||q) = - \sum_{i=1}^np(x_i) log(p(x_i)) + \sum_{i=1}^np(x_i) log(\frac {p(x_i)} {q(x_i)}) = - \sum_{i=1}^np(x_i) log(q(x_i)) H(p,q)=i=1np(xi)log(p(xi))+DKL(p∣∣q)=i=1np(xi)log(p(xi))+i=1np(xi)log(q(xi)p(xi))=i=1np(xi)log(q(xi))

注:在分类问题中常常用交叉熵作为loss function,而在线性回归问题中,常常用MSE作为loss function。

  • 交叉熵能够衡量同一个随机变量中的两个不同概率分布的差异程度,在机器学习中就表示为真实概率分布于预测概率分布之间的差异。交叉熵的值越小,概率预测效果就越好。
  • 交叉熵在分类问题常常与softmax一起使用,softmax将输出结果进行处理使得预测值和为1,然后再通过交叉熵来计算损失。

互信息

在信息论中,两个随机变量的互信息或转移信息是变量间相互依赖性的亮度。用I(X;Y)表示。
互信息度量两个随机变量共享的信息——已知随机变量X,对随机变量Y的不确定性减少的程度(已知随机变量Y,对随机变量X的不确定性减少的程度)。听着比较抽象,举着栗子。
随机变量X表示一个均衡的骰子投掷出的点数,Y表示X的奇偶性事件。当X为偶数时,Y=0;当X为奇数时,Y=1.
如果我们知道X=1,则Y=1.(失去Y=0这一信息的可能性,Y的不确定信息减少)
如果我们知道Y=1,则X=1 or X=3 or X=5。(失去X=2,4,6这一信息的可能性,X的不确定信息减少)
下图为互信息的韦恩图:
Information Bottleneck【信息瓶颈IB】_第1张图片

I ( X ; Y ) = H ( x ) − H ( X ∣ Y ) = H ( Y ) − H ( Y ∣ X ) = H ( x ) + H ( Y ) − H ( X , Y ) I(X;Y) = H(x) - H(X|Y) = H(Y) - H(Y|X) = H(x) + H(Y) - H(X, Y) I(X;Y)=H(x)H(XY)=H(Y)H(YX)=H(x)+H(Y)H(X,Y)
其中I(X;Y)表示知道随机变量X,对随机变量Y的不确定性减少的程度,也可表示为随机变量X的不确定性-知道Y的情况下随机变量X的不确定性。H(X),H(Y)表示边缘熵,H(X|Y)和H(Y|X)是条件熵,而H(X,Y)是X和Y的联合熵。
互信息的定义:
I ( X ; Y ) = ∑ y ∈ Y ∑ x ∈ X p ( x , y ) l o g ( p ( x , y ) p ( x ) p ( y ) ) I(X;Y) = \sum_{y∈Y}\sum_{x∈X}p(x, y)log(\frac {p(x,y)} {p(x)p(y)}) I(X;Y)=yYxXp(x,y)log(p(x)p(y)p(x,y))
上述定义是在离散随机变量下,其中p(x,y)是X和Y的联合概率分布函数,而p(x)和p(y)分别是X和Y的边缘概率分布函数。若在连续随机变量的情形下,则把求和换成二重定积分即可.
注:

  • 两个互相独立的变量之间的互信息为0.
  • 当两个变量互为确定性函数(即,知道X觉得Y的值,反之亦然)时,二者的互信息与他们的熵相同。
  • 互信息是非负的(即I(X;Y)≥0),并且是对称的(即I(X;Y) = I(Y;X))
  • 点互信息PMI: P M I ( x ; y ) = l o g p ( x , y ) p ( x ) p ( y ) = l o g p ( x ∣ y ) p ( x ) = l o g p ( y ∣ x ) p ( y ) PMI(x;y)=log{\frac {p(x,y)} {p(x)p(y)}} = log{\frac {p(x|y)} {p(x)}} = log{\frac {p(y|x)} {p(y)}} PMI(x;y)=logp(x)p(y)p(x,y)=logp(x)p(xy)=logp(y)p(yx)
  • 可以看出,互信息其实就是对X和Y的所有可能的取值情况的点互信息PMI的加权和,而点互信息只是对其中两个点进行相关性判断。

推导I(X;Y) = H(Y) - H(Y|X)
I ( X ; Y ) = ∑ y ∈ Y ∑ x ∈ X p ( x , y ) l o g ( p ( x , y ) p ( x ) p ( y ) ) = ∑ y ∈ Y ∑ x ∈ X p ( x , y ) l o g ( p ( x , y ) p ( x ) ) − ∑ y ∈ Y ∑ x ∈ X p ( x , y ) l o g p ( y ) = ∑ y ∈ Y ∑ x ∈ X p ( x ) p ( y ∣ x ) l o g p ( y ∣ x ) − ∑ y ∈ Y ∑ x ∈ X p ( x , y ) l o g p ( y ) = ∑ x p ( x ) ( ∑ y p ( y ∣ x ) l o g p ( y ∣ x ) ) − ∑ y l o g p ( y ) ( ∑ x p ( x , y ) ) = − ∑ x p ( x ) H ( Y ∣ X = x ) − ∑ y p ( y ) l o g p ( y ) = − H ( Y ∣ X ) + H ( Y ) = H ( Y ) − H ( Y ∣ X ) I(X;Y) = \sum_{y∈Y}\sum_{x∈X}p(x, y)log(\frac {p(x,y)} {p(x)p(y)}) \\ = \sum_{y∈Y}\sum_{x∈X}p(x, y)log(\frac {p(x,y)} {p(x)}) - \sum_{y∈Y}\sum_{x∈X}p(x, y)logp(y) \\ = \sum_{y∈Y}\sum_{x∈X}p(x)p(y|x)logp(y|x) - \sum_{y∈Y}\sum_{x∈X}p(x, y)logp(y) \\ = \sum_xp(x)(\sum_yp(y|x)logp(y|x)) - \sum_ylogp(y)(\sum_xp(x, y)) \\ = -\sum_xp(x)H(Y|X=x) - \sum_yp(y)logp(y) \\ = -H(Y|X) + H(Y) = H(Y) - H(Y|X) I(X;Y)=yYxXp(x,y)log(p(x)p(y)p(x,y))=yYxXp(x,y)log(p(x)p(x,y))yYxXp(x,y)logp(y)=yYxXp(x)p(yx)logp(yx)yYxXp(x,y)logp(y)=xp(x)(yp(yx)logp(yx))ylogp(y)(xp(x,y))=xp(x)H(YX=x)yp(y)logp(y)=H(YX)+H(Y)=H(Y)H(YX)

互信息也可表示为两个随机变量的边缘分布X和Y的乘积p(x) * p(y) 相对于随机变量的联合熵p(x, y)的相对熵:
I ( X ; Y ) = D K L ( p ( x , y ) ∣ ∣ p ( x ) p ( y ) ) I(X;Y) = D_{KL}(p(x, y)||p(x)p(y)) I(X;Y)=DKL(p(x,y)∣∣p(x)p(y))
I ( X ; Y ) = ∑ y p ( y ) ∑ x p ( x ∣ y ) l o g ( p ( x ∣ y ) p ( x ) ) = ∑ y p ( y ) D K L ( p ( x ∣ y ) ∣ ∣ p ( x ) ) = E Y D K L ( p ( x ∣ y ) ∣ ∣ p ( x ) ) I(X;Y) = \sum_yp(y)\sum_xp(x|y)log(\frac {p(x|y)} {p(x)}) \\ = \sum_yp(y)D_{KL}(p(x|y)||p(x)) \\ = E_Y{D_{KL}(p(x|y)||p(x))} I(X;Y)=yp(y)xp(xy)log(p(x)p(xy))=yp(y)DKL(p(xy)∣∣p(x))=EYDKL(p(xy)∣∣p(x))
注意到,这里相对熵涉及到仅对随机变量X积分,表达式 D K L ( p ( x ∣ y ) ∣ ∣ p ( x ) ) D_{KL}(p(x|y)||p(x)) DKL(p(xy)∣∣p(x)),现在已Y 为变量。
互信息也可以理解为相对熵X的单变量分布p(x)相对于给定Y时X的条件分布p(x|y):分布p(x|y)和p(x)之间的平均差异越大,信息增益越大。

信息瓶颈IB

IB理论在深度学习中的应用:IB把DL阶段分为两部分,第一部分是尽可能增加feature和输出特征Y的互信息,第二部分是尽可能压缩输入特征X和中间feature的互信息,使得中间feature包含X最有用的信息。
可以将IB理解为一个损失函数,IB理论吧神经网络理解为一个Encoder和一个Decoder,Encoder将输入X编码成Z,解码器把Z解码成输出Y,而IB理论的目标则是:
R I B ( θ ) = I ( Z , Y ; θ ) − β I ( Z , X ; θ ) R_{IB}(θ) = I(Z,Y;θ) - βI(Z,X;θ) RIB(θ)=I(Z,Y;θ)βI(Z,X;θ)
其中

  • R I B ( θ ) R_{IB}(θ) RIB(θ)是信息瓶颈,θ是网络的参数(要优化的东西),β是拉格朗日乘子。
  • I(Z, Y;θ)是输出Y和中间featureZ的互信息
  • I(Z, X;θ)是输入X和中间featureZ的互信息
    IB理论的本质就是:最大化输出特征Y和中间featureZ的互信息,尽量减少输入特征X和中间featureZ的互信息。(按照互信息的概念)实际上就是希望Z中尽量减少输入特征X与输出特征Y不相关的信息,保留输入特征X和输出特征Y最相关的信息。
    通过论文中的公式推导,可以得到 R I B ( θ ) R_{IB}(θ) RIB(θ)的下界为L,最大化IB相当于最大化L,取L的相反数为 J I B J_{IB} JIB,相当于最小化 J I B J_{IB} JIB。因此可以吧 J I B J_{IB} JIB作为模型的损失函数:
    J I B = 1 N ∑ n = 1 N E z ∽ f ( x ) , ϵ [ − l o g q ( y n ∣ z ) ] + β D K L [ p ( z ∣ x n ) ∣ ∣ r ( z ) ] = 1 N ∑ n = 1 N E ϵ ∽ p ( ϵ ) [ − l o g q ( y n ∣ f ( x n , ϵ ) ) ] + β D K L [ p ( z ∣ x n ) ∣ ∣ r ( z ) ] J_{IB}=\frac1 N\sum_{n=1}^N\mathbb{E}_{z \backsim f(x),\epsilon }[-logq(y_n|z)] +βD_{KL}[p(z|x_n)||r(z)] \\ =\frac1 N\sum_{n=1}^N\mathbb{E}_{\epsilon \backsim p(\epsilon)}[-logq(y_n|f(x_n, \epsilon))] +βD_{KL}[p(z|x_n)||r(z)] JIB=N1n=1NEzf(x),ϵ[logq(ynz)]+βDKL[p(zxn)∣∣r(z)]=N1n=1NEϵp(ϵ)[logq(ynf(xn,ϵ))]+βDKL[p(zxn)∣∣r(z)]

其中:

  • p ( z ∣ x n ) p(z|x_n) p(zxn)为模型的encoder, q ( y n ∣ z ) q(y_n|z) q(ynz)为模型的decoder。

信息瓶颈理论实际上是信源压缩的率失真理论的一种扩展。

  • 率失真理论:没有先验知识,只有记住,但可以消除数据本身的冗余,是最传统的数据压缩,允许压缩时失真。给定失真下可获得的最低压缩码率,即在失真和压缩码率之间权衡。
  • 信息瓶颈理论:有先验知识(数据带标签),消除数据本身冗余外,还压缩与标签无关的信息。在保留与标签相关信息与获得更高效的压缩之间权衡。
    The information bottleneck method
    在这篇论文中,Tishby从信息论中关于数据压缩的经典率失真定律出发,拓展处信息瓶颈理论。如下图所示。
率失真理论 信息瓶颈理论
问题描述 在信源X的期望失真小于D的约束下,尽量降低X的码率 尽量保留X关于Y的相关信息前提下,降低X的码率
优化目标 F [ p ( x , x ^ ) ] = I ( X ; X ^ ) + β < d ( x , x ^ ) > p ( x , x ^ ) F[p(x,\hat x)] = I(X;\hat X) + β_{p(x, \hat x)} F[p(x,x^)]=I(X;X^)+β<d(x,x^)>p(x,x^) L [ p ( x ^ / x ) ] = I ( X ^ ; X ) − β I ( X ^ ; Y ) L[p(\hat x/x)] = I(\hat X;X) - βI(\hat X;Y) L[p(x^/x)]=I(X^;X)βI(X^;Y)
距离度量 < d ( x , x ^ ) > p ( x , x ^ ) = ∑ x ∈ X ∑ x ^ ∈ X ^ p ( x , x ^ ) d ( x , x ^ ) _{p(x, \hat x)} = \sum_{x∈X}\sum_{\hat x ∈ \hat X}p(x, \hat x)d(x, \hat x) <d(x,x^)>p(x,x^)=xXx^X^p(x,x^)d(x,x^) d ( x , x ^ ) = D K L ( p ( y / x ) / p ( y / x ^ ) ) d(x, \hat x) = D_{KL}(p(y/x)/p(y/ \hat x)) d(x,x^)=DKL(p(y/x)/p(y/x^))
迭代算法 Blahut-Arimoto算法 扩展Blahut-Arimoto算法

可以看出,率失真理论和信息瓶颈理论都是考虑在一定失真前提下,尽量降低对信源编码的码率( X ^ \hat X X^和X的相互信息),β越小所对应的压缩率越高。区别在于:

  • 率失真理论:编码时没有考虑关于信源X的外部信息,只关注编码后的 X ^ \hat X X^与相对原始数据X之间的距离,且距离越大,失真越大。
  • 信息瓶颈理论:考虑了信源X中蕴含了关于Y的相关信息,因此对失真的定义为 X ^ \hat X X^与外部数据Y之间的互信息(可转换为KL散度计算),且互信息越大,失真越小。因此,信息瓶颈理论可以看作率失真理论的一种特例。
  • Blahut–Arimoto 算法:若集合为凸,且距离度量满足特定条件,则交替化最小化算法收敛到最小值。作为一个特例:集合是概率分布,距离度量为KL散度,则该算法为BA算法保证收敛。

信息瓶颈理论解释了以下的DL问题:

  1. 模型训练的速度往往是开始收敛得很快,越到后面越慢,因为信息压缩花费的时间到后期指数增加了。
  2. 在样本不足的情况下,DNN往往表现出比预期要好一些的泛化能力,因为压缩I(X;T)使得泛化误差减小了。每压缩一半的bit数,维持相同泛化误差所需的样本数也减半。
  3. 从低层到高层,使用一些更改结构信息承载能力上限的技巧,可以达到压缩I(X;T)上限的效果。减少神经元个数(包括max pooling以及降维,还有临时性的drop out)、减少离散化数据的枚举数量(包括使用非线性激活函数、归一化、使用argmax),都在一定程度上减小了泛化误差。
  4. 无论是SGD还是dropout引入到网络中的噪音/不确定性,都增加了对应那一层的熵H(X|Ti(Wi-1),导致在训练过程中,I(X;T)被进一步压缩。当信号噪声比变小时,也就是训练到了中后期,随机熵导致的压缩会非常明显。然后当收敛趋于停止时,压缩效果也随之减弱,最终哪怕时间指数增加了,压缩量也会逐渐减小。
  5. 增加神经网络层数可以加快收敛速度,因为每一层随机权重都在进行信息压缩,相当于对噪音导致的信息压缩过程开了多线程。
  6. 每上升一层神经网络特征,因为信息压缩的现象,所以信息承载上限最好也随之降低,超出所需的I(X;T)比特数,并不会帮助提升预测效果,只会拖累计算速度。有时候需要借助结构改变来减少信息承载上限,从而强制进行不同层间的信息压缩。
  7. 当I(Y;X) < H(Y)的时候,Y存在X无法描述的固有随机性,存在准确率上限,无论任何模型训练得再完美,都无法让准确率超过这个上限。
  8. 训练收敛后,如果是能够比较好预测的模型,I(Y;Ti)在每一层都会比较接近于H(Y),这样假设无论从那一层切开,中间重新输入特征值T代替原本的输入X,都能够准确预测出Y。这为逐层解析DNN的特征值含义,提供了一扇分析的窗口。

参考

交叉熵损失函数原理详解
互信息(Mutual Information)
互信息
Information Bottleneck信息瓶颈理论
信息瓶颈理论-笔记

你可能感兴趣的:(深度学习与CV,python,算法)