当前位置:   article > 正文

谈谈多模态大模型

多模态大模型

引言

长期以来,每个机器学习模型都以一种数据模式运行——文本(翻译、语言建模)、图像(对象检测、图像分类)或音频(语音识别)。

然而,自然智能并不仅限于单一模态。人类可以阅读和书写文本。我们可以看到图像并观看视频。我们听音乐来放松,留意奇怪的声音来发现危险。能够处理多模态数据对于我们或任何人工智能在现实世界中运行至关重要。

OpenAI 在其 GPT-4V system card 中指出,“将额外的模态(例如图像输入)纳入大语言模型被一些人视为人工智能研究和开发的关键前沿。”

将额外模态纳入 LLM(大型语言模型)可创建 LMM(大型多模态模型)。去年,各大研究实验室每周都会推出新的 LMM,例如 DeepMind 的 Flamingo、Salesforce 的 BLIP、微软的 KOSMOS-1、谷歌的 PaLM-E 和腾讯的 Macaw-LLM。ChatGPT和Gemini等聊天机器人都是 LMM。

并非多模态系统都是 LMM。例如,Midjourney、Stable Diffusion 和 Dall-E 等文本到图像模型是多模态的,但没有语言模型组件。多模态有如下几重含义:

  • 输入和输出具有不同的模式(例如文本到图像、图像到文本)
  • 输入是多模式的(例如可以处理文本和图像的系统)
  • 输出是多模式的(例如可以生成文本和图像的系统)

本博文将涵盖一般的多模式系统,包括 LMMs。全文由 3 部分组成:

  • 第 1 部分介绍多模态的背景,包括为什么采用多模态、不同的数据模态以及多模态任务的类型。

  • 第 2 部分使用 CLIP 和 Flamingo 示例讨论多模态系统的基础知识,CLIP 为许多未来的多模态系统奠定了基础,而 Flamingo 的令人印象深刻的性能催生了 LMM。

  • 第 3 部分讨论了 LMM 的一些活跃研究领域,包括生成多模态输出和adapters以实现更高效的多模态训练,涵盖较新的多模态系统,例如 BLIP-2、LLaVA、LLaMA-Adapter V2、LAVIN 等。

理解多模态

为何要有多模态?

如果没有多模态,许多应用都是不可能实现的,尤其是那些处理混合数据模态的行业,例如医疗保健、机器人、电子商务、零售、游戏等。
在这里插入图片描述
不仅如此,合并来自其他模态的数据可以帮助提高模型性能。可以从文本和图像中学习的模型难道不应该比只能从文本或图像中学习的模型表现得更好吗?

多模态系统可以提供更灵活的接口,允许用户以目前最适合的方式与其进行交互。想象一下,您可以通过打字、说话或只是将相机对准某物来提出问题。

我特别兴奋的一个可能应用是,多模态还可以让视障人士浏览互联网并导航现实世界。
在这里插入图片描述

数据模态

不同的数据模态包括文本、图像、音频、表格数据等。一种数据模态可以用另一种数据模式来表示或近似。例如:

  • 音频可以表示为图像(梅尔频谱图)。
  • 语音可以转录为文本,尽管其纯文本表示会丢失音量、语调、停顿等信息。
  • 图像可以表示为向量,而向量又可以被展平并表示为文本tokens序列。
  • 视频是图像加音频的序列。如今的机器学习模型大多将视频视为图像序列。这是一个严重的限制,因为事实证明声音与视频的视觉效果一样重要。88% 的 TikTok 用户表示声音对于他们的 TikTok 体验至关重要。
  • 如果您简单地拍摄一张照片,文本就可以表示为图像。
  • 数据表可以转换为图表,即图像。

其他数据模态怎么样?
所有数字数据格式都可以使用位串(0​​ 和 1 的字符串)或字节串来表示。能够有效地从位串或字节串中学习的模型将非常强大,它可以从任何数据模态中学习。
还有其他我们没有涉及的数据模态,例如图表和 3D 资产。我们还没有涉及用于表示气味和触觉(haptics)的格式。

