读书人工智能

MINE:随机变量互信息的估计方法

2022-03-30  本文已影响0人  酷酷的群

论文标题:MINE: Mutual Information Neural Estimation
论文链接:https://arxiv.org/abs/1801.04062
论文来源:ICML 2018

一、概述

互信息(Mutual Information)是信息论里一种有用的信息度量,它可以看成是一个随机变量中包含的关于另一个随机变量的信息量,或者说是一个随机变量由于已知另一个随机变量而减少的不肯定性。互信息代表了两个随机变量的相关程度或者说依赖程度,因此在数据科学中是一种应用广泛的度量标准。

互信息能够捕捉随机变量之间的非线性统计依赖,因此可以作为变量之间真正的依赖关系的度量。然而,互信息的度量一直以来都是困难的。目前的方法仅限于对离散变量互信息的估计以及一些已知概率分布的连续变量,对于一般任务来说,互信息的估计是困难的。本文提出一种基于KL散度对偶表示的神经网络方法(称为MINE),其为互信息的估计提供了一种通用的解决方案。

对于两个随机变量XZ,它们的互信息表示为:

I(X;Z)=\int \int P(X,Z)log\frac{P(X,Z)}{P(X)P(Z)}\mathrm{d}X\mathrm{d}Z

XZ之间的互信息可认为是在给定Z时变量X所减少的不确定性:

I(X;Z)=H(X)-H(X|Z)\\ =H(X)+H(Z)-H(X,Z)\\ =\int P(X)log\frac{1}{P(X)}\mathrm{d}X+\int P(Z)log\frac{1}{P(Z)}\mathrm{d}Z-\int \int P(X,Z)log\frac{1}{P(X,Z)}\mathrm{d}X\mathrm{d}Z\\ =\int \int P(X,Z)log\frac{1}{P(X)}\mathrm{d}X\mathrm{d}Z+\int \int P(X,Z)log\frac{1}{P(Z)}\mathrm{d}X\mathrm{d}Z-\int \int P(X,Z)log\frac{1}{P(X,Z)}\mathrm{d}X\mathrm{d}Z\\ =\int \int P(X,Z)log\frac{P(X,Z)}{P(X)P(Z)}\mathrm{d}X\mathrm{d}Z

另外,XZ的互信息等价于其联合分布P(X,Z)和其边缘分布的乘积P(X)P(Z)之间的KL散度:

I(X;Z)=D_{KL}(P(X,Z)||P(X)P(Z))

KL散度的定义为:

D_{KL}(P||Q):=E_{P}(log\frac{P}{Q})

也就是说联合分布和边缘分布的乘积之间的KL散度越大,随机变量之间的依赖程度就越大。到目前为止,互信息的估计问题就转化为了KL散度的估计问题。

二、KL散度的对偶表示

MINE中应用的关键技术是KL散度的对偶表示,主要采用Donsker-Varadhan表示,同时也对比了f-divergence表示,两种方法分别记作MINE和MINE-f。

  1. f-divergence表示

f-divergence的定义如下:

D_{f}(P||Q)=\int _{x}q(x)f\left (\frac{p(x)}{q(x)} \right )\mathrm{d}x\\ s.t.\; \; f是凸函数且f(1)=0

f-divergence衡量分布PQ之间的差异程度,满足在PQ完全一致的情况下取得最小值为0,在有所差异的情况下值为一个正数,这一点可以通过凸函数的性质得到:

PQ完全一致时:

D_{f}(P||Q)=\int _{x}q(x)f\left (\frac{p(x)}{q(x)} \right )\mathrm{d}x=\int _{x}q(x)f\left (1 \right )\mathrm{d}x=0

PQ有差异时:

D_{f}(P||Q)=\int _{x}q(x)f\left (\frac{p(x)}{q(x)} \right )\mathrm{d}x\\ \geq f\left (\int _{x}q(x)\frac{p(x)}{q(x)}\mathrm{d}x \right )\\ =f(1)=0

事实上KL散度就是f-divergence的一个特例:

f(x)=xlogx
D_{f}(P||Q)=\int _{x}q(x)\frac{p(x)}{q(x)}log\left (\frac{p(x)}{q(x)}\right )\mathrm{d}x=\underset{KL}{\underbrace{\int _{x}p(x)log\left (\frac{p(x)}{q(x)} \right )\mathrm{d}x}}


f(x)=-logx
D_{f}(P||Q)=\int _{x}q(x)\left (-log\left (\frac{p(x)}{q(x)} \right )\right )\mathrm{d}x=\underset{Reverse\; KL}{\underbrace{\int _{x}q(x)log\left (\frac{q(x)}{p(x)} \right )\mathrm{d}x}}


f(x)=(x-1)^2
D_{f}(P||Q)=\int _{x}q(x)\left (\frac{p(x)}{q(x)}-1 \right )^{2}\mathrm{d}x=\underset{Chi\; Square}{\underbrace{\int _{x}\frac{\left (p(x)-q(x) \right )^{2}}{q(x)}\mathrm{d}x}}

每一个凸函数都有一个共轭函数(Conjugate Function),记作f^*,公式为:

