OpenAI魔法模型DALL-E论文、代码公布!

来源:AI科技评论

编译:AI科技评论

OpenAI在1月5日公布DALL-E模型以来,人们都惊艳于模型的语言想象力是如此丰富和细致。如今,我们终于等到了论文的公布,从而得以了解DALL-E天马行空创造力背后的奥秘。值得一提的是,OpenAI还开源了DALL-E的代码,然而,只包含了其中的一个非核心模块。

以下是DALL·E的几个演示案例。

文本提示:穿着芭蕾舞短裙的萝卜宝宝在遛狗。

AI生成的图像:

文本提示:一只X射线的猫头鹰:

AI生成的图像:

文本提示:孔雀橡皮。

AI生成的图像:

文本+图像提示:参照上面的猫在下面生成草图

AI生成的图像:

更多示例请查看:

OpenAI祭出120亿参数魔法模型!从文本合成图像栩栩如生,仿佛拥有人类的语言想象力

以下,AI科技评论对论文核心内容进行了编译,具体细节还请参看原论文。

论文链接:https://arxiv.org/pdf/2102.12092.pdf

Blog:https://openai.com/blog/dall-e/

GitHub(VAE in DALL-E):https://github.com/openai/DALL-E

摘要:

按照传统,文本到图像的生成一直专注于寻找更好的建模假设,以便能够在固定数据集上进行训练。这些假设可能涉及到复杂的架构、辅助损失或边信息(side information),比如训练过程中提供的物体部分标签或分割掩码。

我们基于transformer 描述了用于此任务的一种简单方法,该transformer 能够将文本和图像token自动回归建模为单个数据流。有了足够的数据和规模后,在零样本情况下进行评估时,我们的方法就可以与先前的特定领域建模(DSM)一争高下。。

1

引言

从文本到图像的现代机器学习合成方法始于Mansimov等人在2015年的研究工作,他们将Gregor 等人提出的用于生成图像标题的生成模型 DRAW 进行扩展,进一步生成新颖的视觉场景。2016年,Reed 等人证明,使用生成对抗网络(而不是使用递归可变自动编码器)可以提高图像逼真度。在同年的另一篇工作中,Reed 等人又证明,该系统不仅可以生成具有可识别属性的对象,还可以零样本泛化至留出(held-out)类别。

在接下来的几年里,研究人员又提出多种方法,推动了文本到图像生成领域的进展。比如,通过修改多尺度生成器来改进生成模型的架构;整合注意力和辅助损失;利用文本以外的其他条件信息资源。

在2017年,Nguyen等人提出了一种基于能量的条件图像生成框架。相对于现代方法,该框架在样本质量上取得了重大进步。他们的方法可以兼并预训练判别模型,并且证明,将其应用于在MS-COCO上预先训练的字幕模型时,模型能够执行文本到图像的生成。2020年,Cho等人还提出了一种方法,可以优化预训练跨模态掩码语言模型的输入。Manshimov等人在2015年的工作大幅提升了视觉逼真度,但样本仍然面临影响失真的“灾难”,例如物体变形、不合理的物体放置,或前景和背景元素的不自然混合。

由大规模生成模型驱动的最新进展表明了进一步改进上述问题的可能途径。具体来说,当计算、模型大小和数据进行仔细缩放时,自回归transformer(autoregressive transformer)在文本、图像和音频上能取得非常不错的效果。

相比之下,文本到图像的生成通常是在较小的数据集(例如MS-COCO和CUB-200)上进行评估。数据集大小和模型大小是否有可能成为限制当前方法发展的因素呢?在这项工作中,我们证明了,在从互联网上收集的2.5亿个图像文本对上训练一个包含120亿个参数的自回归transformer,能够得到一个可通过自然语言控制的灵活且逼真度高的图像生成模型。

同时,随之形成的系统无需使用任何训练标签,就可以在流行的 MS-COCO 数据集零样本泛化实现高质量的图像生成。它比先前由人类评估员在数据集上进行训练的工作节省了90%的工作时间。此外,它还能够执行复杂的任务,比如在基本级别上进行图像到图像的翻译。

2

方法

我们的目标是训练一个transformer进行自动建模,即将文本以及图片的tokens转换为单一的数据流。然而,将像素直接作为图片token会占用大量的内存进行存储高分辨率图片。另外,似然目标(Likelihood objectives)倾向于对像素之间的近距离相关性进行建模,因此大部分内存会被用来捕捉高频细节上,忽略了能够在视觉上识别对象的低频结构。

