【生成模型】Pixel Recurrent Neural Networks翻译

Pixel Recurrent Neural Networks

目前主要在用的文档存放: https://www.yuque.com/lart/papers/prnngit

github存档: https://github.com/lartpang/Machine-Deep-Learninggithub

image.png

介绍

  • Google DeepMind
  • generative model

引言

生成图像建模是无监督学习中的核心问题。 在无监督学习中,天然图像的分布建模是一个具备里程碑意义的问题。此任务须要一个图像模型,它同时具备表现力、可伸缩和可扩展性。算法

几率密度模型可用于各类各样的任务,从图像压缩和重建外观,例如图像修复和去模糊,到新图像的生成。当模型之外部信息为条件时,可能的应用还包括_基于文本描述建立图像_或_在有计划的任务中模拟将来帧_。生成建模的一大优点是能够从中学习无穷无尽的图像数据。然而,由于图像是高维和高度结构化的,因此估计天然图像的分布是极具挑战性的网络

对于生成模型一个最重要的阻碍是构建复杂而具备表现力的可跟踪的和可扩展的模型。这种权衡致使了各类各样的生成模型,每种模型都有其优点。大多数工做关注随机隐变量模型,例如VAE旨在提取有意义的表示,但每每会出现一个难以推断的推理步骤,这会阻碍他们的表现。一种有效的方法是可跟踪地模拟图像中的像素的联合分布,把它看做是条件分布的乘积。这个方法已经应用在了自回归模型,例如NADE和fully visible neural networks。因式分解(factorization)将联合建模问题转化为序列问题,在这个问题中,给定全部先前生成的像素,学习预测下一个像素。但要对像素之间的高度非线性和长程相关性进行建模,而且复杂的条件分布致使必须创建高度表现力的序列模型。递归神经网络(RNN)是一个强大的模型,提供了一系列条件分布的紧凑的又共享的参数化表示。RNNs已被证实擅长硬序列问题(hard sequence problems),从手写生成,字符预测和机器翻译。二维RNN已经在建模灰度图像和纹理上产生了很是有前途的结果。架构

PixelRNN

本文提出了二维 RNNs,并将其应用于天然图像的大规模建模。由此产生的 PixelRNNs 由多达 12 个快速的二维LSTM层组成。这些层使用LSTM单元在他们的状态上,并采用卷积,沿着数据的空间维度之一,来计算一次全部的状态。咱们设计了两种类型的图层。第一种类型是Row LSTM层,该层沿每一行应用卷积。第二种类型是对角线BiLSTM(Diagonal BiLSTM)层,其中卷积是沿图像的对角线以新颖的方式应用。该网络还把残余链接用在LSTM层周围;咱们观察到,这有助于为多达12层的PixelRNN的训练。函数

文章提出了一种深度神经网络,该网络沿着两个空间维度依次预测图像中的像素。该方法建模原始像素值的离散几率,并编码图像中的完整依赖集合。架构创新包括快速二维递归层和在深层递归网络中有效使用残余链接。工具

PixelCNN

咱们还考虑了第二个简化的结构,它与PixelRNN共享相同的核心组件。咱们观察到卷积神经网络(CNN),经过使用蒙版卷积(Masked Convolutions),也能够做为有着固定依赖范围的序列模型性能

PixelCNN架构是一个由15个层组成的全卷积网络,保留其输入在各层的空间分辨率,并在每一个位置输出条件分布。学习

Both

  • 两者捕获像素间依赖关系的完整通用性(capture the full generality),而不须要引入如_潜在变量模型_里的独立假设。依赖关系也保持在每一个像素内的RGB颜色值之间。
  • 此外,与之前的建模像素为连续值的方法相比,咱们使用一个简单的softmax层实现的多项式分布将像素建模为离散值。咱们观察到,这种方法为咱们的模型提供了可表示性的和训练优点。