在今天的机器学习中,音频在很大程度上仍然被视为基于语音的文本替代品。音频最常见的用例仍然是语音识别(语音转文本)和语音合成(文本转语音)。非语音音频用例(例如音乐生成)仍然相当小众。

图像可能是模型输入最通用的格式,因为它可用于表示文本、表格数据、音频,在某种程度上还可以表示视频。视觉数据也比文本数据多得多。今天,到处都是不断拍摄照片和视频的手机/网络摄像头。

文本是模型输出的一种更强大的模式。可以生成图像的模型只能用于图像生成,而可以生成文本的模型可以用于许多任务:摘要、翻译、推理、问答等。

为简单起见,我们将重点关注两种模式:图像和文本。这些知识可以在某种程度上推广到其他模态。

多模态任务

要了解多模态系统,了解它们想要解决的任务会很有帮助。有许多任务以及许多可能的组织方法。在文献中,我通常看到视觉语言任务分为两组:生成和视觉语言理解(vision-language understanding,VLU),VLU是所有不需要生成的任务的总称。但是这两组任务之间的界限是模糊的,因为能够生成答案也需要理解。

生成

对于生成任务,输出可以是单模态(例如文本、图像、3D 渲染)或多模态。虽然单模态输出如今已很常见,但多模式输出也在不断普及中。我们将在本文末尾讨论多模式输出。

图像生成(文本到图像合成)

此任务类别很简单。示例:Dall-E、Stable Diffusion和Mid Journey。

文本生成

常见的文本生成任务是视觉问答。您可以为模型提供文本和图像,而不是仅依赖文本作为上下文。想象一下,您可以将相机对准任何物体并提出诸如以下之类的问题:“我的车无法启动。它有什么问题吗?”、“这道菜怎么做?”或“这个表情包是关于什么的?”。

另一个常见的用例是图像caption,它可以用作基于文本的图像检索系统的一部分。一个组织可能拥有数百万甚至数十亿张图像:产品图像、图表、设计、团队照片、宣传材料等。AI可以自动为它们生成caption和元数据,从而更轻松地找到您想要的确切图像。

视觉语言理解

我们将重点讨论两种任务类型:分类和基于文本的图像检索(text-based image retrieval,TBIR)。

分类

分类模型只能生成属于预定类列表的输出。当您只关心固定数量的结果时,这很有效。例如,OCR 系统只需要预测视觉内容是否是已知字符之一(例如数字或字母)。

注意:OCR 系统在字符级别处理数据。当与可以理解更广泛上下文的LLM系统一起使用时,它可以有新的应用,例如允许用户与任何教材、合同、汇编指令等“对话”。
在这里插入图片描述

与分类相关的一项任务是图像到文本检索:给定图像和预定义文本池,找到最有可能伴随图像的文本。这对于产品图像搜索很有帮助,即从图片中检索产品评论。

基于文本的图像检索(图像搜索)

图像搜索不仅对搜索引擎很重要,而且对企业能够搜索所有内部图像和文档也很重要。有些人将基于文本的图像检索称为“文本到图像检索”。

基于文本的图像检索有多种方法。其中两个是:

  • 手动或自动为每个图像生成caption和元数据(请参阅文本生成中的图像caption)。给定一个文本查询,查找其caption/元数据最接近该文本查询的图像。
  • 训练图像和文本的联合嵌入空间。给定一个文本查询,生成该查询的嵌入,并找到嵌入最接近该嵌入的所有图像。

第二种方式更加灵活,相信会得到更广泛的应用。这种方法需要为视觉和语言提供强大的联合嵌入空间,就像 OpenAI 的CLIP开发的那样。

多模态训练基础

鉴于存在如此多令人惊叹的多模态系统,撰写这篇文章的一个挑战是选择要关注的系统。最后,我决定重点关注两个模型:CLIP (2021) 和Flamingo (2022),因为它们的重要性以及已公开细节的可获取性和清晰度。

