百科问答小站 logo
百科问答小站 font logo



如何评价DALL-E模型的实现? 第1页

  

user avatar   huo-hua-de-41 网友的相关建议: 
      

DALL-E的具体实现,openAI没有公布,github上发布的代码只有一个dVAE的模型,相当于只有一半。

但Hugging Face和谷歌云团队,按照自己的理解,实现了一个DALL·E mini模型,可从中了解一二。

DALL·E mini模型,在限于更小的硬件资源的情况下,效果还不错,模型比原来的DALL-E小27倍,在单个TPU v3-8上只训练了3天。看到Literature Review了10天,我瞬间绷不住了,真香。


模型结构如下图,在训练过程中,输入图像和文本对。

  • 图像通过一个VQGAN编码器进行编码,该编码器将图像转化一系列token。
  • 文本通过一个BART编码器进行编码。
  • BART编码器的输出和编码后的图像被送入BART解码器,这是一个自动回归模型,其目标是预测下一个token。
  • 损失函数是预测文本token和图像token的softmax交叉熵。

在推理时,只使用标题,用于生成图像:

  • 标题通过BART编码器进行编码。
  • 一个<BOS>标记(识别 "Beginning Of Sequence "的特殊标记)通过BART解码器输入。
  • 根据解码器,预测下一个token的分布,对图像token进行顺序生成。
  • 图像token的序列通过VQGAN解码器进行解码。
  • CLIP用于选择最佳生成的图像。

图像编码器和解码器,使用的是VQGAN。

VQGAN的目标是将图像编码为一连串的离散token,如果直接用pixel当做token,那边词表会有256^3那么大,而序列长度有256 * 256那么大,放进transformer内存瞬间就炸了。

codebook使用感知损失加GAN判别器损失来训练。编码器输出与codebook索引对应。一旦图像被编码成一连串的token,它就可以被用于任何transformer模型。

在DALL·E mini模型中,图像将被编码为16 x 16 = 256个离散的token,这些token来自16384大小的词汇表。解码后的图像是256 x 256(每边16 x 16)。

训练方法是用seq2seq的方法,用前面的序列预测下一个token,结合上mask的设计,可以实现行预测或者列预测。这种transformer做seq2seq的方法来自于UNILM,感兴趣的同学可以去了解下。


user avatar   jin-xue-feng 网友的相关建议: 
      

DALL-E官方论文代码终于放出,OpenAI是如何实现图像版GPT-3的?

今年1月份openAI发布了DALL-E模型,能够根据文本生成效果惊艳的图像,并且参数量达到了120亿,被称为“图像版GPT-3”。

最近,openAI放出了DALL-E的论文和部分代码,使得大家能够进一步一窥究竟。根据本次开出的论文《Zero-Shot Text-to-Image Generation》[1],简单整理了一下DALL-E的整体架构,如图1所示,DALL-E的推理主要分为三个阶段,其中前两个阶段对应论文中的Stage One和Stage Two。

在第一个阶段,将256×256的图片分为32×32个patch,然后使用训练好的离散VAE模型的encoder将每个patch映射到大小为8192的词表中,最终一张图片转为用1024个token表示。在第二个阶段,使用BPE-encoder对文本进行编码,得到最多256个token,token数不满256的话padding到256;再将256个文本token与1024个图像token进行拼接,得到长度为1280的数据;最终将拼接的数据输入训练好的具有120亿参数的Transformer模型。在第三个阶段,对模型生成的图像进行采样,并使用同期发布的CLIP模型[2]对采样结果进行排序,从而得到与文本最匹配的生成图像。

DALLE包括三个独立训练得到的模型:dVAE,Transformer和CLIP,其中dVAE的训练与VAE基本相同,Transformer采用类似GPT-3的生成式预训练方法。下面对DALL-E采用的dVAE模型和Transformer模型做简单介绍,对CLIP感兴趣的朋友可以参考[2]

  • dVAE

dVAE主要用来为图像的每个patch生成token表示,这次openAI开出的代码就是dVAE的推理代码。dVAE的encoder和decoder的机构较为简单,都是由bottleneck-style的resblock组成,但与常见的VAE相比,dVAE有以下两点区别:

1、dVAE的encoder是将图像的patch映射到8192的词表中,论文中将其分布设为

在词表向量上的均匀分类分布,这是一个离散分布,由于不可导的问题,此时不能采用重参数技巧。DALL-E使用了Gumbel-SoftMax trick来解决这个问题,对Gumbel-SoftMax trick感兴趣的朋友可以参考[3]

2、在重建图像时,真实的像素值是在一个有界区间内,而VAE中使用的Gaussian

分布和Laplace分布都是在整个实数集上,这造成了不匹配的问题。为了解决这个问题,论文中提出了logit-Laplace分布,如下式所示:



  • Transformer

Dall-E中的Transformer结构由64层attention层组成,每层的注意力头数为62,每个注意力头的维度为64,因此,每个token的向量表示维度为3968。如图2所示,attention层使用了行注意力mask、列注意力mask和卷积注意力mask三种稀疏注意力。


Transformer的输入如图3所示,其中pad embd通过学习得到,根据论文介绍,为每个位置都训练了一个pad embd,即256个pad embd,在对文本token进行pad时,使用对应位置的pad embd。

总的来说,目前公开的DALL-E的实现在模型结构上并没有太多创新,而是合理利用了现有的模型结构进行组合,并采用了一些trick解决了遇到的问题,从而在大数据集上训练得到超大规模的模型,取得了令人惊艳的效果,这也符合openAI的一贯风格。但无论如何,DALL-E在深度学习能力边界探索的道路上又前进了一步,也再一次展示了大数据和超大规模模型的魅力。美中不足的是,DALL-E包含了三个模块,更像是一个pipeline,而对于普通的研究者来说,要运行这样一个复杂的大规模模型是一件很困难的事情。

参考文献请见:

【1】Zero-Shot Text-to-Image Generation, 2021.

【2】Learning transferable visual models from natural language supervision, 2020

【3】The Gumbel-Softmax Trick for Inference of Discrete Variables

(casmls.github.io/genera)




  

相关话题

  深度学习方面的科研工作中的实验代码有什么规范和写作技巧?如何妥善管理实验数据? 
  如何看待SIREN激活函数的提出? 
  人工智能可以超过人的创造力吗? 
  如何看待End-to-End Object Detection with Transformers? 
  如何评价 2021 年 12 月新改版的知识引擎 magi.com? 
  关于tensorflow中的滑动平均? 
  AMD的CPU是否适合搭建深度学习主机? 
  有哪些可以自学机器学习、深度学习、人工智能的网站? 
  面试官如何判断面试者的机器学习水平? 
  为什么香农要将信息熵公式要定义成 -Σp·log₂(p) 或 -∫p·log₂(p)dp? 

前一个讨论
NLP现在就业是否没有前途?
下一个讨论
语音识别中,声学模型与语言模型扮演什么角色?或者说是怎么通过两个模型进行语音识别的?





© 2024-11-21 - tinynew.org. All Rights Reserved.
© 2024-11-21 - tinynew.org. 保留所有权利