题目
:PIXELCNN++: IMPROVING THE PIXELCNN WITH DISCRETIZED LOGISTIC MIXTURE LIKELIHOOD AND OTHER MODIFICATIONS

作者
:Tim Salimans, Andrej Karpathy 等

文章地址
:https://arxiv.org/abs/1701.05517

开源代码
:https://github.com/openai/pixel-cnn

内容整理
:杨晓璇
目录
  • 引言
  • 对 PixelCNN 的修改
    • 离散逻辑斯蒂混合似然
    • 对整个像素条件依赖
    • 下采样与空洞卷积
    • 添加快捷连接
    • 使用 dropout 进行正则化
  • 实验
    • 无条件在 CIFAR-10 上的生成实验
    • 有条件在 CIFAR-10 上的生成实验
    • 消融实验
  • 结论

引言

van den Oord 等人在 2016 年介绍的 PixelCNN 是一种图像生成模型。该模型将图像 在其所有子像素上的概率密度函数完全分解为 。条件分布 由卷积神经网络参数化并且所有共享参数。PixelCNN 是一个强大的模型,因为这些条件的函数形式非常灵活。除了图像建模,PixelCNN 还被扩展到音频、视频、文本建模。
本文对 PixelCNN 基本模型进行了大量修改,以简化其结构并提高其性能。

对 PixelCNN 的修改

离散逻辑斯蒂混合似然

标准的 PixelCNN 模型将一个子像素的条件分布指定为一个完整的 256 路 softmax。这给了模型很大的灵活性,但在内存方面也是非常昂贵的。此外,它可以使与网络参数有关的梯度非常稀疏,特别是在训练初期。在标准参数化的情况下,模型不知道 128 的值与 127 或 129 的值接近。在一个极端的情况下,一个特定的子像素值从未被观察到,模型将学习把它的概率定为零。这对于在观察到的像素上具有比通常的8比特更高的精度的数据来说,将产生问题:在观察到非常高的精度值的极端情况下,PixelCNN 将需要大量的内存和计算,同时学习速度非常慢。
因此,本文提出了一种不同的机制来计算观察到的离散像素值的条件概率。假设有一个具有连续分布的潜在颜色强度 ν,然后将其四舍五入到最接近的 8 位表示,以给出观察到的子像素值 x。通过选择一个简单的连续分布来为 ν 建模(如 Kingma 等人所做的 logistic 分布),得到了一个平滑且内存效率高的 x 的预测分布。这里,把这个连续的单变量分布看作是 logistic 分布的混合,这就可以轻松地计算出观察到的离散值 x 上的概率,如公式(2)所示。对于所有的子像素值 x ,除了 0 和 255 的边缘情况:
其中 是 logistic sigmoid 函数。对于边缘情况 0,用 替换 ,对于 255 用 替换 。
该模型遵循早期使用连续混合模型的工作(Domke 等人,2008 年;Theis 等人,2012 年;Uria 等人,2013 年;Theis 和 Bethge,2015 年),但避免了将概率质量分配给超过 [0, 255] 的无效值。此外,模型自然地为边缘值 0 和 255 分配了比它们的相邻值更高的概率,这与观察到的数据分布很好地对应,如图 1 所示。实际上,作者发现只有相对少量的混合成分,就能准确地模拟像素的条件分布。因此,网络的输出维度要低得多,产生更密集的损失梯度,这大大加快了优化过程中的收敛速度,尤其是在训练初期。
图1 CIFAR-10 中所有子像素值的边缘分布

对整个像素条件依赖

彩色图像中的像素由三个通道的实数组成。原始的 PixelCNN 在这 3 个子像素上分解生成模型。这允许非常通用的依赖结构,但它也使模型复杂化。因此改为仅以图像中向上和向左的整个像素为条件,并在预测像素的所有 3 个通道上输出联合预测分布。像素本身的预测分布可以解释为一个简单的因式分解模型:首先使用 2.1 节中描述的离散化逻辑斯蒂混合来预测红色通道。接下来,使用相同形式的预测分布来预测绿色通道。这里允许混合分量的均值线性依赖于红色子像素的值。最后,以相同的方式对蓝色通道建模,再次只允许对红色和绿色通道的线性依赖。对于图像中位置 (i, j) 处的像素 ,分布以 为条件,由混合分量和先前像素组成:
α、β、γ 标量系数取决于混合分量和先前像素。
混合分量在所有 3 个通道中共享;即生成模型首先对像素的混合分量进行采样,然后从相应的混合分量中逐个对颜色通道进行采样。如果对子像素使用单变量高斯的离散混合,而不是逻辑斯蒂函数,这将完全等同于使用具有完全协方差的 3 维高斯(离散)混合来预测完整像素。

下采样与空洞卷积

原 PixelCNN 只使用了具有小感受野的卷积。这样的卷积善于捕捉局部的依赖性,但不一定能对长距离结构进行建模。尽管捕捉这些短距离的依赖关系往往足以获得非常好的对数可能性分数,但使模型捕捉长距离的依赖关系可以明显提高生成图像的感知质量。正如 van den Oord 等人(2016a)和 Kalchbrenner 等人(2016b)所提议的,允许网络在多个分辨率下对结构进行建模的一种方法在模型中引入空洞卷积。本文建议通过使用步长为 2 的卷积来进行下采样。下采样同样实现了空洞卷积所提供的多分辨率处理,但计算成本却降低了:空洞卷积对不断增大的输入进行操作(由于零填充),而下采样在每次下采样时将输入的大小减少4倍。使用降采样的缺点是会丢失信息,但可以通过在网络中引入额外的快捷连接来弥补这一缺陷,下一节将对此进行解释。有了这些额外的快捷连接,发现降采样的性能与空洞卷积的性能是一样的。

