Mutual Information Neural Estimation
Paper:https://arxiv.org/pdf/1801.04062v4.pdf
Code:https://github.com/mzgubic/MINE
Tips:ICML2018的一篇paper。
(阅读笔记)
1.Main idea
- 高维连续随机变量的互信息的估计可以被神经网络通过梯度下降实现。the estimation of mutual information between high dimensional continuous random variables can be achieved by gradient descent over neural networks.
- We present a Mutual Information Neural Estimator (MINE).
- 实验提出了一些应用。
2.Intro
- 提出了MINE,which is scalable, flexible, and completely trainable via back-prop, as well as provide a thorough theoretical analysis.
- 互信息比GAN的一些目标函数表现出更优秀的结果。
- We use MINE to apply the Information Bottleneck method.可用于信息瓶颈。(平衡准确度和复杂度的一种方法 It is designed for finding the best tradeoff between accuracy and complexity)
- Mutual Information,
f
f
f-divergence都较为熟悉。对于KL散度的另一表示:Donsker-Varadhan representation有,其中
T
T
T表示函数:
D K L ( P ∥ Q ) = sup T : Ω → R E P [ T ] − log ( E Q [ e T ) ] ) (1) \begin{aligned} D_{\mathbf{KL}}(\mathbb{P}\|\mathbb{Q}) = \sup_{T:\Omega \rightarrow \mathbb{R}} \mathbb{E}_{\mathbb{P}}[T] - \log (\mathbb{E}_{\mathbb{Q}} [\mathrm{e}^T)] ) \tag{1} \end{aligned} DKL(P∥Q)=T:Ω→RsupEP[T]−log(EQ[eT)])(1)
推导如下:
E P [ T ] − log ( E Q [ exp ( T ) ] ) = ∑ i p i t i − log ∑ i q i e t i → ∂ [ ∑ i p i t i − log ∑ i q i e t i ] ∂ t j = 0 → p j − q j e t j ∑ i q i e t i = 0 → p j ∑ i q i e t i = q j e t j → t j = log p j q j + log ∑ i q i e t i (2) \begin{aligned} \mathbb{E}_{\mathbb{P}}[T] & - \log (\mathbb{E}_{\mathbb{Q}} [\exp(T)] ) = \sum_{i}p_i t_i - \log \sum_i q_i \mathrm{e}^{t_i}\\ & \rightarrow \frac{\partial \left[ \sum_{i}p_i t_i - \log \sum_i q_i \mathrm{e}^{t_i} \right]}{\partial t_j }=0 \\ & \rightarrow p_j - \frac{q_j \mathrm{e}^{t_j}}{\sum_{i} q_i \mathrm{e}^{t_i}} =0 \\ & \rightarrow p_j \sum_{i} q_i \mathrm{e}^{t_i} = q_j \mathrm{e}^{t_j}\\ & \rightarrow t_j = \log \frac{p_j}{q_j} + \log \sum_{i} q_i \mathrm{e}^{t_i} \\ \tag{2} \end{aligned} EP[T]−log(EQ[exp(T)])=i∑piti−logi∑qieti→∂tj∂[∑ipiti−log∑iqieti]=0→pj−∑iqietiqjetj=0→pji∑qieti=qjetj→tj=logqjpj+logi∑qieti(2)
令后面一部分 log ∑ i q i e t i \log \sum_{i} q_i \mathrm{e}^{t_i} log∑iqieti为 α \alpha α,并将 t j t_j tj带入 t i t_i ti所以有:
∑ i p i t i − log ∑ i q i e t i = ∑ i p i t i − log ∑ i q i e t i = ∑ i p i ( log p j q j + α ) − log ∑ i q i e log ( p j q j + α ) = ∑ i p i ( log p j q j + α ) − log ∑ i e α q i p j q j = ∑ i ( p i log p j q j ) + α − α log ∑ i q i p j q j = ∑ i ( p i log p j q j ) + α − α ⋅ log 1 = ∑ i p i log p j q j = D K L ( p ∥ q ) (3) \begin{aligned} \sum_{i}p_i t_i - \log \sum_i q_i \mathrm{e}^{t_i} & = \sum_{i}p_i t_i - \log \sum_i q_i \mathrm{e}^{t_i} \\ & = \sum_{i}p_i(\log \frac{p_j}{q_j} + \alpha) - \log \sum_i q_i \mathrm{e}^{\log (\frac{p_j}{q_j} + \alpha)} \\ & = \sum_{i}p_i(\log \frac{p_j}{q_j} + \alpha) - \log \sum_i \mathrm{e}^{\alpha} q_i \frac{p_j}{q_j} \\ & = \sum_{i}(p_i \log \frac{p_j}{q_j})+\alpha - \alpha \log \sum_i q_i \frac{p_j}{q_j} \\ & = \sum_{i}(p_i \log \frac{p_j}{q_j})+\alpha - \alpha \cdot \log 1 \\ & = \sum_{i}p_i \log \frac{p_j}{q_j} \\ & = D_{\mathbf{KL}}(p \| q) \\ \tag{3} \end{aligned} i∑piti−logi∑qieti=i∑piti−logi∑qieti=i∑pi(logqjpj+α)−logi∑qielog(qjpj+α)=i∑pi(logqjpj+α)−logi∑eαqiqjpj=i∑(pilogqjpj)+α−αlogi∑qiqjpj=i∑(pilogqjpj)+α−α⋅log1=i∑pilogqjpj=DKL(p∥q)(3)
即找到取最优的 t j t_j tj带入即是 D K L ( p ∥ q ) D_{\mathbf{KL}}(p \| q) DKL(p∥q),其实已经可以感觉这样可以用梯度下降的方式就能找到这个函数了。
Tips:一般的,当 D K L ( P ∥ Q ) D_{\mathbf{KL}}(P \| Q) DKL(P∥Q)表示的是 P P P, Q Q Q之间距离,一般训练就让这两个分布之间距离最小。而 D K L ( ( P , Q ) ∥ ( P ⋅ Q ) ) D_{\mathbf{KL}}((P,Q) \| (P\cdot Q)) DKL((P,Q)∥(P⋅Q))就表示的是 P P P, Q Q Q之间的互信息,一般训练最大化,这个分布就越相似。
3.Details
- 互信息定义如下所示,其中
P
X
Z
\mathbb { P } _ { X Z }
PXZ,为联合分布;
P
X
\mathbb { P } _ { X }
PX和
P
Z
\mathbb { P } _ { Z }
PZ为边缘分布:
I ( X ; Z ) = H ( X ) − H ( X ∣ Z ) = ∫ X × Z log d P X Z d P X ⊗ P Z d P X Z = D K L ( P X Z ∥ P X ⊗ P Z ) (4) \begin{aligned} I(X;Z) &=H(X)-H(X|Z) \\ &= \int _ { \mathcal { X } \times \mathcal { Z } } \log \frac { d \mathbb { P } _ { X Z } } { d \mathbb { P } _ { X } \otimes \mathbb { P } _ { Z } } d \mathbb { P } _ { X Z } \\ &= D _ { K L } \left( \mathbb { P } _ { X Z } \| \mathbb { P } _ { X } \otimes \mathbb { P } _ { Z } \right) \tag{4} \end{aligned} I(X;Z)=H(X)−H(X∣Z)=∫X×ZlogdPX⊗PZdPXZdPXZ=DKL(PXZ∥PX⊗PZ)(4)
通过神经网络进行信息测量的表达式 I Θ ( X , Z ) I_{\Theta}(X,Z) IΘ(X,Z)如下所示,其中 T θ T_{\theta} Tθ是神经网络函数,其实 T θ T_{\theta} Tθ或者 F \mathcal{F} F是使样本集映射到实数 R \mathbb{R} R的泛函, F = { T θ } θ ∈ Θ \mathcal{F}=\{T_{\theta} \}_{\theta \in \Theta} F={Tθ}θ∈Θ,通过对 θ \theta θ优化得到不同的 T θ T_{\theta} Tθ来接近互信息的值:
I ( X ; Z ) ≥ I Θ ( X , Z ) = sup θ ∈ Θ E P ( X , Z ) [ T θ ] − log ( E P X × P Z [ e T θ ] ) (5) \begin{aligned} I(X;Z) & \ge I_{\Theta}(X,Z) \\ &= \sup_{\theta \in \Theta}\mathbb{E}_{\mathbb{P}_{(X,Z)}} \left[ T_{\theta} \right] - \log (\mathbb{E}_{\mathbb{P}_{X} \times \mathbb{P}_{Z}} \left[ e^{T_{\theta}} \right]) \tag{5} \end{aligned} I(X;Z)≥IΘ(X,Z)=θ∈ΘsupEP(X,Z)[Tθ]−log(EPX×PZ[eTθ])(5)
于是有MINE的最终定义如下,其中 P ^ n \mathbb{\hat{P}}^n P^n是 n n n个抽取的样本的经验分布:
I ( X ; Z ) n ^ = sup θ ∈ Θ E P ( X , Z ) n [ T θ ] − log ( E P X n × P ^ Z n [ e T θ ] ) (6) \begin{aligned} \widehat{I(X;Z)_n} = \sup_{\theta \in \Theta}\mathbb{E}_{\mathbb{P}^n_{(X,Z)}} \left[ T_{\theta} \right] - \log (\mathbb{E}_{\mathbb{P}_{X}^n \times \mathbb{\hat{P}}^n_{Z}} \left[ e^{T_{\theta}} \right]) \tag{6} \end{aligned} I(X;Z)n =θ∈ΘsupEP(X,Z)n[Tθ]−log(EPXn×P^Zn[eTθ])(6) - 训练过程如下所示。主要分为两个步骤,训练网络逼近互信息找到下界(理解:这篇paper并没有像infogan一样重新构造一个分布去近似,而是直接最大化。其实
sup
\sup
sup最大化有两层意义,最大化以便接近互信息的值,最大化来使互信息最大使两个分布相似),训练网络完成任务目标。
- 互信息估计应用到GAN后,其损失函数就改变了。类似有infoGAN,其中
ϵ
\epsilon
ϵ,
ς
\varsigma
ς分别是生成器的输入噪声和编码,独立变量;所以互信息就有
I
(
G
(
[
ϵ
,
ς
]
)
;
ς
)
I(G([\epsilon,\varsigma]);\varsigma )
I(G([ϵ,ς]);ς),目标生成器输出
G
(
[
ϵ
,
ς
]
)
G([\epsilon,\varsigma])
G([ϵ,ς])与编码
ς
\varsigma
ς之间互信息最大,即生成器的目标函数有下式,独立变量直接喂数据即可:
arg max G E [ log ( D ( G ( ϵ , ς ) ) ) + β I ( G ( [ ϵ , ς ] ) ; ς ) ] (7) \begin{aligned} \arg \max_{G} \mathbb{E} \left[ \log (D(G(\epsilon,\varsigma))) +\beta I(G([\epsilon,\varsigma]);\varsigma ) \right] \\ \tag{7} \end{aligned} argGmaxE[log(D(G(ϵ,ς)))+βI(G([ϵ,ς]);ς)](7)
arg max G θ E ϵ , ς [ log ( D ( G ( ϵ , ς ) ) ) ] + β ⋅ [ E ϵ , ς ( T θ ) − log ( E ϵ , ς [ e T θ ] ) ] (8) \begin{aligned} \arg \max_{G_\theta} \mathbb{E}_{\epsilon,\varsigma} \left[ \log (D(G(\epsilon,\varsigma))) \right]+\beta \cdot \left[ \mathbb{E}_{\epsilon,\varsigma} (T_{\theta}) - \log (\mathbb{E}_{\epsilon,\varsigma} \left[ e^{T_{\theta}} \right]) \right] \\ \tag{8} \end{aligned} argGθmaxEϵ,ς[log(D(G(ϵ,ς)))]+β⋅[Eϵ,ς(Tθ)−log(Eϵ,ς[eTθ])](8)
相当于在GAN的基础上,输入生成器的编码 ς \varsigma ς与生成器的输出 G ( [ ϵ , ς ] ) G([\epsilon,\varsigma]) G([ϵ,ς])通过一个神经网络映射函数 T θ T_{\theta} Tθ,要求这个网络的输出值越高越好。