本文的贡献以下:测试

  1. 咱们设计了两种类型的PixelRNN,对应于两种类型的LSTM层;
  2. 咱们描述了纯卷积PixelCNN,这是咱们最快的架构;
  3. 咱们设计了一个多尺度的PixelRNN版本
  4. 咱们展现了在模型中使用离散softmax分布以及为LSTM层采用残余链接的相对好处。
  5. 接下来,咱们在MNIST和CIFAR-10上测试模型,并代表它们得到的对数似然分数比之前的结果要好得多。
  6. 咱们还提供了在大规模ImageNet数据集(大小为32×32和64×64像素)上的结果;据咱们所知,生成模型的似然值之前没有在此数据集上报告过。
  7. 最后,咱们给出了从PixelRNNs生成的样本的定性评价。

建模

image.png

咱们的目标是估计天然图像的分布,能够用来跟踪计算图像的似然,并产生新的。网络一次扫描图像一行,每一行中一次扫描一个像素。对于每一个像素,它预测在给定扫描上下文的可能像素值的条件分布。图2说明了此过程。将图像像素的联合分布分解为条件分布的乘积。预测中使用的参数在图像中的全部像素位置共享。

为了捕捉生成过程,Theis & Bethge(2015)建议使用二维LSTM网络,从左上角的像素开始,而后向右下角的像素前进。LSTM网络的优势是它有效地处理了对对象和场景理解相当重要的长程依赖关系。二维结构保证了信号在从左到右和从上到下的方向都很好地传播。

分布

目标是将几率p(x)分配给由 n×n 像素组成的每一个图像 x。咱们能够将图像x做为一维序列 x1,...,xn2,其中像素是从图像逐行提取。为了估计联合分布 p(x),咱们把它写成像素上条件分布的乘积:

image.png

值 p(xi | x1,…,xi-1)是 i-th 像素的几率x(给定全部之前的像素 x1,…,xi-1)。生成将按行进行,并按像素进行像素。图2(左)说明了条件的状况方案。

每一个像素xi依次由三个值共同肯定,每一个颜色通道分别为红色、绿色和蓝色 (RGB)。咱们重写分布 p(xi | x<i) 做为如下乘积:

image.png

所以,每种颜色都取决于其余通道以及先前生成的全部像素。

请注意,在训练和评估期间,在像素值上的分布并行计算,而图像的生成是连续的
之前的方法使用图像中的连续分布的像素值。相比之下,咱们将 p(x) 建模为离散分布,

image.png

方程 2 中的每一个条件分布都是一个用 softmax 层建模的多项式。每一个通道变量 xi,* 只须要 256 个不一样的值之一。离散分布表示简单,具备任意多模态而没有形状先验的优势(见图 6)。实验发现相比连续分布的设定,离散分布是容易学习,更容易产生更好的性能。

Pixel Recurrent Neural Networks

Row LSTM

行 LSTM 是一个单向层,它每次从上到下逐行处理图像,为每行计算特征;计算使用一维卷积执行。对于像素 xi,该层捕获像素上方的三角形的上下文区域,如图4中心所示。一维卷积的核具备 k×1 的大小,其中 k≥3;k的值越大,捕获的上下文区域越宽。卷积中的权重共享可确保计算特征沿每一行的平移不变性。

计算结果以下。LSTM 层有一个_input-to-state_组件和一个循环_state-to-state_组件,它们一块儿肯定LSTM核心内部的四个门

仔细想来,LSTM中的门实际上作的也就是input-to-statestate-to-state**的计算。

为了加强 Row LSTM 中的并行化,首先对整个二维输入图计算_input-to-state_组件;为此,k×1 卷积用于沿着 LSTM 自己的行的方向。卷积被掩盖(masked)只包括“合理”的上下文 (见 3.4 节),并产生大小 4h×nxn 的张量,表示输入映射中每一个位置的四个门向量(看来四个门是学习模拟出来的,真实并不存在),其中 h 是输出特征图的数量。

