论文精读-NICE-2014


NICE: NON-LINEAR INDEPENDENT COMPONENTS ESTIMATION

  • 杂志: ICLR 2015
  • IF: None
  • 分区: None

Introduction

  1. 深度学习实际上是一个表示学习,自然带出一个问题:

    什么是好的表示?

    基于最近的研究【Kingma and Welling, 2014; Rezende et al., 2014; Ozair and Bengio, 2014】,本研究认为:

    一个好的表示意味着数据的分布容易被建模。

  2. 本研究希望能够学习一个transformation(随机变量函数)\(h=f(x)\),可以将数据映射到新的空间,而在新的空间中各成分是独立的:

    \[p_H(h)=\prod_{d}{p_{H_d}(h_d)}\]

    如果\(f\)是可逆的(invertible)并且输入维度和输入维度相同,则可以得到:

    \[p_X(x)=p_H(f(x))|\det \frac{\partial f(x)}{\partial x}|\tag{1}\]

    根据此公式我们可以计算给定\(x\)的概率密度(Inference)。


    如果\(f\)的逆映射我们可以得到,则对\(X\)进行采样(sample),就可以以下面的形式进行:

    \[h\sim p_H(h),\quad x=f^{-1}(h)\tag{2}\]

    而我们进行训练可以以下面的方式,应用极大似然法(learning):

    \[\max_{f}{\log(p_X(x))}=\max_{f}\{\log(p_H(f(x)))+\log(|\det(\frac{\partial f(x)}{\partial x})|)\}\tag{3}\]

  3. 本研究的贡献在于,经过特殊的设计,可以通过NN来拟合\(f\),并且其计算雅克比行列式和\(f^{-1}\)非常方便。

相关研究

  • DBM【Salakhutdinov and Hinton, 2009】,需要使用MCMC采样,而且无法获得明确的log-likelihood的估计。就算是使用已知最好的技术——annealed importance sampling(AIS)【Salakhutdinov and Murray, 2008】也会过度乐观【Grosse et al., 2013】。

  • 至于有向图模型,VAE【Kingma and Welling, 2014; Rezende et al., 2014; Mnih and Gregor, 2014; Gregor et al., 2014】得到了极大的发展。

    但VAE使用的是log-likelihood的变分下界,其得到的可能是一个次优解,使得生成的结果带有更多的噪声,看起来不太自然。

    实际上,NICE可以看做是一类特殊的VAE。其中的encoder是\(f\),decoder是\(f^{-1}\),其KL散度项就是\(\log(p_H(f(x)))\),其entropy项就是\(\log(|\det\frac{\partial f(x)}{\partial x}|)\),反应的是在每一点上局部概率的“膨胀比例”。

  • ICA【Hyvarinen and Oja, 2000】

  • 【Rippel and Adams, 2013】提出了学习这些transformations的想法,但因为没有使用双射,所以被迫使用一个带有regularization的AEs来解决的。

  • GAN

  • triangular structure在另外一类density models也出现过——neural autoregressive networks【Bengio and Bengio, 2000】,其最近的成功是NADE【Larochelle and Murray, 2011】。

    但作为一个自回归模型,其在采样的时候是无法并行化的,从而使得其在高维数据上应用有限。


Methods

学习

这里对learning的过程再进行一下解释。

分布\(p_H(h)\)这里称为prior distribution,如果其实factorial(各个维度是独立的),则此时公式3的估计称为non-linear independent components estimation(NICE)

\[\max_{f}{\log(p_X(x))}=\max_{f}\{\sum_{d=1}^D\log(p_{H_d}(f_d(x)))+\log(|\det(\frac{\partial f(x)}{\partial x})|)\}\tag{4}\]

我们将后面的Jacobian determinant部分看做是一个正则化项,则作用是:使得函数\(f\)在数据点出现的位置有更高的密度增长,因为\(p_H(h)\)是预先固定的,则\(f\)变化将把数据点都推到有更高概率密度的地方

架构

这里将\(f\)称为encoder、将\(f^{-1}\)称为decoder。

我们先聚焦于单个layer的计算,此时我们的目标有两个:构造一个双射函数、其Jacobian determinant好算。

这两者也是相关的,如果我们构造的Jacobian matrix是可逆的,则函数也就是双射的。

仿射变换

最早的想法是layer是一个affine transformation(线性的,就是乘以一个矩阵\(W\))。

这样一个affine transformation的Jacobian matrix就是\(W^T\),为了让这个矩阵的行列式好算,可以让这个\(W\)是对角、上三角、下三角矩阵。

当我们堆叠多层的时候,上三角、下三角矩阵的相乘也能够覆盖一部分普通的square matrix。

但总的来说,这种方法能够拟合的函数只是线性的,而且也只是线性函数的一部分。

现在我们进一步推广上面的想法,我们现在去考虑这样一组函数,其Jacobian是上三角或下三角即可。

耦合层

\(x\in\mathcal{X}\)\(I_1\)\(I_2\)是index \([1,D]\)的一个划分,其中\(d=|I_1|,\)\(m\)是定义在\(\mathbb{R}^{d}\)上的一个任意函数。现在我们定义\(y=(y_{I_1},y_{I_2})\)

\[ y_{I_1} = x_{I_1} \\ y_{I_2} = g(x_{I_2};m(x_{I_1})) \]

