它是如何做到如此出色的?(DALL-E 解析 第二部分)

ML at Berkeley 模型

摘要

本文介绍了 DALL-E 的架构,重点阐述其 Transformer 组件如何将语言与离散图像表示相关联,从而根据文本提示生成高质量图像。

<p><em>作者:Charlie Snell</em></p> <p>DALL-E 由两个主要组件组成。一个是离散自编码器(discrete autoencoder),它学习如何在压缩的潜在空间中准确地表示图像;另一个是 Transformer,它学习语言与该离散图像表示之间的相关性。</p> <p>在本系列的<a href="https://ml.berkeley.edu/blog/posts/vq-vae/">第一部分</a>中,我们着重于理解自编码器。具体来说,我们研究了一种被称为 VQ-VAE 的强大技术。然而,根据现已发表的论文,DALL-E 使用了一种略有不同的方法来学习其离散表示,他们称之为 dVAE。尽管具体技术略有不同,但核心目标保持不变。尽管如此,我将在本文开头简要解释这些差异。本文的其余部分将聚焦于 DALL-E 的 Transformer。</p> <p>Transformer 可以说是 DALL-E 的核心;它使得模型能够生成与给定文本提示准确匹配的新图像。它学习语言与图像如何结合,因此当模型被要求生成“一个鳄梨形状的扶手椅”的图像时,它能够输出一些非常富有创意的鳄梨椅设计,这些设计可能是前所未见的。</p> <div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uZO3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab948400-ba16-4ff4-8f91-42e11e37d205_1386x435.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uZO3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab948400-ba16-4ff4-8f91-42e11e37d205_1386x435.jpeg 424w, https://substackcdn.com/image/fetch/$s_!uZO3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab948400-ba16-4ff4-8f91-42e11e37d205_1386x435.jpeg 848w, https://substackcdn.com/image/fetch/$s_!uZO3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab948400-ba16-4ff4-8f91-42e11e37d205_1386x435.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!uZO3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab948400-ba16-4ff4-8f91-42e11e37d205_1386x435.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uZO3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab948400-ba16-4ff4-8f91-42e11e37d205_1386x435.jpeg" width="1386" height="435" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ab948400-ba16-4ff4-8f91-42e11e37d205_1386x435.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:435,&quot;width&quot;:1386,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!uZO3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab948400-ba16-4ff4-8f91-42e11e37d205_1386x435.jpeg 424w, https://substackcdn.com/image/fetch/$s_!uZO3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab948400-ba16-4ff4-8f91-42e11e37d205_1386x435.jpeg 848w, https://substackcdn.com/image/fetch/$s_!uZO3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab948400-ba16-4ff4-8f91-42e11e37d205_1386x435.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!uZO3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab948400-ba16-4ff4-8f91-42e11e37d205_1386x435.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div> <h6>(<a href="https://openai.com/blog/dall-e/">图片来源</a>)</h6> <p>除了富有创意且准确的设计之外,Transformer 似乎还能理解一些常识性物理规律。例如,要求生成“一只戴着耳机、盯着镜中自己倒影的熊猫宝宝插画”,就能产生如下图所示的结果,甚至连镜子反射的物理细节都一应俱全。</p> <div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EAjH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f7da54e-8e27-4c9b-a126-b7b5d7bd9af5_1766x1616.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EAjH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f7da54e-8e27-4c9b-a126-b7b5d7bd9af5_1766x1616.jpeg 424w, https://substackcdn.com/image/fetch/$s_!EAjH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f7da54e-8e27-4c9b-a126-b7b5d7bd9af5_1766x1616.jpeg 848w, https://substackcdn.com/image/fetch/$s_!EAjH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f7da54e-8e27-4c9b-a126-b7b5d7bd9af5_1766x1616.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!EAjH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f7da54e-8e27-4c9b-a126-b7b5d7bd9af5_1766x1616.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EAjH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f7da54e-8e27-4c9b-a126-b7b5d7bd9af5_1766x1616.jpeg" width="1456" height="1332" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7f7da54e-8e27-4c9b-a126-b7b5d7bd9af5_1766x1616.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1332,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!EAjH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f7da54e-8e27-4c9b-a126-b7b5d7bd9af5_1766x1616.jpeg 424w, https://substackcdn.com/image/fetch/$s_!EAjH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f7da54e-8e27-4c9b-a126-b7b5d7bd9af5_1766x1616.jpeg 848w, https://substackcdn.com/image/fetch/$s_!EAjH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f7da54e-8e27-4c9b-a126-b7b5d7bd9af5_1766x1616.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!EAjH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f7da54e-8e27-4c9b-a126-b7b5d7bd9af5_1766x1616.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div>
查看原文 导出为 Word 导出为 PDF
查看缓存全文

