DEEP VARIATIONAL INFORMATION BOTTLENECK

DEEP VARIATIONAL INFORMATION BOTTLENECK

论文“Deep Variational information bottleneck”阅读笔记

作者:艾庆忠 时间:2018.12.04

本人为小白一个,此文作为学习笔记,暂存于此。

第一部分 准备内容

​ 在阅读此论文之前,需对VAE、Variational Inference(变分推断)以及Information Bottleneck有所了解,借此机会对上述内容做一回顾总结。

VAE与Variational Inference

​ VAE, 也就是是论文“Auto-Encoding Variational Bayes”中提出的变分贝叶斯自编码器,属于深度生成模型 ,也是深度学习中的经典算法之一。变分自编码器算法实现较为简单,相当于给隐变量空间Z加入正则约束,使得其分布满足高斯分布。但是推导过程并不简单,其中涉及到变分推断的知识。下面总结一下变分推断。

  • Variational Inference

    ​ 在贝叶斯观点看来:对于每个观测数据来说,都是从每个分布函数x~p(x)中采样得到的。所以在不管什么情况下,只要我们有n个样本(iid),目标都是最大化下面的似然函数,然后求参数θ 的偏导数,从而获得最优解。

    然而,对于一般的数据来说,其分布可能较为复杂,即不能解析的确定其分布函数,更不能确定其概率密度函数。所以为了完成上述计算,需引入变分推断的思想。

    ​ 对上式进行变换,引入隐变量Z,以及随机函数q(Z)可得:

    ​ 给定q(Z),等式两边同时对Z求期望,可得:
    \begin{split} \log(p(X)) &= \int{q(Z)\log(\frac{p(X,Z)}{q(Z)})}dZ -\int{q(Z)\log(\frac{p(Z|X)}{q(Z)})}dZ\\\\ &=\int{q(Z)\log (p(X,Z))}dZ-\int{q(Z)\log(q(Z))}dZ+(-\int{q(Z)\log(\frac{p(Z|X)}{q(Z)})}dZ)\\\\ &=\mathcal{L}(q)+KL(q||p) \end{split}
    ​ 上面的公式对于任意的q(Z)均成立,可以根据需求将q(Z)构造成不同的形式。例如在平均场理论中将q(Z)构造成连乘积的形式。而在VAE中,q(Z)被构造成高斯分布函数,而且是一个后验概率分布函数。

    ​ 另外,由于KL距离非负,所以:

    ​ 因此,L(q)又被称为变分下界(Evidence Lower Bound,ELOB)。回到最开始,我们的目标是最大化似然函数,现在我们也可以最大化提高变分下界。其中, 是包含函数q(Z)的泛函,所以,问题转化为一个泛函优化问题。从而可以考虑采用梯度下降法来最大化变分下界。现在,我们的任务就变成了选择一个合适的q(Z)来逼近p(Z|X)。从而减小KL距离,也就是提高变分下界。

    以上大概就是变分推断的内容。接下来说的是VAE。

  • VAE

    ​ 前面说到,进行变分推断时,需要选择一个合适的q(Z)来逼近p(Z|X),在VAE中,将q(Z)构造成为一个包含编码参数φ的后验概率分布函数:

    而且是一个高斯分布函数,即:

    其中,高斯函数的均值和方差都是关于x和φ的函数。带入上述变分下届中,可得VAE的变分下界为:

    其中,φ、θ分别分表示自编码器的编码、解码网络层参数。而且在上试中,第一项可以衡量近似后验分布函数与先验分布的相似度,可以防止过拟合。第二项是对数似然估计,也就相当于自编码器的重构误差损失函数,用于重构原始数据。这样q(z|x)相当于编码过程,p(x|z)相当于解码过程。直观理解就是,利用q(z|x)将原始数据X编码成为隐变量Z,并且生成的隐变量的分布p(Z)限制为高斯分布,这就是第一项的直观作用。同时,在隐变量Z先验分布p(Z)中采样,根据条件概率分布p(x|z)对样本进行采样,实现类样本数据的生成。

    ​ 现在有了变分下界似然函数,为了用梯度下降(或者梯度上升)最大化该函数,需先进行求导。求导过程并不简单。。。

    • 变分下界第一项求导

      其中已知函数p(z)是先验正态分布函数:

      分为两项进行分别推导:
      \begin{split} \int q_\phi(z|x)log\ p_\theta(z)dz&=\int N(z;u,\sigma^2)log\ N(z;0,1)dz\\ &=E_{z\sim N(u,\sigma^2)}[log\ N(z;0,1)]\\ &=E_{z\sim N(u,\sigma^2)}[log(\frac{1}{\sqrt{2\pi}}e^{\frac{z^2}{2}})]\\ &=-\frac{1}{2}log\ 2\pi-\frac{1}{2}E_{z\sim N(u,\sigma^2)}[z^2]\\ &=-\frac{1}{2}log\ 2\pi-\frac{1}{2}(u^2+\sigma^2) \end{split}

      \begin{split} \int q_\phi(z|x)log\ q_\phi(z|x)dz&=\int N(z;u,\sigma^2)log\ N(z;u,\sigma^2)dz\\ &=E_{z\sim N(u,\sigma^2)}[log\ N(z;u,\sigma^2)]\\ &=E_{z\sim N(u,\sigma^2)}[log(\frac{1}{\sqrt{2\pi\sigma^2}}e^{\frac{(z-u)^2}{2\sigma^2}})]\\ &=-\frac{1}{2}log\ 2\pi-\frac{1}{2}log\ \sigma^2-\frac{1}{2\sigma^2}E_{z\sim N(u,\sigma^2)}[(z-u)^2]\\ &=-\frac{1}{2}log\ 2\pi-\frac{1}{2}(log\ \sigma^2+1) \end{split}

      所以:

      其中,u与σ是关于x与参数φ的函数,所以链式求导法则,可求得对编码层参数φ的导数。进一步也就可以通过BP算法对参数进行更新。

    • 变分下界第二项求导

      其中,

      对于第二项的求导相对较为麻烦,通常求复杂积分期望问题采用的MC算法,由于不可微,导致无法求导或者出现较大偏差,所以不可用。为此,论文引入最厉害的 "reparameteriation trick",实现参数变化,使得求导变得可微,具体参数变化的目的可参照博客 https://blog.csdn.net/hjimce/article/details/57082788,这也是我的主要参考文献之一。

      这里,我直接推导VAE中L2参数变换:

      因为:

      进行参数变化,上面的分布函数等价于:

      由于u,σ是关于自变量x的复合函数的输出,所以也就等价于:

      所以对于任意的随机变量z,其函数f(z)的期望就等于:

      对于L2项:

      可以做如下等价变换:

      到此,对于变分下届的推导变形完全结束,得到的新的变分下界可微可导可BP。最后,批量梯度下降算法SGVB如下:

      1544017814449.png

      整个VAE框架大致如下:
      1544017993011.png