f^{*}(t)=\underset{x\in dom(f)}{max}\left \{xt-f(x)\right \}

这个函数也就是说要找出给定t的情况下变动x能达到的最大值,限制x必须要在f的定义域内,以下图为例,给定不同的t,代入所有的x能得到的最大值就是f^*(t)

共轭

按照上面的方式能够理解前面的公式。那么f^{*}(t)的图像是什么样子的呢?我们可以按照以下方式来考虑,在给定x,使t变动,那么就能得到一条以x为斜率的直线,对于不同的x就对应着不同的直线:

共轭

而此时,要求f^*(t),就只需要从t的位置坐垂线,这样与垂线相交最上面的直线对应的x就是能使得f^*(t)取得最大值的x

共轭

那么在整个t的定义域上,将位于最上面的直线的片段连接起来就是f^*(t)的图像了,当然这只是便于理解的一种形象化的思路:

共轭

按照上面的思路,可以很直观地看出f^*(t)也是凸函数。

另外,我们按照上面的方式把有关f(x)=xlogx的共轭函数的每条直线都画出来:

f(x)=xlogx

得到的共轭函数的图像像是一个指数函数,其实f(x)=xlogx的共轭函数就是exp(t-1),求解共轭函数可以直接用数学的方法计算出来,对于f(x)=xlogx来说,先把f(x)代入前面共轭函数的表达式:

f^{*}(t)=\underset{x\in dom(f)}{max}\left \{xt-xlogx\right \}

对于括号里面的式子g(x)=xt-xlogx,给定t,需要求解x来使最大化g(x),可以直接对x求导,也就有t-logx-1=0,然后解得x=exp(t-1),也就是说,对于给定的t,能使得g(x)最大的x就是exp(t-1),将x代入原来的式子就可以求得共轭函数了:

f^{*}(t)=exp(t-1)t-exp(t-1)log\left (exp(t-1) \right )=exp(t-1)

另外(在满足f(x)是闭凸函数的条件下,这里就不深究了)有f^*(t)f(x)的共轭函数,f(x)也是f^*(t)的共轭函数,也就是说:

(f^*)^*=f

f^*(t)f(x)互为共轭函数:

f^{*}(t)=\underset{x\in dom(f)}{max}\left \{xt-f(x)\right \}\leftrightarrow f^{**}(x)=\underset{t\in dom(f^{*})}{max}\left \{xt-f^{*}(t)\right \}=f(x)

这叫做二次共轭。

由上面二次共轭的内容,那么对于f-divergence中的凸函数f(x),就可以用f^{**}(x)来替换它:

D_{f}(P||Q)=\int _{x}q(x)f\left (\frac{p(x)}{q(x)} \right )\mathrm{d}x\\ =\int _{x}q(x)\left (\underset{t\in dom(f^{*})}{max}\left \{\frac{p(x)}{q(x)}t-f^{*}(t)\right \} \right )\mathrm{d}x

现在对于任意的一个T(x),它的输入是x,输出是t,将T(x)代入上面的式子中,一定有以下关系:

D_{f}(P||Q)\geq \int _{x}q(x)\left (\frac{p(x)}{q(x)}T(x)-f^{*}(T(x))\right) \mathrm{d}x\\ =\int _{x}p(x)T(x)\mathrm{d}x-\int _{x}q(x)f^{*}(T(x))\mathrm{d}x

上面的不等式是恒成立的,我们也就得到了D_{f}(P||Q)的下界,来调整函数T(x)T(x)是任意的)使得这个下界取得最大值就可以用这个最大值来得到D_{f}(P||Q)

D_{f}(P||Q)=\underset{T}{max}\left \{\int _{x}p(x)T(x)\mathrm{d}x-\int _{x}q(x)f^{*}(T(x))\mathrm{d}x\right \}\\ =\underset{T}{max}\left \{E_{x\sim P}[T(x)]-E_{x\sim Q}[f^{*}(T(x))]\right \}

下表中展示了一些不同的divergence对应的函数以及它的共轭函数:

共轭函数

现在我们知道当f(x)=xlogx时f-divergence就是KL散度(KL-divergence),而此时f(x)的共轭函数为f^{*}(t)=exp(t-1),将这些代入上面的式子,得到KL散度的f-divergence表示:

D_{KL}(P||Q)=\underset{T}{max}\left \{E_{x\sim P}[T(x)]-E_{x\sim Q}[e^{T(x)-1}]\right \}

接下来为了与论文中使用的符号一致,我们可以将上述结论写为:

D_{KL}(P||Q)=\underset{T:\Omega \rightarrow \mathbb{R}}{sup}E_{P}[T]-E_{Q}[e^{T-1}]

注意这里的T代表任意函数T(x)。在本文提出的深度方法中,T(x)是一个神经网络,此时T(x)就不是任意函数了,T(x)可以取到的所有函数的集合,记作F。现在可以得到D_{KL}(P||Q)的下界:

D_{KL}(P||Q)\geq \underset{T\in F}{sup}\; E_{P}[T]-E_{Q}[e^{T-1}]

通过梯度下降的方法不断学习T(x),就可以使用这个下界近似两个分布PQ之间的KL散度。

  1. Donsker-Varadhan表示