基于以上问题,我们借用Oord和Razavi在2017和2019年的工作:两阶段训练法,进行尝试解决。

阶段1:训练一个离散变分自动编码器(DVAE),将每个256×256 RGB图像压缩成一个32×32的图像token网络,每个网格的每个元素可以取8192个可能的值。这一阶段会让transformer的上下文尺寸(context size)减少192倍,同时还不会大幅降低“视觉”质量。

阶段2:将256个BPE编码的文本token与32×32=1024 图片tokens连接起来,然后训练一个自回归 transformer对文本和图像的联合分布进行建模。

图1:原始图像(上图)和离散VAE重建图像(下图)的比较

建模公式如上图所示,整体可以看成联合分布的似然函数,x代表图像,y代表图像的标题,z代表token,使用因式分解p_θψ(x,y,z)=p_θ(x|y,z)pψ(y,z)对该分布进行建模,得到下界。其中:

  • q_φ表示在给定RGB图像x2的情况下,由DVAE编码器生成的32×32图像token上的分布

  • p_θ表示由DVAE解码器在给定图像token的情况下生成的RGB图像上的分布

  • p_ψ表示文本和图像token在transformer建模中得到的联合分布。

值得一提的是,这个界(bound)只在β=1时成立,实际上,使用更大的β值非常有好处。

阶段1:学习视觉编码

在阶段1的训练中,针对φ和θ最大化ELB(evidence lower bound),这相当于在图像上训练DVAE。一开始将p_ψ设置为K=8192个向量上的均匀分类分布,q_φ为编码器输出的32×32网格中同一空间位置上的8192个 logits参数化的分类分布。

但ELB难以优化:因为q_ψ是一个离散分布,不能使用重参数化技巧进行最大化。有人使用在线聚类分配程序加上直通估计器来解决这个问题。我们还使用Gumbel-Softmax技巧转换q_φ。此外,条件放松的ELB使用Adam与指数加权迭代平均法进行最大化。其中,在编码器的末端和解码器的开始使用1×1卷积;将编码器和解码器重分块的输出激活乘以一个小常量等是非常重要的技巧和参数。

阶段2:学习先验

在第二阶段,修正了φ和θ,并通过最大化关于ψ的ELB来学习文本和图像token的先验分布,其中p_ψ由含有120亿个参数的稀疏transformer进行表示。

给定一个文本-图像对,最多使用256个词汇大小(vocabulary size)为16384的tokens对小写标题进行BPE编码,并使用32×32=1024个词汇大小为8192的tokens对图像进行编码。图像 token是通过使用 argmax 采样从 DVAE 编码器获得的,没有添加任何 gumbel 噪声。最后,文本和图像token进行连接,并作为一个单一的数据流进行自回归建模。

我们通过一堆数据中各个种类的总数,对文本-图像 token 的交叉熵损失进行了归一化。因为我们主要对图像建模感兴趣,因此我们将文本的交叉熵损失乘以1/8,将图像的交叉熵损失乘以7/8。目标则通过使用Adam算法,以指数加权的迭代平均法进行了优化。我们大概用了 606,000 张图像用于验证,但在收敛时没有发现过度拟合现象。

数据收集

我们在一个包含330万个文本-图像对的数据集 Conceptual Captions 上对模型进行了高达12亿参数的初步实验。

为了扩展到120亿个参数,我们从互联网上收集了2.5亿个文本-图像对,创建了一个与JFT-300M规模相当的数据集。该数据集不包括 MS-COCO,但包含了 Conceptual Captions 数据集和 YFCC100M 的一个过滤子集。由于MS-COCO是基于 YFCC100M 创建的,我们的训练数据还包含了一部分 MS-COCO 验证图像(但没有caption部分)。

混合精度训练

为了节省GPU内存并提高吞吐量,大多数参数、Adam 矩和激活都以16位精度存储。我们还使用激活checkpointing ,并在向后传递期间重新计算resblock中的激活。我们还使模型以16位精度对10亿个参数进行无差异训练,这是该项目最具挑战性的部分。

分布式优化

当以16位精度存储时,我们的120亿参数模型需要消耗约24 GB的显存,这超过了NVIDIA V100 16 GB的显存。我们使用参数分片(parameter sharding)来解决这个问题。

如图5所示,参数分片允许我们通过将其与计算密集型操作重叠,从而几乎可以完全忽略机器内通信的延迟。

图5:用于分布式训练的通信模式。

样本生成