​ 最后,代码实现(pytorch):

​ Basic VAE Example

Information Bottleneck

​ 前面的内容主要对变分推断以及VAE相关知识进行简单的总结与回顾。接下来说一下信息瓶颈(information Bottleneck)。信息瓶颈的概念最早出现并在理论神经科学中应用。在机器学习中关于信息论的内容基本是用entropy, cross-entropy, KL divergence,mutual information 之类的概念来定义损失函数或者正则项,这样应用信息论只是粗略地利用这些概念的物理直觉,而并未触及信息论的本质。而 Tishby将information Bottleneck与机器学习相结合,他的主要观点是:Learning theory 其实是信息论中的rate-distortion theory。

​ 在介绍Rate-distortion Theory之前,首先说明一个概念,Mutual information(互信息),下面是wiki上的定义:

​ In probability theoryand information theory, the mutual information (MI) of two random variables is a measure of the mutual dependence between the two variables. More specifically, it quantifies the "amount of information" (in units such as shannons, commonly called bits) obtained about one random variable through observing the other random variable. The concept of mutual information is intricately linked to that of entropy of a random variable, a fundamental notion in information theory that quantifies the expected "amount of information" held in a random variable.

Not limited to real-valued random variables like the correlation coefficient, MI is more general and determines how similar the joint distribution is to the products of factored marginal distribution . MI is the expected value of the pointwise mutual information (PMI).

大概的意思就是,X与Y之间的MI表示通过观察 X 能够获得关于 Y 的信息的量化表示,符号表示为.另一种理解方式是知道一个变量之后,另一个变量不确定性的减少量。MI越大,不确定性越小。MI越小则不确定性越大。当X与Y独立时,等于0. 有了Mutual information概念后,就可以引入Rate-distortion Theory了。