CLIP 是第一个可以通过零样本和少样本学习推广到多个图像分类任务的模型。
Flamingo 并不是第一个可以生成开放式响应的大型多模态模型(Salesforce 的 BLIP于 3 个月前推出)。然而,Flamingo 的强劲表现促使一些人将其视为多模态领域的 GPT-3 时刻。

尽管这两个模型较旧,但它们使用的许多技术在今天仍然适用。我希望它们能够成为理解新模型的基础。多模态领域正在蓬勃发展,许多新想法不断涌现。我们将在第 3 部分中讨论这些较新的模型。

从高层次来看多模态系统由以下组件组成:

  • 编码器: 每个数据模态的编码器为该模态的数据生成嵌入。
  • 嵌入对齐: 一种将不同模态的嵌入对齐到同一多模态嵌入空间的方法。
  • [仅限生成模型]用于生成文本响应的语言模型。由于输入可以包含文本和视觉模态,因此需要开发新技术,使语言模型不仅可以根据文本,还可以根据视觉输入来调节其响应。

理想情况下,应尽可能多地对这些组件进行预训练并可重复使用。

CLIP:对比语言-图像预训练

CLIP 的主要贡献在于它能够将不同模态(文本和图像)的数据映射到共同的嵌入空间。这种共同的多模态嵌入空间使文本到图像和图像到文本的任务变得更加容易。

训练这个多模态嵌入空间还产生了一个强大的图像编码器,这使得 CLIP 在许多图像分类任务上实现了有竞争力的零样本性能。这种强大的图像编码器可用于许多其他任务:图像生成、视觉问答和基于文本的图像检索。Flamingo 和 LLaVa 使用 CLIP 作为图像编码器。DALL-E 使用 CLIP 对生成的图像重新排序。目前尚不清楚 GPT-4V 是否使用了 CLIP。
在这里插入图片描述
CLIP 利用自然语言监督和对比学习,这使得 CLIP 能够扩大数据规模并提高训练效率。我们将讨论这两种技术为何以及如何起作用。

CLIP的高层架构

在这里插入图片描述
对于图像编码器,作者使用 ResNet 和 ViT 进行了实验。他们表现最好的模型是ViT-L/14@336px:

  • 大型视觉transformer(ViT-L)
  • 14x14 pixel patches(每个图像分为 576 个子图像)
  • 输入为 336x336 像素

对于文本编码器,CLIP 使用类似于GPT-2但更小的 Transformer 模型。他们的基础模型只有 63M 个参数和 8 个注意力头。作者发现 CLIP 的性能对文本编码器的容量不太敏感。

使用两个投影矩阵 W v W_v Wv W l W_l Wl将图像编码器和文本编码器生成的嵌入投影到相同的嵌入空间。

给定图像嵌入 V i V_i Vi,相应的多模态嵌入计算如下: W v V i W_vV_i WvVi
给定文本嵌入 L i L_i Li,相应的多模态嵌入计算如下: W l L i W_lL_i WlLi

当人们说 CLIP 嵌入时,他们要么指这些多模态嵌入,要么指由 CLIP 图像编码器生成的嵌入。

自然语言监督

多年来,图像模型都是使用手动标注(图像、文本)数据集(例如 ImageNet、MS COCO)进行训练。这是不可扩展的,手动标注既耗时又昂贵。

CLIP 论文指出,当时可用的(图像、文本)数据集都不够大且质量足够高。他们创建了自己的数据集——400M(图像、文本)对——如下:

  • 构建包含 500,000 个query的列表。query是常用词、二元词和流行维基百科文章的标题。
  • 查找与这些query匹配的图像(字符串和子字符串匹配)。该论文提到这次搜索并未在搜索引擎上发生,但没有具体说明在哪里。我认为,由于 OpenAI 已经在训练GPT模型时进行了整个互联网的搜索,他们可能只是查询了他们的内部数据库。
  • 每个图像都与与其同时出现的文本(例如caption、评论)而非query配对,因为query太短而无法描述。
  • 由于某些查询比其他查询更受欢迎,为了避免数据不平衡,对每个query最多使用 20K 图像。

