今天来讲一篇前两天刚挂上的多模态预训练的论文,这个模型 KOSMOS 可以直接输入文本、图像模态的信息,也可以平滑的进行多模态的任务,甚至是智商测试。值得一提的是,模型甚至只用 1.3B
Introduction
作者团队来自微软,主要参考了他们的之前一篇工作
MetaLM:Language Models are General-Purpose Interfaces
从标题就可以看出,这是在碰瓷 transformer 的热度,并且点出了关键点:
他们要做 above language 的 LLM 工作
这就是本文的核心概念:MLLM。
所谓 MLLM (multimodal large language model),就是说要输入多模态的内容,然后完成语言模型的任务。其实这也是现在一个新的趋势,从之前 versatile diffusion 论文出来开始,就能看出预训练大模型现在有能力去处理多模态的内容了。
在这篇文章中,作者仿照一般大模型论文的写法,做了下面的事情:
- 占坑了 MLLM 这个概念
- 作为概念,整了个多模态的预训练数据集
- 作为例子,炼了一个 1.3B 的丹 KOSMOS-1,并且说明比起之前的工作效果更好
这里可以看出,作者心是很大的,一般上来就叫 xxx-1 的,就是想要比肩 GPT 系列,形成类似行业规范的大模型。
下面就来看看本文主打的方法吧
From LLMs to MLLMs
现在的预训练语言模型 LLM 的水平极高,并且有很强的任务理解能力,或者说通用性的语言理解和建模水平。拥有成为 “general-purpose interface” 的潜力或者说实力。
然而所有的 LLM 有一个绕不开的问题:只能输入文本。因此很多任务 “不得不” 对齐到文本模态,比如表格生成等等。真正的通用人工智能显然不能只有语言模态:需要输入图像、文本、声音、视频,输出文本、图片图像、乃至动作空间等等。这就意味着我们需要更进一步。
作者在这里迈出了一小步:先把输入变成多模态的,输出还是只有文本模态,称之为 multimodal large language model
这样,很多多模态任务就可以很轻松的转换成 MLLM 模型的输入格式,比如说:
- 文字识别任务不需要专门定义,就输入一个图片,然后问 “文字写的是什么” 就可以了,甚至还可以针对回答进行一些进一步的对话
- 图像描述也不需要专门定义,还是把图片喂进去然后进行一个类似对话问答的场景即可
- 甚至还有很多开放性的图像问答类任务,“图片背景里的咖啡店是什么店?”,这种开放性问题之前是没法处理的,但对于 MLLM 都是可以做到的
可以想见,这种 MLLM 的通用性比一般的 LLM 更好,现在的 LLM 能力也宣誓着 MLLM 确实可以做得很好。接下来,作者就真的训了一个 1.3B 的 MLLM 出来
KOSMOS-1
表示方法与训练目标
想要输入图片,就要表示图片,这里有两种思路:
- 用类似 ViT 的格式把图像和文本直接表示在一起
- 用一个专门的图像编码器编码图像,再把类似图像 latent 的东西喂给 LLM
作者使用的第二种方法,并且用了一个锁参 (除了最后的 linear 层) 的 ViT-CLIP 模型作为图像编码器
图像编码完了以后就直接把 latent 当做 token 喂给模型。模型对于这种图像、文本一起的内容进行 auto-regressive 的学习
数据集
数据集是所有预训练模型任务里最重要的部分,也是基本上大多数论文阅读者都会跳过的内容。我们就来详细看一下作者的训练数据是怎么来的。
首先是纯文本部分,作者和已有的模型 GPTxxx、OPT、PaLM、Chinchilla、LLaMa 等等类似,关键点是加入了代码数据训练
接下来是混合模态部分,这里有两大类:
- image caption:用了 text2image 的数据集,最大的那个 LAION-5B 里面 2B 的英文子集
- Interleaved Image-Text Data:这个是带图片的网页,作者从 2B 网页里筛出来了 71M 的网页,没有公布筛选的办法,但是作者提到删掉了一半只有一个图片的网页
模型结构
主体是 transformer encoder+casual mask,总体大小 1.3B:
- 24 layer
- 32 head
- 2048 hidden dim
- 8192 FFN dim
这里就只说和 transformer 改进的地方:
- 加了更多的 layerNorm,然后是采用 postNorm
- MEGANETO 初始化方式
- 采用的是相对位置编码,还是 xPos 变体,这个其实挺少见的,现在大多都是 rotary embedding 了
评测
这一部分就说一些好玩的结果吧
首先是智商测试
这是现在唯一一个能做智商测试的模型,虽然结果不怎么样,但是这个任务定义真的让我感觉我们又向着通用人工智能走近了一步
剩下的很多任务作者做的评测还是比较完善的
我们大约需要关注几个结论:
作者的评测 baseline 都是类似大小的模型,不过大的也没有
引入多模态输入的训练,对于任何一个模态都是很有帮助的
对于纯文本任务,表现没有相同训练成本的 LLM baseline 好
模型确实可以理解语义复杂的多模态任务定义,并且向着正确的方向做,即使模型只有 1.3B
我的思考
虽然大小只有 1.3B,但由于是多模态输入,其实训练成本并不低,这点要注意
之前看过一个说法叫 “最小发布单元”,就是把一个工作的贡献拆成多个论文,最后凑出多篇论文的发表。感觉这篇论文作者就有很多后手等着:
模型能不能再大点?
既然是多模态输入,哪能不能输出图片?(现在 Autoregressive 直接输出 clip embedding 了,接个残血的 DALL.E 2 就行)
图像和文字端可以联动,训练数据也有代码,是不是代码和图像模态也可以联动一下?比如来个什么代码可视化
训练输入是网页,那应该天生做网页生成很在行
以上这些估计就是作者在 KOSMOS-23456 里想做的了
我觉得这种 MLLM,乃至 MLM (multimodal large model) 可能是未来几年的趋势,毕竟现在网页数据的 common crawl,图像描述的 LAION 系的数据量这么大,搞一堆几百 B 的大模型应该不会缺数据。尤其是 chinchilla 之类的工作还说了现在的训练量不够
Language Is Not All You Needmoney is all you need
v1.5.2