缓存时间: 2026/05/08 08:44

# 它是如何做到如此出色的?(DALL-E 解析第 2 部分)来源:https://mlberkeley.substack.com/p/dalle2 *作者:Charlie Snell* DALL-E 由两个主要组件组成。一个是离散自编码器(discrete autoencoder),它学习在压缩的潜在空间(latent space)中准确地表示图像。另一个是 Transformer,它学习语言与这种离散图像表示之间的相关性。在本系列的**第一部分**(https://ml.berkeley.edu/blog/posts/vq-vae/)中,我们专注于理解自编码器。具体来说,我们研究了一种特别强大的技术,称为 VQ-VAE。不过,根据现已发表的论文,DALL-E 使用了一种略有不同的方法来学习其离散表示;他们称之为 dVAE。虽然具体技术有些不同,但核心目标保持不变。尽管如此,我将在本文开头简要解释其中的差异。本文的其余部分将专注于 DALL-E 的 Transformer。 Transformer 可以说是 DALL-E 的核心;它使得模型能够生成与给定文本提示准确匹配的新图像。它学习语言和图像是如何结合在一起的,因此当模型被要求生成“一个鳄梨形状的扶手椅”的图像时,它能够吐出一些超级有创意的设计,这些鳄梨椅子的设计可能是以前从未有人想到过的。 ![](https://substackcdn.com/image/fetch/$s_!uZO3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab948400-ba16-4ff4-8f91-42e11e37d205_1386x435.jpeg) ###### (图片来源:https://openai.com/blog/dall-e/) 除了富有创意且准确的设计外,Transformer 似乎还理解一些常识性的物理规律。例如,要求生成“一只戴着耳机的小熊猫盯着镜子里自己的倒影的插图”,会产生大致如下的图像,甚至包括镜子反射的物理细节。 ![](https://substackcdn.com/image/fetch/$s_!EAjH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f7da54e-8e27-4c9b-a126-b7b5d7bd9af5_1766x1616.jpeg) ###### (图片来源:https://openai.com/blog/dall-e/) 该模型似乎还充满了关于我们世界的事实知识;要求生成“夜间从街道拍摄的旧金山阿拉莫广场的照片”,会生成完全符合要求的图像。 ![](https://substackcdn.com/image/fetch/$s_!xjXZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7df120c5-45bd-43e1-9399-49f84a68210f_1644x1466.jpeg) ###### (图片来源:https://openai.com/blog/dall-e/) 在 OpenAI 的博客(https://openai.com/blog/dall-e/)上有更多类似的令人印象深刻的例子(不幸的是,模型本身并未发布,所以我们无法亲自测试这些例子;我们只能依据 OpenAI 在博客文章中展示的内容)。 所有这些都提出了一个问题:它是如何做到如此出色的?没有人确切知道为什么 Transformer 的效果如此好,甚至不知道它们实际上学到了什么;目前没有能够解释这一切的深度学习基础理论,这些网络目前对我们来说太大太复杂,无法完全理解。我们目前所拥有的大多是像 DALL-E 这样惊人的经验结果。你用大量数据训练一个大模型,并遵循一套主要是经验得出的最佳实践,突然间你的模型就能按要求生成鳄梨椅子的图像了。没有人能完全解释清楚;它只是有效。因此,这个“它是如何做到如此出色的?”的问题实际上是一个开放的研究课题。 尽管如此,还是有一些普遍直觉可以帮助理解这类模型的能力和局限性。为了适当探索“它是如何做到如此出色的?”这个问题,以下博客文章分为两个相当不同的部分: - 前半部分将专注于理解 DALL-E 的各个不同部分如何组合在一起,从文本提示生成高质量图像。特别地,本节将研究 Transformer 在此过程中的技术角色。 - 然后,在对 Transformer 如何融入 DALL-E 架构有了确切理解的基础上,后半部分将专注于有关 Transformer 能力的更哲学性的问题,如“它是如何做到如此出色的?”以及“为什么 Transformer 能够完成所有这些任务?”在这一部分中,我将较少关注 Transformer 的技术细节;已经有很多出色的博客以极其详细的篇幅覆盖了这一主题。我推荐 Jay Allamar 关于此主题的**优秀博客**(https://jalammar.github.io/illustrated-gpt2/)(https://jalammar.github.io/illustrated-transformer/),如果需要更详细的查看,可以查看哈佛 NLP 的**注释版 Transformer**(https://nlp.seas.harvard.edu/2018/04/03/attention.html)。我也无意给出确定的答案,因为这些都是没有人真正知道答案的开放研究课题,相反,我将仅提出一些有趣的直觉,以提供关于这些模型能做什么以及这里真正发生了什么的大致清晰画面。 *注意:此博客文章假设你拥有一些深度学习和贝叶斯概率的知识。* 在深入探讨 DALL-E 的 Transformer 部分之前,我想简要纠正**第一部分**(https://ml.berkeley.edu/blog/posts/vq-vae/)中的一些假设。当我写本系列的第一部分时,DALL-E 的**正式论文**(https://arxiv.org/pdf/2102.12092.pdf)尚未发布,因此我只能依据 OpenAI 博客中的模糊细节,其中在脚注中提到他们使用类似 VQ-VAE 的模型来表示图像。现在论文终于发布了,我们可以看看他们离散自编码器的细节,他们称之为 dVAE。最终,dVAE 的高层目标是一样的:它试图为图像学习一种离散表示。它如何确切做到这一点的具体细节与 VQ-VAE 略有不同。 *(注意:本节与博客文章的其余部分有些脱节,因此如果你更感兴趣的是 Transformer 相关的内容,可以跳到下一节。)* ![](https://substackcdn.com/image/fetch/$s_!0U0b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0bec917-43ba-4942-9687-1760b3764d10_1200x648.png) 回顾一下,VQ-VAE 学习一个码本(codebook);基本上就是一个有限集学习向量的可索引查找表。编码器网络负责接收图像并输出一组向量,其中每个向量理想情况下接近某个码本向量。这些编码器输出的总维度应远小于原始图像;这里的全部目标是强制模型压缩图像,以便它学习图像的更基本表示,仅突出最重要的特征。在编码器产生一组输出后,VQ-VAE 瓶颈将每个编码器输出向量映射到其最近的码本向量。最后,这些码本向量被输入到解码器网络中,该网络的任务是重建原始图像。 ![](https://substackcdn.com/image/fetch/$s_!fydu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20232a20-ee2a-4636-a5dd-b31ca666e2fc_1600x681.png) 现在,如果仅用标准的 VAE 目标单独训练此模型,它将无法工作。必须采用一些额外的向量量化技巧,以便通过瓶颈进行反向传播,并正确对齐编码器向量和码本向量。从根本上说,需要这些技巧的原因是因为模型的假设是 *q(z|x)=1* 如果 \(z=\text{argmin}_{i}\|z_{e}(x)-e_{i}\|_{2}\),否则为 0。这里 *x* 是输入图像,*q(z|x)* 是给定图像的潜在向量分布,*z_e(x)* 是给定图像由编码器输出的向量,*e_i* 是码本向量集。基本上,这个方程表明 VAE 的后验分布是确定性的;它将概率 1 分配给最接近编码器输出的码本向量。 不过,后验分布通常不需要是确定性的。事实上,你可以想象编码器可能对输出哪个码本向量有些不确定的情况。VQ-VAE 强制模型在所有情况下只选择一个向量,但编码器在后验分布中对潜在变量表达一些不确定性可能更好。这就是 dVAE 所做的。 dVAE 编码器仍然为给定图像输出一些离散潜在变量的网格。但是,与其产生每个都确定性映射到单个码本向量的潜在变量,dVAE 编码器为每个潜在变量输出码本向量上的分布。 ![](https://substackcdn.com/image/fetch/$s_!XOsO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3f39ecb-2efc-41fe-92d7-992d26bc8c39_2022x1150.png) ###### dVAE 接收图像,并为每个潜在变量输出码本向量集上的类别分布 现在,我们只需要从每个分布中采样码本向量,然后简单地将其输入到解码器中。这很简单,对吧?嗯,这个程序实际上有一个大问题:你无法通过从类别分布中采样进行反向传播。一般来说,深度学习与离散瓶颈配合得不太好。VQ-VAE 解决了这个问题并提出了一套涉及向量量化的好技巧;dVAE 使用了非常不同的一套黑客手段。 为了解决离散采样问题,dVAE 放松了瓶颈,允许它输出码本向量集凸包内的任何向量。这种放松可以通过超参数 τ 来调整,当 τ→0 时接近离散采样。因此,通过在训练过程中退火(annealing)τ,模型能够有效地接近从离散潜在分布中学习。 ![](https://substackcdn.com/image/fetch/$s_!5qlb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba9d879d-ae22-455a-80ff-47e1c01242ee_1224x506.png) ###### 一组码本向量凸包的简化且杂乱的 2d 可视化 dVAE 使用的具体放松技术称为 Gumbel Softmax Relaxation。我认为这是解决此问题的一个非常好的方案,所以让我们深入了解细节。回顾一下,我们对 *k* 个码本向量集的分布是 *q(e_i|x)*,其中 *e_i* 是第 *i* 个码本向量。从此分布中采样潜在变量的一种方法是 \(z = \text{codebook}[\text{argmax}_i[g_i + \log(q(e_i|x))]\) 其中每个 *g_i* 都是来自 **Gumbel 分布**(https://en.wikipedia.org/wiki/Gumbel_distribution)的相同独立样本,而 codebook[*i*] 查找码本中第 *i* 个索引处的向量。我们无法对那个 argmax 进行微分,因此 Gumbel softmax 放松用 softmax 替换了 argmax。从此 softmax 中采样现在产生一组权重 *y_i*,覆盖码本向量集: \(y_i = \frac{e^{\frac{g_i + \log(q(e_i|x))}{\tau}}}{\sum_{j=1}^{k} e^{\frac{g_j + \log(q(e_j|x))}{\tau}}}\) 采样的潜在向量只是这些码本向量的加权和: \(z = \sum_{j=1}^k y_j e_j\) 成功!我们现在可以对编码器输出 *q(e_i|x)* 进行采样操作的微分。这是因为: - 这个新方程处处可微。 - 随机采样来自 *g_i*:一个独立于我们编码器输出的外部变量。 这种用外部变量重新参数化随机采样的方法称为重参数化技巧(reparameterization trick)。该技巧不适用于离散分布,因此我们不得不将原来的类别分布转换为类似的连续分布,以便使其工作。 要查看此连续分布如何类似于我们原始的类别分布,请注意超参数 τ 在 Gumbel Softmax 公式中的作用。随着该参数接近零,权重 *y_i* 变得越来越尖锐地集中在最大值周围,最终接近一组 one-hot argmax 权重,这等价于类别分布 \(z = \text{codebook}[\text{argmax}_i[g_i + \log(q(e_i|x))]\) 另一方面,对于较大的 τ 值,Gumbel softmax 将接近确定性分布,这将概率 1 放置在采样码本向量集的质心上。 ![](https://substackcdn.com/image/fetch/$s_!1pO_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0edd6c40-dbfa-420f-9d42-989492a004f3_1912x828.png) 既然我们可以通过这个 dVAE 的瓶颈进行微分,重建图像仅涉及两个步骤: 1. 从放松的后验中采样码本向量。 2. 将这些向量输入到解码器网络中,它将尽可能好地重建输入,就像在 VQ-VAE 中一样。 为了训练模型,我们只需最小化标准的 VAE 目标(在文献中称为证据下界或 ELBO): \(-E_{z \sim q(z|x)}[ \log(p(x|z))]+KL(q(z|x) || p(z))\) 这里 *p(x|z)* 是解码器对图像的重建,样本 *z∼q(z|x)* 取自 Gumbel softmax 放松。最后,*p(z)*,即潜在变量的先验,初始化为所有码本向量上的均匀分布。正如我们将在下一节中看到的那样,DALL-E 训练的第二阶段涉及用 Transformer 模型更新此先验,这最终进一步最小化此损失函数。 ![](https://substackcdn.com/image/fetch/$s_!sLbB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa125be14-e85b-4406-89f6-0900098ac2c9_2104x1168.png) ###### 从 Gumbel softmax 分布中采样码本向量,然后将其传递给解码器以重建原始编码图像 总体而言,dVAE 与 VQ-VAE 具有相同的目标:它们都尝试为复杂的数据分布(如自然图像的分布)学习离散潜在表示。然而,每种方法都以独特的方式处理这个问题。VQ-VAE 使用向量量化,而 dVAE 将离散采样问题放松为连续近似。虽然每种技术都有自己的权衡,但它们最终都似乎是同样有效且同样成功的方法来解决这个问题。 现在我们已经理解了 DALL-E 自编码器背后的具体细节,让我们暂时退一步,看看全局图景,以便更好地理解 DALL-E 的 Transformer 在其架构中的确切角色。 ![](https://substackcdn.com/image/fetch/$s_!VLGO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Face80eb2-0d18-42c5-a34e-6d6d8cf6fb52_1912x1074.jpeg) ###### 有趣的事实:“DALL-E” 旨在结合 “WALL-E” 和 “Salvador Dalí” DALL-E 的最终目标是学习给定一些文本字符串的图像的条件分布;这是 *p(x|y)*,其中 *x* 是图像,*y* 是文本提示。 *(注意:DALL-E 实际上更进一步,计算文本和图像之间的联合分布,但为简单起见,我们将仅在此处考虑条件分布。)* 一旦我们学会了这个分布,我们就可以输入一些文本提示,如“一个鳄梨形状的扶手椅”,然后通过简单地从 *p(x|y)* 中采样来生成各种准确的图像。但是,如