Donsker-Varadhan表示来源于Asymptotic evaluation of certain markov process expectations for large time. IV这篇文章,其具体的形式为:

D_{KL}(P||Q)=\underset{T:\Omega \rightarrow \mathbb{R}}{sup}E_{P}[T]-log(E_{Q}[e^{T}])

类似的,当T(x)是一个神经网络时,得到用于估计D_{KL}(P||Q)的下界:

D_{KL}(P||Q)\geq \underset{T\in F}{sup}\; E_{P}[T]-log(E_{Q}[e^{T}])

直观上来看,对于固定的T(x),Donsker-Varadhan表示中的下界总是比f-divergence表示要大。MINE主要采用的是Donsker-Varadhan表示,实验中MINE效果要比MINE-f要好一些。

三、MINE

  1. 方法

根据上面的理论对于两个随机变量XZ的互信息,假设T(x)是由\theta参数化的神经网络,记作T_{\theta }:\mathcal {X}\times \mathcal{Z}\rightarrow R,参数\theta \in \Theta,互信息的边界就可以表示为:

I(X;Z)\geq I_{\Theta }(X,Z)

其中:

I_{\Theta }(X,Z)=\underset{\theta \in \Theta }{sup}\; E_{P_{XZ}}[T_{\theta }]-log(E_{P_{X}\otimes P_{Z}}[e^{T_{\theta }}])

上面式子中的期望可以通过以下方式估计:
①从分布P_{XZ}P_{X}\otimes P_{Z}中采样,样本\hat{x}\sim P_{X}\hat{z}\sim P_{Z}可以简单地通过丢弃样本(\hat{x},z)\; and\; (x,\hat{z})\sim P_{XZ}中的x,z获得;
②沿着batch维度打乱联合分布的样本。

接下来,对于一个分布P,我们用\hat{P}^{(n)}代表其与ni.i.d样本相关的经验分布。

使用F=\left \{T_{\theta }\right \}_{\theta \in \Theta }代表神经网络参数化的函数集合,MINE定义为:

\widehat{I(X,Z)}_{n}=\underset{\theta \in \Theta }{sup}\; E_{P_{XZ}^{(n)}}[T_{\theta }]-log(E_{P_{X}^{(n)}\bigotimes \hat{P}_{Z}^{(n)}}[e^{T_{\theta }}])

下面是MINE的算法,MINE-f也类似:

算法
  1. 随机梯度偏置的矫正

对于MINE而言,一个mini-batch内随机梯度下降的梯度为:

\hat{G}_{B}=E_{B}[\nabla _{\theta }T_{\theta }]-\frac{E_{B}[\nabla _{\theta }T_{\theta }e^{T_{\theta }}]}{E_{B}[e^{T_{\theta }}]}

这里B代表一个mini-batch的样本。由于损失函数中log的存在,导致上式梯度中的第二项分子分母都有求期望的过程,然而当用采样来代替期望的时候,分子分母的期望应该独立采样,不能使用同一个mini-batch的样本。因此上式的梯度是有偏的,原因就是第二项分子分母的样本不独立。

矫正的方法是将分母上的E_{B}[e^{T_{\theta }}]改用真正的E[e^{T_{\theta }}]。这个值不是采用采样的方法估计的,在文中是采用滑动平均的方法计算E[e^{T_{\theta }}],将该值记为A。则梯度变为:

G_{B}=E_{B}[\nabla _{\theta }T_{\theta }]-\frac{1}{A}E_{B}[\nabla _{\theta }T_{\theta }e^{T_{\theta }}]\\ =E_{B}[\nabla _{\theta }T_{\theta }]-\underset{记作\alpha }{\underbrace{\frac{E_{B}[e^{T_{\theta }}]}{A}}}\cdot \frac{E_{B}[\nabla _{\theta }T_{\theta }e^{T_{\theta }}]}{E_{B}[e^{T_{\theta }}]}\\ =E_{B}[\nabla _{\theta }T_{\theta }]-\alpha \cdot \frac{E_{B}[\nabla _{\theta }T_{\theta }e^{T_{\theta }}]}{E_{B}[e^{T_{\theta }}]}

该式相当于在原有的梯度的基础上,在后一项前面乘以了一个权重\alpha\alpha相当于当前mini-batch的e^{T_{\theta }}均值和滑动平均的e^{T_{\theta }}均值的比值。注意\alpha在计算中被当做一个常数。虽然\alpha中也包含有参数\theta的项,但并不参与梯度的计算。

现在由梯度G_{B}反推目标函数,得到:

I_{\Theta }(X,Z)=\underset{\theta \in \Theta }{sup}\; E_{P_{XZ}}[T_{\theta }]-\alpha \cdot log(E_{P_{X}\otimes P_{Z}}[e^{T_{\theta }}])

因此 MINE 的偏差校正过程仅需要在原始目标函数的后一项乘以一个常数\alpha

参考资料

MINE: Mutual Information Neural Estimation
【深度学习 111】MINE
F-GAN & MINE

上一篇 下一篇

猜你喜欢

热点阅读