欢迎光临散文网 会员登陆 & 注册

【自用】DALL·E 2(内含扩散模型介绍)【论文精读】(内含 生成模型的串讲GAN,AE...

2023-04-05 13:22 作者:九转大肠制作  | 我要投稿

字幕提取:https://b.jimmylv.cn/video/BV17r4y1u77B


【自用】DALL·E 2(内含扩散模型介绍)【论文精读】(内含 生成模型的串讲GAN,AE, DAE, VAE, VQ-VAE ... diffusion 

GPT哔哔终结者

  • 🔥 热门视频

  • 🥳 提反馈

  • 💻 客户端

更新日志 v2.3.0


🙇 亲爱的用户,因请求繁忙,OpenAI 成本已失控。如需使用,请付费支持,感谢您助力每一个梦想你只需要把任意 Bilibili 视频 URL 中的后缀 ".com" 改成我的域名 "jimmylv.cn" 就行啦!😉
比如 www.bilibili.com/video/BV1k84y1e7fW 👉 www.bilibili.jimmylv.cn/video/BV1k84y1e7fW

一键总结播客音视频内容

Powered by GPT-3.5 AI

在下面的输入框,直接复制粘贴 bilibili.com/youtube.com 视频链接 👇

请点击展开填写 License Key(每天免费10次,支持「购买次数」啦!也可以真的「给我打赏」哦 🥳)

是否显示Emoji是否显示时间戳开启分段总结English中文繁體中文日本語ItalianoDeutschEspañolFrançaisNederlands한국어ភាសាខ្មែរहिंदी语言大纲层级(≤1)要点个数(≤5)句子长短(≤14)一键总结🏄刷刷热门

📝 DALL·E 2(内含扩散模型介绍)【论文精读】

更多论文:https://github.com/mli/paper-reading

大纲视图字幕列表文章(beta)Copy

片段10:00~2:37

大家好 今天我们就一起来看一下 两个月之前OpenAI刚放出来的一篇力作 DALL·E 2 DALL·E 2 呢是OpenAI一系列 文本图像生成工作的最新一篇 去年一月份呢他们先推出了DALL·E然后在年底的时候呢又推出了GLIDE 然后现在4月份呢刚推出了DALL·E 2 DALL·E 2一出来呢其实网友就已经炸开了锅 我记得那两天的twitter上 或者说instagram上到处都是DALL·E 2生成的图片 所有的论坛上基本都被DALL·E 2刷屏了 虽然网上有很多很好玩的很新奇的生成那些图片 但是OpenAI这里 自己做的这个DALL·E 2的介绍呢更是非常精美 所以我们就先来看看 他是怎么宣传DALL·E 2的作者上来先说呢 DALL·E 2是可以根据这个文本描述 去生成这种原创性的真实的图片这个原创性很重要 因为大家经常觉得 你这个模型是不是在 很多很多这个数据上训练之后 它其实就是把这些图片记住了呢然后接下来它就不停的复制粘贴 去生成新的图片而已 但是作者这里认为呢DALL·E 2是能生成原创性的图片的 也就说是这种fake image 是从来没有在训练集里出现过的图片然后作者接下说 DALL·E 2呢 是真的把图片文本里那些特征都学到了 所以说呢 它可以任意的去组合这种概念或者属性 或者这种风格 接下来呢OpenAI就举了几个例子那左边呢就是这个文本描述 从上到下一共有3行 分别对应的就是这个概念、属性和风格那比如说呢 我们现在如果选定一个宇航员 骑着一匹马而且是这种写实的风格 那它就会生成像右图这样的图片 我们可以看出这个图片的语义 其实和这个文本描述非常的贴切 而且呢这个细节也非常的逼真那如果我们现在换一下这些概念或者 风格会怎么样呢 比如说我们现在换一下一碗汤然后属性呢 变成了去另外一个空间的传送门 然后风格呢就是一幅数字画然后DALL·E 2就能生成这么一张图片 真的是让人瞠目结舌 这个其实都可以直接拿去做插画或者当任何广告的这个宣传画了 那最后我们再看一个例子 如果我们把最上面这个概念换成teddy bear 然后属性呢 就是说它们正在做最新的这种AI研究然后风格呢 就是在1980年代的那个月球上 DALL·E 2呢就真的能够生成有两只teddy bear 然后在电脑跟前做什么工作 而且是在月球表面这个生成效果 真的是非常的不可思议 那除了根据文本直接去生成图片之外呢 那OpenAI这里说DALL·E 2 还能做的事情就是根据文本去对已有的这个图片呢 进行编辑和修改 它呢可以任意添加或者移除现在图片里的物体 而且甚至呢能够把这些阴影 光的反射

片段22:43~5:18

还有这些物体的纹理全都考虑在内 这里呢作者又举了几个例子 比如说左边这张图片呢是一个室内的一个大厅 然后它现在文本呢 就给这对应的这123三个位置上去添加一只火烈鸟 那现在 如果我们把这个火烈鸟添加的位置改成 3 那我们可以看一下哎 就在3的这个位置上就生成了两只火烈鸟 而且呢 DALL·E 2的这个生成 它不是一对一映射关系的因为它使用的是一种叫 扩散模型的结构 去做这种图像生成所以它可以生成任意多的图像 但是呢大体内容都差不多 只不过具体的细节不太一样那作者这里还给了很多别的例子 比如说他生成的里头也有一只火烈鸟 或者说呢还有脖子更长的火烈鸟而且这里我们可以注意到 这里的火烈鸟呢其实在水里还有倒影 那更神奇的是呢如果我们把现在火烈鸟添加的位置 改成这个位置2 我们就会发现呢模型其实是在这个水面上 放了一个火烈鸟形状的游泳圈 这个生成结果呢其实也是很合理的因为一般在室内的这种 泳池或者水面上 不太可能会出现真的火烈鸟往往呢是这种火烈鸟形状的游泳圈 那现在如果我们再换一个场景 比如说换到这个室内大厅里面文本描述呢是添加一个沙发 我们就会发现 DALL·E 2可以生成各式各样的沙发而且还可以变换颜色 而且还可以变换样式 然后如果我们换一个位置呢加到这个2的位置 它又会生成新的沙发 但是呢就是在对应的这个位置之上瞬间觉得其实以后的这个家装设计 家装装修呢 也没有那么难了 给一个平面图想加什么加什么 想在哪加在哪加 然后呢 DALL·E 2还能干很多事情即使在没有文本输入的情况下呢 DALL·E 2依旧 可以做一些图像生成的工作比如说这里 你给定一张图片 它就可以根据已有的这张图片和它的风格 去生成很多类似的这种风格的图片 而不改变已有的这个语义那比如说这张世界名画 经过DALL·E 2的变换之后呢 就变成了右边这个样子而且呢就像我刚才说的一样 DALL·E 2这个模型呢 不是一个一对一的映射它其实是可以生成 很多种类似的图片的 比如这里人头的方向改变了然后这里头巾的样式改变了 当然了 人的长相呢一般也都有微妙的改变若这里呢 我们再看另外一幅世界名画 这个星期日的下午我们就可以看到 DALL·E 2真的是真实的模仿了这种风格 然后又生成了很多很多种这样不同的图片 所以说在DALL·E 2这个工作出来之后呢 OpenAI的CEO本人都在twitter上说他觉得他之前对AI的理解呢 可能有都有了错误 因为我们一直觉得AI呢

片段35:23~8:00

是能够先处理这种就是重复性的工作 这种体力工作 而这种带有创造性的工作呢往往是AI无法取代的 但在现在看来呢 这种艺术的创作呢反而好像已经触手可及了 那在作者 卖完了这些最惊艳的结果之后呢作者就把DALL·E 2跟DALL·E 的这个生成效果对比了一下 那这里这个例子呢就是用同样的文本生成的两张图片 我们可以看到呢 DALL·E 2可以生成之前4倍的这个分辨率 所以说看起来呢更清晰也更逼真了 那如果光拿一张图举例大家可能不信 所以作者这里呢又做了另外一个实验 就是它找了一些志愿者然后让这些志愿者呢看1,000张图片 分别是DALL·E生成的和DALL·E 2生成的 那最后统计的结果呢就是有70%的人认为DALL·E 2生成的图片 跟这个文本描述呢更贴切 然后有将近90%的人认为呢DALL·E 2生成的图片 要比DALL·E生成的图片要更真实 最后呢又是老生常谈OpenAI经常搞这个大模型 大数据这个东西 然后到最后呢他就跟你来谈一谈这个安全考虑 或者道德公平性伦理这种考虑 他这里就说呢我们暂时还不能开源也不能release我们的模型 我们甚至连API都不开放 目前呢 OpenAI就只是把他们的API 开放给了一小部分用户 而让他们呢去做这种内测或者做一些研究 看看DALL·E 2到底有什么缺陷 有什么限制那其实作者这里说的这些安全考虑呢 主要就是说怕用户呢 去生成这种带有暴力的或者成人的 或者带有政治色彩的这些图片 当然了网上收集的这种图像文本对肯定会带有很多这种偏见 和公平性的问题 那如果你现在觉得DALL·E 2很吸引你然后想去玩一下的话 那你就可以加入DALL·E 2的这个waitlist 但是这个waitlist应该很长我也早在一个半月之前就申请了 但是至今没什么消息 从twitter和reddit使用的情况来看呢OpenAI呢主要是把优先权给了那些大v 说白了就是让他们去给DALL·E 2 做这种免费的宣传那对于大部分 没有排上waitlist的小伙伴来说呢 如果你非常想尝试一下DALL·E模型那这里呢 其实github上有一个开源的DALL·E库 叫做dalle-mini目前呢我们可以看到它的star 也已经有9,000个了 虽然它的模型呢都是在比较小规模的数据集上去训练的 而且模型本身也比较小 所以说最后的结果呢不是那么好但是玩起来已经很有意思了 这里呢 你当然可以把它的代码下下来在你本地上去跑 或者呢你就像它这里说的一样 打开这个colab然后在colab里去用 再或者呢最简单的一种方式 就是直接用APP

片段48:05~10:46

也就是它这里最上面说的这个 Hugging Face的这个应用 Hugging Face大家肯定都不陌生了算是现在最流行的nlp的开源库 而且已经渐渐有变成CV 甚至多模态里最流行的库的趋势那Hugging Face这边呢 它就提供一个东西叫space 就是一个空间然后大家可以把它的模型 代码上传到这个上面 就可以做成一个APP然后大家呢就可以直接来玩 比如这里呢 就是一个DALL·E mini的一个应用APP大家呢就可以随意把你的这个文本 写在这个文本框里 然后点一下这个run底下就会出来很多 这个DALL·E mini生成的图片 这里呢因为太多人玩了所以经常排不上队 我就提前体验了一下 我现在可以把我跑的例子呢跟大家分享一下 比如这里我的第一个例子 就是有一只狗在月球上奔跑我们可以看到 这个模型小了确实还是不行 生成的这个画质还是渣了不少但是呢它大概生成的这个意思还是在 那下一个例子呢 就是一只狗和一只猫在打架那这些图片里呢 也基本都有一只狗和一只猫在对峙 但是这里呢画就比较抽象没有那么多写实 比如说这里是个狗头 旁边接了两个这种身子一个白色一个黄色 你也不知道它接的是哪个 然后下面这张图呢看着猫好像是在打架的样子 可是这个猫脸也没有了 对整体上还是比较糙的然后再来生成一张食物的照片 就是边吃拉面边吃sushi 这里生成这些图片质量还不错那可能是因为这个例子比较简单 因为它就是两个物体 拉面和sushi都是比较常见的物体所以说生成的呢也就比较逼真 好最后呢就是在亚马逊AWS种西红柿 但是模型呢应该还不理解什么是AWS对它就是把西红柿画出来 这个在DALL·E 2本文里也有介绍 就是当这个文本太过复杂场景太过复杂的时候 其实模型呢 还是会选择一个最简单的场景然后把它生成出来 那不论是OpenAI 生成的这种精美的高清大图还是我用DALL·E mini 生成的这种画质比较糙的小图片 总之呢 DALL·E系列的工作这种根据文本去生成图像的 质量还是非常好的 而且可以说是出人意料的好所以 自从DALL·E在2021年1月份出来之后 后续就有一大堆工作进行跟进比如说在21年5月份的时候呢 清华就推出了CogView这个模型 它呢还支持中文去生成图像然后到11月份的时候呢 微软和北大 就推出了这个NÜWA(女娲)模型 它不光能生成图像而且还能生成比较短的视频 然后到12月份呢 OpenAI自己又推出了GLIDE这个模型也就是我们今天DALL·E 2 主要基于的这个图像生成的模型 我们一会也会提到然后呢同样在12月 百度也推出了ERNIE-ViLG这个模型 它也支持中文

片段510:51~13:31

而且它这个模型也非常大 有100亿参数 基本跟最开始这个DALL·E120亿参数呢就非常接近了 然后呢转眼来到今年 4月份的时候呢OpenAI又推出了DALL·E 2然后同样在4月呢 清华又再次推出了CogView 2 紧接着一个月之后呢他又推出了CogVideo 就专门针对生成视频做的 最后呢就在上个月google也不甘示弱推出了他们自己的Imagen Imagen呢其实相对而言 模型要简单很多而且效果呢也跟DALL·E不相上下 甚至很多人呢 都觉得Imagen的效果更好但是其实呢 Imagen和DALL·E 2所用的模型呢 都差不多它们的底层呢 都是用了 扩散模型去做这种图像的生成所以说扩散模型 真的是一个很火的方向 预感到未来几年呢基本上它就要取代GAN的这个位置 因为GAN其实已经没有什么可以做的了 已经被人做了五六年了该挖掘的东西呢全都已经挖掘完了 扩散模型呢作为新起之秀 有太多太多可以提高的地方现在扩散模型的状态呢 基本就跟17、18年时候 那个GAN的状态差不多所以应该至少还有两到三年的时间 去充分发挥它的潜力 那前面说了这么多接下来呢我们言归正传 一起来精读一下DALL·E 2这篇论文 首先我们看一下题目作者说呢使用CLIP训练好的这种特征 来做这种层级式的 依托于文本的图像生成这里层级式的意思呢 是因为DALL·E 2的这个模型 是先生成一个小分辨率的图片比如说64*64 然后呢 再利用一个模型 上采样到256*256然后再使用一个模型 上采样到1024*1024 变成一个高清大图所以是一个层级式的结构 然后DALL·E 2本身完成的任务呢 就是根据提供的这个文本从而去生成这个新的图像 那至于使用CLIP提供的这个特征 其实DALL·E 2这个模型呢是先训练好了一个CLIP模型 然后找到图片和文本对 之间的这种相连关系之后这个时候呢给定一个文本 CLIP的文本编码器呢 就可以把这个文本变成一个文本特征然后DALL·E 2 就训练一个prior模型 这个模型的输入呢是这个文本特征 然后它的输出呢是这个图像特征然后再把这个图像特征 给接下来的这个解码器 从而生成一个完整的图像所以说整个DALL·E 2模型呢 是离不开CLIP特征的 作者团队呢都来自OpenAI大家应该都很熟悉了 这里的一作Aditya呢 其实参与过CLIP和DALL·E的工作Mark呢也是DALL·E的原班作者 而且他主要呢是做Codex和GPT 3的 但是因为DALL·E 2这篇论文它这个图像解码部分呢 主要用的是diffusion model 就这个扩散模型所以说呢 又找了两个扩散模型的这个专家 他们呢做过iGPT

片段613:36~16:14

而且最近呢 刚写过Improved DDPM这篇论文 也就是denoising diffusion model所以把扩散模型呢玩的是很溜 所以一会呢我们也可以看到 DALL·E 2这个模型其实就是CLIP模型加上GLIDE模型 而GLIDE模型呢 就是一个基于扩散模型的文本图像生成的方法 那从作者这里也可以看出来 就是CLIP的作者 加上GLIDE的作者那在精读论文之前呢 我们先来看一下文章的整体结构 DALL·E 2这篇论文呢其实不长跟CLIP的四五十页比起来呢 DALL·E 2其实只有27页 如果你把后面的这些可视化还有这些参考文献都去掉的话 其实也就十几页 而且全文呢这些图确实都比较多然后论文上来呢先是说摘要 然后是引言 然后在引言部分呢贴了9个高清大图就展示了一下 他们生成的这种1024*1024的这些大图 到底画质有多么的好然后接下来呢 就是DALL·E 2论文的这个主体方法部分 其实只有短短的两页然后在这里呢 作者甚至都没有去讲CLIP 他认为你已经知道CLIP是什么了他主要就讲的是它后面 图像生成这一部分 比如说这里呢他就先讲了一下decoder 这个解码器 下面呢就讲了一下这个prior先验模型 然后接下来呢 作者就大概用了四五页的篇幅去介绍一下DALL·E 2到底能干什么 然后又用了四五页的篇幅呢 去跟别的方法做了一些对比不光是数字上的对比 还有可视化上的这种对比 然后最后呢写了一下相关工作最有意思的呢就是最后几页 他描述了一下 DALL·E 2的这个现在的局限性和不足其实当我们最后 看到这些不足的时候呢 我们会发现其实DALL·E 2还有很多需要提高的地方 它远远没有我们看到的那几张图片 一样那么惊艳接下来呢是参考文献 这里呢是一些具体的这个训练细节 最后呢又展示了一下根据同样一个文本 能够生成不同的输出 而且每一张输出的图片呢都非常清晰和逼真 那接下来我们直接看摘要 作者上来说之前的那些对比学习的方法 比如说我们OpenAI自己的CLIP模型 这种模型已经可以学习到 很稳健的一个图像特征 它既能够抓住这个语义信息又能抓住这个图像的这个风格信息 那既然这个特征这么好这么稳健 那如果你只拿它去做这种分类任务就有点可惜 所以作者接下来说呢 为了能够借助于这些特征然后能用来做这个图像生成 我们呢提出了一个两阶段的一个模型 这两个阶段呢分别叫prior和这个decoderprior呢就是给定一个文本描述 它能够给我生成一个类似于CLIP的一个 图像特征然后解码器的意思呢 就是说当你给定这个图像特征之后 我能根据这个特征生成一个图像

片段716:20~19:02

所以这个过程呢其实说直白点 就是给定一个文本 然后我先用一个CLIP模型把它生成一个文本的特征 这一步呢是固定的 因为这里这个CLIP模型呢是锁死的然后接下来呢 就到文章说的这个两阶段的模型 它根据这个文本特征去生成一个图像特征 这一步呢就叫做prior 当然CLIP模型在这里也有用了因为CLIP生成的那个对应的图像特征 是用来在这里做ground truth用的 然后你一旦有了这个图像特征我就需要有一个这个解码器 去生成最后的这个图像 然后呢就完成了这个从文本到图像的生成过程 然后作者接下来说呢他们发现 就这种显式的去生成这种图像特征的方式 能够很显著的提升图像的这个deversity 就这个多样性也就是说加上这一步是有好处的 而且呢对于这个图像的这个写实程度 还有这个跟文本的这个匹配程度都没有什么损失 就说我生成的这个图又逼真又多样 那这个特性还是非常好的因为我们大家都知道 GAN生成的图像虽然非常的逼真 因为它本来的目的就是以假乱真嘛但是呢它的多样性不太好 生成的图像都长得差不多 不太具备这种原创性所以这也就是最近的模型 像DALL·E 2和Imagen 大家都使用扩散模型的原因因为它的多样性好 还有创造力 然后作者接下来就强调了一下 他们这个基于扩散模型的这个解码器能够基于给定的这个图像特征 但是生成很多不一样的这个图片 但是这些图片呢它的这个语义信息 和风格都是比较接近的 只不过是一些细节呢不太一样接下来呢作者又开始卖另外一个点 就说 因为我们这个是通过文本生成图像所以呢 我们就很容易的通过CLIP这个模型 作为中间那个桥梁从而达到这个能用文本 去直接对图像进行编辑的功能 而且是zero-shot 就是你不需要去训练你直接拿来这个DALL·E 2的模型 你就可以去用了 就跟我们之前展示的那个在大厅里放沙发的那个例子一样 你就可以在任意一个地方 去加个沙发加个椅子 或者把这个沙发去掉 把这个壁画去掉你可以实时的 利用这种文本的信息 去引导这个模型 去生成各种各样你想要的图片然后作者最后呢说了一下模型的结构 他说他们的这个解码器呢 用的是这个扩散模型然后在他们的这个prior模型里呢 他试了这个auto regressive 自回归模型和这个扩散模型但最后他们发现了还是这个扩散模型 效率又高 最后生成的效果又好所以整体上呢 DALL·E 2就是一整个都是扩散模型 我其实没太明白作者为什么要把这句话 当成最后一句话 可能作者们觉得呢

片段819:06~21:45

这个才是他们最想表达的一个观点 也就说接下来 大家都来使用扩散模型吧所以把模型结构这个东西呢 放在了最后 当成压轴的一句话接下来呢我们一起读引言 作者上来说 视觉领域最近的一些进展呢主要就是使用了更大的这个模型 而且呢使用了更大的一个数据集 这个数据集呢主要是这个图像文本对也就是带有标题的这种图像 那代表作之一呢 就是他们自己的这个CLIP模型了CLIP模型呢 就通过最简单的那种对比学习的方式 就能够学习到一个很好的这个特征我们之前也讲过CLIP这篇论文 首当其冲的 就是它们有这个特别好的这个zero-shot的能力就是任何一个图片拿过来 你给一些你感兴趣的这些标签 它就能把这个图片呢分给其中的一个标签 所以它能够识别很多很多很多的类 远比ImageNet的1,000类要多非常的灵活 然后CLIP学到这个图像特征呢 也很稳健尤其是对这种分布偏移非常的稳健 但其实上次我们在CLIP 论文里也读过如果真的遇到那种OOD的样例 那就是完全不在当前的分布之内的话 CLIP模型呢也一筹莫展就连最简单的0123456789 它都识别不好 然后作者这里又说 CLIP还有一个好处就是说如果你去做这种fine-tune的话 它能够在一系列的这种视觉或者文本 的任务上取得很好的成绩就是总体而言 CLIP学到的这个特征呢 还是非常好的然后接下来呢作者这个画风一转 直接说这个扩散模型 也变成了在这个图像生成领域里一个非常好用的一个工具 能够呢在这个图像 还有这个视频生成上呢都达到了这种就是最好的程度 那其实呢 扩散模型在很早之前就提出了其实15年就提出了 甚至有可能更早就已经提出了 它呢是一种概率分布模型所以说它生成这个图片呢 是从一个分布里去采样 所以它的这个多样性呢非常的好但是它的保真度呢比不过GAN 因为GAN本身就是为了这个以假乱真 去优化的所以说那个GAN生成的图像呢 就特别的逼真 细节就特别的好但是扩散模型呢就做不到这一点 至少是在数值比较上 比如说inception score或者说FID score 在这些上面 GAN一直都是压着diffusion model的但是从20年开始呢 就有一系列的工作 把这个扩散模型的这个保真度做得更好了 比如说刚开始的DDPM 到后来的improved DDPM然后到Diffusion Models Beat GANs 一直到最新的GLIDE和DALL·E 2 这一系列的工作呢采用了很多很多小的这些技巧 其中有一个比较著名的呢 就是这一个叫引导的技巧guidance technique 它能够呢 牺牲一部分这个这个多样性

片段921:49~24:25

从而能达到更好的这个保真度 这样话呢 这个扩散模型一下在数值比较上就跟这个GAN不相上下了 所以这也就造就了 扩散模型这两年的火热因为它也算是SOTA了 那这样大家就可以去跟进这个工作了 否则老怕过不了审稿人那一关那接下来第二页呢 作者就放了一个九宫格 展示了九张这个高清大图我们这里呢也可以看几个例子 比如说这个图片呢 就是说一个柴犬带了一个贝雷帽而且穿了一个黑色的高领毛衣 我们可以看到这个贝雷帽 和这个高领毛衣而且真的这是黑色的下面是红色 当然是任意生成的 而且这个狗的这个鼻子嘴啊 各种细节都生成的非常的好 而且甚至这个背景呢还是虚化的 搞的真的跟一个近景拍摄的一个照片一样 然后这张图呢 写的是一个疯狂的一个熊猫科学家正在把一些冒泡的这个化学物质呢 混合到一起 确实也是栩栩如生最后还有这个一个海豚 穿着宇航服 在这个土星外面游荡或者说呢 在这个时代广场上有一个小的熊 在这个滑板上这DALL·E 2这个模型 不光是把这些物体画出来了 而且真的是把这个泰迪熊画到这个滑板之上 而且它也真的理解 这个时代广场长这个样子所以当大家看到这些图之后呢 脑海中只能觉得 DALL·E 2这个模型真的是太强了这里呢 我们就不看引言的第二段和第三段了 因为其实就直接看这个图二呢就能知道它们在说什么 作者这里呢把这个图画成了两部分 上半部分呢其实就说了的是这个CLIP下半部分呢 其实才是真正的这个DALL·E 2 那我们一个一个来看首先我们来看上面这个CLIP模型 我们来复习一下CLIP模型呢 就是说我给定一个文本然后我给定一个对应文本的这个图像 它俩呢是一个对 然后这个时候呢我把这个文本呢 通过一个文本编码器 得到一个文本特征然后图像呢 通过一个图像编码器 得到一个图像特征那这两个呢就应该是一个正样本 那这个文本跟其他的图像呢 就应该是负样本然后我通过这种方式呢 去做这个对比学习 从而最后呢把这个 文本编码器和这个图像编码器 都学的很好而且这个文本和图像的特征呢 真的就联系在一起了 是一个合并的多模态的一个特征空间 那一旦这个CLIP模型训练好之后呢 其实这个文本编码器和这个图像编码器呢 就锁住了 就是在DALL·E 2这篇论文里呢CLIP的这个模型一直都是锁住的 它是不会进行任何训练和fine-tune 那接下来呢就是作者在摘要里说过的 这个两阶段的训练方式 第一个阶段呢就是prior第二个阶段呢就是decoder 那其实最暴力的做法呢 就是如果我要根据这个文本

片段1024:30~27:12

去生成最后的这个图像 那其实呢我这中间有个大模型 中间反正就去学一些融合的特征我直接生成就可以了 但是就像作者在摘要里说的一样 如果中间有这么一个显式的生成这个图像特征的一个过程 就是先从文本生成文本特征 然后再生成图像特征然后再由这个图像特征 生成最后的图像呢 这个效果就会好很多所以他们才采取了这种两阶段的方式 那具体来说呢 在训练的时候就是首先我给定一个文本 然后 通过一个锁住的CLIP的这个文本编码器我就得到了一个这个文本特征 所以说 其实这里这个文本和这个文本特征呢都是固定的 是有一对一映射关系的 然后呢我想通过这个文本特征得到对应的这个图像特征 那这个怎么学习呢 作者这里就说呢因为CLIP这边呢也有这个图像特征 所以在训练的时候呢 我是有这个图像文本对的我就可以先把这个图像呢 得到这个图像特征 然后拿这个图像特征过来呢当这个ground truth去监督 那意思就是说我要用这个文本特征 去预测这个ground truth的这个图像特征通过这种方式 就把这个prior模型给训练出来了 这样等到真正做推理的时候也就是说我只有文本 没有配对的这个图像的时候呢 我这个文本先生成一个文本特征我还是能够通过训练好的这个prior模型 去得到一个 类似于CLIP生成的那个图像特征这个图像特征按道理来说应该非常好 它既能够用来生成一个图像 而且它还是能够跟这个文本之间是有对应联系的 然后一旦我们训练好了这个prior模型 我们拿到了这个图像特征 那接下来呢 就是用一个比较常规的一个扩散模型一个解码器 去生成最后的这个图像而已 具体的细节呢我们接下来再讲所以我们可以看到 其实DALL·E 2这篇文章 就是把CLIP和GLIDE的两个模型呢合在了一起 但是呢里面有很多值得借鉴的技巧 而且呢大力出奇迹这个效果也非常好所以DALL·E 2这个工作的影响力呢 还是非常巨大的 然后其实另外一个比较有意思的事情呢 就是其实在DALL·E 2这篇论文里 他并没有管自己叫DALL·E 2他其实给自己起的名字呢叫做unCLIP 那为什么是unCLIP呢 因为对于CLIP来说它是给定文本图像 它最后呢是想得到这个特征 然后拿这个特征去做图像匹配去做图像检索之类的 所以它是一个从输入到特征的过程 但是呢对于DALL·E 2来说它呢是通过一个文本特征 然后到图像特征 然后最后到图像的过程所以它其实呢是一个CLIP的反过程 它是把特征呢又还原到了这个数据 所以说作者呢管他们整个的这个框架呢 叫做unCLIP 所以说当你听到别人说unCLIP的时候

片段1127:17~29:51

不要觉得这是另外一篇新的论文 那其实它就是DALL·E 2 那接下来呢我们就来看一下文章的主体方法部分 但其实呢对于DALL·E 2来说 它的这个文章主体方法部分就只有两页 内容非常的少 它主要分为两段这一段讲的是这个decoder 然后这一段讲的是这个prior 因为decoder就是一个升级版的GLIDE模型所以说他这里呢 主要就写了一下和之前GLIDE 模型的这个区别都是一些实现上的细节 完全没有讲这个方法本身是怎么做的 然后prior这个章节呢其实写的也是很简单 里面都是一些实现上的细节 所以如果我们只看DALL·E 2这一篇文章的话呢 我们是很难知道 这个总体模型到底长什么样输入输出是什么 这个目标函数是什么 就很多这种问题呢都无法从这篇论文里得到答案 所以鉴于此呢 在这里我准备先把这个图像生成这块之前的一些工作呢 先大概介绍一下 非常简略地从刚开始的这个GAN模型然后呢还有Auto-encoder Variational Auto-encoder 就是VAE这一系列的工作然后再到最新的这个diffusion model 扩散模型以及它的一系列后续工作 那我们先来看GANGAN的话呢就是左右手互搏对吧 你要训练两个网络 一个呢叫做generator就是生成器一个是discriminator就是判别器 生成器这边呢 就是你给定一个这个随机噪声它呢就会给你生成一些东西 在这里呢 我们希望它能生成一个比较真实的图片 然后呢我们把这个生成的图片呢 给这个判别器同时呢我们再给一些这个真实的图片 给这个判别器 然后让这个判别器去看到底哪个是真图片 哪个是假图片 所以说后面呢其实就是一个0-1的这个二分类问题 然后呢就通过这个generator和discriminator 这两个网络之间这个互相较量然后这个判别器呢不停地提高自己 然后这个生成器呢也不停地提高自己 所以说最后呢能生成这种比较真实的图片 而事实上呢 因为GAN的这个目标函数呢就是用来以假乱真的 所以说截止到目前为止呢 GAN生成的图片这个保真度也是非常高的 就真的是人眼 也不好区分它生成的图片是真是假所以这才有了DeepFakes的火爆 然后不光是真实 而且经过这么多年对GAN的这个模型改造 之后呢GAN其实现在呢也比较好用 需要的数据呢也不是那么多能在各个场景底下使用 所以优点还是蛮多的 但它有一个最致命的缺点那就是它还是这个训练不够稳定 最主要的原因呢 就是它要同时去训练这两个网络所以说就有一个平衡的问题 经常如果训练的不好呢 这模型就训练坍塌了

片段1229:56~32:30

而且呢因为GAN的这个主要优化目标呢 就是让这个图片尽可能的真实 但是它生成图片的这个多样性呢就不太好 它的这个多样性呢 主要就来自于刚开始的这个随机噪声简单点说呢 就是它这个创造性还不太好 然后最后呢它不是一个概率模型它的这个生成都是隐式的 它就是通过一个网络去完成的 所以你也不知道它做了什么你也不知道它遵循了什么分布 所以说GAN呢 在数学上就不如后续的这个VAE或者这些扩散模型优美 那接下来呢我们看一下auto-encoder 以及到后来的这个VAE和VQ-VAE那auto-encoder呢其实非常简单了 也是很早之前的技术了 大概意思就是说呢你给定一个输入x 然后我过一个这个编码器 然后就能得到一个特征这个特征的维度呢一般都会小很多 所以说我们也管它叫这个bottleneck 然后再从这个bottleneck开始呢我们过一个这个解码器 然后最后得到一个图像 然后这个训练的时候目标函数呢就说我们希望 这个图像能尽可能的重建 之前的这个x因为是自己重建自己嘛 所以说这也就为什么叫auto-encoder 就是自编码器然后在这个自编码器AE出来之后呢 紧接着就出来了一个denoising auto-encoder 就是个DAE其实说白了它就是先把这个原图呢 进行了一定程度的这个打乱 比如说变成了一个xc就是corrupted x然后 把这个经过扰乱过后的这个输入呢 传给这个编码器然后后续都是一样的 我们还是得到了一个bottleneck的特征 然后通过解码器然后最后得到一个输出 然后我们还是希望这个输出呢 能够重建原始的这个x而不是说去重建这个 经过扰动之后的x 这个改进呢证明非常的有用尤其是对视觉这边来说呢就更有用 会让这个训练出来的模型 非常的稳健也不容易过拟合 其实部分原因呢 就是说因为图像这边这个像素它这个冗余性太高了 所以你即使把原来的这个图片 做一些这个污染其实模型还是能抓 住它的这个本质 然后去把它重建出来的这个呢其实也就有点最近 恺明这个MAE的意思对吧 也是masked auto-encoder这个掩码自编码器 它在训练的时候呢 之所以能够mask掉75%就是这么多的这个图像区域 还能把这个图像很好的重建出来 也就说明了这个图像它这个冗余性确实是高 也就从侧面证明了 这种denoising auto-encoder或者这个masked auto-encoder 它的这个有效性 但其实呢不论是AE还是DAE还是MAE它们主要的目的呢 都是为了去学中间这个bottleneck特征的 然后把这个特征拿去做一些这个分类 检测分割这些任务 它并不是用来做生成的

片段1332:35~35:18

原因呢就是 其实它这学到的不是一个概率分布 我们没法对它进行采样也就说这里这个z 并不像GAN里面那样 是一个随机噪声它是一个专门用来重建的一个特征 但是呢这种encoder-decoder的形式 确实是一个很好的结构那我们怎么能使用这种结构 去做这种图像生成呢 所以这就有了VAE (Variational Auto-encoder)那VAE呢其实跟AE是非常不一样的 虽然它的整体框架看起来 还是一个输入进了一个编码器 然后得到了一些东西 最后出解码器然后最后得到一个输出然后它的目标函数呢 还是让这个输出 尽可能的去重建原来的这个x看起来好像一样 但其实呢有一个非常重要的区别 就是它的这个中间不再是学习一个固定的这个bottleneck的特征了 而是去学习了一个分布 在这里呢作者假设这个分布 是一个高斯分布 所以说高斯分布呢就可以用这个均值和方差来描述 那具体来说呢 就是当我们得到从这个编码器出来的特征 之后呢我们在后面加一些FC层 然后就去预测一个这个均值和方差然后得到对应的这个均值和方差 之后呢我们就用这个公式 去采样一个z出来那这样呢 VAE就可以用来做生成了 因为在你训练好这个模型之后呢你完全可以把前面这个编码器呢 直接扔掉 然后你这里是个z呢就是一个 可以从这个高斯随机噪声里去 抽样出来的一个样本然后你给这个解码器 你就能生成一张照片了 然后呢因为VAE这里预测的是一个分布那从贝叶斯概率的角度来看呢 那前面的这一过程 就是给定x得到z的这个过程其实就是一个后验概率 然后学出来的这个distribution呢 其实就是一个先验分布那至于后面这块就是给定了z 然后去预测一张图片x的时候呢 它其实就是likelihood那其实也就是说我们这里做的呢 就是maximize likelihood 那从数学上看呢就干净很多优美很多而且VAE呢也有一些很不错的性质 那比如说 因为它学的是一个概率分布它是从这个分布里去抽样 所以说它生成的这个图像多样性呢 就比GAN要好得多这也就是为什么大家接下来 做了很多基于这个 VAE的这个后续工作包括VQ-VAE还有VQ-VAE-2 以及再后来的这个DALL·E第1版模型 其实也就是在VQ-VAE的基础上做的那既然说到了VQ-VAE 那接下来我们就来讲一下 那这里呢上面就是我们刚才说过的这个VAE 然后下面呢 就是我们马上要说的这个VQ-VAE其实呢整体上看来也差不多 那VQ-VAE这里的含义呢就是vector quantised 就是把这个VAE做量化那为什么要这么做呢 其实原因很简单 那即使现实生活中

片段1435:23~38:04

你的所有的这些信号包括声音 然后图像可能都是连续的 或者说你大部分任务可能都是一个回归任务 但事实呢真的当你把它表示出来 真的当你去解决这些问题的时候其实我们都把它离散化了 图像呢也是变成像素了 语音呢也都抽样过了大部分工作的比较好的模型呢 也都是分类模型 又都从回归任务变成分类任务所以这里呢也一样 如果用之前的这种VAE的方式呢 它就不好把这个模型做大这个图像的尺寸呢做大 而且这里这个分布呢也不是很好学 所以说取而代之的呢是不去做这个分布的这个推测 而是呢用一个codebook去代替了 这个codebook这里面呢 其实你可以把它理解成一个 比如说聚类的中心这个codebook的大小呢一般是K乘以D 然后K呢一般是8192 然后呢D呢一般可能就512或者768意思呢就是有8,192个 长度为D的这么个向量 在这个codebook里也就说呢我们有8,192个聚类中心 然后这个时候呢如果有一个图片 经过编码器得到了一个特征图这个特征图呢是有长宽的 hw这种长宽的特征图 然后呢我们就把这个特征图里的向量 去跟这个codebook里的向量呢去做对比 然后看看它跟哪个聚类中心最接近然后呢我们就把那个最接近的聚类 中心的那个编码 存到z 这个矩阵里所以说这里面可能就是一些编号 比如说1或者100之类的 那一旦做完了这个聚类的分配那我们就不用之前的这个特征f了 取而代之的是呢 我们把这个index对应的特征比如说这里这个编号为1 那我们继续把这个编号为1的向量 拿出来放到这而如果编号为10 那我们就把编号为10这个向量拿出来 放到这 生成一个新的特征图叫做fq就是quantised feature 经过量化后的这个特征 那这个量化后的特征呢就非常的可控了 因为它永远都是从这个codebook里来的 它不是一个随机的东西所以说呢优化起来就相对容易 那一旦你有了这个特征图 其实跟之前所有的这种auto-encoder或者VAE 就差不多了 你就通过一个解码器然后就去重构一张图片 那这个目标函数呢 还是让这个x'尽量跟这个x去保持一致这样呢就完成了整个VQ-VAE的训练 VQ-VAE其实非常有用 它不光是后来呢,用到DALI这个项目里头还用到了视觉这边 用来做自监督学习 比如说BEIT这篇论文它就是把DALL·E训练好的 这个codebook拿过去 然后把这个图片呢全都quantise成这样的特征图 然后拿这个要去做ground truth 自监督的训练一个视觉网络最近呢BEIT又出了VL-BEiT 就是vision language的BEIT 也是大概的思路只不过呢 是用一个Transformer编码器 去做多模态的任务

片段1538:08~40:45

但其实说完了VQ-VAE 我们会发现 它这里学习的呢又是一个固定的codebook 这也就意味着 它又没办法像VAE这样去做这种随机采样 然后去生成这个对应的图片了 准确说呢它不像是一个VAE它更像是一个AE 它学的这个codebook和这个特征呢 是拿去做这种high level的任务的也就做分类、检测的 那如果想要它做生成怎么办呢 那其实对于VQ-VAE来说我们还需要单独再训练一个prior网络 那在VQ-VAE这篇论文里呢 作者就是又训练了一个pixel CNN当做这个prior网络 从而能够利用已经训练好的这个codebook 去做这种图像的生成然后在VQ-VAE之后呢又有了VQ-VAE-2 那其实这个呢就是一个简单的改进 它呢首先把这个模型变成层级式的了它不仅做这种局部的建模 而且做全局的建模 还加上了这种attention对模型的表达能力变强了 同时呢它还根据这个codebook 又去学了一个prior所以这个生成的效果呢也非常的好 然后OpenAI一看哎这个很合适 对于VQ-VAE来说呢它们就是先训练了这么一个codebook 然后又训练了一个pixel CNN 去做这种生成那pixel CNN呢其实是一个auto regressive 就是一个自回归的模型 那还有什么模型是自回归呢那就是OpenAI的看家本领GPT系列了对吧 那OpenAI就说那我就把这pixel CNN换掉 换成GPT不就能做一个很好的图像生成了吗 而且既然language那边又做的这么好 那为什么不想个办法用文本去引导这个图像生成呢 所以呢就有了DALL·E DALL·E呢其实从模型上来看是非常简洁的 如果你有一个图像文本对 这个文本呢先通过BPE编码得到一个特征 这个特征呢有256维 然后我还有一个图像这图像是256*256 然后我就经过一个VQ-VAE 这个VQ-VAE呢其实就是像上面这种方法一样 训练好的一个codebook 在DALL·E里呢它就是直接拿过来用所以DALL·E呢 也是一个两阶段的图像生成器 总之呢的把原来的图像变成这个图像特征之后呢 它这个维度就下降了很多 就从这个256*256变成了32*32所以最后呢一共就有1,024个token 那最后呢 把这个文本特征和这个图像特征直接连接起来 就变成了一个 有1,280个token的一个序列那接下来就没什么好说的了 无非就是把这个序列扔给一个GPT 然后呢把该遮住的地方遮住然后让GPT模型去预测一个就好了 那至于推理呢 我们只需要提供一个文本然后这个文本呢变成这个文本的特征 然后用这个文本的特征呢 直接用自回归的方式去把这个图像生成出来 当然了DALL·E的论文呢还有很多的细节 比如说会生成很多很多的图片

片段1640:52~43:38

那到底选哪一张呢 其实它会用这个CLIP模型 去做一个这个排位然后把生成出来的图片 跟这个文本 最贴切的那个图片挑出来当做最后的生成图像 还有很多很多的这个工程细节 其实DALL·E里有将近一半的篇幅都在写怎么才能把这个12个billion 那也就是120亿这么大的参数训练起来 还有就是他们怎样去收集了一个特别大的数据集 能够支撑训练这么一个模型 所以说呢是沿袭的GPT系列工作的特点那就是大力出奇迹 那说了40多分钟 我们才讲到了今天的主角diffusion model叫扩散模型 那这个扩散模型到底是什么呢 其实从概念上来看这个过程非常的简单 扩散模型呢 就是假设说你有一个图片 X0这就一张正常的图片 然后假设呢 我们往这个图片里去加噪声比如说每一步呢 我都往里加一个很 小的一个正态分布的噪声然后得到了这个X1 那这个X1呢其实就是在X0的基础上 比如说多点了几个杂的点然后呢我再给它加个噪声 然后接着加一直加到最后 比如说我一共加了t次那如果这个t呢特别特别的大 如果是无穷无尽的话 那最终它就会变成一个真正的噪声它就变成了一个正态分布了 或者更专业一点呢 就是叫一个各向同性的正态分布然后整个这个过程呢 就叫做forward的diffusion 就是前向扩散过程那大家可能会想 为什么非要叫扩散模型呢 其实这个名字呢是来自于热力学的启发 就是thermodynamics 它们那边就有一个名词叫做diffusion在热力学里呢 它基本描述的过程就是说 如果你有一些物质有高密度的和低密度的 那这个高密度的物质呢 就会慢慢的向那个低密度去做这种扩散 比如说你喷了个香水 这个香水呢就会慢慢扩散到整个房间最后呢达到一种平衡 那所谓的平衡呢 也就是我们这里最后提到 这个各向同性的一个正态分布 就是趋近于随机噪声所以说呢 视觉这边就沿用了这个名字 那还是叫它diffusion model那这个跟图像生成有什么关系呢 那其实如果你反过来想 那如果我现在的输入是一个随机噪声 也就是GAN里面的那个z 那我现在如果能找到一种方式或者训练一个网络 能够慢慢的把这个噪声 一点一点这样再恢复回来恢复到最初的这个图片 它不就可以做图像生成了吗 那事实上呢扩散模型就是这么简单 它就是通过这个反向过程 去做这个图像生成的如果我们现在去随机抽样一个噪声 比如说是这个Xt 或者是之前的任意一步那我呢就训练一个模型 把它从Xt变到Xt-1 然后我再用同样的模型去把Xt-1变成Xt-2 然后一步一步这样倒退回来 所有这里使用的模型呢

片段1743:45~46:19

都是共享参数的就只有一个模型 只不过呢你要抽样生成很多次 所以这可能也是现在还是个扩散模型一个非常大的一个不足 就是说呢 它训练上跟别的模型比起来呢也是比较贵的 那在推理的时候呢 那就更别说了它是最慢的一个 因为像GAN的话 我只要训练好了这个模型那我接下来给它一个噪声 它唰就给我出来一张图片 那非常的快就做一次模型forward就可以了 可是如果对于扩散模型来说 尤其是对于最原始的那个扩散模型来说的话 一般呢这个t是选择1,000步 那就是说如果你随机选择了一个噪声那就说你要做1,000次forward 一点一点把这个图像恢复出来 那这个开销是远远大于其他生成模型的 那总之呢 我们先撇开这个推理速度不谈我们先来看一下 一般这个reverse diffusion过程中 使用的这个模型长什么样因为我们可以看到 这个扩散模型的输入输出 始终是这个图像就是说它这个大小呢始终不变 所以在这种情况下呢 diffusion model就采取了一个非常常见的一个模型结构 就是U-Net U-Net呢就是一个CNN 先有一个编码器一点一点把这个图像压小 然后再用一个解码器 一点一点把这个图像再恢复回来那前后的这两个图像尺寸大小呢 是一样的 然后为了让这个恢复做得更好呢这个U-Net里还有一些这种skip connection 就直接把这个信息从前面推过来 这样能恢复一些细节而且后来呢 对这个网络结构还有一些改进 那比如说给这个U-Net里也加上这种attention操作 会让这个图像生成变得更好 而且其实说白了这里面这个模型呢 也不一定要用U-Net 你也可以用其他的但是大部分这个扩散网络呢 都是用了这个U-Net 那说完了扩散模型大概是怎么工作的 又说了扩散模型的这个网络结构 那接下来呢就说一下过去两年之间这个扩散模型的这个发展历程 其实扩散模型早在15年 甚至有可能更早的时候就已经提出来了 但当时呢只是一个想法 并不能做到很好的这个图像生成这可能也就跟20年前深度学习一样 想法已经有了 只不过缺了很多很多的必要因素导致它不能训练的很好 一直呢到2020年6月 也就是整整两年前出来了一篇论文 叫做Denoising Diffusion Probabilistic Model 也就是DDPMDDPM呢对原始的这个扩散模型呢 做了一些改进 把这个优化过程呢变得更简单了那最重要的两个贡献呢 一个就是之前呢 大家都觉得是要用这个Xt去预测这个Xt-1 是做这种图像到图像的转化 但是呢DDPM就觉得这个呢可能不好优化

片段1846:27~49:07

我们要不要不去优化这个图像的转换 我们能不能去预测这个从Xt-1到Xt 我们这个噪声是怎么加的我们只去预测这个噪声行不行 那这个呢其实就有点ResNet的意思 本来我可以直接用x去预测那个y但是现在呢 你说直接预测y太难了 应该把这个问题理解成y等于x加上一个residual 我们只去predict那个残差residual就可以了 那这里面也是一个意思我们不去预测这个Xt-1 我们去预测它加了多少这个噪声 一下就把这个问题给简化了那具体把这个网络结构画出来呢 就是说如果 我们用刚才讲过的这个U-Net的这个结构那之前呢这个输入呢就是Xt这个图片 那这个输出呢 就是我们想去预测这个t-1时候的X那在DDPM这篇论文里呢 它就不去预测这个t-1时候的X 而是去预测它添加的这个噪声那这个U-Net模型的输入呢 除了当前时刻这个Xt 其实还有一个输入呢叫time embedding 主要呢就是用来告诉这个U-Net的模型 现在到了反向扩散的第几步这里这个time embedding的形式呢 其实就跟Transformer里 用的那个位置编码一样它呢也是一个正弦的位置编码 或者是一个傅里叶特征 至于这个time embedding怎么加到这个模型中来 有很多种方式了 那有的呢是直接加有的呢是拼接起来 还有的呢就是用更复杂的手段 把它加到网络模型里去它给模型带来的提升呢 也是相当明显的 那这里为什么要加这么一个time embedding呢 其实还有一个原因 就因为这里的这个U-Net模型它全都是共享参数的 那你怎样让 它根据不同的输入而生成不同的输出最后呢从一个完全的一个随机噪声 变成一个有意义的图片呢 这个还是相当难的一件任务我们希望这个U-Net这个模型 在刚开始的这个反向过程之中呢 它可以先生成一些这个物体的大概轮廓一些很粗糙的就是coarse的这个图像 不需要很清晰也不需要很写实 那只要有那个意思就可以了然后随着这个扩散模型 一点一点往前走 然后到最后快生成这个逼真的图像的时候呢 这个时候 我们希望它学到一些高频的一些信息特征 比如说物体的边边角角 还有物体的一些细小的特征这样呢就会让生成的图片更加的逼真 但事实上 我们这里用的所有的这个U-Net模型都是共享参数的 所以这个时候呢 就需要有这么一个time embedding去提醒这个模型 我们现在走到哪一步了 现在这个输出我是想要糙一点的还是想要细致一点的 所以加这个time embedding 对整个图像那个生成和采样过程都很有帮助 那具体到这个目标函数上来说 如果我们现在给定了Xt

片段1949:14~51:53

我们要去预测这个Xt-1 我们要算的loss呢 就是我们已知的这个噪声和我们现在 预测出来的这个噪声的差值 那对于ground truth的这个噪声来说呢我们是知道的呀 因为在这个正向的扩散过程中呢 每一步添加的噪声都是我们自己加的都是一个固定的过程 所以说是已知的 那后面呢才是我们预测的那这里这个f函数呢 其实对应的就是下面的我们这个U-Net 网络结构那这个Xt呢就是我们的输入Xt 然后这个t呢 就是我们这里输入的这个time embedding然后呢通过计算这个简单的目标函数 我们就能把DDPM这个网络训练起来了 然后DDPM呢还做了第二个贡献具体来说呢 就是如果你要去预测一个正态分布呢 其实你只要学它这个均值和方差就可以了 然后作者这里发现了 其实你只要去预测那个均值就可以你方差都不用学 你这个方差呢只要变成一个常数 最后这个效果就已经很好了所以这又再次 降低了这个模型优化的难度 所以DDPM就工作的很好第一次能够用这个扩散模型 生成很好的图片 算是扩散模型这边的这个开山之作那大概介绍完了扩散模型和DDPM 其实这里可以做个总结 DDPM跟这个VAE的模型其实还是有很多相似之处的 比如说呢 你也可以把它想象成是一个编码器解码器的结构 只不过呢在这个扩散模型中 它的这个编码器一步一步这样走过来 走到中间的这个z 它是一个固定的过程而对于VAE来说呢 它的那个编码器是学习 那第二个不同呢就是说对于扩散模型来说 它的每一步的这个中间过程 跟刚开始的这个输入呢都是同样维度大小的 但是呢对于一般的这种AE VAE这种编码器解码器的结构来说它那个中间的那个bottleneck特征 往往是要比输入小很多 那第三个区别呢就是对于扩散模型来说 它有这么步数的一个概念 它从这个随机噪声开始要经过很多很多步才能生成一个图片 所以它有这个time step time embedding这些概念而且呢在所有的这个time step里 它的这个U-Net模型结构呢 都是共享参数的而在VAE里呢其实就不存在这一点 那这个扩散模型 一旦做work了之后呢大家的兴趣一下就上来了 因为它在数学上呢特别的简洁美观 而且因为不论是正向还是逆向它都是这种高斯分布 所以也能做很多推理证明 有很多很不错的性质所以之前呢大家可能就担心 那它不能在真实的数据集上 去工作的很好它可能不能适用于很大的模型 或者很大的数据集 但结果呢现在有人把它做work了那OpenAI的人 也就是DALL·E 2 我们之前说过的二作和三作呢

片段2051:57~54:37

其实就立马来着手研究这个问题了 他们呢就仔细钻研了一下这个DDPM 提出了一些改进然后就变成了这个improved DDPM 大概就是在同年20年的年底放到arXiv上 他这边呢做了几个改动其中一个改动呢 就是DDPM里说这个正态分布的方差呢 不用学就用一个常数就可以了 但是呢 他们觉得如果你能把这个东西学了那可能效果会更好 然后他这边呢就去学了 然后确实呢在后面的取样 还有这个生成效果上的都不错 第二个呢就是他把怎么添加噪声的这个schedule改了 从一个线性的schedule 变成了一个余弦的schedule发现也工作的不错 那这个呢我就不细说了 理解上呢你可以去跟那个学习率 的schedule去做一个对比 也是从线性到余弦然后最后一个贡献呢 就是他们简单的尝试一下 如果用这个大模型这个扩散模型会表现的怎么样 结果发现呢 这个扩散模型scale得非常好也就说如果给它上更大的模型 它就会给你更好的图像生成结果 那这对OpenAI来说那无疑是个非常好的消息 所以二作和三作呢立马着手去做这件事 所以紧接着几个月之后就出来了这一篇论文 就是Diffusion model beats GAN 就是扩散模型比GAN强那在这篇论文里呢 首先呢上来就是说把模型加大加宽 然后增加自注意力这个头的数量attention head还有single-scale的attention不够用了 我们就上multi-scale的attention 所以总之就是把模型变得又大又复杂然后呢 他还提出了一个新的 一个归一化的方式叫做adaptive group normalization 就是根据这个步数 去做这种自适应的归一化发现效果也非常不错 而且在这篇论文里呢 作者还使用了一个叫classifier guidance的方法 去引导这个模型做采样和生成 不仅让生成的这个图片更加的逼真而且也 加速了这个反向采样的这个速度 论文中说他们可以做到就做25次采样 就能从一个噪声 生成一个非常好的图片所以说是加速了相当多 那这里说的classifier guidance方法是什么 然后后续的这个GLIDE的模型和DALL·E 2里用的classifier-free 的guidance方法又是什么呢 那在这个扩散模型能打败GAN的这篇论文出现之前呢 其实扩散模型生成的这个图像 看起来已经非常不错了也很逼真 但是呢它就在算这些inception score 就IS score或者FID score那些分数的时候呢它比不过GAN 如果光让大家看你生成这个图的话 那大家可能就觉得你生成这些图是不是你挑的呢 这个结果呢就不够那么有信服力 而且这个呢当然也不好审稿也不好中论文 所以还是把这个分能提上来 那是比较关键的

片段2154:42~57:25

同时呢 这个扩散模型这个采样和生成图片呢 过程又这么慢所以大家是在想 怎么能用一些额外的帮助 或者说找一些guidance找一些这种额外的指导 来帮助这个模型进行采样和学习呢 所以呢就借鉴了一个之前很常用的一个技巧 叫做这个classifier guided diffusion 那这里呢我们先 再次把这个反向扩散过程画一下 那现在呢最开始是Xt也就是最后时刻 也就更偏向于噪声的那个时刻 而X0呢是最开始这个图片所以说这个呢是一个反向扩散的过程 那我们也刚才说了 在这个反向过程中呢给定一个Xt时刻的输入 我们通过一个U-Net的网络就得到了Xt-1 然后呢不停的通过这个U-Net取样生成取样生成最后得到这个X0 那classifier guided diffusion 的意思是什么呢就说在我们训练这个模型的同时 我们再去训练一个这个分类器 就是一个简单的图像分类器这个分类器呢 其实在很多论文里 就是在ImageNet上训练的只不过呢 他把ImageNet的图片呢都加了很多噪声 因为对于扩散模型来说呢它的输入始终都是加了噪声的 这些图片 跟真实的ImageNet的图片是很不一样的所以说你必须从头 再去训练这么一个图片分类器 那这个分类器的作用是什么呢就是说当我有这么一个图片Xt之后呢 我把它直接扔给这个分类器 然后我就能去看它分类的对不对我就能算一个交叉熵目标函数 对应的呢就会得到一些梯度 然后我用这个梯度去帮助这个模型 接下来进行采样和图像的生成 那这个有什么好处呢因为其实这里的梯度呢 就大概暗含了当前这个图片 它里面到底有没有一个物体或者说它现在生成的这个物体 真不真实 那通过这种梯度的引导呢其实就是告诉这个U-Net 我现在生成的图片呢 要看起来更像某一类物体不是说意思到了就行 这个物体的形状颜色 纹理各种细节都尽量的要跟真实的物体去匹配上 所以说 在经过了这个classifierguided diffusion操作之后 这个生成的图片呢就逼真了很多一下 在这些IS或者FID score上呢就大幅度的提升了 也就是在这篇 diffusion model beats GAN的论文里扩散模型呢 第一次在这些分数上 而超越了之前比较好的一个GAN模型就是big GAN 虽然文章里说 通过这种方式他相当是牺牲了一部分的多样性 然后就换取了这个 生成图片的这个写实性那其实呢这个取舍还是比较好的 因为它的多样性还是比GAN要好 然后现在呢生成的图片的逼真程度也比GAN要好 那这样一下子呢 就奠定了扩散模型在图像生成里的地位 那这个扩散模型火了之后 而且大家看到哎

片段2257:31~1:00:11

这种guided diffusion非常的有效 那除了这种最简单 比较原始的这种classifier guided diffusion之外我们还能用什么当做这个指导信号呢 那首当其冲呢 大家就想到我们能不能把一个简单的这个图像分类器 换成一个CLIP模型呢 那如果换成CLIP模型之后这个文本和 图像不就可以联系起来了吗 那这样呢我们不光是可以利用这个梯度 去引导这个模型的这个采样和生成 我们甚至可以用这个文本去控制这个图像的采样和生成 所以在这个方面呢也有一些工作 而且确实也是比较有效的那当然了 分别在图像和文本上呢 也有很多这个引导的工作比如说在图像这边呢 你不光是可以利用这个图像的重建 去做这种像素级别的引导你还可以去做这种特征层面的引导 你还可以去做这种图像 风格方面的引导只不过就用一个gram matrix就可以了 那文本这边呢 你也可以用那些已经训练的很好很大的一些语言模型去做引导 效果呢也是非常的好 那所有的这些引导呢其实在这个目标函数里呢 都是后面的这个y 就说我这个模型的输入不光是xt和t了 同时我还有一个condition 那至于这个条件是什么那就根据你的应用来选了 然后再加了这个条件之后呢 就能让这个图像的采样和生成变得又快 效果又好 但是呢所有这一系列的方法它都有一个缺陷 就是说 它真的都是又用了另外一个模型去做这种引导 要么呢我们拿一个直接pre-train好的模型 要么呢我们就还得去训练这么一个模型 不仅成本比较高 而且这个训练的过程呢也不可控那所以说呢 这就引出来了后续的一篇工作 他呢就提出来一个非常有效的技巧叫做classifier-free guidance 那意思就是说呢我不想要这些classifier 我还能不能找到一种指导信号去让这个模型的生成变得更好呢 简单来说呢 就是他在训练模型的时候生成了两个输出 一个呢 是在有条件的时候生成了一个输出一个是在没有条件的时候 生成了一个输出 那举个例子比如说你训练的时候呢 用的是图像文本对 那这个时候呢你想用文本去做你的这个guidance信号 那也就是说这里这个y就是一个文本 然后你在训练的时候呢用这个文本y去生成了一个图像 然后呢随机的把这个条件去掉 就说我不用这个文本我用一个空集就是一个空的序列 再去生成另外一个输出 那假设我们现在有一个空间那刚才生成的两个图片呢 分别是没有用这个条件的 生成了一个X 用了这个y这个条件呢生成了一个Xy 那我们就知道有一个方向 能从这种无条件最后得到的输出

片段231:00:17~1:03:03

成为有条件得到的这个输出 通过训练呢我们最后就会知道 它们两个之间大概的这个差距是多少那等到最后去做这种反向扩散 去真正做图像生成的时候呢 当我们有了一个没有用条件 生成的这个图像输出的时候 我们呢也能做出一个比较合理的推测 能从一个没有条件生成的X 变成一个有条件生成的X这样呢就摆脱了这个分类器的限制 所以说叫classifier-free guidance 但是这个方法呢其实在模型训练的时候也是非常贵的 因为扩散模型本来训练就已经很贵了 结果使用这种classifier-free guidance的方法呢那在训练的时候还要生成两个输出 一个有条件的一个没条件的 所以又增加了很多训练的成本但总之呢 classifier-free guidance一经提出 大家就觉得它真的是一个很好用的方法 所以说不光是在GLIDE这篇论文里用到了 而且之后的DALL·E 2呢也用到了还有最新的Imagen呢也用到了 而且这几篇论文里呢 都说这是一个非常重要的技巧所以感兴趣的同学呢 可以再去看一下细节 总之呢在融合了之前这么多技巧之后呢 GLIDE模型而终于是一个用扩散模型 能够做很好的这种根据文本去生成图像的任务了 它呢只用了3.5 billion 的这个参数但是生成的效果呢 就直逼之前的DALL·E模型 而DALL·E模型呢是有12 billion的就比它大四倍 但是GLIDE模型呢 不论是从分数上还是从这个感官上得到的这个图片效果都比DALL·E好 那OpenAI一看哎这个方向确实靠谱 那我也就不顺着DALL·E也就是DALL·E 1的那套系统 用VQ-VAE去做了 我接下来呢就用扩散模型来做了所以他在这个GLIDE的基础上呢 又加了很多东西 比如说在前面加了一个prior比如说他又使用了这种层级式的生成 就从64到256 再从256到1024就使用了很多最新的一些技巧 最终呢就成为了DALL·E 2 那做了一个小时的铺垫那接下来呢我们回到DALL·E 2的原文 我们会来先看一下 他这个主体的方法部分很短就一页多 然后接下来看一下DALL·E 2能干什么 他列了很多很有意思的应用然后最后呢还有一些数值上的结果 那作者上来先说 他训练数据集长什么样他说他们的这个训练数据集 里面呢也是这种图像文本对 就跟CLIP模型一样那如果我们给定一个图片x 然后我们用这个zi 去表示这个CLIP出来的图像的特征然后用这个zt 去代表这个CLIP出来的文本特征 i就代表imaget就代表text 那整个这个DALL·E 2的网络结构呢 就被分成了两个部分我们之前在引言的时候也讲过 一个呢是prior模型 一个呢是decoder的模型

片段241:03:09~1:05:48

那prior模型呢就说根据这个文本y 我去生成一个图像的这个特征zi 然后这个编码器的输入呢 (应为解码器)就是这个zi 有的时候呢也会带上这个文本y 但其实也可以不要总之呢就是通过这个编码器 (应为解码器) 那么把这个zi呢恢复成一个图像x 这样呢就完成了从文本到图像的这个过程 那可能跟刚才我们讲引言 时间隔得也比较久了那我们就再来回顾一下这个图2 图2里呢作者就说DALL·E 2这个模型 它相当是先是有一个CLIP模型然后再训练这个DALL·E 2的 图像生成模型 那一旦你这个CLIP模型训练好之后呢你任意给定一个文本 它就可以通过这个文本编码器 去得到一个文本特征然后呢 我就用这个prior模型把文本特征呢 变成一个图像特征然后再通过一个解码器 就把这个图像特征变成了几个图片 所以是一个两阶段的图像生成器完成了最后这个文本 到图片的生成过程 然后作者接下来呢还用公式给你讲了一下 我为什么能用一个两阶段的方式 来实现这个东西那首先刚开始这个公式的意思是说 给定一个文本 我要去恢复出来最后这个x那其实呢 它可以先写成这种概率的形式 就是给定一个文本我去生成x和zi那zi是什么呢 zi是这个图片的特征 它呢跟这个图片本身是一对一的关系因为你这个CLIP模型训练好之后 它的参数是锁住的嘛 所以你给定一个图片就会生成一个固定的zi 所以说这里呢zi和x就是对等的 所以说这个概率呢是可以写成这里这种概率 然后作者这里再利用chain rule 就能把这个概率写成这种形式那写成这种形式之后呢 我们就可以明显看出来 这个呢就是给定文本去生成zi这一步就是prior 然后呢给定y和zi之后 用这个图像embedding去生成x就是decoder 所以作者这里其实就是想跟你说 我做这种两阶段的图像生成不是没有依据的 从概率上来讲呢是完全行得通的 那既然两阶段的设计是合理的作者接下来呢 就分别去讲了这个decoder和这个prior 那在decoder这边呢我们之前也说过它其实就是一个GLIDE模型的变体 改动呢并不大 首先呢它用了这种CLIP模型的guidance那我们之前也说过 有用classifier guidance 有用CLIP guidance 他们这里呢就用了CLIP guidance只不过使用的形式呢 在这个具体操作上稍微有一些变化 这里我就不细说了因为如果不看代码的话 这里描述的技术细节呢 其实都不太好说出来然后第2段呢 作者就说 他们也用了这种classifier-free guidance具体来说呢 他们的这个guidance信号呢 要么是来自于这个CLIP模型

片段251:05:52~1:08:27

要么是来自于这个文本 所以在这里呢他就随机 比如说有10%的时间呢他就把这个CLIP的特征呢设成0 还有呢 就是说在训练的时候有50%的时间呢就把这个文本特征呢直接就扔掉了 所以就是说 在DALL·E 2这篇论文里他基本是把能用的全都用了 就是包括CLIP guidance 还有这种classifier-free guidance他全都用了其实classifier-free guidance就像之前说的一样 它是比较贵的一个操作 但是OpenAI呢向来是不怕贵效果怎么好怎么来 所以说在做完classifier-free guidance以后呢 第三段他又做了这种级联式的生成 就是说 我怎么能生成这种1024的高清大图去吸引公众的目光呢 所以我就先从64*64变成256*256 然后我再训练一个模型从256*256呢生成这个1024*1024 那在这里呢为了训练的稳定性 作者在训练的过程中呢还加了很多这个噪声 然后 这里还有一个比较值得注意的点呢就是我们听起来好像这些大模型 应该是Transformer 但其实呢就像我们说了一样这个扩散模型呢大部分时候是U-Net 是一个CNN的结构 所以作者这里也强调他们呢只是用了这种spatial convolution 就是用了这个卷积 没有用这种attention layers所以说在接下来做推理的时候呢 它可以用在任何的一个尺寸上 而不需要担心说你这个序列长度必须得保持一致 所以说训练出来这个扩散模型 是直接可以去生成那种更清晰的图片的 那说完了解码器 接下来我们看一下这个prior模型prior模型的作用呢 就是说我给定一个文本 我怎么能去生成一个图像的特征zi这样呢 我好把这个zi输给这个解码器 从而你能恢复出来这个图片 那作者这里呢尝试了两种方案 就说要么呢用这种auto regressive自回归的模型 去做这个prior model 要么呢就用这种扩散模型去做这个prior model 那自回归模型这里呢 其实就跟DALL·E或者GPT这些就很像就说反正我的输入呢是文本特征 然后呢我也有从CLIP那篇来的图像特征 那我就把这个图像呢遮住然后我就去自回归的预测就行了 但是呢 其实OpenAI从CLIP这篇论文就说过这种自回归的模型 这种预测性的模型呢 它的这个训练效率太低了就是为了让这个训练呢变得更快速 他们还使用了很多技巧 比如说PCA降维之类的那因为最后呢 他也没有讲太多的这个结果 所以这里呢我们就不太细说 这个自回归的这个prior模型 我们主要呢就是来看一下这个diffusion prior长什么样 那这里值得注意的一点呢 就是在这一段里作者这里说 不论我们是用这种自回归的模型 还是用这种扩散性的模型

片段261:08:32~1:11:13

我们全都用了这种classifier-free guidance 因为发现效果好 这个classifer-free guidance这个技术它确实是很有用 所以说接下来Imagen里也用了 而且也专门用一个段落证明了它的有效性 所以说做生成的同学 都可以来试一试那对于扩散prior来说呢 作者这里 他训练了一个Transformer的decoder那因为这里呢它的输入输出是embedding 所以说用U-Net就不太合适 直接上Transformer去处理这个序列就可以了 然后这里呢 模型的输入其实相当多从这个文本到这个CLIP的文本的特征 还有这个time step就这个步数的embedding 还有呢就是加过噪声之后的这个CLIP的图像特征 还有Transformer自己的本身的一个embedding 比如说之前我们说过那种cls token然后最终的这个embedding特征呢 就被拿去 预测这个没有加过噪声的CLIP图像特征 然后模型别的方面还有训练技巧 就跟之前的这个扩散模型没什么区别了 有一点比较有意思 就是自从DDPM提出来去预测这个噪声之后呢 大家呢就一直都是去预测这个噪声 就像我们刚才说的去预测那个残差 发现训练的又快又好 但是作者这里发现呢对于这种特征的重建 或者 对于他们先要处理的这个任务来说呢直接去预测 这种没有被污染过的图像特征 是要比之前那种预测噪声要来的好的所以他这里的目标函数的这块呢 就不是之前的那个噪声了 反而就是CLIP出来的这个图像特征zi那其实讲到这呢 文章的主体方法部分呢就说完了 图像生成这边呢确实各种技巧非常多 经常连一个模型总览图都很难画出来 所以如果不去直接看代码是很难对这个论文有一个整体的把握 而且这些技巧呢 在我们说完这么多之后呢我们也会发现 其实它有的时候有用 有的时候呢也没用比如之前你说这种预测噪声好使 但是DALL·E 2这里呢又不去预测噪声 直接去预测zi了还有呢比如说 DALL·E 2这篇论文 他做的是一个两阶段的图像生成那实际上呢 Imagen里面直接上一个U-Net 就把这个图像生成解决了更简单效果也很好 所以说也不一定非要两阶段 那还有呢CLIP模型还有DALL·E 2 都说这种自回归的模型太贵了 然后训练太不高效了但是呢也就在我录视频的这两天里 Google了又出了一篇新论文叫做Parti 用Pathways模型然后去做这种自回归的这个文本 图像生成 效果呢也是直接超越了DALL·E 2和Imagen 所以到最后看下来呢 其实都是大力出奇迹也就说只有scale matters 其他的东西呢 不论是模型还是训练的技巧都好商量 那说完了方法 接下来我们就来看一下

片段271:11:18~1:13:47

DALL·E 2具体能干什么 那文章里这个图3举的第一个例子呢 其实就是说DALL·E 2能够根据一张图片 然后去生成 很多很多的类似的这个图片然后生成图片里的这个整体的 这些风格呢 都跟原始用户提供的图片呢是一致的而且呢这个物体也都是一致的 比如说有钟表有沙漠 然后有一棵树就是语义 信息呢大体是不变的 但是呢那些不太关键的信息比如说这个图片整体的布局 还有这些钟表的各种样式 还有天上这种云呐每一张生成的图片呢都会不一样 那在另外一个例子里 也就是OpenAI自己的这个LOGO里呢他把这个LOGO输给DALL·E 2 DALL·E 2也能返回来各种各样的LOGO 那总体而言呢这个风格也是很一致的背景都是种五颜六色的色彩 那前景呢都是这种交织在一起的 这种白色的线条当然了这种交织的这个模式 每个跟每个都不太一样 那DALL·E 2为什么能做到这一点呢那其实看这个图2这个总览图呢 就能知道了 当用户给定一个图片的时候呢它就能够通过 CLIP预训练好的这个图像编码器 去得到一个图像特征然后呢它把这个图像特征 变成这个文本特征 然后再把这个文本特征呢输给下面的prior模型 去生成另外一个图像特征 然后这个图像特征呢就会生成新的这个图片 也就跟这里的这两个柯基一样 都是一个柯基在吹小号那事实上呢 这个柯基的这个朝向 还有这个背景都改变了所以这个应用呢其实挺好玩的 很方便这个设计者 去做各种各样的设计那比如说现在呢 我们要给一个公司去设计这么一个LOGO 我们可能有一些大概的想法但是最终呢也没有定稿 那我们呢 就可以把这个大概的想法先画成一个图片 然后我们就扔给DALL·E 2 DALL·E 2呢就能返回 给我们很多很多不一样的图片 我们可以从中呢再选一个我们比较喜欢的 然后再把它扔给DALL·E 2 DALL·E 2又会给我们返出来很多很多不一样的图片 所以呢你就不用自己去想了 你只要挑图就可以大大简化了这个设计的过程 那另外一个比较好玩的例子 呢就是说可以做这种图像的内插那在图4里呢 作者其实说给了两张图片 这两张图片呢分别有自己的这个图像特征 那这个时候呢 我们在这两个图像特征之间去做这种内插 当插出来这个特征 更偏向于这个图片的时候呢生成出来的图像呢 就像这样更多的这个风格 还有里面的物体呢就是跟这个左图比较类似 但是随着这个内插的这个比例呢 越来越偏向这个右图那生成出来的这些图像呢 主要的物体就是右面的 比如说这些狗还有房子之类的

片段281:13:52~1:16:33

就没有这些月亮和星星的物体 而且也不像梵高这样画的这种风格 那下面这个例子呢也比较有意思左边呢是一个橘黄色的 也不知道是个包还是一个瓷器 右边呢是一个形状很诡异的一个几何物体 然后 随着在这两个图像的特征之间进行插值这个颜色呢越来越就 从橙色就变成了黑白 而且样式呢也从一个固定的一个结构 变成了这种很诡异的这种几何形状 那前面那个图像内插的例子呢是在两个图像之间哎去做这种内插 那接下来呢作者举的这个例子 就是在图像和文本之间去做这个内插比如说呢这里面就提供了一个文本 原来的文本呢 只是说这是一个猫的图片但现在呢 他说这是一个动画版的这个猫 而且描述的呢是一个超级赛亚猫当模型在这两个文本的特征之间 去做这个插值的时候呢 生成的图片呢就逐渐也在改变比如说刚开始呢 就是一个正正经经的猫 那慢慢呢这头发就炸起来最后变成超级赛亚猫了 那像第二个例子里 从一个维多利亚风的一个建筑风格最后就变成了一个现代版的一个建筑 还有呢就是从一头成年的雄狮 变成了一个幼年的小狮子最后一个例子呢 就是从冬天的景象 变成了一个秋天的景象那这个应用当然也是很有意思 如果能再做的更细致一点 那其实就有点直接输入文本这个模型就能替你去PS一样 那以后再P图那就太简单了 我想改哪我就直接给模型输入几句话 我想把中间这个人去掉 我想让我的腿长一点我想让我的脸更白一点 你只要这么打字就可以了 再也不用去学Photoshop了当然论文还举了几个别的例子 我们这里呢就不一一列举了 我们最后直接来看这个数值对比的表格那一般呢在图像生成这边 大家就是在这个MS-COCO数据集上 去比较这个FID的分数那我们主要来看 这个表格的下半部分 也就是说做这种zero-shot的FID分数到底谁最低 那我们可以看到之前像DALL·E 其实还在28这个水平GLIDE呢也就降到了12 降的还是非常多的 也就说明这个扩散模型好用然后呢再到他们的这个unCLIP 用AR去做这个prior 或者用这个扩散模型去做这个prior我们可以发现这个数字方面呢 这两个模型都差不多 扩散模型呢稍微好一点点而且呢训练上呢也稍微容易一些 所以整篇论文呢 其实基本上都是在围绕这个扩散的prior在做这个unCLIP 那毕竟对于图像生成的任务来说呢 比较这个分数是一方面最主要的呢 还是让大家看 这个生成的效果到底如何所以作者接下来呢 又列了很多这个图像的对比 那从图像生成的结果来看呢这个DALL·E 2呢确实是不错 比如说第一个文本呢 就有一个绿色的火车

片段291:16:38~1:19:16

沿着这个铁轨开过来了 那我们可以看到 之前这个DALL·E模型生成的这个绿色火车 就非常的像动漫火车 这不真实GLIDE模型呢还不错 但这个火车太大了 也没有展现出沿着铁轨开过来的感觉但是这个DALL·E 2呢 这两个图像都生成的不错 然后像后面的这个图像呢有一群大象在这个泥水里玩 那我们可以看到DALL·E 2生成这个模型 这个大象身上还有反光而且生成的这个细节呢也非常的好 像这个滑雪场景里 左上角这种太阳这种亮光就跟真的这个照相机照出来的一样 非常的逼真 而且生成的这些图片呢全都跟这些文本是非常符合的 不过当然了 这里面呢就举了5个例子当然有可能是作者精心挑选出来的 所以说效果呢确实是不错 那既然展现了一些比较好的例子作者这里呢在第7节 也很好的讨论了一下他们目前 DALL·E 2的这个模型不足和局限性 这个呢我推荐大家 其实都应该去仔细的看一看这样才知道接下来该怎么去继续 提高这个模型 比如作者这里说的第一个DALL·E 2的这个局限性呢 就是它不能很好的把这个物体 和它的这个属性结合起来比如说在这里呢物体呢就是这种方块 属性呢就是红色或者蓝色 然后现在呢如果我们给一个文本就是说有一个红色的方块 在一个蓝色方块上面 然后你让这个DALL·E 2模型去生成一些图片 然后再让GLIDE呢也去生成一些图片 我们就会发现GLIDE模型 其实还是做的相当不错的 基本上这个红色的这个方块都是在蓝色这个方块上面 正确率是非常高的 但是呢对于DALL·E 2模型来说呢这个就比较惨不忍睹了 错误的结果呢非常的多 作者这里就说呢很有可能是用了CLIP模型的原因 虽然从一方面呢 用了CLIP模型之后呢你这个图像和文本的联系更紧密了 你就更容易 或者更好去做这种文本生成图像的任务 但是另外一方面呢 你这个CLIP模型在学习的时候呢只是考虑这种相似性 比如说对于这个文本来说 红方块蓝方块那其实就是去找哪些图片里有红方块 蓝方块 然后把这个相似度提到最高就可以了其实CLIP模型呢 是不了解什么叫on top of这种东西的 它也不了解什么叫上下左右什么叫是或者不是 它从头到尾呢 就是在找这种物体上的相似性所以说呢 当你去用这种CLIP 模型生成的特征去做这种下游任务的时候呢 你就不能很好的区分这个物体 和它的属性从而导致这里这个图像生成的结果呢 就非常差了 那作者这里举的另外一个例子呢就是说它发现 当用DALL·E 2去生成一些图片 那这些图片里有这种文字的时候呢

片段301:19:22~1:21:59

这些文字的顺序呢 其实是完全都不对的 比如说它这里的这个提示词prompt说的是我想要生成一个提示语 然后上面写的是deep learning 然后我们可以看出来它生成的这些呢确实是长得这个提示语这个样子 但是上面呢完全不是deep learning 可能偶尔有一些这个deep对吧但即使是这样 这个拼写的顺序也不对 更别提learning呢基本就完全没有了而且这不光是这一个例子 我们最后在结论的时候呢 还会给出更多这样的例子这里说呢 很有可能是这个文本编码器 刚开始这个文本编码的时候用了这种BPE编码 这种呢就你就可以想象成 是一种词根词缀这种编码形式所以说它不是整个单词这样去编码的 它是词根词缀 就这种比如说de或者pt啊这种东西去编码的 所以很有可能呢 是造成这种结果的原因但应该还有更多的原因 总之呢直接去生成这种文字 目前还做的不够好那作者这里举的最后一个例子呢 就是说DALL·E 2还是 不能生成就是特别复杂的场景很多细节它生成不出来 比如第一个图片里说 我想要生成一个非常高质量的图片里面有一个狗在绿草地上玩 然后这个绿草地旁边呢还有一个小湖 那其实这里面我觉得生成呢也已经非常不错了 但是这里面的图片呢 都有点从网上的图片复制粘贴过来的感觉 而且呢都是近景照 都是直接生成这个狗占了绝大部分的这个空间 完全没有体现出 比如说草地旁边有个湖或者说狗在玩这种感觉 当然这个例子呢我觉得还不错 主要的原因呢可能是下面这个例子下面这个例子呢是说我想生成一张 特别高清的一张 就是时代广场的图你乍一看呢觉得哎生成的挺好的呀 这不就长得像时代广场吗 但其实回头如果你去看DALL·E 2这篇论文 你把它放大去看的话 它这里广告牌上的东西呢全都是模糊的 它所有的这些具体的细节啊图像啊 这里面的东西也都是随机生成的那种颜色块 就完全没有任何语义信息的 就它只是生成了这种高楼大厦的这个样子而已 这里面的细节缺失呢是非常严重 当然我觉得这也不能全怪模型毕竟你给的这个文本太少了 如果你把这个文本写的再长一点 写成一段话比如说里面有多少个人呢 比如说这个广告牌上写的是哪个公司 我觉得DALL·E 2呢也是能够一定程度上去生成 这些细节了 那最后呢我们来总结一下这篇论文其实DALL·E 2这篇论文呢 没有结论这个部分 他直接就用第7段这个局限性和不足 就结束了整篇论文 作者说完前几个不足之后呢在最后一段就说 所有的这些图像生成的论文 比如说从DALL·E到后来的这种GLIDE

片段311:22:04~1:24:41

然后一直到现在DALL·E 2 其实最值得关心的一个问题呢 就是这种生成图像里比如说有不公平的东西 或者有这种有毒害的东西 DALL·E 2呢它的性能生成图片的这个真实度 虽然说比GLIDE更强了 比如说FID的分数呢在COCO上从12变成10了但是随之而来的这个risk呢也就更高了 因为你现在生成的这个图像 越来越像真实的图片了你越来越找不到 就是说有任何的痕迹 或者说这种标志去告诉你这张图片是AI生成的 那也就意味着 更多的人可以拿这种模型去以假乱真 去生成各种带有政治性色彩的 或者带有歧视性色彩的这种图像或者视频 但是民众呢都发现不了 所以作者这里就呼吁呢更多的研究应该是放在这种就是说安全性上 他们在博客里呢 也说们内部现在正在做这种研究去研究这个模型的公平性 和它生成这种有害图片 视频的这种可能性但是DALL·E和DALL·E 2呢 真的是开启了这种文本 生成图像的这一系列的工作迅速加快了这一领域 这个研究的进程 比如说之前呢都是半年出一篇比较有影响力的论文 那可是最近呢我们也知道 4月份DALL·E 2才放出来5月份google的Imagen就出来了 然后就把这个FID分数呢 从10点几变成了7点几然后呢6月份紧接着一个月之后 这个google的Parti模型又出来了 当然这个FID分数呢还是7左右但是它用的是自回归模型 而且效果也非常好 模型也非常大 有20 billion的参数 有200亿所以说这个竞争是越来越激烈 越来越白热化了 然后除了去做这种图像生成还有人脑洞大开 觉得可以用这种方式 去做这种数据增强比如说呢 我先写一个prompt 写几个单词 然后我用GPT 3模型呢哎去帮我把这个作文写完 多写一大段话 然后我再把这段话呢扔给DALL·E 2然后让DALL·E 2帮我生成一个图片 哎我这不就有一个图像文本对了吗 然后我就可以无穷无尽的去生成这种图像文本对 然后再用这个图像文本对去生成CLIP 或者去做DALL·E 2的这个训练不就完了吗 这个呢 就有点这个左脚踩右脚的感觉了在twitter上呢有很多人吵吵着说要做 也有很多人觉得可能OpenAI和google呢 已经在这么做了但是毕竟现在的这个模型规模 和数据规模 就已经没有人能玩的动了那再加上这无穷无尽的训练数据 感觉呢 还是得坐看这些大公司之间怎么玩然后最近呢 twitter上还有一个很火的帖子 又说DALL·E 2其实它自己有自己的一套语言 它呢理解的不是英语 它可以通过一些我们完全看不懂的语言 去生成对应的图片 比如说这个小哥就说

片段321:24:46~1:27:20

DALL·E 2有自己的一套这个秘密语言 比如说这个句子呢其实是鸟的意思 然而这又是一堆鸟语呢其实是说这个昆虫 然后接下来呢他就给了一句话 就巴拉巴拉巴这个完全我也不知道该怎么读 但是事实上生成的图片呢 全都是一鸟在吃昆虫然后除了那个例子之外呢 作者又发现了很多有意思的例子 比如说这里他如果把这个文本输进去 说有两个农民伯伯呢在讨论这个蔬菜 嗯而且这张生成的图片呢最好要带有这个字幕 然后我们就会生成这么一个图片 上面呢有一个标题这块呢也有这个人说话的这个字幕 当然了我们之前也讲过 就是说DALL·E 2有这种局限性这个生成的文字呢就是谁也看不懂 但是这里呢作者神奇的发现 上面的这个标题呢其实代表的就是蔬菜 下面的这个标题呢代表的就是鸟 所以说当他们把上面的那个标题那个看不懂的文字 输给DALL·E 2的时候呢 DALL·E 2就得到了这样的图片就全是做好的菜 然后把 下面的那个人说出来的那句话呢然后输给DALL·E 2的时候呢 就生成了很多鸟 所以这也就反映了DALL·E 2的另外一个问题 就这个属性对不上 本来这个人说的呢其实应该是在讨论这个蔬菜 但其实对应过来呢 其实人讨论的是鸟那还有一个更好玩的例子 就是说 有两只鲸鱼在讨论食物这个呢你也要给我生成一个字幕 它就生成了这么一个图片 两只鲸鱼在讨论什么东西然后又是一串鲸鱼语 然后他们把生成的这个文本呢 抄下来然后扔给DALL·E 2 然后让它去生成图片 结果哎就生成了很多海鲜这个就真的很有意思了 那看来这两只鲸鱼 还真的就在讨论它们的食物是什么然后呢这个作者还尝试了 很多别的不同的例子 我这里就不一一说了他们把他们的这个发现呢 全都总结到他们的这个arXiv论文里 在他的个人主页上是可以找到的然后作者这里呢也跟OpenAI一样 非常担心这个模型的安全性的使用问题 因为他说之前的这种NLP的这种系统 一般都是说会根据这种政策 法规去过滤掉一些信息一般这种过滤系统呢 还是比较准确和高效的 但是呢他们这里发明的这种DALL·E 2用的黑话或者这种鸟语 谁也看不懂的这种语言 也就是他们这里说的Gibberish其实就是垃圾提示词 那就很有可能会绕过这些 已经设置好的过滤器从而产生一些安全性 还有这种可解释性上的这个问题 总之呢DALL·E 2的这个图像生成的效果呢 还是非常让我惊讶的 我自己呢也玩了很久那个DALL·E mini尽管呢不论是在论文里 还是在twitter上还是在别人的论文里 都说DALL·E 2

片段331:27:25~1:27:47

有这样那样的局限性和不足 但是我觉得呢 以现在这种竞争的白热化的程度以现在这种做研究的速度 应该很快 我们就能看到更完美的一个图像生成的模型了 如果你还没有玩过DALL·E 2 那你也可以去加入那个waitlist但如果waitlist实在排不上了 其实也无所谓 反正DALL·E 2才出来了两个月就已经成爷爷辈的工作了 说不定下个月又有新的工作出来关注我 🐣回到视频一键复制保存到 Notion📒 一键保存到笔记Made with ❤️ by JimmyLv on GitHubStatus ·Changelog ·TwitterGitHubToggle theme

    一键总结 哔哩音视频内容


    【自用】DALL·E 2(内含扩散模型介绍)【论文精读】(内含 生成模型的串讲GAN,AE...的评论 (共 条)

    分享到微博请遵守国家法律