相似文章

DALL·E: 根据文本创建图像

OpenAI Blog

OpenAI 推出 DALL·E,一个具有 120 亿参数的 Transformer 模型,它将文本和图像视为单一令牌流来根据文本描述生成图像。该模型展示了多种功能,包括创建拟人化物体、组合不同的概念、呈现文本和执行图像修复任务。

DALL·E 3 系统卡

OpenAI Blog

# DALL·E 3 系统卡 来源:[https://openai.com/index/dall-e-3-system-card/](https://openai.com/index/dall-e-3-system-card/) OpenAI## 摘要 DALL·E 3 是一个人工智能系统,接收文本提示作为输入,生成新图像作为输出。DALL·E 3 在 DALL·E 2 的基础上进行了改进,提高了字幕保真度和图像质量。在本系统卡中,我们分享了为 DALL·E 3 部署所做的工作,包括外部专家红队评估和关键风险的评估

DALL·E 现已无需等候名单

OpenAI Blog

OpenAI 移除了 DALL·E 测试版的等候名单,使这款文本生成图像工具立即可供所有用户使用。该公告显示有 150 万+ 活跃用户每日创建 200 万+ 张图像,并计划向开发者扩展 DALL·E API 访问权限。

DALL·E 3 现已在 ChatGPT Plus 和企业版中推出

OpenAI Blog

OpenAI 宣布 DALL·E 3 现已在 ChatGPT Plus 和企业版中推出,具有改进的图像质量、更好的文字/手部/面部渲染,以及通过改进的图像描述训练实现的增强提示词遵循能力。该版本包括多层安全系统、艺术风格保护以及一个内部来源分类器,可以以超过 99% 的准确率检测 AI 生成的图像。