论文笔记(五)【DENSITY ESTIMATION USING REAL NVP】

本文主要针对流模型中的RealNVP模型论文进行记录。

论文地址:DENSITY ESTIMSTION USING REAL NVP

非常不错的博客:苏剑林. (2018, Aug 26). 《细水长flow之RealNVP与Glow:流模型的传承与升华 》[Blog post]. Retrieved from https://kexue.fm/archives/5807

一、论文概述

摘要部分:

1、给出RealNVP的全称:real-valued non-volume preserving ,可以翻译为真实值非体积保持。这是一种转换方式,而且是稳定可逆的、可学习的。通过这种转换方式,可以实现对似然函数的准确计算,准确的采样,对潜在变量精确的推断,可以利用的潜在空间。

引言部分:

2、生成模型不仅有创造新内容的能力,而且有广泛的与重建有关的应用,如图像插值、图像去噪、图像着色和超分辨率等。

这句话的英语原文感觉特别好,Not only do generative probabilistic models have the ability to create novel content, they also have a wide range of reconstruction related applications including inpainting, denoising, colorization, and super-resolution.

3、data of interest 感兴趣的数据。

因为感兴趣的数据通常是高维并且高度结构化的,所以在这个领域具有的挑战性的的问题就是如何构建一个可以捕捉其复杂性并且可以训练的模型。

4、hierarchical 分层。

相关工作部分:

5、大量的工作重点放在通过最大似然训练模型。其中一类是通过概率无向图(probabilities undirected graphs)来进行描述,如,受限玻尔兹曼机(Restricted Boltzmann Machines,RBM),深度玻尔兹曼机(Deep Boltzmann Machines,DBM)等。

这里需要注意,受限玻尔兹曼机RBM、深度玻尔兹曼机DBM和深度置信网络DBN不同。个人理解是玻尔兹曼机发展成RBM,一个DBN由若干个RBM堆叠而成,DBN是无向和有向的结合。而DBM也是多个RBM堆叠而成,但是DBM是完全无向的模型。

这些模型通过利用二分结构的条件独立性来对潜在变量进行准确或近似的后验推断。

6、简单介绍几种分布。联合分布(joint distribution)就是同时对多个随机变量的概率分布,可以表示为p\left ( x ,y\right )

条件分布(conditional distribution)是在其中一个随机变量取值固定时,另外的随机变量的概率分布,可以表示为p(x|y)。相当于在y条件下x的概率分布。

边缘分布(marginal distribution)是在有多个随机变量时,只考虑一个随机变量的概率分布,与其它随机变量取什么值的概率无关,可以表示为p(x)。通常来说,就是累加该随机变量在各个条件下的概率,不太严谨的公式表示如下:p(x) = p(x,y_{1})+ p(x, y_{2})+ ... +p(x,y_{n})

模型定义部分

7、相比之前的NICE模型,RealNVP在公式上进行了变化,不再是简单的加法耦合,将加法和乘法结合在一起,成为更一般的仿射耦合层。文章的公式如下:

雅克比矩阵可以表示为\begin{pmatrix} I_{d}&0 \\ \frac {\partial y_{2}} {\partial x_{1}}& diag(exp(s)) \end{pmatrix}

这也就使得雅克比矩阵的对角线不再全是1,行列式的值为exp\sum s。也正是因为行列式的值不再为1,从而使得体积不再保持,这也就是真实值非体积保持(Real valued non-volume preserving)的来源。

8、diag()代表了除了对角线其余都为零的对角矩阵。

9、因为通过耦合层计算雅克比行列式的值时并没有涉及到s和t,因此s和t可以是任意复杂的函数,可以使用深度卷积神经网络进行表示。

10、映射函数的逆可以表示如下:

论文笔记(五)【DENSITY ESTIMATION USING REAL NVP】_第1张图片

 

因为在反转耦合层的时候不需要计算s和t的逆函数,因此s和t可以是任意复杂的函数。这样相当于从编码和解码两个角度证明s和t可以为任意复杂的函数,整个模型具有足够的非线性能力。

11、masked convolution,没有想到什么好的翻译,但这一小节主要讲了如何对输入x进行分组,而且是在卷积层面上进行的讲解。

首先,用卷积的前提是图像在空间维度上具有局部相关性。本身一般的图像都是可以使用卷积的,但是在流模型中,需要对x进行分组,打乱顺序输入,这样会破坏局部相关性。在一张图片中,有三个维度存在,高度、宽度、通道。前两个属于空间维度,因此要想能够使用卷积网络,能分割或打乱的就是第三个维度,通道。

在文章中,提出了两种方式:空间棋盘模式(spatial checkerboard patterns)和通道方向遮挡方式(channel-wise masking)。具体而言,棋盘mask在空间维度上对坐标轴和为奇数的标注为1,为偶数的标注0。应该就是(1,1)为偶数,(2,1)为奇数这样来标注,交错对x进行分组。通道mask则是对半分,前半部分为1,后半部分为0。通道mask的公式可以表示如下:

12、为了更加充分混合信息,相对于NICE是交错方式,将h_{1}h_{2}交换位置混合信息,RealNVP采用重新随机排序的方法,将每次得到的h_{1}h_{2}拼接成新的向量,然后重新分解输入。

13、squeezing operation,简单来讲就是reshape操作,为channel-wise mask提供前提条件,确保有足够的channel进行分割。例如将一张图片先分成2 x 2 x c大小的块,然后reshape成1 x 1 x 4c的大小,这样增加了通道数。同时,因为是因为每一块进行的reshape所以依然保留的局部相关性。要是直接reshape就整张图片打乱进行reshape,很难保证保留局部相关性。

14、多尺度框架(Multi-scale architetcure)

(1)在每一次scale(相当于一次flow运算)中,采用棋盘mask的三组耦合层 + squeezing 层 + 采用通道mask的三组耦合层 进行操作。

在最后的scale中采用棋盘mask的四组耦合层进行操作。

(2)为了减少计算量,在文章中采取了将输出分成一半,一部分直接输出,另一部分送入到下一步的flow运算的策略。相当于每一步都把输入变为了一半。

论文笔记(五)【DENSITY ESTIMATION USING REAL NVP】_第2张图片

但是有一个细节需要注意,就是最后各个z的先验分布如何去取,多尺度结构相当于产生了一个组合式的条件分布。具体讲解,可以看一开始给出的博客。

15、批归一化层(batch normalization)BN论文和权重归一化层(weight normalization)WN论文。在Real NVP中使用了BN层和WN层来进行加速,BN层是对输入的数据进行归一化处理,WN层是对参数进行处理。具体两种方式的原理和用处,之后有时间再单独整理。

实验部分

16、在论文中主要使用了残差网络结构。在CIFAR-10、CelebA和LUSN数据集上进行了实验。

二、论文感想

    RealNVP基本上完成了流模型的大体框架,加入了卷积层,可以更好地结合现在许多实用的技巧进行改进。在github上也有许多很不错的代码,接下来需要做的就是看一下Glow的论文,然后开始做实验。

 

你可能感兴趣的:(每周论文笔记)