先导知识
残差网络TransformerCLIP前言
这里要介绍的DALL-E[1]是OpenAI的多模态预训练模型,它的最显著的效果是在文本到图像的生成上。一个例子是图1的DALL-E根据输入“牛油果形状的扶手椅”生成的图像,它足以达到以假乱真的效果,生成的内容不仅逼真合理,甚至可以一定程度上启发人类设计师。DALL-E通过120亿参数的模型,在2.5亿图像文本对上训练完成。它是一个两阶段的模型:它的第一个阶段是离散变分自编码器(Discrete Variance Auto-Encoder,dVAE),用于生成图像的token。它的第二个阶段是混合了图像和文本特征的,以Transformer为基础的生成模型。在DALL-E中,它使用了非常多优化模型准确率的技巧和提升训练效率的优化,下面我们来逐一介绍之。
图1:DALL-E根据输入“牛油果形状的扶手椅”生成的图像1. 阶段1:离散变分自编码器
1.1 背景知识:变分自编码器
我们知道,由于图像特征的密集性和冗余性,它是不能直接提供给Transformer进行训练的。目前主流的方式,例如ViT,Swin-Transformer等都是将图像的Patch作为模型的输入,然后通过一个步长等于Patch大小的大卷积核得到每个Patch的特征向量。DALL-E提供的方案是使用一个离散的变分自编码器(dVAE)将大小为 256×256256\times256 的RGB图像压缩到大小为 32×3232\times32 的,通道数为 8,1928,192 的one-hot token的分布(注意这个one-hot的形式,它很重要),变分自编码器的架构如图2所示。换句话说,阶段1的作用是将图像映射到一个大小为 8,1928,192 的图表中。这里通道数为 8,1928,192 的one-hot向量可以看做是一个词表,它的思想和是通过离散VAE,实现图像特征空间想文本特征空间的映射。
图2:DALL-E阶段1使用的的离散变分自编码器在深度学习中,变分自编码器(VAE)[2]和生成对抗网络(GAN)是最为常见的两个生成模型。提到VAE,则又不得不提自编码器(Auto-Encoder,AE),AE是一个常见的降维算法,它由编码器和解码器组成,编码器用于将输入 xx 压缩成信号 yy ,表示为 y=f(x)y = f(x) 。解码器用于将信号 yy 重构成内容 rr ,表示为 r=h(y)r = h(y) 。自编码器的误差定义为输入 xx 和重构内容 rr 的差值,它可以表示为式(1)。
(1)e=x−r=x−h(f(x))e = x – r = x – h(f(x)) \tag1
AE的一种特殊情况,它通过引入正则化来避免模型过拟合,并且保证隐层空间有较好的进行数据生成的能力。不同于AE的是,VAE的预测不再是一个值,而是一个分布,通过在分布上的随机采样便可以解码成不同的生成内容。给定一个输入 xx ,VAE的编码器的输出应该是特征 zz 的后验分布 p(z|x)p(z|x) 。但是这个分布是非常难计算的,一个替代方案是使用另外一个可伸缩的概率分布函数