2016-ICML-Pixel Recurrent Neural Networks

1. 摘要

这篇文章[1]主要提出通过自回归的方式来建模自然图像的统计分布,将整张图像的概率分布表示成一系列条件分布的乘积。对自然图像的统计分布建模是无监督学习的标志性任务,这项任务要求图像模型同时具有表现力、可处理性和可伸缩性。作者们提出了一种可以序列处理图像像素模型,该模型对原始像素值的离散概率建模。模型架构的创新包括提出了一种快速的二维循环层,和有效地在模型中使用残差连接。本文提出的模型在自然图像数据集上达到了对数似然分数的 SOTA,并超出之前的 SOTA 很多。使用本文提出的模型进行图像样本生成,可以产生清晰连贯且多种多样的图像内容。

2. 引言

生成图像的建模是无监督学习中的核心问题。概率密度模型可以用于一系列的下游任务,诸如图像压缩、图像修复、图像去模糊等。然而,由于图像数据的高维化和高度结构化,估计自然图像的分布是极其具有挑战性的。

生成建模的一大重要阻碍是构建复杂且具有表现力的模型,同时要求其具有可处理性和可伸缩性。基于 VAE 的模型主要聚焦于随机隐变量建模,旨在能够提取出有意义的表示;但 VAE 中难以处理的推断步骤经常导致性能不佳。

一种有效的建模可处性的模型是将图像的所有像素建模为一个联合分布,然后根据条件概率的链式法则将联合分布拆成一系列条件分布的乘积。这样便将联合分布建模问题转变成一个序列问题,即每次根据前面已知的像素建模下一个未知的像素。

RNN 刚好适和这种序列问题。因此,作者在本文中提出了一种二维 RNN 并将它们用于自然图像的大规模建模中,即 PixelRNN。作者基于强大的 LSTM 层,设计了两种新的二维层:Row LSTM 和 Diagonal BiLSTM。作者同时在模型中加入了残差连接。

此外,作者还设计了一个简化版的模型,即 PixelCNN。PixelCNN 使用了掩码卷积,其只考虑局部依赖故可以做到并行处理。

3. 模型

3.1 问题建模

对每张 n×nn \times n 的图像 x\mathbf{x},指定概率分布 p(x)p(\mathbf{x}),将图像像素数据展开成一维的序列数据 x1,,xn2x_1, \cdots, x_{n^2}。根据条件概率的链式法则,可以将概率分布 p(x)p(\mathbf{x}) 表示为:

p(x)=i=1n2p(xix1,,xi1)(1)p(\mathbf{x})=\prod_{i=1}^{n^{2}} p\left(x_{i} \mid x_{1}, \ldots, x_{i-1}\right) \tag{1}

由于每个像素都由 RGB 三个值组成,因此条件分布 p(xix<i)p(x_i | \mathbf{x}_{<i}) 可以表示为:

p(xix<i)=p(xi,Rx<i)p(xi,Gx<i,xi,R)p(xi,Bx<i,xi,R,xi,G)(2)p(x_i | \mathbf{x}_{<i}) = p\left(x_{i, R} \mid \mathbf{x}_{<i}\right) p\left(x_{i, G} \mid \mathbf{x}_{<i}, x_{i, R}\right) p\left(x_{i, B} \mid \mathbf{x}_{<i}, x_{i, R}, x_{i, G}\right) \tag{2}

3.2 PixelRNN

作者提出了基于 Row LSTM 和 Diagonal BiLSTM 的 PixelRNN,以及简化版的 PixelCNN。其大致结构如下:

具体用数学化公式表示,以 Row LSTM 为例,其描述如下:

\begin{align*} {\left[\mathbf{o}_{i}, \mathbf{f}_{i}, \mathbf{i}_{i}, \mathbf{g}_{i}\right] } &=\sigma\left(\mathbf{K}^{s s} \circledast \mathbf{h}_{i-1}+\mathbf{K}^{i s} \circledast \mathbf{x}_{i}\right) \\ \mathbf{c}_{i} &=\mathbf{f}_{i} \odot \mathbf{c}_{i-1}+\mathbf{i}_{i} \odot \mathbf{g}_{i} \\ \mathbf{h}_{i} &=\mathbf{o}_{i} \odot \tanh \left(\mathbf{c}_{i}\right) \tag{3} \end{align*}

其中,hi1h_{i-1}ci1c_{i-1} 都是 h×n×1h \times n \times 1 维向量,\circledast 表示卷积,\odot 表示按元素乘积,σ\sigma 为激活函数,Kss\mathbf{K}^{s s}Kis\mathbf{K}^{i s} 分别为 state-to-state 和 input-to-state 核权重。

对于 Diagonal BiLSTM,其沿着对角可以调整为并行处理的方法:

此外,作者在每层 LSTM 都使用了残差连接,如下图所示:

同时,作者还在每层和最终的输出之间加上了跳线连接。

PixelRNN 的模型架构如下表:

3.3 PixelCNN

由于 PixelRNN 需要序列地处理图像像素数据,且每次处理都要基于前面所有结果,无法并行,效率低下。作者便提出了简化版的 PixelCNN,其利用掩码卷积,只考虑局部的依赖关系,因此可以并行处理。掩码卷积的大致结构见下节图右。

3.4 多尺度

作者还提出了多尺度 PixelRNN,来更好的进行图像表示:

4. 实验

作者分别在 MNIST 数据集和 CIFAR-10 数据集上进行了 NLL 指标的对比,如下表:

5. 可视化

作者分别对在 CIFAR-10 和 ImageNet 上训练得到的模型进行样本图像生成,其可视化结果如下:

6. 总结

作者提出了 PixelRNN,以自回归的方式对自然图像进行建模。基于 LSTM,作者提出了两种二维 LSTM 用于更好地建模图像分布。同时针对自回归模型效率低下的问题,提出了只考虑局部依赖的 PixelCNN,以轻微的性能代价换取并行处理的高效率。

附录

  1. Van Oord, A., Kalchbrenner, N., & Kavukcuoglu, K. (2016, June). Pixel recurrent neural networks. In International conference on machine learning (pp. 1747-1756). PMLR.