​ Rate-distortion Theory是Shannon提出的有损压缩的基本理论。大致的意思是说在压缩信息源的时候,一方面我们需要用尽可能短的比特数表达信源,另一方面我们需要在信息重建时达到尽量小的distortion。这两个目标是相互矛盾的。Rate distortion theory 告诉我们,这个问题的数学本质是解一个优化问题:最小化信源X与重建信号Y之间的mutual information I(X; Y) (对应于比特数), subject to a distortion constraint。 这个问题可以用 Lagrange multiplier 来formulate, 再用alternating minimization的方法来做优化就可以导出经典的 Blahut-Arimoto Algorithm. (这个算法跟K-means 和EM clustering of Gaussian Mixture 很接近,也可以理解为它们的一种泛化。)

​ 终于,可以说到information Bottleneck了。information Bottleneck是Rate-distortion Theory的一个应用或特例。和之前一样,我们希望将X尽可能的压缩到T,同时满足两个要求:第一,尽可能压缩掉样例 X 中跟学习 目标 Y (比如要预测的 class label)不相关的信息,第二是尽量减小用 T 构建目标 Y 的 distortion。压缩程度用X与T的MI来表示,即. 而distortion用负的Y与T的MI表示,即. 把这两个目标一个做优化目标,一个做正则约束, 再用Lagrange multiplier就构造出了 I(X;T)-β I(Y;T) 这样的最小化优化问题,同样也可以导出一个类似于Blahut-Arimoto Algorithm 的迭代算法。直观上理解,就是存在一个tradeoff,第二项为了找到X中与Y中最相关的信息;而第一项是为了让这个相关信息越少越好。所以最终得到的结果就是,找到X中与Y最相关的信息。

​ 在此基础上,Tishby 认为 I(Y;T) 可以理解为一种机器学习的performance metric, 而I(X; T) 可以理解为regularizer 负责控制模型的复杂度。

​ 以上,大概就是Information bottleneck的内容。。。

第二部分 Deep Vib

​ 千呼万唤始出来。。。终于到了我们的Deep Vib,深度变分信息瓶颈。有了前面的VAE,Variablal Inference以及Information Bottleneck的基础,Deep Vib理解起来就没有难度了。

​ 在Information Bottleneck中,假设我们将输入数据X编码为Z,通常情况下,将这个过程定义为带参数的model(encoder),形式化表示为. 在有监督学习任务中,我们希望最大化编码信息 Z 与 labe Y之间的MI(互信息),这样就可以利用编码信息 Z 来完成分类任务。所以目标函数如下:

但是根据Rate-distortion Theory,还需要一个正则项来限制复杂性。论文中用编码信息 Z 与 源数据 X 之间的MI来作为正则项。从而,最终的优化(最大化)目标为:

其实这个优化目标就是前面所说的Information Bottleneck的直接使用。只不过与Information Bottleneck原文中的正则项与损失函数进行了互换。所以,这不是这个论文中的重点。

​ 本文的重点或者创新点在于引入了变分近似法,同时,变分近似法的使用使得我们可以使用神经网络来确定参数,以及VAE中的reparameterization的trick也可以使用。

​ 反观上面的优化目标,由于p(y|z)与p(Z)不可计算,所以引入了q(y|z)与r(Z)来进行变分近似。从而得到最终的优化目标为原优化目标的变分下界。以下为具体的推导:

对于第一项,由于:

因此,可得:

注意到H(Y)与我们的优化目标无关,所以忽略不计。

进一步,由Morkov chain (Y--X--Z),以及边缘概率密度公式,可得:

到此为止,对于第一项的变分近似,我们只需要联合数据分布的样本,以及来自可处理的变分近似q(y|z)的随机编码器的样本。

接着第二项,同样的方法,使用r(Z)来变分近似p(Z):

结合两项可得新的变分下界为:

经验估计:

最后:

以上,就是Deep VIB的内容,最后贴一点代码:

pytorch

tensorflow

Reference:

[1]https://blog.csdn.net/hjimce/article/details/57082788

[2]如何评价 Tishby 的打开深度学习黑箱的 Information Bottleneck 理论? - 月光宝盒娱乐频道的回答 - 知乎 https://www.zhihu.com/question/65697409/answer/294041505

[3]http://shaofanlai.com/post/67

你可能感兴趣的:(DEEP VARIATIONAL INFORMATION BOTTLENECK)