我们使用预训练的对比模型(Radford et al., 2021)对从transformer提取的样本进行重新排序。给定字幕和候选图像后,对比模型会根据图像与字幕的匹配程度来分配分数。图6显示了增加样本数量N的效果,我们从中选择了前k个图像。这个过程可以看作是一种语言指导的搜索(Andreas et al., 2017),也类似于辅助文本-图像匹配损失(Xu et al.,2018)。

除非另有说明,否则所有用于定性和定量结果的样品都无需降温即可获得(即t = 1),并使用N = 512进行重新排序。

图6:增加图像数量对MS-COCO字幕对比重排序程序的影响。

3

结论

我们研究了一种简单的基于 autoregressive transformer 的文本-图像生成方法。我们发现,无论是在相对于以前特定领域方法的零样本性能方面,还是在单个生成模型的能力范围方面,规模都可以导致泛化性能的提升(所以这是官方承认大力出奇迹吗)。

未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测;开展互联网(城市)云脑研究计划,构建互联网(城市)云脑技术和企业图谱,为提升企业,行业与城市的智能水平服务。

  如果您对实验室的研究感兴趣,欢迎加入未来智能实验室线上平台。扫描以下二维码或点击本文左下角“阅读原文”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485227.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Maven项目无法加载jdbc.properties

Maven项目无法加载jdbc.properties(java.sql.SQLException: The server time zone value ‘�й���׼ʱ��’ is unrecog) 1.JdbcUtils.java package com.zxm.utils;import java.io.InputStream; import ja…

Hinton:我终于想明白大脑怎么工作了!神经学家花三十年,寻找反向传播的生物机制...

来源:智源社区作者:Anil Ananthaswamy编译:梦佳「有一天晚上,我回家吃饭,激动地说『我终于想明白大脑是怎么工作的了!』我15岁的女儿对我说,怎么又来了,老爸。」 …

Mybatis学习笔记(一)——项目搭建、导入依赖、相关配置

Mybatis学习笔记&#xff08;一&#xff09;——项目搭建、导入依赖、相关配置 传送门&#xff1a;Mybatis中文网&#xff08;入门手册&#xff09;Mybatis中文网 一、新建项目 在项目中新建模块&#xff1a; 二、学习Mybatis常用的依赖&#xff1a; <dependencies…

数学与工业革命

来源&#xff1a;中科院数学与系统科学研究院作者&#xff1a;黄雷&#xff0c;中科院数学与系统科学研究院数学&#xff0c;无时无刻不散发着它独特的魅力。上到宇宙飞船遨游外太空&#xff0c;下至小商小贩行走菜市间&#xff0c;这门与每个人生活都息息相关的学科一直在默默…

AI回溯过去解决复杂任务 |《自然》论文

来源&#xff1a;Nature Portfolio根据《自然》本周发表的一项研究First return, then explore&#xff0c;一类增强学习算法在雅达利经典游戏中的得分超过了人类玩家和先进的人工智能系统&#xff0c;算法挑战的游戏包括《蒙特祖马的复仇》&#xff08;Montezuma’s Revenge&a…

python数据图形化—— matplotlib 基础应用

matplotlib是python中常用的数据图形化工具&#xff0c;用法跟matlab有点相似。调用简单&#xff0c;功能强大。在Windows下可以通过命令行 pip install matplotlib 来进行安装。 以下为一些基础使用的例子&#xff1a; 1、绘制直线 先通过numpy生成在直线 y 5 * x 5 上的一组…

Snipaste的安装及快捷键的设置

Snipaste的安装及快捷键的设置 关于Snipaste&#xff1a; Snipaste 是一个简单但强大的截图工具&#xff0c;也可以让你将截图贴回到屏幕上&#xff01;可以将剪贴板里的文字或者颜色信息转化为图片窗口&#xff0c;并且将它们进行缩放、旋转、翻转、设为半透明&#xff0c;甚…

人与机器人的交互理论及其前景

来源&#xff1a;人机认知与实验室摘要&#xff1a;移动机器人的人机交互正处于早期阶段。大部分与机器人相关的用户交互都被数控能力所限制&#xff0c;向用户提供的最普遍的界面是以自动化平台提供的视频和对机器人的一定程度上的路径指挥。对于半自动能力的移动机器人&#…

计算机组成原理——Cache与主存的地址映射

Cache–主存的地址映射 由主存地址映象到cache地址称为地址映射 cache的基本结构&#xff1a; Cache的工作过程&#xff1a; CPU发出一个地址&#xff0c;同时发给主存和cache的地址映射机构&#xff0c;CPU会从主存中取出字还是从cache中取出字&#xff0c;主存将块号送入主…

申工智能有没有作弊?

来源&#xff1a;北国骑士在2021年农心杯赛场&#xff0c;韩国天才棋手申真谞连胜五轮&#xff0c;帮助韩国队夺得了阔别很久的团队冠军奖杯。从一连串的棋局来看&#xff0c;不管是日本选手还是中国对手&#xff0c;在韩国棋手面前都“不堪一击”。以申真谞为例&#xff0c;几…

浮点数加减法运算(对阶、尾数求和、规格化、舍入、溢出判断)

浮点数的加减法运算 前言&#xff1a; 运算过程&#xff1a;对阶、尾数求和、规格化、舍入、溢出判断 浮点加减运算 在计算机中&#xff0c;加减法运算用补码实现。 算术运算的常识&#xff1a;两个浮点数如果要进行加减法运算&#xff0c;它们的阶或者指数必须相等。 一、…

JSP实现登陆页面(表单提交、连接数据库、实现页面跳转)

JSP实现登陆页面(表单提交、连接数据库、实现页面跳转) 1.数据库设计 2.主页面展示 3.代码展示&#xff1a; index.jsp <% page language"java" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8"%> <!DOCTYPE html PUBLIC …

任正非在“GTS云与终端云合作与融合进展”汇报会上的讲话

任正非内部讲话音频版作者&#xff1a;任正非来源&#xff1a;蓝血研究&#xff08;lanxueyanjiu)2021年1月12日&#xff0c;任正非在“GTS云与终端云合作与融合进展”汇报会上发表讲话。任正非要求&#xff0c;要围绕着体验把端、管、云拉通&#xff0c;优化华为的GTS服务网络…

Hinton一作新论文:如何在神经网络中表示“部分-整体层次结构”?

来源 | AI科技评论作者 | Geoffrey Hinton编译 | 陈彩娴AI科技评论在 Twitter 上发现了一篇Hinton的新论文&#xff0c;作者只有Hinton本人&#xff0c;这篇论文没有介绍具体的算法&#xff0c;而是描绘了一个关于表示的宏观构想&#xff1a;如何在神经网络中表示部分-整体层次…

概率校准与Brier分数

1.再提逻辑回归 前面已经讲过了逻辑回归&#xff0c;这里不再细讲&#xff0c;只是简单的说一个函数&#xff0c;主要是方便大家更好的理解概率校准。 在逻辑回归中&#xff0c;用的最多的就是sigmod函数&#xff0c;这个函数的作用就是把无限大或者无限小的数据压缩到[0,1]之间…

费曼:所有科学知识都是不确定的

来源 &#xff1a; 网络作为科学家&#xff0c;我们知道伟大的进展都源于承认无知&#xff0c;源于思想的自由。那么这是我们的责任——宣扬思想自由的价值&#xff0c;教育人们不要惧怕质疑而应该欢迎它、讨论它&#xff0c;而且毫不妥协地坚持拥有这种自由——这是我们对未来…

遍历性能

iOS开发中数组常用的五种遍历方式 随着iOS的不断发展&#xff0c;apple也不断推出性能更高的数组遍历方式&#xff0c;下面将对熟悉的五种遍历方式进行列举。 首先定义一个数组&#xff0c;并获取数组长度 一、for循环 二、forin 快速枚举 三、NSEnumerator 四、快速遍历 五、快…

【剑指offer】面试题68 - I:二叉树的最近公共祖先(Java)

给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个结点 p、q&#xff0c;最近公共祖先表示为一个结点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可能大&#xff08;一个节点也可以是它自…

工业传感器:工业互联网的第一道门

来源&#xff1a;北京物联网智能技术应用协会作者&#xff1a;刘沁沈阳仪表科学研究院副总工程师、传感器国家工程研究中心常务副主任工业的发展离不开众多感知技术的加持&#xff0c;其中最为关键的技术之一便是传感器。可以说&#xff0c;工业传感器让自动化智能设备有了感知…

数学:二项式定理

先贴一张网图来弥补一下知识点&#xff0c;回顾NOIP2011计算系数 既然我们要求的是展开式中某一项的系数&#xff0c;那么就直接求出其对应的组合数就好了&#xff0c;但是要注意x和y都是有系数a和b的 x,y换成ax,by&#xff0c;得到x^ny^m的系数是a^n*b^m*C(k,n) 这样就可以了 …