NExT-GPT 是新加坡国立大学 NExT++ 实验室开发的多模态大型语言模型 (MM-LLM),并在题为“NExT-GPT:任意到任意多模态 LLM”的研究论文中提出。随着大型语言模型的显著进步,我们可以为 LLM 提供测试提示,以便得到有意义的答案。
然而,作为人类,我们习惯于使用多种感官进行交流。因此,为了拥有更像人类的人工智能,能够使用更多模态作为输入(例如音频、视频和图像)是很有价值的。使用 NExT-GPT,可以使用这些模态作为输入并获得有意义的文本答案。但不仅如此,如果它们与提供的输入更匹配,NExT-GPT 还可以以不同的模态产生输出。
NExT-GPT框架
让我们首先通过论文中的以下图片来回顾一下 NExT-GPT 框架。
在左侧,我们看到了文本、图像、音频和视频等可能的输入模态。在中间,我们有一个大型语言模型,它是框架的核心,我们希望它能够处理来自所有模态的输入并指导所有模态的输出生成,但它只能理解和生成文本。那么,NExT-GPT 如何克服这个问题呢? NExT-GPT 系统由以下三个主要层组成,它们共同实现了这一点,我们将逐一回顾它们:
- 多模态编码阶段
- LLM理解和推理阶段
- 多模态生成阶段
多模态编码阶段
第一层是多模态编码阶段,负责将非文本的输入转换为文本提示。此阶段分为两个步骤,我们在下面的框架图中进行了标记。第一步称为多模态输入编码,其中每个输入都通过可以处理其模态的编码器传递,这为我们提供输入的语义嵌入。第二步称为以 LLM 为中心的对齐,其中嵌入通过小型线性模型传递,这些模型称为输入投影模型,以便从嵌入中生成 LLM 可以理解的文本。
LLM理解和推理阶段
第二层是 LLM 理解和推理阶段,核心 LLM 不仅生成文本响应,还生成其他模态生成的指令。因此,LLM 输出可以包含多个部分,这些部分使用特殊标记进行区分,LLM 使用这些标记来表示应该为特定模态输出,以及 LLM 响应中的哪一部分与该模态相关。在下图中,我们突出显示该阶段,并在 LLM 下方写出 LLM 输出结构的示例。
多模态生成阶段
第三层是多模态生成阶段,我们在下图中突出显示了该阶段。此阶段负责根据 LLM 响应生成所有模态的最终输出,分两步完成。第一步是指令遵循对齐,其中与非文本模态相关的 LLM 输出通过小型基于转换器的模型传递,这些模型称为输出投影模型,将 LLM 输出转换为可由模态解码器处理的表示。第二步是多模态输出生成,我们使用其特定的扩散解码器为每种模态生成输出。
NExT-GPT 的哪些组件经过了训练?
总体而言,NeXt-GPT 系统有许多组件,但为了训练它,我们只需要训练很小一部分权重。模态编码器实际上来自 ImageBind,这是 Meta AI 的一个令人着迷的模型,它可以处理多种模态并在同一嵌入空间中产生语义嵌入。我们在这里详细介绍了 ImageBind 。这些编码器在 NExT-GPT 训练期间保持冻结。扩散模型也按原样采用,其中图像扩散模型是稳定扩散,视频模型是 Zeroscope,音频生成模型是 AudioLDM,并且在训练过程中这三个模型也保持冻结。这里使用的 LLM 是 Vicuna-7B,它在其他多模态 LLM 中很常见,它也保持冻结状态。LLM 实际上并没有完全冻结,因为这里训练了少量的 LoRA 权重。
系统配置
在论文的上表中,我们可以看到完整的系统配置。ImageBind 是具有 12 亿个参数的编码器,标记为冻结。经过训练的输入投影层有 400 万个参数。LLM 有 70 亿个冻结的参数和 3300 万个可训练的 LoRA 权重。输出投影层每个变压器有大约 3000 万个权重,所有变压器都经过训练,冻结的扩散模型总共有大约 40 亿个参数。总体而言,只有 1% 的权重经过了训练。
NExT-GPT 对话示例
现在让我们看一个论文中与 NExT-GPT 对话的例子。在下图中,我们可以在左侧看到一个文本提示,它被输入到 LLM 中,谈论夏天去海边。多模态输入编码显示为灰色,因为除了文本提示之外没有其他输入类型。然后,LLM 会产生一个文本响应,以沙滩排球为例来描述海上活动,但它也会产生图像信号标记和指令,这些标记和指令被转换为稳定扩散的输入,从而产生排球图像。
接下来,我们看到此对话中的另一个步骤,用户说他更喜欢冲浪,并希望制作一个关于冲浪的视频,并提供冲浪图像作为参考。现在我们看到图像编码器和投影没有变灰,除了文本之外还传递给了 LLM。作为输出,我们得到了一个文本,说“这是一个参考”,并生成了另一个冲浪视频作为参考。
训练NExT-GPT
轻量级多模态对齐学习
现在让我们更深入地了解 NExT-GPT 系统的训练方式,从轻量级多模态对齐学习开始。之前,我们回顾了架构,我们在这里再次看到它以供参考。现在我们将重点介绍如何训练输入和输出投影模型,也称为以 LLM 为中心的对齐和遵循指令的对齐步骤(框架图上的第二列和第四列)。
以编码大小 LLM 为中心的多模态比对
我们从编码大小 LLM 为中心的多模态对齐步骤开始。在论文中的下图中,我们可以看到输入投影模型的训练过程,其中我们使用图像和文本标题、音频和文本标题以及带有文本标题的视频对。我们将非文本输入馈送到编码器,编码器将产生一个表示。然后将表示馈送到输入投影模型,该模型将为 LLM 产生一个对齐表示。然后,LLM 产生一个响应,将其与匹配我们提供给编码器的输入的文本标题进行比较,并将损失传播到输入投影模型。编码器和 LLM 在这里保持冻结状态。
解码侧指令跟随对齐
接下来我们回顾一下解码端的指令跟随对齐步骤,我们仍然使用与之前类似的带字幕的输入。我们在这里不使用任何图像、音频和视频的生成,这非常有趣。它的工作方式是,LLM 输出一个带有信号标记的响应,该标记通过输出投影模型传递,并将输出投影模型的输出与将字幕输入到扩散模型的文本编码器时获得的编码进行比较,因此我们只需要扩散模型中的文本编码器,而不需要运行扩散过程,这使得这一步非常高效。
模态切换指令调整(MosIT)
另一个旨在帮助 NExT-GPT 遵循包含来自多种模态的输入的指令的训练步骤是模态切换指令调整。在此步骤中,我们继续训练我们刚刚看到的可训练组件,并训练 LoRA 权重。我们向系统提供包含多种模态的对话输入,如下图左侧所示。LLM 使用模态信号标记生成响应。然后,我们将 LLM 输出与黄金注释进行比较,以计算将用于更新 LoRA 权重的损失。
但是 LLM 成果的黄金注释从何而来?研究人员使用三种类型的数据:
- 文本 + X 到文本– 输入是文本元组和来自其他模态的样本,黄金注释是标题文本。在这里,研究人员使用了其他多模态 LLM 中使用的现有数据集。
- 文本到文本 + X – 输入是文本,输出是文本和另一种模态的元组。这比以前的数据类型少见得多。此数据集是通过使用与第一个数据集类似的数据并将其反转而创建的。除了反转之外,研究人员还使用 GPT-4 包装现在是输入的标题,使其看起来像一条指令。
- MosIT 数据——前两个数据集对于 NExT-GPT 的目标来说太简单了,因此这里有第三个数据集,它包含高质量的指令,其中包含具有多种响应和多种模式的对话,研究人员利用 GPT-4 创建对话,并在适当的地方为对话添加图像、视频和音频。
结果
我们终于可以看看结果了。在论文的结果部分,我们可以找到下面的图表,其中 x 轴是示例类别,根据输入和输出的模态进行划分,y 轴是 NExT-GPT 在示例类别上的表现。由于缺乏评估基准,因此性能由人工评估人员给出,他们以 1 到 10 的等级对性能进行评分。 值得注意的是,从各种输入生成图像效果最好,正如我们在前三个条形图中看到的那样。