DIM阅读笔记
Hjelm R D, Fedorov A, Lavoie-Marchildon S, et al. Learning deep representations by mutual information estimation and maximization[J]. arXiv preprint arXiv:1808.06670, 2018.
前面一段时间也比较忙(忙着让王者荣耀上王者),其实也在做实验,后来验证想法失败了,没写笔记就代表没怎么精读论文,所以一直也没更新,但是一想不能就酱紫串行工作啊,得让自己并行起来,所以也继续写写论文笔记。最近两天打算介绍一些融合信息论的文章,上周粗读了一下感觉很缺乏先验知识没怎么看懂,借这个写笔记的机会把自己的理解写一写。这篇文章是大佬团队Bengio在2019年的ICLR上的一个工作,整体上感觉点子还是比较新的,主要是采用了信息论来解决FSL问题。
一些pre-knowledge
KL散度
这篇文章里用到了一些信息论的知识,前面其实在中讲过一些内容,这里我们还要把以前概念拿出来,再继续深入一下,我们前面提到过信息论里用自信息这个term来衡量不确定性,而熵就是自信息的期望。然后我们谈了一个相对熵(KL散度),用于衡量两个信息之间的散度,其实我前面那篇文章的部分表述其实都不太合理,因为其实相对熵严格来说都不能叫做KL距离,因为距离要求满足三角形法则和对称性,比如A到B的距离是10km,那么B到A的距离必然也是10km,但是KL散度的公式是:
D
(
p
∥
q
)
=
∑
x
p
(
x
)
log
p
(
x
)
q
(
x
)
=
E
p
(
x
)
(
log
p
(
x
)
q
(
x
)
)
D(p \| q)=\sum_{x} p(x) \log \frac{p(x)}{q(x)}=E_{p(x)}\left(\log \frac{p(x)}{q(x)}\right)
D(p∥q)=x∑p(x)logq(x)p(x)=Ep(x)(logq(x)p(x))
明显是与两个信息的先后顺序有关的,所以准确一点叫做散度。这个公式这么写很多人就懵逼了,这TM谁定义的这玩意儿啊???我把他改成你熟悉的样子。这是你熟悉的熵哈:
H
=
−
∑
i
=
1
N
p
(
x
i
)
⋅
log
p
(
x
i
)
H=-\sum_{i=1}^{N} p\left(x_{i}\right) \cdot \log p\left(x_{i}\right)
H=−i=1∑Np(xi)⋅logp(xi)
然后将上面的散度公式按照对数的公式展开成减号那么就变成了:
D
K
L
(
p
∥
q
)
=
∑
i
=
1
N
p
(
x
i
)
⋅
(
log
p
(
x
i
)
−
log
q
(
x
i
)
)
D_{K L}(p \| q)=\sum_{i=1}^{N} p\left(x_{i}\right) \cdot\left(\log p\left(x_{i}\right)-\log q\left(x_{i}\right)\right)
DKL(p∥q)=i=1∑Np(xi)⋅(logp(xi)−logq(xi))
这里其实就相当于p是观察得到的概率分布,q是选择的另一个分布来衡量p,那么就相当于原始分布p和近似分布q之间的对数差值的期望。
互信息(Mutual Information)
有了上面的经验,我们直接把互信息的公式拿出来看看:
I
(
X
;
Y
)
=
∑
y
∈
Y
∑
x
∈
X
p
(
x
,
y
)
log
(
p
(
x
,
y
)
p
(
x
)
p
(
y
)
)
I(X ; Y)=\sum_{y \in Y} \sum_{x \in X} p(x, y) \log \left(\frac{p(x, y)}{p(x) p(y)}\right)
I(X;Y)=y∈Y∑x∈X∑p(x,y)log(p(x)p(y)p(x,y))
也和上面一样做一个变换,那就相当于是p(x,y)联合概率的对数减去x,y边缘概率的乘积。也就是我们需要理解一下
p
(
x
,
y
)
−
p
(
x
)
p
(
y
)
p(x,y)-p(x)p(y)
p(x,y)−p(x)p(y)这个减法操作的意义,这公式我咋看咋眼熟,我记得如果这个式子等于0的话,x,y这两个随机变量就相互独立,由贝叶斯公式:
P
(
Y
∣
X
)
=
P
(
X
,
Y
)
P
(
X
)
=
P
(
X
)
P
(
Y
)
P
(
X
)
=
P
(
Y
)
P(Y \mid X)=\frac{P(X, Y)}{P(X)}=\frac{P(X) P(Y)}{P(X)}=P(Y)
P(Y∣X)=P(X)P(X,Y)=P(X)P(X)P(Y)=P(Y),你看,如果XY独立,那么即使我们已知X的分布P(X),也不会对Y造成任何的影响。那么反之,XY不独立,已知P(X)那么势必会影响P(Y)。但是问题是如何去量化这个影响呢?这里就用这个MI来度量了,所以就有了我们前面的那个公式:
l
o
g
p
(
x
,
y
)
−
l
o
g
p
(
x
)
p
(
y
)
log\ p(x,y)-log\ p(x)p(y)
log p(x,y)−log p(x)p(y),其实就是衡量他们的相关性,互信息又叫信息增益。
知乎上有一个回答,我觉得讲得很好:
原来我对X有些不确定(不确定性为H(X)),告诉我Y后我对X不确定性变为H(X|Y), 这个不确定性的减少量就是X,Y之间的互信息I(X;Y)=H(X,Y)-H(X|Y)。
更直观的意义可以理解为,当你完整的学到Y的所有知识的时候,你对X的知识的增长量就是I(X,Y)。(相信我,每当你学到任何关于X的知识,都其实只是Y。没有人可以做到把一个学科彻底的(I(X,Y)=H(X) ?一次就完全通过Y把X学透彻?别那么自信),完全正确的学习)。
来张图吧,比较直观:
这里要把互信息和KL散度区分开,KL散度是不对称的,而互信息是对称的。KL散度衡量的是两个随机变量之间的散度,而互信息是衡量的是两个随机变量联合分布相对于他们边缘分布乘积的散度。
问题来了,其实我们有很多指标可以衡量相关系数,什么皮尔逊相关系数等等,为什么我们还要采用互信息呢?信息论比较早,它和传统的基础学科一样都建立在严格的理论基础上,逻辑严密。上个世界计算机领域还没有称霸全球的时候,它的上游老大哥通信行业对户信息的使用从实践层面验证了互信息的有效性。另一方面传统的相关系数是衡量的变量之间的线性相关性,而互信息可以衡量变量之间的高阶相关关系。那为啥我们更常用皮尔逊这些相关系数呢?回到互信息的公式可以发现,我们要估计互信息,我们必须知道两个变量的边缘分布和联合分布,这就比较复杂了,而深度学习领域的一个假设就是基于我们的网络模型能够学到原始数据的分布,所以信息论常被用于深度学习领域来忽悠人。关于信息论在DL领域的一些工作可以多参考一下Tishby在information bottleneck的一些工作。
Donsker-Varadhan Representation
上面讲了互信息,那么互信息有没有下界呢?在Donsker和Varadhan1983年的文章给出了Donsker-Varadhan Representation,给出了MI的下界:
I
(
x
;
z
)
=
D
K
L
(
p
(
x
,
z
)
∥
p
(
x
)
p
(
z
)
)
=
E
p
(
x
,
z
)
[
log
p
(
x
,
z
)
p
(
x
)
p
(
z
)
]
=
E
p
(
x
,
z
)
[
log
(
q
(
x
,
z
)
p
(
x
)
p
(
z
)
p
(
x
,
z
)
q
(
x
,
z
)
)
]
=
E
p
(
x
,
z
)
[
log
q
(
x
,
z
)
p
(
x
)
p
(
z
)
]
+
D
K
L
(
p
(
x
,
z
)
∥
q
(
x
,
z
)
)
⏟
≥
0
≥
E
p
(
x
,
z
)
[
log
q
(
x
,
z
)
p
(
x
)
p
(
z
)
]
\begin{aligned} I(x ; z) &=D_{\mathrm{KL}}(p(x, z) \| p(x) p(z)) \\ &=\mathbb{E}_{p(x, z)}\left[\log \frac{p(x, z)}{p(x) p(z)}\right] \\ &=\mathbb{E}_{p(x, z)}\left[\log \left(\frac{q(x, z)}{p(x) p(z)} \frac{p(x, z)}{q(x, z)}\right)\right] \\ &=\mathbb{E}_{p(x, z)}\left[\log \frac{q(x, z)}{p(x) p(z)}\right]+\underbrace{D_{\mathrm{KL}}(p(x, z) \| q(x, z))}_{\geq 0} \\ & \geq \mathbb{E}_{p(x, z)}\left[\log \frac{q(x, z)}{p(x) p(z)}\right] \end{aligned}
I(x;z)=DKL(p(x,z)∥p(x)p(z))=Ep(x,z)[logp(x)p(z)p(x,z)]=Ep(x,z)[log(p(x)p(z)q(x,z)q(x,z)p(x,z))]=Ep(x,z)[logp(x)p(z)q(x,z)]+≥0
DKL(p(x,z)∥q(x,z))≥Ep(x,z)[logp(x)p(z)q(x,z)]
上面的公式首先把互信息表示成了x,z的联合概率相对于两个边缘概率的KL散度形式,作者假设这个联合概率是很难估计的(为什么会有这个假设?是因为在以往的一些互信息的估计方法里通常有一个假设是x和z的边缘概率很难获得,所以作者就有了一个新的假设,会不会这个联合概率也很难获得),然后公式第三行就用了一个
q
(
x
,
z
)
q(x,z)
q(x,z)(后面会提到)来作为中介,这时候利用对数乘法的性质就可以得到的第四行的式子,而KL散度本质上是一种距离,从形式上还是定义上都肺腑,那么前面的一部分就成为了MI的下界。那这个q呢,怎么表示?在原论文中作者并没有把q作为训练参数,而是将
q
(
x
,
z
)
q(x,z)
q(x,z)定义为:
q
(
x
,
z
)
=
1
K
p
(
x
)
p
(
z
)
e
T
θ
(
x
,
z
)
=
p
(
x
)
p
(
z
)
e
T
(
x
,
z
)
∬
p
(
x
′
)
p
(
z
′
)
e
T
θ
(
x
′
,
z
′
)
d
z
′
d
x
′
\quad q(x, z)=\frac{1}{K} p(x) p(z) e^{T_{\theta}(x, z)}=\frac{p(x) p(z) e^{T(x, z)}}{\iint p\left(x^{\prime}\right) p\left(z^{\prime}\right) e^{T_{\theta}\left(x^{\prime}, z^{\prime}\right)} d z^{\prime} d x^{\prime}}
q(x,z)=K1p(x)p(z)eTθ(x,z)=∬p(x′)p(z′)eTθ(x′,z′)dz′dx′p(x)p(z)eT(x,z)
这么定义有个好处,就是我们代入进去的时候直接连边缘概率都给消掉了,这里的K是一个正则项,而
T
θ
(
x
,
z
)
T_{\theta}(x,z)
Tθ(x,z)通过神经网络参数化进行学习。最后互信息最后就可以表示成如下的下界:
KaTeX parse error: Got function '\newline' with no arguments as argument to '\begin{array}' at position 1: \̲n̲e̲w̲l̲i̲n̲e̲
文章主要内容
在传统信息论应用到DL的一些思路是网络首先将raw输入进行编码成特征向量或者特征图,编码到一个便于区分的高维空间,然后将编码后的特征向量或者特征矩阵用于分类等下游任务。信息论认为,编码器应该尽可能最小化输入到特征向量之间的互信息,而解码器应该尽可能最大化特征向量与输出之间的互信息。在这篇文章里作者提出了一个DIM的东东,用来估计和最大化输入和输出之间的互信息。其实说到这里上面的问题如何估计互信息的问题就必须采取一个方法解决。第二,作者采用了对抗学习来保证学到的表征具有先验的期望统计特征。然后他们提出了两个评价指标。
Details
作者认为,我们的目标就要最小化输出输出之间的互信息,也就是
a
r
g
m
a
x
ψ
^
I
(
X
;
E
ψ
(
X
)
)
\mathop{arg\ max}\limits_{\hat{\psi}}I(X;E_{\psi}(X))
ψ^arg maxI(X;Eψ(X)),其中
ψ
^
\hat{\psi}
ψ^是编码器的参数。基于上面对于Donsker-Varadhan表示的结论,我们将互信息可以表示为一个由
ω
^
\hat{\omega}
ω^定义的网络结构,也就是我们的优化目标变成了:
(
ω
^
,
ψ
^
)
G
=
a
r
g
m
a
x
ω
^
,
ψ
^
I
(
X
;
E
ψ
(
X
)
)
(\hat{\omega}, \hat{\psi})_G=\mathop{arg\ max}\limits_{\hat{\omega},\hat{\psi}}I(X;E_{\psi}(X))
(ω^,ψ^)G=ω^,ψ^arg maxI(X;Eψ(X))
在这篇文章中我们只关心最大化互信息,而不关心互信息的值具体是多少。本文中的的互信息估计器作者采用了NCE(Noise-Contrastive Estimation),因为实验证明这个在下游任务的泛化能力很不错。公式如下:
I
^
ω
,
ψ
(
infoNCE
)
(
X
;
E
ψ
(
X
)
)
:
=
E
P
[
T
ψ
,
ω
(
x
,
E
ψ
(
x
)
)
−
E
P
~
[
log
∑
x
′
e
T
ψ
,
ω
(
x
′
,
E
ψ
(
x
)
)
]
]
\widehat{\mathcal{I}}_{\omega, \psi}^{(\text {infoNCE })}\left(X ; E_{\psi}(X)\right):=\mathbb{E}_{\mathbb{P}}\left[T_{\psi, \omega}\left(x, E_{\psi}(x)\right)-\mathbb{E}_{\tilde{\mathbb{P}}}\left[\log \sum_{x^{\prime}} e^{T_{\psi, \omega}\left(x^{\prime}, E_{\psi}(x)\right)}\right]\right]
I
ω,ψ(infoNCE )(X;Eψ(X)):=EP[Tψ,ω(x,Eψ(x))−EP~[logx′∑eTψ,ω(x′,Eψ(x))]]
其中
x
x
x是输入数据,
P
~
=
P
\widetilde{\mathbb{P}}=\mathbb{P}
P
=P,
x
′
x^{\prime}
x′是从
P
~
\widetilde{\mathbb{P}}
P
采样出的负样本。这一部分是前面的互信息估计的论文,这一块我没有仔细了解。文章的主要处理框架如图:
这里作者首先通过卷积操作获得大小为MxM的特征图,这个特征图包含了很多全局信息,即:
C
ψ
:
=
{
C
ψ
(
i
)
}
i
=
1
M
×
M
C_{\psi}:=\{C_{\psi}^{(i)} \}_{i=1}^{M\times M}
Cψ:={Cψ(i)}i=1M×M,然后作者将这个特征图在进行encode成一个向量编码全局信息,
E
ψ
=
f
ψ
∘
C
ψ
(
x
)
E_{\psi}=f_{\psi}\circ C_{\psi}(x)
Eψ=fψ∘Cψ(x),然后将全局信息直接拼接到前面MxM的特征图的每一个pixel上。所以整个目标函数就被形式化为:
(
ω
^
,
ψ
^
)
L
=
arg
max
ω
,
ψ
1
M
2
∑
i
=
1
M
2
I
^
ω
,
ψ
(
C
ψ
(
i
)
(
X
)
;
E
ψ
(
X
)
)
(\hat{\omega}, \hat{\psi})_{L}=\underset{\omega, \psi}{\arg \max } \frac{1}{M^{2}} \sum_{i=1}^{M^{2}} \widehat{\mathcal{I}}_{\omega, \psi}\left(C_{\psi}^{(i)}(X) ; E_{\psi}(X)\right)
(ω^,ψ^)L=ω,ψargmaxM21i=1∑M2I
ω,ψ(Cψ(i)(X);Eψ(X))
那作者是怎么实现保存期望的统计学特征的呢?训练一个目的是最小化先验分布 V \mathbb{V} V和原始特征之间的KL散度的判别器,这个思路来自于对抗自动编码器AAE。最后结合上面所有的目标,得到最终的Objective Function:
arg
max
ω
1
,
ω
2
,
ψ
(
α
I
^
ω
1
,
ψ
(
X
;
E
ψ
(
X
)
)
+
β
M
2
∑
i
=
1
M
2
I
^
ω
2
,
ψ
(
X
(
i
)
;
E
ψ
(
X
)
)
)
+
arg
min
ψ
arg
max
ϕ
γ
D
^
ϕ
(
V
∣
∣
U
ψ
,
P
)
\underset{\omega_{1}, \omega_{2}, \psi}{\arg \max }\left(\alpha \widehat{\mathcal{I}}_{\omega_{1}, \psi}\left(X ; E_{\psi}(X)\right)+\frac{\beta}{M^{2}} \sum_{i=1}^{M^{2}} \widehat{\mathcal{I}}_{\omega_{2}, \psi}\left(X^{(i)} ; E_{\psi}(X)\right)\right)+\underset{\psi}{\arg \min } \underset{\phi}{\arg \max } \gamma \widehat{\mathcal{D}}_{\phi}\left(\mathbb{V}|| \mathbb{U}_{\psi, \mathbb{P}}\right)
ω1,ω2,ψargmax⎝⎛αI
ω1,ψ(X;Eψ(X))+M2βi=1∑M2I
ω2,ψ(X(i);Eψ(X))⎠⎞+ψargminϕargmaxγD
ϕ(V∣∣Uψ,P)
其中
ω
1
,
ω
2
\omega_1,\omega_2
ω1,ω2是判别器对于全局信息和局部信息的参数,
α
,
β
,
γ
\alpha,\beta,\gamma
α,β,γ是超参
My comment
这篇文章的领域知识很多,尤其是信息论,公式太多了,很多知识都不清楚,这篇文章是上周看的,但是拖到这周才写,不过这种思路很直接参考。文章还提出了新的评价指标,这里没有写,有兴趣可以深入论文看看。
结果
贴一贴实验结果:
后记
如果你觉得我的文章写的不错的话,麻烦帮忙向大家推广关注我的公众号啊(名称:洋可喵)!!!