编辑 | 丛末
人工智能的核心愿望之一是开发算法和技术,使计算机具有合成我们世界上观察到的数据的能力, 比如自然语言,图片等等。
作为深度学习中自我监督学习 (self-supervised learning)技术的一个分支,DGM特别专注于刻画数据的生成过程。这篇文章回顾了DGM的历史,定义和现状,并分享最新的一些研究结果。最终希望启发大家去思考一个共同的主题:如何在大规模预训练时代推进或应用深度生成模型。
1
历史回顾和基础知识:
三种类型的深度生成模型和一个通用技巧
生成模型(Generatitve Models)在传统机器学习中具有悠久的历史,它经常与另外一个主要方法(判别模型,Discriminative Models)区分开。我们可以通过一个故事学到它们有何不同:有两兄弟,他们具有不同的特殊能力,一个具有深入洞察事物内在的能力,而另一个善于学习所见事物之间的差异。在故事里,前者代表生成模型,而后者代表区分模型,他们的特点总结为:
随着深度学习的兴起,生成模型通过和深度神经网络的结合,逐渐形成了一个新的家族:深度生成模型。他们这个家族有个共同的特点,就是利用神经网络来模拟数据生成的过程。这样以来,复杂而神秘的数据生成过程就被某个参数量一定的神经网络的给拟合出来了,加之训练这个DGM的数据库本身大小也是确定的,这里就会出现一个潜在的通用技巧。引用2016年一篇OpenAI博客上的话来说:
我们用作生成模型的神经网络具有许多参数,这些参数远小于我们在训练它用的数据量,因此模型会被迫使发现并有效地内化数据的本质,从而以生成数据。
所有DGM都具有上述相同的基本目标和通用技巧,但是它们处理问题的思路方式不同。根据OpenAI的分类法,我们这里考虑三种流行的模型类型:VAE,GAN,自回归模型 (autoregressive models),详见下表:
表格1:不同深度学习模型的对比。不同类别标记为不同的颜色,它们对应的变种也用相同的颜色展示在下面的图1里。
2
从小型到大型的深度生成模型转变
多年来,我们在发展DGM及其理论原理方面做出了许多努力,DGM在较小的规模上现在已得到相对较好的理解。上面提到的DGM技巧保证模型在温和条件下可以正常运行:
; 许多在小规模设定下的研究已经验证了这一点。但是近期的研究表明, 预训练模型可以通过在海量数据上进行自监督学习,以获得了巨大的进步和惊人的实验结果(N 急剧增加)。
图1:我们考虑了三种流行的深度生成模型类型:蓝色的自动回归模型(神经语言模型,或NLM),绿色的可变自动编码器(VAE)和橙色的生成对抗网络(GAN)。Transformer和BERT作为重要的文献参考点也包括在图里,但并不作为本文考察重点。图里最右边的三个新模型,是在大规模计算的时代下我们自己的工作。
上图总结了深度生成模型随时间的简短演变历史,通过两种指标来衡量:
OpenAI的研究人员认为,生成模型是最有前途的方法之一,可以潜在地实现用计算机了解世界的目标。沿着这些思路,他们在2018年开发了Generative Pre-training (GPT)),在各种未标记文本的语料库上训练了自回归神经语言模型(neural language model, 简称NLM),随后对每个特定任务进行了区分性微调,从而显着提高了多项任务的性能语言理解任务。在2019年,他们将这一想法进一步扩展到15亿个参数,并开发了GPT-2,该模型显示了近乎人类的语言生成能力。随着更多的计算,英伟达的Megatron 和微软的Turing-NLG 继承了相同的想法,并将其参数分别扩展到83亿和170亿。
以上研究表明,NLM已取得了巨大进步(大大增加P 去匹配 N )。但是,作为自回归模型,NLM仅仅是DGM的三种类型之一。还有两种其他类型的DGM(VAE和GAN),虽然他们学术影响力很大,但在大规模计算大行其道的当代,它们到底会有怎么样的表现呢?在这个时代,大型模型通过大规模计算在大型数据集上进行训练,这催生了新的学习范式:自我监督学习的预训练+特定任务的微调。在这种范式下,由上图可见,我们对大规模的DGM的研究较少 (比如并没有200M参数量以上的VAE或者GAN),我们也并不确定DGM的通用技巧是否仍可以在这种情况下很好地用于工业实践。由此,我们可以提出了一系列研究问题:
接下来,我们用自己的研究结果作为例子,来对这些问题一一进行回答。
读者可以直接跳到相应的章节阅读具体内容。
预训练语言模型(Pre-trained language models ,简称PLM)在各种自然语言处理任务方面取得了实质性进展。PLM通常经过训练,可以根据海量文本数据中的上下文预测单词,并且可以对学习的模型进行微调以适应各种下游任务。PLM通常可以扮演两个不同的角色:编码器(例如 BERT 和 Roberta)和解码器(例如 GPT-2 和 Megatron)。有时,两个任务都可以在一个统一的框架中执行,例如UniLM, BART 和 T5。尽管这些已取得了显着的性能改进,但是它们缺乏一种在紧凑的特征空间对结构进行显式建模的功能,因此很难从整体句子的语义级别控制自然语言的生成和表示。
原理上来说,变分自动编码器(VAE)经过有效训练后,既可以作为强大的生成模型使用,又可以作为自然语言的有效表示学习框架来使用。VAE把句子表示在低维的特征空间中,通过操纵句子对应的特征向量表示来轻松操纵句子语义上的变化(比如使用可解释的向量运算符等),操作后的向量作为整体语义的概要,来指导句子的生成。例如,基本款的VAE就提供了一种由先验分布来指定的特征平滑的正则化。下图展示了VAE操纵句子变换的过程。
图2:在语义空间组织和操纵句子。
如果扩大VAE模型,并将其用作新的预训练语言模型(PLM),将会发生什么?因此,我们开发了Optimus(Organizing sentences with pre-trained modeling of a universal latent space),第一个针对自然语言的大规模深度隐变量模型,该模型使用句子级别的(可变)自动编码器在大型文本语料库进行了预训练, 从而将由符号表达的自然语言组织在一个连续且紧凑的特征空间里,把对句子的语义操作转换为对向量的算术操作。
Optimus体系结构如下图(a)所示。为了易于培训,我们使用BERT初始化编码器,并使用GPT-2初始化解码器。[CLS]位置输出的特征用于转化我们感兴趣的语义空间 Z 。为了有效地利用GPT-2本身预训练的结果且不重新训练权重,我们研究了两种方案来把特征Z送给编码器,并让它被用起来,如图(b)所示:(1)Z充当了解码器的附加存储向量的作用出席;(2)Z 被添加到解码器的底部嵌入层,并在每个解码步骤中直接使用。从经验上,我们发现基于内存的方案效果更好。为了避免臭名昭著的特征消失问题,我们对KL项采用了一些特殊处理,包括周期性变化系数(cyclical annealing schedule)的技巧和按维度进行阈值处理(dimension-wise thresholding)的技术。
图3:(a) Optimus体系结构,由编码器和解码器组成,(b) 向编码器注入特征向量的两种方式
作为一种新型的PLM,Optimus显示出一些有趣的结果,具有与现有PLM相比的独特优势:
的存在,Optimus具有从语义级别控制句子生成的独特优势(GPT-2在此方面是不适用的)。这种可控制性给用户提供了一种新的方式来和语言生成模型进行交互。在图4中,我们展示了两种使用一些简单的潜在矢量操纵来说明这种想法:(1)通过潜在矢量的算术运算进行句子的类比写作:
,(2)两个句子之间的过度:
,其中
。对于更复杂的潜在空间的句子操纵功能,我们考虑对话响应生成(dialog response generation),风格化响应生成(stylized response generation)和标签条件语句生成(label-conditional sentence generation)这些任务。Optimus在所有这些任务上都比现有方法具有优势。
图4:(a)句子类比生成;(b)句子插补。蓝色表示生成的句子。
图5:(a)和(b)分别展示了使用tSNE对Optimus和BERT进行特征空间可视化的结果。具有不同标签的句子以不同的颜色呈现。(c)不同数量的带有标签数据的结果
感兴趣更多详细结果,请查看我们的论文,在Github上试试Optimus的代码。
Generative Adversarial Networks (GAN)是一种流行的图像生成模型。它由两个网络组成:一个用于直接合成模拟样本的生成器(generator),以及一个用于区分真实样本 ( X ) 和伪样本( X )的鉴别器(discriminator)。GAN以对抗的方式训练这两个网络,以便伪造的数据分布可以匹配真实的数据分布。
特征匹配 ( Feature matching ) 一项有理论支撑的训练GAN的原理技术, 它将GAN的数据分布匹配问题转换为鉴别器特征空间中的特征分布匹配问题。这要求从整体伪造样本和整体真实样本中算得的特征统计量要相似,比如,一阶或二阶矩。但实际实现上,这些特征统计量是使用连续特征空间中的小批量数据(mini-batch)来估计的。随着数据集变得更大和更复杂(例如,更高的分辨率),基于小批量的估计质量变得很差。因为在固定大小的批量去估计更大的数据集,估计方差很大。对于GAN来说,这个问题尤为严重,因为生成器的伪造样本分布在训练中总是在变化,这对于大规模扩展GAN模型提出了新的挑战。
为解决此问题,我们在论文“Feature Quantization Improves GAN Training”中提出了鉴别器的特征量化(FQ)的技术,将特征表示量化在一个字典空间里,而非它原来的连续空间。FQ-GAN的神经网络架构如图6a所示。相比较于原来的GAN模型, 我们仅仅需要把FQ作为一个新的层,嵌入到区分器中某一层或者多层。FQ-GAN将原来的连续特征限制在一组学习好的字典的元素上;而这里的字典元素,则一直代表着当前真假样本最具代表性的特征。
由于真假样本只能从有限的词典元素中选择其表示形式,因此FQ-GAN间接执行特征匹配。这可以使用图6b中的可视化示例进行说明,其中将真实样本特征 H 和伪样本特征 H 量化为相同的质心(在此示例中,真假特征最后都量化到了和它们颜色一致的中心值了)。我们使用移动平均值更新(moving average updates)来实现不断更新的字典 E,使得该字典 E 确保包含一组与当前真假样本特征一致的元素。
图6:(a)FQ-GAN架构:我们的FQ可以作为标准GAN区分器中的新层来添加进去。(b)用字典查找来实现隐式特征匹配。相同颜色的小散点们表示可以量化为相同中心(大圆圈)的连续特征;在经过FQ之后,真实特征(正方形)和伪特征(三角形)会共享相同的中心。
我们所提出的FQ技术可以轻松地应用到现有的GAN模型中,且在训练中的计算开销却很小。大量的实验结果表明,FQ-GAN可以在各种任务上大幅度提高基线方法的图像生成质量,我们尝试了在9个基准数据集上的3个代表性GAN模型:
表格2:FQ对StyleGAN的提升。在FFHQ数据集上不同分辨率下的 FID-50k scores (越低越好)。
图7:FQ-StyleGAN的生成的1024x2014的样例图片 (在8块V100上训练一周多就为看这些美女帅哥?)。
如果你想使用FQ改善你的GAN模型,那赶紧尝试我们在GitHub上的代码,并查看我们的论文去了解更多细节。
通过对图像和语言的语义的进一步了解,自然而然的下一步就是使机器在理解多模态输入后能采取行动以完成指定任务。为了实现此目标,我们碰到的一项基本挑战就是 “遵循自然语言的指示并让机器能够学习如何在视觉环境中导航” (vision-and-language navigation,简称VLN)。在理想情况下,我们希望一次性地训练一个通用的机器,它可以迅速适应多个不同的下游任务。
为此,我们提出了Prevalent,第一个遵循预训练和微调范式的VLN算法。如图8a所示,我们将预训练的数据样本表示为三元组(图像-文本-动作),并以两个目标对模型进行预训练:掩盖语言建模(masked language modeling)和动作预测 (action prediction)。由于预训练不涉及最终的下游学习目标,因此这种自我监督的学习方法通常需要大量的训练样本才能发现多模态数据的内部本质,从而很好地泛化到新任务上。
在我们的研究中,我们发现该子领域最大的训练数据集R2R仅包含104,000个样本,这比用于自然语言(language pre-training)还有多模态(vision-and-language pretraining )的那些子领域的预训练数据集要小一个数量级。这会导致以下尴尬的情况:一方面由于训练数据不足而使得预训练质量不理想,另一方面,使用人工注释来收集此类样本又非常昂贵。
在我们的论文 “Towards Learning a Generic Agent for Vision-and-Language Navigation via Pre-training” 中, 我们尝试了用深度生成模型来合成这些多模态数据,很幸运地发现这样做居然是有效果的。我们首先训练一个自动回归模型(相当于VLN领域的 Speaker 模型),该模型可以根据R2R数据集上的机器人的轨迹(一系列的动作和视觉图像的序列)生成语言指令。然后,我们使用模拟器(Matterport 3D Simulator)收集大量的最短轨迹,并使用生成模型合成它们相应的指令。这产生了6,482,000个新的训练样本。通过图8b中比较了这两个数据集,我们看到合成数据占了98.4%的预训练数据。我们的Prevalent就是预训练在这样的组合数据集上。
图8:(a)模型学习的流程:在大量增强的R2R数据集中对机器进行预训练,并在三个下游任务上进行微调;(b)预训练数据集的百分比:98.4%的合成数据和1.6%的真实数据。
预训练好模型后,我们尝试了三个下游导航任务的微调,包括房间到房间的导航(R2R),和两个域外任务:对话指导的视觉导航(CVDN)以及和人类交互更多的导航任务(HANNA)。我们的算法在这三个任务上都达到了最先进的水平。这些结果标明,深度生成模型合成的样品可用于预训练,并且可以提高其模型的通用性。有关更多详细信息,请阅读我们的CVPR 2020论文“Towards Learning a Generic Agent for Vision-and-Language Navigation via Pre-training”。我们在GitHub上发布了Prevalent的预训练模型,数据集和代码。我们希望它可以为将来在视觉和语言导航这个子领域的自我监督预训练方面的研究奠定坚实的基础。
3
展望未来
从上面的示例中,我们已经看到了在大规模训练时代,深度生成模型的的机遇,挑战和应用。下面我们谨慎地探讨下,这个时代背景下,深度生成模型未来可以开展的工作: