文本生成图像工作简述
持续创作,加速成长!这是我参与「掘金日新计划·10月更文挑战」的第28天,点击查看活动详情
基于深度学习的机器学习方法已经在语音、文本、图像等单一模态领域取得了巨大的成功,而同时涉及到多种输入模态的多模态机器学习研究有巨大的应用前景和广泛的研究价值,成为了近年来的研究热点。
而最近,研究人员似乎对在这些传统上独立的领域中结合语义信息和视觉信息感兴趣,文本生成图像领域应运而生。
一、相关概念介绍1.1、多模态机器学习模态是指某件事情发生或经历的方式。每一种信息的来源或者形式,都可以称为一种模态。人类对世界的体验是多模态的例如触觉,听觉,视觉,嗅觉;而人类获取信息的媒介,有语音、视频、文字等;
为了让人工智能在理解我们周围的世界方面取得进展,它需要能够一起解释这种多模态信号。多模态机器学习旨在建立能够处理和关联来自多种模态的信息的模型。
这是一个日益重要和具有非凡潜力的充满活力的多学科领域。
基于近年来图像处理和语言理解方面的技术突破,融合图像和文本处理的多模态任务获得了广泛的关注并取得了相当大的成功,例如基于视觉的指代表达理解和短语定位、图像和视频字幕生成、视觉问答(VQA)、基于文本的图像生成(文本生成图像)、基于语言的视觉推理等。
1.2、文本生成图像如果我们的计算机视觉系统要真正理解视觉世界,它们不仅必须能够识别图像,而且必须能够生成图像。文本到图像的AI模型仅根据简单的文字输入就可以生成图像。用户可以输入他们喜欢的任何文字提示——比如,“一只可爱的柯基犬住在一个用寿司做的房子里”——然后,人工智能就像施了魔法一样,会产生相应的图像。
这些模型产生的图像在世界上和任何人的想象中都从未存在过。它们是新颖的创作,其独创性和复杂性令人叹为观止。
文本生成图像(text-to-image)即根据给定文本生成符合描述的真实图像,其是多模态机器学习的任务之一,具有巨大的应用潜力,如视觉推理、图像编辑、视频游戏、动画制作和计算机辅助设计。除了传授深刻的视觉理解,生成逼真图像的方法也可以是实际有用的。在短期内,自动图像生成可以帮助艺术家或平面设计师的工作。有一天,我们可能会用生成定制图像和视频的算法来取代图像和视频搜索引擎,以响应每个用户的个人喜好。
1.3、零样本学习基于深度学习的模型近年来在图像识别和对象检测等很多问题上已经达到或超过了人类水平。然而,这些模型依赖于监督学习,其性能在很大程度上取决于带标注的训练数据。此外,模型局限于识别训练时见过的类别。
零样本学习Zero-ShotLearning就是用来解决这一问题的,其致力于让计算机模拟人类的推理方式,来识别从未见过的新事物。在传统的图像识别算法中,要想让计算机认出斑马,往往需要给计算机投喂足够量的斑马图像才有做到。而且,训练出来的分类器,往往无法识别它没有见过的其他类别的图像。但是人类却可以依据斑马的先验知识,在没见过斑马的情况下识别出斑马,零样本学习就是希望能够模仿人类的推理过程,使得计算机具有识别新事物的能力。
文本生成图像模型的预期最佳效果也是零样本学习的文本生成图像,即具有迁移性,在没有提供新事物数据的情况下,只凭特征描述就能生成出新事物。
二、技术梳理2.1、生成对抗网络:GAN文本编码器+生成器+鉴别器的结构。文本编码器由RNN或者Bi-LSTM组成,生成器可以做成堆叠结构或者单阶段生成结构,主要用于在满足文本信息语义的基础上生成图像,鉴别器用于鉴别生成器生成的图像是否为真和是否符合文本语义。整个训练过程都是两者不断地进行相互博弈和优化。生成器不断得生成图像的分布不断接近真实图像分布,来达到欺骗判别器的目的,提高判别器的判别能力。判别器对真实图像和生成图像进行判别,来提高生成器的生成能力。
Reed等人是第一个扩展条件GAN以实现文本到图像合成的人。由于GANs在图像合成方面的进步,该任务在采用堆叠架构、循环一致性、注意力机制、对利用条件仿射变换方面取得了重大进展。如:
堆叠结构:StackGAN、StackGAN++、HDGAN;循环一致性:PPGN、CycleGAN、MirrorGAN;注意力机制:AttnGAN、SEGAN、ControlGAN、RiFeGAN;条件仿射变换:DFGAN、SSGAN、RATGAN;...感兴趣可以深入查看专栏:文本生成图像专栏
2.2、扩散模型:DiffusionModel不同于VQ-VAE,VQ-GAN,扩散模型是当今文本生成图像领域的核心方法,当前最知名也最受欢迎的文本生成图像模型StableDiffusion,Disco-Diffusion,Mid-Journey,DALL-E2等等,均基于扩散模型。在扩散模型中,主要有两个过程组成,前向扩散过程,反向去噪过程,前向扩散过程主要是将一张图片变成随机噪音,而逆向去噪过程则是将一张随机噪音的图片还原为一张完整的图片,原理:由浅入深理解扩散模型(DiffusionModel)
扩散过程从右向左(X0=>XtX_0=>X_tX0=>Xt)对图片逐渐加噪,X0X_0X0表示从真实数据集中采样得到的一张图片,当t足够大时,XtX_tXt变为高斯分布。其本质就是在原始图像上添加噪音,通过T步迭代,最终将原始图片的分布变成标准高斯分布,而重要的事,每一步噪音都是已知的,即q(Xt∣Xt−1)q(X_t|X_t-1)q(Xt∣Xt−1)是已知的(因为知道图像t-1,知道噪声数据),根据马尔科夫过程的性质,可以递归得到q(Xt∣X0)q(X_t|X_0)q(Xt∣X0),得到XtX_tXt。
逆扩散过程从左向右(Xt=>X0X_t=>X_0Xt=>X0)对图片逐渐降噪,如果我们能够在给定XtX_tXt条件下知道Xt−1X_{t-1}Xt−1,我们就可以逐步从XtX_tXt推出X0X_0X0,即就可以从噪声推导出一张图像。要达到这种,我们要知道q(Xt∣Xt−1)q(X_t|X_t-1)q(Xt∣Xt−1),即如何从任意一张噪声图片中经过一次次的采样得到一张图片而达成图片生成的目的。显然我们很难知道q(Xt∣Xt−1)q(X_t|X_t-1)q(Xt∣Xt−1),于是我们使用p(Xt∣Xt−1)p(X_t|X_t-1)p(Xt∣Xt−1)来近似q(Xt∣Xt−1)q(X_t|X_t-1)q(Xt∣Xt−1),p(Xt∣Xt−1)p(X_t|X_t-1)p(Xt∣Xt−1)就是我们要训练的网络。我们可以使用q(Xt∣Xt−1)q(X_t|X_t-1)q(Xt∣Xt−1)来指导p(Xt∣Xt−1)p(X_t|X_t-1)p(Xt∣Xt−1)的训练,在完成训练之后,训练好的模型就可以通过不断的「减去」模型预测的噪音,完成逆扩散步骤,逐渐的生成一张完整的图片。
直观上理解,扩散模型其实是通过一个神经网络,来预测每一步扩散模型中所添加的噪音。
扩散模型在实现文本生成图像任务中,主要有以下策略:
SemanticDiffusionGuidance(以文本描述作为语义引导)通过使用引导函数来注入语义输入(此时文本可以看成一种分类器或者判别器),以指导无条件扩散模型的采样过程,这使得扩散模型中的生成更加可控,并为语言和图像引导提供了统一的公式。在逆向过程的每一步,用一个文本条件对生成的过程进行引导,基于文本和图像之间的交叉熵损失计算梯度,用梯度引导下一步的生成采样Classifier-FreeDiffusionGuidence:前文额外引入一个网络来指导,推理的时候比较复杂,且将引导条件作为模型的输入效果其实一般。Classifier-FreeDiffusionGuidence核心思路是共同训练有条件和无条件扩散模型,并发现将两者进行组合,可以得到样本质量和多样性之间的权衡。这个方法一个很大的优点是,不需要重新训练扩散模型,只需要在前馈时加入引导既能实现相应的生成效果。应用有:GLIDE、DALL·E2、Imagen等...2.3、基于Transformer的自回归方法Transformer模型利用其强大的注意力机制已成为序列相关建模的范例,受GPT模型在自然语言建模中的成功启发,图像GPT(iGPT)通过将展平图像序列视为离散标记,采用Transformer进行自回归图像生成。生成图像的合理性表明,Transformer模型能够模拟像素和高级属性(纹理、语义和比例)之间的空间关系。Transformer整体主要分为Encoder和Decoder两大部分,利用多头自注意力机制进行编码和解码。但其训练成本高,推理时间较长,且强大而有趣的模型一直未开源。
Transformer在实现文本生成图像上,大概有以下策略:
Transformer和VQ-VAE(矢量量化变分自动编码器)进行结合,首先将文本部分转换成token,利用的是已经比较成熟的SentencePiece模型;然后将图像部分通过一个离散化的AE(Auto-Encoder)转换为token,将文本token和图像token拼接到一起,之后输入到GPT模型中学习生成图像。训练后,在处理文本图像生成类任务时,模型会通过计算一个CaptionScore对生成图像进行排序,从而选择与文本最为匹配的图像作为结果:如CogViewTransformer和CLIP结合。首先对于一幅没有文本标签的图像,使用CLIP的图像编码器,在语言-视觉(language-vision)联合嵌入空间中提取图像的embedding。接着,将图像转换为VQGAN码本空间(codebookspace)中的一系列离散标记(token)。也就是将图像以与自然语言相同的方式进行表示,方便后续使用Transformer进行处理。其中,充当imagetokenizer角色的VQGAN模型,可以使用手里的无标记图像数据集进行训练。最后,再训练一个自回归Transformer,用它来将图像标记从Transformer的语言-视觉统一表示中映射出对应图像。经过这样的训练后,面对一串文本描述,Transformer就可以根据从CLIP的文本编码器中提取的文本嵌入(textembedding)生成对应的图像标记(imagetokens)了。如:CLIP-GEN、DALL·E、DALL·E2...2.4、基于对比的图片-文本的跨模态预训练模型:CLIPCLIP(ContrastiveLanguage-ImagePre-Training,简称CLIP)模型严格来说是一种辅助模型,是OpenAI在2021年初发布的用于匹配图像和文本的预训练神经网络模型,CLIP最初是一个单独的辅助模型,用于对DALL·E的结果进行排序。对比模型可以给来自同一对的图像和文本产生高相似度得分,而对不匹配的文本和图像产生低分。该模型由两个编码器组成:一个用于文本,另一个用于图像:图像编码器:用于将图像映射到特征空间;文本编码器:用于将文本映射到相同的特征空间。
原理其实很简单:为了对image和text建立联系,首先分别对image和text进行特征提取,image特征提取的backbone可以是resnet系列模型也可以是VIT系列模型,text特征提取目前一般采用bert模型,特征提取之后,由于做了normalize,直接相乘来计算余弦距离,同一pair对的结果趋近于1,不同pair对的结果趋近于0,因为就可以采用对比损失loss(info-nce-loss),熟悉这个loss的同学应该都清楚,这种计算loss方式效果与batchsize有很大关系,一般需要比较大的batchsize才能有效果。CLIP可以理解成一种多模态pretrain方式,为文本和图像在特征域进行对齐。
但CLIP采取了4亿的图像文本对的数据集,但这4亿的图像文本对并未对外开源,且CLIP是通过庞大的数据集来尽可能的覆盖下游任务,而它在未见过的数据上表现非常不理想,其不非常侧重算法上的创新,而是采集了大量的数据以及使用了大量的训练资源(592个V100+18天和256个V100+12天)。
CLIP主要作为辅助模型在文本生成图像中应用,比如GAN+CLIP(如FuseDream)、DiffusionModel+CLIP(如GLIDE、DALL·E)、Transformer+CLIP(如CLIP-GEN、DALL·E2)
参考WhatareDiffusionModels?:lilianweng.github.io/posts/2021-…扩散模型(DiffusionModel)——由浅入深的理解基于扩散模型的文本引导图像生成算法:zhuanlan.zhihu.com/p/505257039扩散模型与其在文本生成图像领域的应用:zhuanlan.zhihu.com/p/546311167连接文本和图像的第一步:CLIP:zhuanlan.zhihu.com/p/427740816文本生成图像这么火,你需要了解这些技术的演变
OpenAI最近发布了 DALL·E2 系统,在AI界引发了「地震」,该系统能够根据文本描述创建图像。这是DALL·E系统的第二个版本,第一个版本是在近一年前发布的。然而,在OpenAI内部,DALL·E2背后的模型被称为unCLIP,它更接近于OpenAI的GLIDE系统,而不是原始的DALL·E。对笔者来说,DALL·E2系统的冲击力可以与AlphaGo相媲美。看起来该模型捕获了许多复杂的概念,并且以有意义的方式将它们组合起来。就在几年前,计算机能否从这样的文本描述中生成图像还是一件难以预测的事情。SamAltman在他的博客文章中提到,我们对AI的预测似乎是错误的,是需要更新的,因为AI已经开始影响创造性的工作,而非只是机械重复的工作。本文旨在带领读者一览OpenAI的文本引导图像生成模型的演变,包括DALL·E的第一个和第二个版本以及其他的模型。DALL·E演变史DALL·E1DALL·E的第一个版本是GPT-3风格的transformer解码器,它可以根据文本输入和可选的图像开头自回归生成256×256大小的图像。你一定见过这些牛油果椅子:来自原始博客文章。如果你想了解类似GPT的transformer的工作原理,请参阅JayAlammar的精彩视觉解释:https://jalammar.github.io/how-gpt3-works-visualizations-animations/文本由BPEtokens编码(最多256个),图像由离散变分自编码器(dVAE)生成的特殊图像tokens(其中1024个)编码。dVAE将256×256图像编码为32×32tokens的网格,词汇表包含8192个可能的值。dVAE会在生成的图像中丢失一些细节和高频特征,所以DALL·E生成图像的特征采用了一些模糊和平滑。原始图像(顶部)和dVAE重建(底部)的比较。图片来自原始论文。这里使用的transformer是有着12B大小参数的大模型,由64个稀疏transformer块组成,内部具有一组复杂的注意力机制,包括:1)经典的文本到文本注意力掩码机制,2)图像到文本的注意力,3)图像到图像稀疏注意力。所有三种注意力类型都合并为一个注意力运算。该模型是在250M图像-文本对的数据集上训练的。类似GPT-3的transformer解码器使用一系列文本token和(可选)图像token(此处为id为42的单个图像token)并生成图像的延续(此处为id为1369的下一个图像token)训练后的模型根据提供的文本生成了几个样本(最多512个),然后将所有这些样本通过一个名为CLIP的特殊模型进行排序,并选择排名靠前的一个作为模型的结果。原始论文中的几个图像生成示例。CLIPCLIP最初是一个单独的辅助模型,用于对DALL·E的结果进行排序。它的名字是ContrastiveLanguage-ImagePre-Training的缩写。CLIP背后的想法很简单。笔者从互联网上抓取了一个图像-文本对数据集(400M的规模),然后在这样的数据集上训练一个对比模型。对比模型可以给来自同一对的图像和文本产生高相似度得分(因此它们是相似的),而对不匹配的文本和图像产生低分(我们希望在当前训练批次中某个图像和任何其他对的文本之间得到高相似度结果的机会很小)。该模型由两个编码器组成:一个用于文本,另一个用于图像。编码器产生嵌入(一个对象的多维向量表征,例如一个512字节的向量)。然后使用两个嵌入计算点积,并得出相似度得分。因为嵌入会被归一化,所以这个计算相似度得分的过程输出的是余弦相似度。对于指向相同方向的向量(它们之间的角度很小),余弦相似度接近1,对于正交向量,余弦相似度接近0,对于相反的向量,余弦相似度接近-1。对比预训练过程可视化(图片来自原帖)CLIP是一组模型。有9个图像编码器、5个卷积编码器和4个transformer编码器。卷积编码器是ResNet-50、ResNet-101和类似EfficientNet的模型,称为RN50x4、RN50x16、RN50x64(数字越大,模型越好)。transformer编码器是视觉Transformer(或称之为ViT):ViT-B/32、ViT-B/16、ViT-L/14和ViT-L/14@336。最后一个在分辨率为336×336像素的图像上进行微调,其他的则在224×224像素上进行训练。OpenAI分阶段发布了程序,首先发布了ViT-B/32和ResNet-50,然后是ResNet-101和RN50x4,然后RN50x16和ViT-B/16于2021年7月发布,然后是RN50x64和ViT-L/14在2022年1月发布,2022年4月终于出现了ViT-L/14@336。文本编码器是一个普通的transformer编码器,但具备掩码注意力机制。这个编码器由12层组成,每层有8个注意力头,总共有63M的参数。有趣的是,注意力跨度只有76个token(相比之下,GPT-3有2048个token,标准BERT有512个token)。因此,模型的文本部分只适用于相当短的文本,不能在模型中放入大段文本。由于DALL·E2和CLIP大致相同,应该也有相同的限制。CLIP预训练之后,可以将其用于不同的任务(有良好基础模型的优势)。最重要的是,读者可以使用在DALL·E中排序好的模型对多个结果进行评分,并选择最好的一个。或者,也可以使用CLIP功能在其之上训练自定义分类器,但是目前成功的例子还不是很多。接下来,可以使用CLIP对任意数量的类进行零样本分类(当没有专门训练模型以使用这些类时)。这些类可以在不重新训练模型的情况下进行调整。简单来说,可以为所需的多个类创建一个描述图片中物体的文本数据集。然后为这些描述生成文本嵌入并将它们存储为向量。当图像用于分类时,使用图像编码器生成图像嵌入,并计算图像嵌入和所有预先计算的文本嵌入之间的点积。选择得分最高的对,其对应的类就是结果。用于使用CLIP进行零样本分类的程序。零样本分类模型是说并未针对特定类别集训练模型。现在可以选择使用预训练的CLIP进行即时工程(与使用GPT模型相同),而不是从头开始训练分类器或通过微调预训练的图像模型。很多人没有想到,也可以使用CLIP生成图像(即使它并没有被预设可以这样做)。成功案例包括CLIPDraw和VQGAN-CLIP。CLIPD绘制示例。图片来自原论文。VQGAN-CLIP及其文本prompt的生成示例。图片来自原论文。该过程简单而美观,与DeepDream非常相似。从想要的图像的文本描述和初始图像(随机嵌入、样条线或像素中的场景描述、任何以可区分方式创建的图像)开始,然后运行一个生成图像的循环,加入一些增强以提高稳定性,获得结果图像的CLIP嵌入,并将其与描述图像的文本的CLIP嵌入进行比较。根据此差异计算损失,并运行梯度下降程序,以此来更新图像、减少损失。经过一些迭代后,可以得到很好地匹配文本描述的图像。创建初始场景的方式(使用样条线、像素、渲染基元、来自VQGAN的潜在代码等)会显著影响图像特征。CLIPDraw生成过程:从一组随机的Bezier曲线开始,优化曲线的位置和颜色,使生成的图形与给定的描述prompt最匹配。图片来自原论文。VQGAN-CLIP生成过程。图片来自原论文。CLIP嵌入并不能捕获所有内容,一些有趣的演示证明了它的弱点。其中一个广为人知的例子是印刷攻击。在这种攻击中,图像上的文本可能导致图像的错误分类。目前有一些与CLIP结构相似的替代模型,例如Google的ALIGN或华为的FILIP。GLIDEGLIDE,即GuidedLanguagetoImageDiffusionforGenerationandEditing,是OpenAI推出的文本引导图像生成模型,目前已经击败了DALL·E,但受到的关注相对较少。它甚至在OpenAI网站上也没有专门的帖子。GLIDE生成分辨率为256×256像素的图像。拥有3.5B参数的GLIDE模型(但似乎正确的数字是5B参数,因为有一个单独的具有1.5B参数的上采样模型)比12B参数DALL·E更受人们的青睐,并且在FID得分上也击败了DALL·E。来自GLIDE的样本。图片来自原始论文。GLIDE模型还可以进行微调以执行图像修复,从而实现强大的文本驱动图像编辑,这在DALL·E2中使用。来自GLIDE的文本条件图像修复示例。绿色区域被擦除,模型根据给定的提示填充这个区域。该模型能够匹配周围环境的风格和光线,产生逼真的完成效果。示例来自原论文。GLIDE在发布时可以称作「DALL·E2」。现在,当一个单独的DALL·E2系统发布时(实际上在论文中称为unCLIP并且大量使用GLIDE本身),我们可以将GLIDE称为DALL·E1.5:)GLIDE类似于另一种称为扩散模型的模型。简而言之,扩散模型通过扩散步骤链向输入数据添加随机噪声,然后它们会学习逆向扩散过程以从噪声中构造图像。去噪扩散模型生成图像。下图是Google使用扩散模型生成图像的可视化说明。扩散模型与其他类别的生成模型的比较。首先,作者训练了一个3.5B参数扩散模型,该模型使用文本编码器以自然语言描述为条件。接下来,他们比较了两种将扩散模型引导到文本prompt的技术:CLIP引导和无分类器引导(后者能产生更好的结果)。分类器引导允许扩散模型以分类器的标签为条件,并且来自分类器的梯度用于引导样本朝向标签。无分类器引导不需要训练单独的分类器模型。这只是一种引导形式,在有标签和没有标签的扩散模型的预测之间进行插值。正如作者所说,无分类引导有两个吸引人的特性。首先,它允许单个模型在引导过程中利用自己的知识,而不是依赖于单独(有时更小的)分类模型的知识。其次,它简化了对难以用分类器预测的信息(例如文本)进行调节时的引导。在CLIP引导下,分类器被替换为CLIP模型。它使用图像的点积和相对于图像的标题编码的梯度。在分类器和CLIP引导中,我们必须在噪声图像上训练CLIP,以便在反向扩散过程中获得正确的梯度。作者使用了经过明确训练具有噪声感知能力的CLIP模型,这些模型被称为噪声CLIP模型。尚未在噪声图像上训练的公共CLIP模型仍可用于引导扩散模型,但噪声CLIP引导对这种方法表现良好。文本条件扩散模型是一种增强的ADM模型架构,它基于噪声图像xₜ和相应的文本标题c预测下一个扩散步骤的图像。视觉部分是修改后的U-Net架构。U-Net模型使用一堆残差层和下采样卷积,然后是一堆带有上采样卷积的残差层,使用残差连接(skipconnection)连接具有相同空间大小的层。原始的U-Net架构。图片来自原论文。GLIDE对原始U-Net架构的宽度、深度等方面有不同的修改,在8×8、16×16和32×32分辨率下添加了具有多个注意力头的全局注意力层。此外,还将时间步嵌入的投影添加到每个残差块中。对于分类器引导模型,分类器架构是U-Net模型的下采样主干网络,在8×8层有一个注意力池以生成最终输出。文本通过transformer模型被编码成K个(最大注意力跨度尚不清楚)tokens的序列。transformer的输出有两种使用方式:首先,使用最终的token嵌入替代ADM模型中的类嵌入;其次,token嵌入的最后一层(K个特征向量的序列)分别投影到整个ADM模型中每个注意力层的维度,然后连接到每一层的注意力上下文。文本transformer有24个宽度为2048的残差块,产生大约1.2B的参数。为64×64分辨率训练的模型的视觉部分由2.3B个参数组成。除了3.5B参数的文本条件扩散模型,作者还训练了另一个1.5B参数的文本条件上采样扩散模型,将分辨率提高到256×256(这个想法在DALL·E中也会用到)。上采样模型以与基本模型相同的方式以文本为条件,但使用宽度为1024而不是2048的较小文本编码器。对于CLIP引导,他们还训练了带噪声的64×64ViT-LCLIP模型。GLIDE在与DALL·E相同的数据集上进行训练,总的训练计算量大致等于用于训练DALL·E的计算量。GLIDE在所有设置中都是最优,即使设置允许DALL·E使用更多的测试时间计算来得到优越的表现,同时降低GLIDE样本质量(通过VAE模糊)。该模型经过微调以支持无条件的图像生成。这个训练过程与预训练完全一样,只是将20%的文本token序列替换为空序列。这样,模型保留了生成文本条件输出的能力,但也可以无条件地生成图像。该模型还经过显式微调以执行修复。在微调期间,训练示例的随机区域被删除,其余部分与掩码通道一起作为附加条件信息输入模型。GLIDE可以迭代地使用zero-shot生成产生复杂场景,然后进行一系列修复编辑。首先生成prompt「一个舒适的客厅」的图像,然后使用修复蒙版,后续文本prompt在墙上添加了一幅画、一个茶几,茶几上还有一个花瓶,最后把墙移到沙发上。示例来自原论文。DALL·E2/unCLIPOpenAI于2022年4月6日发布了DALL·E2系统。DALL·E2系统比原来的DALL·E显著提升了结果。它生成的图像分辨率提高了4倍(与原来的DALL·E和GLIDE相比),现在高达1024×1024像素。DALL·E2系统背后的模型称为unCLIP。作者发现,就照片写实而言,人类略微喜欢GLIDE而不是unCLIP,但差距非常小。在具有类似真实感的情况下,在多样性方面,unCLIP比GLIDE更受青睐,突出了它的好处之一。请记住,GLIDE本身比DALL·E1更受欢迎,所以说DALL·E2比它的前身DALL·E1有了显著改进。对于「用克劳德·莫奈的风格画一幅狐狸坐在日出时分田野里的画」的要求,两个版本的系统生成的图片,图片来自原文章。DALL·E2可以将概念、属性和风格结合起来:原文中的示例。DALL·E2还可以基于文本引导进行图像编辑,这是GLIDE中的功能。它可以在考虑阴影、反射和纹理的同时添加和删除元素:将柯基犬添加到图像上的特定位置,图片来自原论文中。DALL·E2还可用于生成原始图像的变体:生成图像的变体,图片来自原文。DALL·E2也存在一些问题。特别是unCLIP在将属性绑定到对象方面比GLIDE模型更差。例如,unCLIP比GLIDE更难面对必须将两个单独的对象(立方体)绑定到两个单独的属性(颜色)的prompt:unCLIP生成连贯的文本上也有一些困境:另一个问题是unCLIP很难在复杂场景中生成细节:模型内部发生了一些改变。下图是CLIP和GLIDE的结合,模型本身(全文条件图像生成堆栈)在论文内部称为unCLIP,因为它通过反转CLIP图像编码器生成图像。该模型的工作方式如下:CLIP模型是单独训练的。然后CLIP文本编码器为输入文本(标题)生成嵌入。然后一个特殊的先验模型基于文本嵌入生成图像嵌入。然后扩散解码器基于图像嵌入生成图像。解码器本质上将图像嵌入反转回图像。系统的宏观概述。一些细节(如解码器文本条件)没有显示。图片来自原论文。CLIP模型使用ViT-H/16图像编码器,它使用256×256分辨率的图像,宽度为1280,带有32个Transformer块(它比原始CLIP工作中最大的ViT-L更深)。文本编码器是一个带有因果注意掩码的Transformer,宽度为1024和24个Transformer块(原始CLIP模型有12个Transformer块)。尚不清楚文本transformer的注意力跨度是否与原始CLIP模型中的相同(76个token)。扩散解码器是经过修改的GLIDE,具有3.5B参数。CLIP图像嵌入被投影并添加到现有的时间步嵌入中。CLIP嵌入也被投影到四个额外的上下文token中,这些token连接到GLIDE文本编码器的输出序列。保留了原始GLIDE的文本条件路径,因为它可以让扩散模型学习CLIP未能捕获的自然语言方面(然而,它帮助不大)。在训练期间,10%的时间用于将CLIP嵌入随机设置为零,50%的时间随机删除文本标题。解码器生成64×64像素的图像,然后两个上采样扩散模型随后生成256×256和1024×1024的图像,前者具有700M参数,后者具有300M参数。为了提高上采样的鲁棒性,在训练过程中条件图像被轻微损坏。第一个上采样阶段使用高斯模糊,第二个阶段使用更多样化的BSR降级,包括JPEG压缩伪影、相机传感器噪声、双线性和双三次插值、高斯噪声。这些模型在目标大小的四分之一的随机图像上进行训练。文本调节不用于上采样模型。先验根据文本描述生成图像嵌入。作者探索了先验模型的两个不同模型类:自回归(AR)先验和扩散先验。两种先验的模型都有1B参数。在AR先验中,CLIP图像嵌入被转换为一系列离散代码,并根据标题进行自回归预测。在扩散先验中,连续嵌入向量直接使用以标题为条件的高斯扩散模型进行建模。除了标题之外,先验模型还可以以CLIP文本嵌入为条件,因为它是标题的确定性函数。为了提高采样质量,作者还通过在训练期间10%的时间随机删除此文本条件信息,启用了对AR和扩散先验使用无分类器引导的采样。对于AR先验,主成分分析(PCA)降低了CLIP图像嵌入的维数。1024个主成分中有319个保留了99%以上的信息。每个维度量化为1024个桶。作者通过将文本标题和CLIP文本嵌入编码为序列的前缀来调节AR先验。此外,它们在文本嵌入和图像嵌入之间添加一个表征(量化的)点积的token。这允许在更高的点积上调整模型,因为更高的文本图像点积对应于更好地描述图像的标题。点积是从分布的上半部分采样的。使用带有因果注意掩码的Transformer模型预测生成的序列。对于扩散先验,具有因果注意掩码的仅解码器(decoder-only)Transformer在由以下成分组成的序列上进行训练:编码的文本CLIP文本嵌入扩散时间步长的嵌入噪声CLIP图像嵌入最终的嵌入,其来自Transformer的输出用于预测无噪声CLIP图像嵌入。不使用点积来调节扩散先验。相反,为了提高采样时间的质量,生成了两个图像嵌入样本,并选择了一个具有更高点积和文本嵌入的样本。对于可比较的模型大小和减少的训练计算,扩散先验优于AR先验。在与GLIDE的成对比较中,扩散先验也比AR先验表现更好。作者还对先验的重要性进行了调查。他们尝试使用不同的信号来调节相同的解码器:1、文本标题和零CLIP嵌入,2、文本标题和CLIP文本嵌入(就好像它是图像嵌入一样),3、由先验生成的文本和CLIP图像嵌入。仅根据标题对解码器进行调节显然是最差的,但对文本嵌入零样本进行调节确实会产生符合期望的结果。使用不同的调节信号,图片来自原文。在训练编码器时,作者以相同的概率从CLIP和DALL-E数据集(总共约6.5亿张图像)中采样。在训练解码器、上采样器和之前的模型时,他们只使用了DALL-E数据集(大约2.5亿张图像),因为在训练生成堆栈时合并了噪声更大的CLIP数据集,从而在初始评估中对样本质量产生了负面影响。模型总大小似乎是:632M?参数(CLIPViT-H/16图像编码器)+340M?(CLIP文本编码器)+1B(扩散先验)+3.5B(扩散解码器)+1B(两个扩散上采样器)=~大约6.5B参数(如果我没记错的话)。这个方法允许基于文本描述生成图像。然而,其他一些有趣的应用也是可能的。原论文中的示例。每个图像x可以被编码成一个二分latent表示(z_i,x_T),这足以让解码器产生准确的重建。latent z_i是一个CLIP图像嵌入,它描述了CLIP识别的图像方面。latent x_T是通过使用解码器对x应用DDIM(去噪扩散隐式模型)反演获得的,同时以z_i为条件。换句话说,它是在生成图像x(或等效为x_0,参见GLIDE部分中的去噪扩散模型方案)时扩散过程的起始噪声。这种二分表示可以实现三种有趣的操作。首先,你可以通过在解码器中使用η>0的DDIM进行采样,为给定的二分潜在表示(z_i,x_T)创建图像变体。当η=0时,解码器变得具有确定性,并将重建给定的图像x。η参数越大,变化越大,我们可以看到在CLIP图像嵌入中捕获了哪些信息并呈现在所有样本中。探索图像的变化。其次,你可以在图像x1和x2之间进行插值。为此,你必须采用CLIP图像嵌入z_i1和z_i2,然后应用slerp(球面线性插值)来获得中间CLIP图像表示。对应的中间DDIMlatent x_Ti有两个选项:1)使用slerp在x_T1和x_T2之间进行插值,2)将DDIMlatent固定为轨迹中所有插值的随机采样值(可以生成无限数量的轨迹)。以下图像是使用第二个选项生成的。探索两个图像的插值。最后,第三件事是语言引导的图像操作或文本差异。为了修改图像以反映新的文本描述y,你首先获取其CLIP文本嵌入z_t,以及描述当前图像的标题的CLIP文本嵌入z_t0(可能是像「照片」这样的虚拟标题或一个空的标题)。然后计算文本差异向量z_d=norm(z_t-z_t0)。然后使用slerp在嵌入z_i的图像CLIP和文本差异向量z_d之间旋转,并在整个轨迹中生成具有固定基本DDIM噪声x_T的图像。探索文本差异,来自原文中。作者还进行了一系列实验来探索CLIP潜在空间。先前的研究表明,CLIP容易受到印刷攻击。在这些攻击中,一段文本覆盖在一个对象的顶部,这导致CLIP预测文本描述的对象而不是图像中描述的对象(还记得带有“iPod”横幅的苹果吗?)。现在,作者尝试生成此类图像的变体,发现尽管图像正确分类的概率非常低,但生成的变体以很高的概率是正确的。尽管该标题的相对预测概率非常高,但该模型从未生成iPod的图片。印刷攻击案例。另一个有趣的实验是用越来越多的主成分重建图像。在下图中,他们获取了少量源图像的CLIP图像嵌入,并以逐渐增加的PCA维度重建它们,然后使用带有DDIM的解码器将重建的图像嵌入可视化。这允许查看不同维度编码的语义信息。越来越多的主成分,来自原始论文。还要记住unCLIP在属性绑定、文本生成和复杂场景中的细节方面遇到的困难。前两个问题可能是由于CLIP嵌入属性。可能会出现属性绑定问题,因为CLIP嵌入本身并没有将属性显式绑定到对象,因此解码器在生成图像时会混淆属性和对象。另一组针对难绑定问题的重构,来自原文。文本生成问题可能是因为CLIP嵌入没有精确编码渲染文本的拼写信息。由于解码器层次结构以64×64的基本分辨率生成图像然后对其进行上采样,可能会出现低细节问题。因此,使用更高的基本分辨率,问题可能会消失(以额外的训练和推理计算为代价)。我们已经看到了OpenAI基于文本的图像生成模型的演变。也有其他公司在这个领域展开工作。DALL·E2(或unCLIP)是对系统的第一个版本DALL·E1的巨大改进,仅用了一年时间。不过,它还有很大的提升空间。遗憾的是,这些强大而有趣的模型一直未开源。作者希望看到更多这样的模型被发布或至少通过API提供。否则,所有这些成果都只能适用于一些非常有限的受众。不可否认,此类模型可能存在误差,有时会产生不正确类型的内容,或被恶意代理使用。作者呼吁人们有必要讨论如何处理这些问题。这些模型有无数潜在的良好用途,但未能解决上述问题阻碍了这些探索。作者希望DALL·E2(或其他类似模型)能很快通过开放的API来使得所有人都可以使用。 文本生成概述
引言文本生成是自然语言处理中一个重要的研究领域,具有广阔的应用前景。国内外已经有诸如AutomatedInsights、NarrativeScience以及“小南”机器人和“小明”机器人等文本生成系统投入使用。这些系统根据格式化数据或自然语言文本生成新闻、财报或者其他解释性文本。例如,AutomatedInsights的WordSmith技术已经被美联社等机构使用,帮助美联社报道大学橄榄球赛事、公司财报等新闻。这使得美联社不仅新闻更新速度更快,而且在人力资源不变的情况下扩大了其在公司财报方面报道的覆盖面。
本文主要介绍了文本生成的定义、任务、评价指标和实现方法。重点介绍了目前正在成为文本生成技术主流的数据驱动方法。本文最后对文本生成技术的发展做了简单的展望。
1.文本生成的定义Reiter等人[1]将自然语言生成系统定义为接受非语言形式的信息作为输入,生成可读的文字表述。数据到文本的生成适用于这个定义。Wan等人[2]将这个概念拓展为包括了文本到文本的生成、数据到文本的生成以及图像到文本的生成的文本生成技术。
2.文本生成任务按照输入数据的区别,可以将文本生成任务大致分为以下三类:1)文本到文本的生成;2)数据到文本的生成;3)图像到文本的生成。
1)文本到文本的生成又可根据不同的任务分为(包括但不限于):文本摘要、古诗生成、文本复述等。文本摘要又可以分为抽取式摘要和生成式摘要。抽取式摘要通常包含信息抽取和规划等主要步骤。近期,在这方面有许多有趣的工作:Hu[3]在为论文自动生成相关工作部分文本的任务上使用主题模型PLSA将句子按照主题进行聚类,使用SVR(SupportVectorRegression)计算句子的相似度,最后使用线性规划生成相关工作文本。Wang[4]在基于短语级别为学术论文生成演示文件的研究中采用了四个步骤。首先从论文中抽取名词短语、动词短语作为候选短语,利用人工设计的特征和基于随机森林的分类器决定短语是否应出现在演示文件中,再训练一个基于随机森林的分类器判断两个短语是否存在一级、二级标题的关系,最后使用贪心策略选择句子构成一个演示文件。Zhang[5]在根据体育赛事直播文字生成赛事报道的任务上,主要采用了LearningtoRank的方法结合人工设计的特征模版对句子进行打分,进而采用行列式点过程(DPP,DeterminantalPointProcess)进行句子选择。最近ACL2017上发表了多篇生成式摘要的论文。如See等人提出了解决生成事实性错误文本和重复性文本问题的方法[6],Zhou等人加入选择门网络(selectivegatenetwork)进行摘要生成[7]。古诗生成方面,Zhang等人[8]使用循环神经网络进行生成,Wang等人[9]将古诗生成划分为规划模型和生成模型两部份。Zhang等人[10]在Seq2Seq模型的基础上加入记忆模块。文本复述方面,Quirk等人[11]使用机器翻译的方法生成复述文本,Max等人 [12]采用基于枢轴(pivot)的复述生成方法,以另一种语言作为中间媒介,将源语言翻译成另一种语言后再翻译为原来的语言。
2)结构化数据生成文本的任务上,Reiter等人[13]将数据到文本的系统分为了信号处理(视输入数据类型可选)、数据分析、文档规划和文本实现四个步骤。Mei等人[14]基于encoder-decoder模型加入了aligner选择重要信息,基于深度学习提出了一个端到端的根据数据生成文本的模型。
3)图像到文本的生成方面也有不同的任务,如image-caption、故事生成、基于图像的问答等。在为图像生成解释性文本(image-caption)的任务上,Vinyals等人[15]使用类似encoder-decoder的模型进行生成。Xu等人[16]则进一步加入Attention机制。Huang等人[17]提出针对图片序列生成故事的任务,并且提供了单张图片的描述性文本、单张图片的故事以及图片序列的故事三个层级的数据集。在第三个数据集上,他们拓展之前的模型并加入一些技巧提供了该任务的一些baseline。并通过对自动化评价指标以及人工评价相关度的衡量,确定使用METEOR作为自动化评价指标。基于图像的问答任务上,Shih等人[18]提出了使用基于Attention机制的模型用VGGnet编码图片,用词向量求均值表示问题,最后经过两层网络生成答案、Wu等人[19]提出了整合image-caption模型和外部知识库等生成答案。
3.文本生成方法文本生成主要有基于规则、基于规划(Planning-based)以及数据驱动(data-driven)的方法。[20]本文重点介绍数据驱动的方法。
3.1基于语言模型的自然语言生成
基于马尔可夫的语言模型在数据驱动的自然语言生成中有着重要的应用。它利用数据和文字间的对齐语料,主要采用两个步骤:内容规划和内容实现为数据生成对应的文本。Oh等人[21]在搭建面向旅行领域的对话系统时,在内容规划部分使用bigram作特征根据近期的对话历史,选取待生成文本中需要出现的属性,内容实现部分使用n-gram语言模型生成对话。Ratnaparkhi等人[22]经过实验对比发现在语言模型上加入依存语法关系有助于改善生成效果。Angeli等人[23]则将文本生成的过程分为三种决策(以生成天气报道为例):1)宏观的内容选择,如选择温度等方面进行报道。2)微观内容选择,如选择最低温度或者最高温度进行报道。3)模版选择。这三个决策步骤交替进行。每次决策的时候会考虑到历史决策信息,这有助于处理需要考虑长距离的依赖关系的情况,如语义连贯性。
3.2使用深度学习方法的自然语言生成
在文本到文本的生成方面,Zhang等人[8]使用RNN进行中文古诗生成,用户输入关键词后首先拓展为短语,并用来生成诗的第一行。接下来的每一行结合当时所有已生成的诗句进行生成。Wang[9]则将古诗生成分为规划模型和生成模型两部份。规划模型部分得到用户的输入,在使用TextRank进行关键词抽取和使用RNN语言模型和基于知识库的方法进行拓展后,获得一个主题词序列,作为写作大纲,每一个主题词在下一个部分生成一行诗。生成模型部分基于encoder-decoder模型,增加一个encoder为主题词获得一个向量表示。另一个encoder编码已经生成的句子。使用attention-based的模型,decoder综合主题词和已经生成的句子,生成下一句的内容。通过这两个模型,在更好的控制每一行诗的主题的同时保持诗词的流畅性。最近,在ACL2017上发表了多篇生成式摘要的论文。如See等人[6]为了解决生成一些与事实不符的内容,在标准的基于attention的Seq2Seq模型上结合PointerNetwork,使其既可以生成词,也可以从原文中直接把一些词放入生成的文本中。为了解决重复的问题,加入coverage模型。Zhou等人[7]则通过在encoder和decoder之间加入一个选择门网络(selectivegatenetwork)作为输入句子的第二层表示,提高编码的有效性,降低decoder的负担。
在数据到文本的生成方面,Mei[14]提出了encoder-aligner-decoder的端到端模型。主要特点是在标准的encoder和进行了改进的decoder之间加入用于选择将要描述的重要信息的aligner。它对每条记录生成的权重分为两个部分。第一部分是针对每条记录的向量表示单独计算一个权重。第二部分是在decoder的第t步时,根据decoder已经生成的内容及对应记录的向量表示计算权重。在两个数据集上取得比较好的效果提升。它的优势在于同步训练内容选择和生成部分且不需要针对任务人工设置特征,普适性较好。
在图像到文本的生成方面,Vinyals[15]使用Seq2Seq的模型,首先利用深层卷积神经网络DCNN对图像建模,然后由一个LSTM网络进行解码生成最终的文本。与传统的机器学习方法相比,无需进行图像和文本中词的对齐、调整顺序等步骤。Xu[16]则进一步提出利用Attention机制来加强词语和图像块之间的对齐,在生成文字的时候,模拟人看东西时关注点逐渐转移的过程,以生成更符合人习惯的文本。
4.模型评价
Noevaluation,noresearch。如何对生成的文本进行评价也是文本生成研究中重要的一环。Gkatzia[24]总结2005年到2014年间的常用的针对文本生成的评价方法,将其分为内在评价和外在评价方法。其中内在评价关注文本的正确性、流畅度和易理解性。常见的内在评价方法又可分为两类:1)采用BLEU、NIST和ROUGE等进行自动化评价,评估生成文本和参考文本间相似度来衡量生成质量。2)通过人工评价,从有用性等对文本进行打分。外在评价则关注生成文本在实际应用中的可用性。根据他们的分析,内在评价方法是最为流行的评价方法。2012-2015年间发表的论文超半数使用自动化评价指标进行评价,但由于它需要有大量的对齐语料,且对于对齐语料的质量很敏感,所以在使用自动化评价指标的同时,研究者常常还会同时使用其它的评价方法,如直观且易于操作(与外在评价方法相比)的人工评价生成文本的正确性、流畅性方法。
5.展望文本生成技术,尤其是数据到文本的生成已经在商业领域获得应用,近期,国内也出现了许多投入使用的利用文本生成技术自动生成新闻的系统。文本生成技术的应用前景广阔,具有巨大的市场需求。相信随着机器学习技术的进步、新的公开数据集的发布、市场需求的推动以及计算性能的飞速提高,文本生成领域的研究将取得更大的发展与突破。
作者:龚恒 哈工大SCIR在读本科生
参考文献
[1]ReiterE,DaleR,FengZ.Buildingnaturallanguagegenerationsystems[M].Cambridge:Cambridgeuniversitypress,2000.
[2]万小军,冯岩松,孙薇薇.文本自动生成研究进展与趋势.CCF中文信息技术专业委员会
[3]HuY,WanX.AutomaticGenerationofRelatedWorkSectionsinScientificPapers:AnOptimizationApproach[C]//EMNLP.2014:1624-1633.
[4]WangS,WanX,DuS.Phrase-BasedPresentationSlidesGenerationforAcademicPapers[C]//AAAI.2017.
[5]ZhangJ,YaoJ,WanX.Towardconstructingsportsnewsfromlivetextcommentary[C]//ProceedingsofACL.2016.
[6]AbigailSee,PeterJ.LiuandChristopherD.Manning.GetToThePoint:SummarizationwithPointer-GeneratorNetworks[C]//ProceedingsofACL.2017
[7]QingyuZhou,NanYang,FuruWeiandMingZhou.SelectiveEncodingforAbstractiveSentenceSummarization[C]//ProceedingsofACL.2017
[8]Zhang,X.,&Lapata,M.ChinesePoetryGenerationwithRecurrentNeuralNetworks[C]//Proc.EMNLP’14,pp.670–680.
[9]WangZ,HeW,WuH,etal.Chinesepoetrygenerationwithplanningbasedneuralnetwork[C]//COLING.2016.
[10]JiyuanZhang,YangFeng,DongWang,YangWang,AndrewAbel,ShiyueZhangandAndiZhang.FlexibleandCreativeChinesePoetryGenerationUsingNeuralMemory[C]//ProceedingsofACL.2017
[11]QuirkC,BrockettC,DolanWB.MonolingualMachineTranslationforParaphraseGeneration[C]//EMNLP.2004:142-149.
[12]MaxA.Sub-sententialparaphrasingbycontextualpivottranslation[C]//Proceedingsofthe2009WorkshoponAppliedTextualInference.AssociationforComputationalLinguistics,2009:18-26.
[13]ReiterE.Anarchitecturefordata-to-textsystems[C]//ProceedingsoftheEleventhEuropeanWorkshoponNaturalLanguageGeneration.AssociationforComputationalLinguistics,2007:97-104.
[14]MeiH,BansalM,WalterMR.Whattotalkaboutandhow?selectivegenerationusinglstmswithcoarse-to-finealignment.arXivpreprintarXiv:1509.00838,2015.
[15]VinyalsO,ToshevA,BengioS,etal.Showandtell:Aneuralimagecaptiongenerator[C]//ProceedingsoftheIEEEConferenceonComputerVisionandPatternRecognition.2015:3156-3164.
[16]XuK,BaJ,KirosR,etal.Show,attendandtell:Neuralimagecaptiongenerationwithvisualattention[C]//InternationalConferenceonMachineLearning.2015:2048-2057.
[17]HuangTHK,FerraroF,MostafazadehN,etal.Visualstorytelling[C]//NAACLHLT.2016.
[18]ShihKJ,SinghS,HoiemD.Wheretolook:Focusregionsforvisualquestionanswering[C]//ProceedingsoftheIEEEConferenceonComputerVisionandPatternRecognition.2016:4613-4621.
[19]WuQ,WangP,ShenC,etal.Askmeanything:Free-formvisualquestionansweringbasedonknowledgefromexternalsources[C]//ProceedingsoftheIEEEConferenceonComputerVisionandPatternRecognition.2016:4622-4630.
[20]GattA,KrahmerE.SurveyoftheStateoftheArtinNaturalLanguageGeneration:Coretasks,applicationsandevaluation.arXivpreprintarXiv:1703.09902,2017.
[21]Oh,A.H.,&Rudnicky,A.I.Stochasticnaturallanguagegenerationforspokendialogsystems[C]//ComputerSpeechandLanguage.2002:16(3-4),387–407.
[22]Ratnaparkhi.A.Trainablemethodsforsurfacenaturallanguagegeneration.[C]//InProc.NAACL’00,2000:pp.194–201.
[23]Angeli,G.,Liang,P.,&Klein,D.ASimpleDomain-IndependentProbabilisticApproachtoGeneration[C]//InProc.EMNLP’10,2010:pp.502–512.
[24]GkatziaD,MahamoodS.ASnapshotofNLGEvaluationPractices2005-2014[C]//ProceedingsofENLG.2015.
本文来源于哈工大SCIR
原文链接点击即可跳转