其中\(g:\mathbb{R}^{D-d}\times m(\mathbb{R}^d)\to\mathbb{R}^{D-d}\)称为general coupling law,给定第二个参数(\(m(x_{I_1})\))后,这个函数是对于第一个参数(\(x_{I_2}\))可逆的。

我们可以计算这个函数的Jacobian matrix:

\[ \frac{\partial y}{\partial x} = \begin{bmatrix} I_d & 0 \\ \frac{\partial y_{I_2}}{\partial x_{I_1}} & \frac{\partial y_{I_2}}{\partial x_{I_2}} \end{bmatrix} \]

其中\(I_d\)\(d\)维的单位矩阵。我们发现,\(\det \frac{\partial y}{\partial x}=\det\frac{\partial y_{I_2}}{\partial x_{I_2}}\)

另外,也容易验证,该映射\(y=f(x)\)是可逆的,其逆映射是:

\[ x_{I_1}=y_{I_1} \\ x_{I_2}=g^{-1}(y_{I_2};m(y_{I_1})) \]

我们称呼这是一个带有coupling function \(m\)的coupling layer。


加性耦合层

为了简单,我们直接使用additive coupling law \(g(a;b)=a+b\),则这时候我们得到了最常见到的形式:

encoder:

\[ y_{I_1} = x_{I_1} \\ y_{I_2} = x_{I_2}+m(x_{I_1}) \]

decoder:

\[ x_{I_1}=y_{I_1} \\ x_{I_2}=y_{I_2}-m(y_{I_1}) \]

逆映射和正映射的计算量是相同的。

另外,其Jacobian determinant是1。

这时,我们可以令\(m\)是一个从\(d\)维向量映射到\(D-d\)维向量的NN。

其实,还有其他很多coupling law可以选择,比如:

  • multiplicative coupling law :

    \[g(a;b)=a\odot b\]

  • affine coupling law:

    \[g(a;b)=a\odot b_1+b_2\]

当然,additive coupling因为其简单,稳定性更好。

结合多个coupling layers

因为有一部分维度的数据是不变的,所以我们需要组合多个coupling layers、并且在不同layers间划分的两部分数据所扮演的角色。至少需要3层coupling layers,一般来说要用4层。

组合之后,整个网络的Jacobian determinant也是1,也就是说保持体积的。但注意到,尽管我们使用的数据有\(D\)维,但很多维度可能是冗余的,所以在我们进行encoder的时候也保持这个维度,会浪费很多维度,使得效果不好。

解决方法是每个维度再乘以一个可训练的缩放系数\(h=s\cdot f(x)\),这样整个映射依然是可逆的,但模型可以自动进行维度的“缩放”,如果\(h\)的某个维度不重要,则该维度的缩放系数会趋于无穷大,使该维度失效。

此时,我们的极大似然估计也需要进行一定的改变:

\[\max_{f}{\log(p_X(x))}=\max_{f}\{\sum_{d=1}^D[\log(p_{H_d}(s_df_d(x)))+\log(s_d)]\}\tag{5}\]

尺度变化参数的另一个理解:

如果我们使用的prior distribution是独立的标准正态分布,则其方差都为1。但我们也可以让其方差不为1,而是一个可训练的参数。此时这个可训练的方差参数和上面的尺度参数是一个东西(尺度参数是方差参数的倒数)。

当尺度参数趋于无穷大的时候,方差趋于0,此时该维度的正态分布坍缩为一个单点,也就意味着减小了一个维度。就算不使该维度坍缩,但仅仅是降低其方差也意味着该维度信息量的降低。

先验分布

介绍了2种先验分布:

  • gaussian distribution
  • logistic distribution

本研究使用的是logistic distribution,其拥有更好的梯度特性。

Results

使用的数据集:


首先需要对其进行连续化(加上一个1/256均匀分布的噪声,然后将数据归一化到0——1,对于CIFAR-10是1/128和-1——1)

网络架构:


其中\(I_1\)是奇数,\(I_2\)是偶数。\(m\)是5层的nn,其中最后一层不加ReLU激活。对于MNIST,hidden units是1000,对于TFD是5000,对于SVHN和CIFAR-10是2000。

prior distribution是logistic distribution。

训练使用的是Adam,lr=\(10^{-3}\),momentum是0.9,\(\beta_2=0.01,\lambda=1,\epsilon=10^{-4}\)。1500个epochs后在valid data上通过log-likelihood选择最好的model。

结果如下:


下面是NICE的采样:


Inpainting任务

这里使用一个训练好的模型,然后进行projected gradient ascent,其方式如下:

  1. 观察到的数据是\(x_O\)

  2. 使用下面的公式进行迭代:


  3. 将最后得到的\(x_H\)使用模型映射回\(x\),得到填补好的图片。

下面是结果:


Conclusion

  1. 当前模型的架构似乎可以整合更多归纳信息,比如toroidal subspace analysis(TSA)【Cohen and Welling, 2014】。

Questions


文章作者: Luyiyun
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Luyiyun !
评论
评论
 上一篇
论文精读-使用GCN对癌症进行分类-2020 论文精读-使用GCN对癌症进行分类-2020
本研究探索了使用GCNs进行TCGA癌症分类的可能性,使用的网络出了PPI外还有co-expression。
2020-09-13
下一篇 
论文精读-Transformer-2017 论文精读-Transformer-2017
本研究提出了Transformer——一个输入序列、输出序列的encoder-decoder架构。其创新之处在于使用self-attention和point-wise来代替了传统的CNNs或RNNs来处理序列,提高了并行能力。
2020-09-08
  目录