为了计算 LSTM 层的 state-to-state 组件的一步,须要给出之前的隐藏状态和细胞状态格状态 hi-1 和 ci-1,每一个大小为 h×n×1 的新的隐藏和细胞状态 hi,ci 能够由下式所得:

image.png 

其中 h×n×1 大小的 xi 是输入图的行 i,而且  表示卷积运算和元素乘法。权重 Kss 和 Kis 是state-to-state和input-to-state组件的核权重,如前所述。

在输出,忘记和输入门为 oi,fi 和 ii 的状况下,激活 σ 是 logistic sigmoid 函数,而对于内容(上下文)门 gi,σ 是 tanh 函数。

不一样门的权重同样么?

image.png

每一个步骤一次为输入图的整行计算新状态。因为 Row LSTM 具备三角形感觉野(图4),所以没法捕获整个可用上下文。

Diagonal BiLSTM

对角 BiLSTM 的目的是并行计算和捕获任何图像大小的整个可用上下文。每一个层的两个方向都以对角线方式扫描图像,从顶部的一个角开始,并到达底部的相反角。计算中的每一个步骤一次计算图像中沿对角线的 LSTM 状态。图 4右说明了该计算和由此产生的感觉野。

对角计算以下:

  1. 咱们首先将输入图倾斜映射到另外一个空间,使它很容易沿对角线应用卷积。倾斜操做将输入图的每一行相对于上一行偏移一个位置,如图 3 所示;这致使一个大小为 n×(2n-1) 的映射。
  2. 此时,咱们能够计算对角 BiLSTM 的input-to-state和state-to-state组件。对于两个方向,input-to-state组件只是 1×1 卷积 Kis而后state-to-state的递归组件用列卷积 Kss 来计算**,它有一个大小为 2×1 的核。该步骤采用之前的隐藏状态和细胞状态,结合input-to-state组件的贡献,并生成下一个隐藏状态和细胞状态,如方程 3。
  3. 输出特征图而后经过删除偏移位置,被倾斜回一个 n×n 图。这两个方向每个都重复计算。
  4. 给定两个输出图,为了防止层看到将来的像素右输出图_左输出图

除了达到完整的依赖区域,对角 BiLSTM 具备额外的优点,它使用大小为 2×1 的卷积核,在每一个步骤处理最少的信息量,产生了高度的非线性计算。大于 2×1 的核大小并非特别有用,由于它们不会扩展对角 BiLSTM 的已有的全局感觉场

Residual Connections

image.png

咱们训练多达十二层的PixelRNN。做为增长收敛速度和更直接地经过网络传播信号的手段,咱们将残余链接从一个 LSTM 层到下一层上。图 5 显示了残余块的图。

对于 PixelRNN LSTM 层的输入图具备 2h 特征。input-to-state组件经过为每一个门生成 h 维特征来减小特征数。应用递归层后,经过 1x1 卷积将输出图上采样回每一个位置为 2h 维特征,并将输入图添加到输出图中。

这种方法与之前的方法(沿递归网络的深度使用门控)有关,但它的优势是不须要额外的门。

除了残余链接以外,还可使用从每一层到输出的可学习的跳跃链接。在实验中,咱们评估了剩余和层到输出跳过链接的相对有效性。

Masked Convolution

网络中每一个层的每一个输入位置的 h 特征分为三个部分,每一个部分对应于 RGB 通道之一。

  • 预测当前像素 xi 的 R 通道时,只使用生成的 xi 的左侧和上面的像素做为上下文。
  • 在预测 G 通道时,除了先前生成的像素外,R 通道的值也能够用做上下文。
  • 一样,对于 B 通道,可使用 R 通道和 G 通道的值。

为了将网络中的链接限制为这些依赖关系,咱们将掩码(mask)应用于_input-to-state_卷积和 PixelRNN 中的其余纯卷积层。

