OpenAI引领AI造图新潮流:可逆生成模型超越GAN?

发表时间: 2018-07-11 10:02

昨天,著名人工智能研究组织 OpenAI 发布了其最新工作:《Glow: 更好的可逆生成模型》(《Glow :Better Reversible Generative Models》)。

据文章介绍,Glow 是一个可逆的生成模型,它使用了可逆的 1×1 卷积。它基于以前关于可逆生成模型的研究,并简化了体系结构。该模型能够生成逼真的高分辨率图像,支持有效的采样,并能发现可用于数据处理的特征。研究人员公开了模型代码和一个在线可视化工具,以便人们能够使用这个模型并继续开展研究。

生成模型是基于观察数据,然后学习出如何生成这些数据的模型。学习数据生成过程需要学习数据中存在的结构,成功的模型应该能够生成与数据相似的输出。精确生成模型具有广泛的应用,包括语音合成、文本分析与合成、半监督学习和基于模型的控制。研究人员提出的技术也可以应用于这些问题。

Glow 是一种可逆的生成模型,也称为基于流的生成模型,是 NICE 和 RealNVP 技术的延伸。相比于 GAN 和 VAES,基于流的生成模型在研究领域中关注较少。

而基于流的生成模型的优点包括:

  • 精确的潜变量推断和最大似然估计。在 VAE 中,只能近似推断对应于数据点的潜变量的值。GAN 根本没有编码器来推断潜在的情况。在可逆的生成模型中,推断潜在情况可以在没有近似的情况下精确完成。这不仅可以导致精确的推断,而且还可以优化最大似然估计。
  • 有效推理和有效生成。自回归模型,例如 PixelCNN,也是可逆的,但是从这些模型很难并行化,而且通常在并行时效率很低。基于流的生成模型,如 Glow 和 RealNVP,对于推理和生成来说都是高效的并行化模型。
  • 下游任务可用的潜在空间。自回归模型的隐藏层具有未知的边缘分布,使得对数据的有效处理变得更加困难。在 GANs 中,数据点通常不能在潜在空间中直接表示。对于可逆的生成模型和 VAE 则不是这样,它们允许各种操作,例如数据插值和数据修改。
  • 节省内存。在可逆神经网络中计算梯度需要一定数量的内存,在 RevNet 文章中有所解释。

图丨 Glow 对两名研究人员脸部图像的属性操作。训练过程中,模型没有提供眼睛、年龄等属性标签等情况下,自己学习潜在空间,部分特定方向对应胡须密度,年龄,头发颜色等属性的变化。

结果

RealNVP 是以前基于流的生成模型最好的结果,研究人员的方法与 RealNVP 相比取得了显著的改进。

对于 RealNVP 模型和 Glow 模型,在不同数据集的测试集上进行了量化性能评估。

Glow 模型可以高效生成逼真的高分辨率图像。这个模型在 NVIDIA 1080 Ti GPU 上产生一个 256×256 的样品需要 130 毫秒。

潜空间内插

研究人员还可以在任意人脸之间进行插值,使用编码器对两幅图像进行编码,并从中间点进行采样。请注意,输入是任意的人脸,而不是来自模型的样本,从而证明了模型支持整个目标分布。

潜空间操作

研究人员可以在没有标签的情况下训练一个基于流的模型,然后将学习到的模型用于后续任务,比如处理输入的属性。这些语义属性可以是面部或头发的颜色、图像的风格、声音的音高,或者文本句子的情感。由于基于流的模型有一个非常好的编码器,因此可以对输入进行编码,并计算有和不带属性的输入的平均潜在向量。然后,可以使用两者之间的向量方向来操作对该属性的任意输入。

贡献

研究人员的主要贡献同时也是与 RealNVP 模型的不同之处在于增加了一个可逆的 1x1 卷积,以及删除了一些组件,从而简化了整个体系结构。

RealNVP 体系结构由两种类型的层组成:具有棋盘掩码的层和具有通道掩码的层。研究人员移除了棋盘掩码的层,简化了体系结构。具有通道掩码的层重复执行以下步骤可以等效:

  • 通过在通道维度上逆转输入的顺序来改变输入。
  • 按照特征维数将输入对分成 A 和 B 两个部分。
  • 将 A 输入浅层卷积神经网络。根据神经网络的输出线性变换 B。
  • 连接 A 和 B。

通过连接这些层,A 更新 B,B 更新 A,然后 A 更新 B。这种信息的双向流动显然是相当僵化的。研究人员发现,通过将步骤 (1) 的反向排列改变为随机全排列,模型的性能得到了改善。

更进一步,研究人员还可以学习最优排列。学习置换矩阵是一种离散优化,不能适用到梯度上升。但由于置换操作只是具有平方矩阵的线性变换的特例,所以可以用卷积神经网络来实现,因为置换通道等价于输入和输出通道数相等的 1x1 卷积运算。因此,研究人员用学习的 1x1 卷积运算代替固定置换。将 1x1 卷积的权值初始化为随机旋转矩阵。此操作带来了显著的模型改进。研究人员还证明了通过对权值进行 LU 分解,可以有效地完成目标函数优化所涉及的计算。

另外,研究者还删除了批归一化,并将其替换为激活归一化层。这一层只是简单地转移和缩放激活函数,给定数据的初始 minibatch,该层具备依靠数据的初始化技术可对激活函数进行归一化操作。这允许将 minibatch 的大小缩小到 1(对于大型图像),并扩大模型的大小。

规模

研究人员的体系结构结合了各种优化,例如梯度检查点,使其能够更大的规模地训练基于流的生成模型。研究人员使用 Horovod 在集群上轻松地训练研究人员的模型;研究人员演示中使用的模型在 5 台机器上进行了训练,每台机器有 8 个 GPU。使用这个配置,研究人员可以训练超过一亿个参数的模型。

研究方向

研究人员的工作表明,可以训练基于流的模型来生成逼真的高分辨率图像,并可以很容易地学习到隐藏表征。研究人员为今后的工作提出了几个方向:

  • 在似然函数上与其他模型比较。在对数似然方面,自回归模型和 VAE 模型的性能优于基于流的模型,但它们分别存在采样效率低和推理不精确的缺点。研究人员可以将基于流的模型、VAE 模型和自回归模型结合起来,以权衡它们的优势,这将是未来工作的一个有趣的方向。
  • 改进体系结构,提高计算效率和参数效率。为了生成逼真的高分辨率图像,人脸生成模型使用了 200 亿参数和 600 层卷积层,这使得训练的成本很高。深度较小的模型在学习长期依存关系方面表现较差。使用自注意架构,或者进行渐进式的训练来扩展到高分辨率,可以使训练 Glow 模型的成本降低。