添加快捷连接

对于大小为 32 × 32 的输入,本文建议的模型由 6 个块组成,每个块有 5 个 ResNet 层。在第一个和第二个块之间,以及第二个和第三个块之间,通过跨步卷积执行下采样。在第四和第五块之间,以及第五和第六块之间,通过转置跨步卷积执行上采样。这种下采样和上采样过程会丢失信息,因此在模型中引入了额外的快捷连接,以从模型的较低层恢复这些信息。快捷连接从第一个块中的 ResNet 层运行到第六个块中的相应层,同样在块二和块五以及块三和块四之间。这种结构类似于 Kingma 等人 (2016) 使用的具有自上而下推理的 VAE 模型,以及 Ronneberger 等人 (2015) 用于图像分割的 U-net。模型架构见图 2。
图2 模型架构

使用 dropout 进行正则化

PixelCNN 模型足够强大,可以过度拟合训练数据。此外,作者发现过度拟合的模型不仅会重现训练图像,还会生成低感知质量的图像。正则化神经网络的一种有效方法是 dropout(Srivastava 等人,2014 年)。对于本文提出的模型,在第一个卷积后的残差路径上应用标准二进制丢弃。这类似于 Zagoruyko & Komodakis (2016) 在广泛残差网络中应用 dropout 的方式。使用 dropout 使高容量模型能够成功被训练,同时避免过度拟合并产生高质量的生成。

实验

将本文的模型应用于 CIFAR-10 数据集中的自然图像建模。在对数似然方面取得了(当时)最先进的结果,并生成具有连贯全局结构的图像。

无条件在 CIFAR-10 上的生成实验

将本文的 PixelCNN 模型应用于 CIFAR-10 数据集中图像的生成建模。对于 PixelCNN 的编码部分,该模型使用由 5 个残差层组成的 3 个 Resnet 块,中间有 2×2 下采样。相同的架构用于模型的解码部分,但在块之间使用上采样而不是下采样。所有残差层都使用 192 个特征图和 0.5 的 dropout。表 1 显示了本文的模型获得的最先进的测试对数似然。图 3 显示了模型生成的一些示例。
图3 在 CIFAR-10 上训练的 PixelCNN 模型的样本
表1 CIFAR-10 上生成模型的负对数似然,单位比特/子像素

有条件在 CIFAR-10 上的生成实验

以 CIFAR-10 图像的类标签为本文的生成模型的条件。这是通过将类标签的独热编码线性投影到网络中每个卷积单元的单独的类相关偏置向量中来完成实现的。实验发现,有条件地训练模型会更难避免对训练数据的过度拟合:在这种情况下,最好的测试对数似然为 2.94。

消融实验

softmax 代替离散逻辑斯蒂混合
为了测试逻辑斯蒂混合似然的贡献,使用 256 路 softmax 作为输出分布重新运行 CIFAR-10 实验。允许每个子像素的 256 logits 线性依赖于先前子像素的观察值,系数作为模型的输出来给出。因此,本次消融实验的 softmax 似然模型比逻辑混合似然模型更灵活,尽管参数化与 van den Oord 等人(2016c)使用的参数化有很大不同。该模型现在每个像素输出 1536 个数字,描述每个子像素的 256 个潜在值的对数,以及子像素之间依赖关系的系数。图 5 显示该模型的训练速度比离散混合似然的原始模型慢。因此,对于本文的架构,逻辑混合模型显然表现更好。
图5 逻辑斯蒂混合似然模型与 softmax 似然模型的训练曲线。
连续混合似然代替离散
除了直接对图像中的离散像素值建模外,还可以通过添加来自标准均匀分布的噪声来对它们进行去量化,如 Uria 等人 (2013) 和其他人所使用的那样,并将数据建模为连续数据。生成的模型可以解释为变分自动编码器 (Kingma & Welling, 2013; Rezende et al, 2014),其中去量化像素 z 形成一个 latent,其先验分布被模型捕获。由于原始离散像素 x 可以在该模型下从 z 重建,因此通常的重建项从变分下界消失。标准均匀分布的熵为零,因此剩下的项是反量化像素的对数似然,从而提供了原始数据对数似然的变分下界。
使用与表 1 中每子像素 2.92 比特结果相同的模型设置重新运行 CIFAR-10 模型,但现在删除了似然模型中的离散化,而是向图像数据添加标准均匀噪声。生成的模型是与 Theis 等人(2012)使用的同一类的连续混合模型;Uria 等人 (2013);Theis & Bethge (2015) 等。优化后,该模型给出了每子像素 3.11 比特的数据对数似然的变分下界。显示了在似然模型中使用离散化的好处。
无快捷连接
测试模型中加入快捷连接的重要性,如图 2 中的虚线所示。重新运行无条件 CIFAR-10 实验,但从模型中删除快捷连接。如图 6 所示,如果没有这些连接,模型性能很差。需要这些额外捷径的原因可能是原模型中使用下采样,它会丢弃否则无法轻易恢复的信息。
图6 原模型有和没有快捷连接的训练曲线。
无 dropout
重新运行无条件 CIFAR-10 模型而不进行 dropout 正则化。在训练集上实现的对数似然低于每子像素 2.0 比特,但最终测试对数似然高于每子像素 6.0 比特。在训练过程中,非正则化模型的测试集对数似然率在任何时候都不会低于每子像素 3.0 比特。如图 7 所示,证明了 dropout 的重要性。
图7 在 CIFAR-10 上训练的过度拟合的 PixelCNN 模型的样本

结论

本文介绍了 PixelCNN++,它是 PixelCNN 的一种修改,使用了像素域的离散逻辑斯蒂混合似然,并进行了一些其他的修改。通过 CIFAR-10 上的结果证明了这些修改的有用性。
继续阅读
阅读原文