咱们使用两种类型的掩码,咱们用掩码 A 和掩码 B 表示,如图2右所示。

  • 掩码 A 仅应用于 PixelRNN 中的第一个卷积层,并限制与相邻像素和当前像素中已预测的的那些颜色的链接。
  • 另外一方面,掩码 B 应用于全部后续input-to-state卷积转换,并经过容许从颜色到自身的链接来放松掩码 A 的限制。

掩码能够很容易地实现,经过在每次更新后的input-to-state卷积中置零相应的权重。相似的掩码也被用于变分自动编码器。

PixelCNN 

行和对角线 LSTM 层在其感觉野内具备潜在的无边界的依赖范围。这有必定的计算成本,由于每一个状态须要按顺序计算。一个简单的解决方法是使接受野增大,但不是无界的。咱们可使用标准卷积层来捕获有界的感觉野,并计算全部像素位置的特征。

PixelCNN 使用多个卷积层来保留空间分辨率,不使用池化层。掩码在卷积中采用,以免看到将来内容;掩码之前也被用于非卷积模型,如 MADE 。

请注意,与 PixelRNN 相比,PixelCNN 的并行功能的优点仅在训练或评估测试图像时可用。图像生成过程对于两种网络都是连续的,由于每一个采样的像素须要做为输入返回到网络。

Multi-Scale PixelRNN

多尺度的 PixelRNN 由一个非条件的 PixelRNN 和一个或多个条件的 PixelRNN 组成。

无条件网络首先以标准的方式生成一个较小的 sxs 图像,该图像是从原始图像中采样的。而后,条件网络将 sxs 图像做为附加输入,生成更大的 nxn 图像,如图2中间所示。条件网络相似于标准的 PixelRNN,但每一个层都带有小 sxs 图像的上采样版本。

上采样和偏置处理定义以下。

  • 在上采样过程当中,利用具备反卷积层的卷积网络构造一个放大的 cxnxn 大小的特征图,其中 c 是上采样网络的输出图中的特征数。
  • 而后,在偏置过程当中,对于条件 PixelRNN 中的每一个层,简单地将 cxnxn 条件图映射到一个 4hxnxn 的图上,该图加到相应层的输入到状态图中;这是使用 1x1 没有掩码的卷积执行的。
  • 而后像往常同样生成较大的 nxn 图像。

模型设定

在本节中,咱们给出了实验中使用的 PixelRNNs 的规格。咱们有四种类型的网络:

  • 基于行 LSTM 的 PixelRNN
  • 基于对角 BiLSTM 的网络
  • 彻底卷积的网络
  • 多尺度网络

image.png

表 1 指定单尺度网络中的每一个层。

第一层是使用 A 型掩码的 7x7 卷积,这两种类型的 LSTM 网络使用可变数量的递归层。该层中的输入到状态卷积使用类型 B 的掩码,而状态到状态卷积不使用掩膜。Pixel CNN 使用大小为 3x3 的卷积与 B 型掩膜。而后,顶部的特征映射经过由整流线性单元(ReLU) 和 1x1 卷积组成的几个层。对于 CIFAR-10 和 ImageNet 实验,这些层有 1024 个特征图; 对于 MNIST 实验,有 32 个特征图。残余和层到输出的链接,在全部三个网络的层使用。

实验中使用的网络具备如下超参数。

  • 对于 MNIST,咱们使用一个有 7 层的对角 BiLSTM 和一个 h=16 的值(图 5 右)。
  • 对于 CIFAR-10,Row and Diagonal BiLSTMs具备 12 个层和数量 h=128 个单元。Pixel CNN 有 15 层和 h=128。
  • 对于 32x32 ImageNet,咱们采用 12 层行 LSTM,h=384 单位,对于 64x64 ImageNet,咱们使用 4 层行 LSTM,h=512 单位;后者模型不使用剩余链接。

实验

Evaluation