对比学习

在 CLIP 之前,大多数视觉语言模型都是使用分类器或语言模型目标进行训练的。对比目标是一种巧妙的技术,它允许 CLIP 扩展并推广到多个任务。

我们将使用图像caption示例任务来展示为什么对比目标更适合 CLIP:给定图像,生成描述它的文本。

分类器目标

分类器在预定的类别列表中预测正确的类别。当输出空间有限时,这才有效。以前使用(图像、文本)对数据集的模型都存在此限制。例如,使用ILSVRC-2012 的模型将自身限制为 1,000 个类别,而使用JFT-300M 则将其限制为 18,291 个类别。

这一目标不仅限制了模型输出有意义的响应的能力,还限制了其零样本学习的能力。假设,如果模型经过训练可以在 10 个类别中进行预测,则它不适用于具有 100 个类别的任务。

语言模型目标

如果分类器为每个输入仅输出一个类,则语言模型会输出一系列类。每个生成的类称为一个token。每个token都来自语言模型的预定列表(词汇表)。

在这里插入图片描述

对比目标

虽然语言模型目标允许更加灵活的输出,但 CLIP 作者指出这个目标使训练变得困难。他们假设这是因为模型试图准确生成每个图像附带的文本,而图像可以附带许多可能的文本:alt-text, caption, comments等。

例如,在Flickr30K 数据集中,每个图像都有由人类标注者提供的 5 个caption,并且同一图像的caption可能非常不同。
在这里插入图片描述
对比学习就是为了克服这一挑战。CLIP 的训练目的不是预测每个图像的确切文本,而是预测文本是否比其他文本更有可能伴随图像。

对于每批 N个(图像,文本)对,模型生成 N 个文本嵌入和 N 个图像嵌入。

  • V 1 , V 2 , . . . , V n V_1, V_2, ..., V_n V1,V2,...,Vn 是N个图像嵌入;
  • L 1 , L 2 , . . . , L n L_1, L_2, ..., L_n L1,L2,...,Ln 是N个文本嵌入。
    在这里插入图片描述
    CLIP计算所有 N 2 N^2 N2 对可能的 ( V i , L j ) (V_i, L_j) (Vi,Lj) 图像文本对的余弦相似度。该模型被训练以最大化N个匹配对的相似度分数,同时最小化 N 2 − N N^2-N N2N个错误配对的相似度分数。对于 CLIP, N=32,768。

另一种看待这个问题的方法是,CLIP 的每个训练批次都是两个分类任务。

  • 每张图像都可以与 N 个可能的文本配对,模型会尝试预测正确的文本。这与图像到文本检索的设置相同。
    L contrastive:txt2im = − 1 N ∑ i N log ⁡ ( exp ⁡ ( L i T V i β ) ∑ j N exp ⁡ ( L i T V j β ) ) L_{\text{contrastive:txt2im}} = -\frac{1}{N}\sum_i^N\log(\frac{\exp(L_i^TV_i\beta)}{\sum_j^N\exp(L_i^TV_j\beta)}) Lcontrastive:txt2im=N1iNlog(jNexp(LiTVjβ)exp(LiTViβ))

  • 每个文本可以与 N 个可能的图像配对,并且模型尝试预测正确的图像。这与文本到图像检索的设置相同。
    L contrastive:im2txt = − 1 N ∑ i N log ⁡ ( exp ⁡ ( V i T L i β ) ∑ j N exp ⁡ ( V i T L j β ) ) L_{\text{contrastive:im2txt}} = -\frac{1}{N}\sum_i^N\log(\frac{\exp(V_i^TL_i\beta)}{\sum_j^N\exp(V_i^TL_j\beta)}) Lcontrastive:im2txt=N1iNlog(jNexp(ViTLjβ)exp(ViTLiβ))

这两个损失的总和被最小化。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/343160
推荐阅读
相关标签