咱们全部的模型都是使用来自离散分布的对数使然损失函数来进行训练和评估。虽然天然图像数据一般使用密度函数的连续分布建模,可是咱们是能够用咱们的结果与之前的最优结果按照如下方式比较的.

在文献中,目前最好的作法是,当使用密度函数时, 向像素值添加实值噪声来_去量化_数据。当均匀噪声被添加(在区间 [0,1] 的值),而后连续和离散模型的对数似然直接能够比较。

在咱们的状况下,咱们可使用离散分布的值做为分段均匀连续(piecewise uniform continuous)函数,每一个间隔([i,i + 1],i = 1,2,……256)都有一个常量值.此对应的分布将具备与原始离散分布(离散数据)相同的对数似然(在添加噪声的数据上)。

  • 对于 MNIST,咱们在 nats 中报告负对数似然,由于它是文献中的常见实践。
  • 对于 CIFAR-10 和 ImageNet,咱们报告每一个维度比特的负对数似然。

总离散对数似然由图像的维数(例如,32x32x3 = 3072 CIFAR-10)来归一化。这些数字被解释为基于该模型的压缩方案须要压缩每一个 RGB 颜色值的位数; 在实践中因为算术编码, 也有一个小的开销。

Training Details

咱们的模型使用torch工具箱在 gpu 上进行训练。从不一样的参数更新规则尝试, RMSProp 给出了最佳的收敛性能,并用于全部实验。已手动设置学习率计划到每一个数据集的最高值,容许快速收敛。不一样数据集的批处理大小也有所不一样。

  • 对于较小的数据集,如 MNIST 和 CIFAR-10,咱们使用较小的批大小的 16,由于这彷佛是对模型的一个正则化。
  • 对于 ImageNet,咱们使用的批量大小为

容许的 GPU 内存; 这对应于 32 × 32 ImageNet的 64 images/batch  和 64 × 64 ImageNet的 32 图像/批处理 。

在网络的输入, 除了缩放和取图像中心,咱们不使用任何其余的预处理或加强。对于多项式损失函数,使用原始像素颜色值做为类别。对于全部的 PixelRNN 模型,咱们学习初始递归网络的状态。

Discrete Softmax Distribution

除了直观和容易实现,咱们发现,在离散像素值上使用 softmax 而不是连续像素值的混合密度方法会获得更好的结果。对于带有 softmax 的输出分布的行 LSTM 模型,在 CIFAR10 验证集上得到 3.06 bits/dim 的输出分布。对于使用MCGSM(Mixture of Conditional Gaussian Scale Mixtures)的相同模型,咱们得到 3.22 bits/dim。

在图 6 中,咱们展现了来自模型的一些softmax激活。虽然咱们不嵌入关于
256 颜色类别的含义或关系,例如像素值 51 和 52 是邻居,模型的分布预测是有意义的,而且能够是多模态,倾斜,峰值或长尾。

还请注意,值
0 和 255 常常获得一个更高的几率,由于他们更频繁出现。离散分布的另外一个优势是,咱们不担忧在区间[0,255]以外分布的部分,这是在连续分布中常要遇到的一些事情。

Residual Connections

网络的另外一个核心组件是残余链接。在表 2 中,咱们显示了在 12 层 CIFAR-10 Row LSTM 模型中,具备标准跳跃链接或有残余链接或者同时具备两者的结果。

image.png

咱们看到,使用剩余链接与使用跳跃链接同样有效; 同时使用这两个链接也是有效的并保留了优点。当使用残余链接和跳约链接时,咱们在表 3 中看到,Row LSTM 的性能随着深度的增长而提升。这能够容纳多达 12个 LSTM 层。

image.png

MNIST

虽然咱们的工做的目标是大规模建模天然图像,咱们也尝试将模型用在二值版本的MNIST上,由于这是一个良好的理智检查(sanity check),有不少之前的优秀工做在这个数据集上进行比较。在表 4 中,咱们报告了对角 BiLSTM 模型的性能和之前发布的结果。据咱们所知,这是迄今为止在 MNIST 上最好的报告结果。

image.png

CIFAR-10

image.png

接下来咱们在 CIFAR-10 数据集上测试模型。表 5 列出了咱们的模型和之前发布的方法的结果。咱们全部的结果都没有数据加强。对于所提出的网络,对角 BiLSTM 具备最佳的性能,其次是行 LSTM 和 PixelCNN。这与各自感觉野的大小相吻合: 对角 BiLSTM 有一个全局视图,行 LSTM 有一个部分遮挡的视图,Pixel CNN 在上下文中看到最少的像素。这代表有效地捕捉大的感觉野是重要的。图 7左 显示了从对角 BiLSTM 生成的 CIFAR-10 样本。

image.png

ImageNet

虽然咱们知道在 ILSVRC ImageNet 数据集上没有发布结果,咱们能够比较咱们的模型,咱们给出咱们的 ImageNet 对数似然性能在表 6 中 (没有数据加强)。

image.png

在 ImageNet 上,当前的 Pixel RNN 并无表现为过拟合, 正如咱们看到,它们的验证性能随着尺寸和深度的提升而提升。模型大小的主要约束是当前的计算时间和 GPU 内存。

请注意,ImageNet 模型一般比 CIFAR-10 图像更不可压缩。ImageNet 有更多的图像,相比于 ImageNet 图像中使用的, CIFAR-10 的图像最有可能使用不一样的算法缩放大小。ImageNet 图像不那么模糊,这意味着相邻像素的相关性较小,所以更难预测。因为下采样方法会影响压缩性能,因此咱们已经制做了使用了下采样的图像。

image.png

图 7右 显示从咱们的 32 × 32 样品, 这来自在 ImageNet 上训练的模型。图 8 显示了来自同一模型的 64 × 64 样本,而且没有多尺度调节。最后,咱们还在图 9 中展现了来自模型的图像补全样本。

image.png

总结

  • 本文将深度递归神经网络做为天然图像生成模型进行改进和构建。咱们描述了新的二维 LSTM 层: 行 LSTM 和对角 BiLSTM,这更容易扩展到更大的数据集。对模型进行训练,对原始 RGB 像素值进行建模。
  • 咱们在条件分布中使用 softmax 层将像素值视为离散随机变量。
  • 咱们使用掩膜卷积容许 PixelRNNs 模拟颜色通道之间的彻底依赖关系。
  • 咱们提出并评估了这些模型的结构改进,致使高达 12 LSTM 层的 PixelRNNs。
  • 咱们已经代表,PixelRNNs 显著改善了 MNIST 和 CIFAR-10 数据集上的最佳状态。

咱们还提供了在 ImageNet 数据集上生成图像建模的新基准。基于从模型中提取的样本和补全结果,咱们能够得出结论,PixelRNNs 能够模拟空间上局部和远程相关性,可以产生尖锐和连贯的图像。考虑到这些模型随着咱们使它们变得更大而改进,而且实际上有无限的数据可供训练,更多的计算和更大的模型可能会进一步改进结果(Given that these models improve as we make them larger and that there is practically unlimited data available to train on,more computation and larger models are likely to further improve the results.)。

疑惑

关于Diagonal BiLSTM,文中提到:

Given the two output maps, to prevent the layer from seeing future pixels, the right output map is then shifted down by one row and added to the left output map.

image.png

这里应该显示的是一个所谓的 left output map,那所谓的 right output map 也就是计算的是从右上到左下的过程,可是 right output map 向下移动一行,再加到 left output map 上,那输出尺寸不就变了么? 并且为何会认为 "seeing future pixels" ?

不理解的名词 

  • unconditional PixelRNN
  • one or more conditional PixelRNNs
  • log-likelihood performance

扩展阅读

相关文章
相关标签/搜索