AI多模态技术介绍:理解多模态大语言模型的原理

news/2024/12/23 18:19:38 标签: 人工智能, 语言模型, 自然语言处理

本文目标是解释多模态LLMs的工作原理,虽然多模态的输入可以有音频,文本,图像和视频,但这里主要讨论的还是以图文为主的多模态大语言模型

参考文章:https://magazine.sebastianraschka.com/p/understanding-multimodal-llms

作者:Sebastian Raschka - 畅销书《Python机器学习》作者)。

一个多模态大型语言模型(LLM)的示意图,该模型能够接受不同的输入模态(音频、文本、图像和视频),并以文本作为输出模态返回。

一、构建多模态LLMs的常见方法

构建多模态LLMs主要有两种方法:

  • 方法A:统一嵌入解码器架构方法;
  • 方法B:跨模态注意力架构方法。
开发MLLM的两种方法

如上图所示,统一嵌入-解码器架构利用单一的解码器模型,类似于未经修改的大型语言模型(LLM)架构,如GPT-2或Llama 3.2。在这种方法中,图像被转换成与原始文本令牌相同嵌入大小的令牌,这允许LLM在连接后一起处理文本和图像输入令牌。跨模态注意力架构采用跨注意力机制,直接在注意力层中集成图像和文本嵌入。在接下来的部分,我们将探讨这些方法在概念层面的工作原理。


二、方法A:统一嵌入解码器架构

统一嵌入解码器架构的示意图,展示了一个未经修改的解码器风格的大型语言模型(LLM),如GPT-2、Phi-3、Gemma或Llama 3.2,它接收由图像令牌和文本令牌嵌入组成的输入

在统一嵌入-解码器架构中,图像被转换成嵌入向量,类似于标准Text-only的大型语言模型(LLM)中输入文本被转换成嵌入的方式。

对于一个典型的仅处理文本的LLM,文本输入通常会被分词(例如,使用字节对编码Byte-Pair Encoding),然后通过一个嵌入层,如下图所示:


 2.1 理解图像编码器

类似于文本的分词和嵌入,图像嵌入是使用图像编码器模块(而不是分词器)生成的,如下图所示:

编码图像到图像块嵌入的过程的示意图

 上图中展示的图像编码器内部发生了什么?为了处理一张图像,我们首先将其划分成更小的块,这很像在标记化过程中将单词分解成子词。然后,这些块由预训练的视觉变换器(ViT)进行编码,如下图所示:

经典视觉变换器(ViT)设置的示意图,类似于2020年提出的“An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale”

请注意,ViTs通常用于分类任务,因此在上面的图中包含了分类头。然而,在MLLM场景我们只需要图像编码器部分。


2.2 线性投影模块的作用

前图中所示的“线性投影”由一个线性层(即全连接层)组成。这一层的目的是将被展平为向量的图像块投影到与Transformer 编码器兼容的嵌入尺寸。下面的图示展示了这种线性投影。一个被展平为256维向量的图像块,被上投影到一个768维的向量。

线性投影层的图示,该层将展平的图像块从256维投影到768维的嵌入空间

 


2.3 图像与文本的标记化对比

现在我们已经简要讨论了图像编码器(以及编码器中线性投影部分)的目的,让我们回到之前提到的文本标记化类比,并将文本和图像的标记化及嵌入并排对比查看,如下图所示:

图像标记化和嵌入(左)与文本标记化和嵌入(右)并排对比

正如您在上图中看到的,图中图像编码器之后增加了一个Projector。这个投影器通常只是另一个线性投影层,目的是将图像编码器的输出投影到与嵌入文本标记的维度相匹配的维度,如下图所示。(这个投影器有时也被称为适配器或连接器):

图像标记化与文本标记化的另一次并排比较,其中投影器的作用是匹配文本标记嵌入的维度

 现在图像块嵌入与文本标记嵌入具有相同的嵌入维度,我们可以简单地将它们连接起来作为输入到LLM,如本节开头的图所示。下面是同一图表,以便更容易参考:

将图像块标记投影到与文本标记嵌入相同的维度后,我们可以简单地将它们连接起来,作为输入到标准LLM

顺便说一下,这里讨论的图像编码器通常是预训练的视觉变换器。一个流行的选择是CLIP或OpenCLIP。然而,也有直接在块上操作的A方法版本,比如Fuyu,下图展示了这一点:

带有注释的Fuyu多模态LLM图示,该模型直接在图像块上操作,无需图像编码器。(带注释的图示来自 https://www.adept.ai/blog/fuyu-8b.)

正如上图所示,Fuyu直接将输入块传递到线性投影(或嵌入层)中,以学习自己的图像块嵌入,而不是依赖于其他模型和方法所使用的额外预训练图像编码器。这极大地简化了架构和训练设置。


三、方法B:跨模态注意力架构

我们已经讨论了通过统一嵌入解码器架构来构建多模态LLMs的方法,并理解了图像编码背后的基本概念,现在让我们来谈谈通过跨注意力实现多模态LLMs的另一种方式,如下图总结所示:

构建多模态LLMs的跨模态注意力架构方法的图示

在上图所示的跨模态注意力架构方法中,我们仍然使用之前讨论过的相同的图像编码器设置。然而,我们不是将编码后的块作为输入到LLM,而是通过跨注意力机制在多头注意力层中连接输入块。这个想法与2017年的论文《Attention Is All You Need》中提出的原始Transformer架构相关,下图中对此进行了强调:

原始Transformer架构中使用的交叉注意力机制的高级图示。(带注释的图示来自“Attention Is All You Need”论文:https://arxiv.org/abs/1706.03762.)

 请注意,上图中展示的原始Transformer最初是为语言翻译而开发的。因此,它包括一个文本编码器(图的左半部分),它接收要翻译的句子,并通过文本解码器(图的右半部分)生成翻译。在多模态LLM的上下文中,编码器是图像编码器而不是文本编码器。

跨注意力是如何工作的?让我们来看一下常规自注意力机制内部发生的事情的概念图。

常规自注意力机制的概述。(这个流程图展示了常规多头注意力模块中的一个头)

在上面的图中,x是输入,Wq是用于生成查询(Q)的权重矩阵。同样,K代表键(keys),V代表值(values)。A代表注意力分数矩阵,Z是输入(x)转换成的输出上下文向量。

相比之下,在交叉注意力中,与自注意力不同,我们有两个不同的输入源,如下图所示:

交叉注意力的图示,其中可以有两个不同的输入x1和x2

正如前面两个图示所示,在自注意力中,我们处理的是同一个输入序列。在交叉注意力中,我们混合或结合两个不同的输入序列。

在“Attention Is All You Need”论文中原始Transformer架构的情况下,两个输入x1和x2分别对应于左侧编码器模块返回的序列(x2)和右侧解码器部分正在处理的输入序列(x1)。在多模态LLM的上下文中,x2是图像编码器的输出。(注意,查询通常来自解码器,而键和值通常来自编码器。)

请注意,在交叉注意力中,两个输入序列x1和x2可以有不同的元素数量。然而,它们的嵌入维度必须匹配。如果我们设置x1 = x2,这相当于自注意力。


四、统一解码器和交叉注意力模型训练

现在我们已经讨论了两种主要的多模态设计选择,让我们简要讨论一下在模型训练期间如何处理三大组成部分,这些在下图中进行了总结。

多模态大型语言模型(LLM)中不同组件的概览。在多模态训练过程中,编号为1-3的组件可以被冻结或解除冻结

类似于传统纯文本LLMs(大型语言模型)的发展,多模态LLMs的训练也涉及两个阶段:预训练和指令微调。然而,与从头开始不同,多模态LLM训练通常以预训练的、经过指令微调的纯文本LLM作为基础模型开始。

对于图像编码器,通常使用CLIP(最近也比较流行SigLIP或者InterViT),并且在整个训练过程中通常保持不变,尽管也有一些例外情况。在预训练阶段保持LLM部分冻结也是常见的做法,只专注于训练投影器——一个线性层或一个小的多层感知器。鉴于投影器的学习容量有限,通常只包含一到两层,因此在多模态指令微调(第二阶段)期间通常解冻LLM,以允许更全面的更新。然而,请注意,在基于交叉注意力的模型(方法B)中,交叉注意力层在整个训练过程中都是解冻的。

在介绍了两种主要方法(方法A:统一嵌入解码器架构和方法B:跨模态注意力架构)之后,你可能会想知道哪种更有效。答案取决于具体的权衡。

统一嵌入解码器架构(方法A)通常更容易实现,因为它不需要对LLM架构本身进行任何修改。

跨模态注意力架构(方法B)通常被认为在计算上更高效,因为它不会用额外的图像标记超载输入上下文,而是在交叉注意力层中稍后引入它们。此外,如果保持LLM参数在训练期间冻结,这种方法还保持了原始LLM的纯文本性能。

英伟达的论文NVLM中讨论了两种结构的适用范围,得出的结论是:decoder-only(即方法A)的架构会优于Flamingo-like的cross attention(即方法B)架构,尤其是在OCR&Chart类型数据上,对于text-only generation也是更好的。而方法B这种结构会额外增加很多参数量,不看好这种方法的发展潜力,所以基于方法A的工作明显更多一些。


推荐阅读

社区简介:

《AIGCmagic星球》,五大AIGC方向正式上线!让我们在AIGC时代携手同行!限量活动中!

《三年面试五年模拟》版本更新白皮书,迎接AIGC时代

AI多模态核心架构五部曲:

AI多模态模型架构之模态编码器:图像编码、音频编码、视频编码

AI多模态模型架构之输入投影器:LP、MLP和Cross-Attention

AI多模态模型架构之LLM主干(1):ChatGLM系列

AI多模态模型架构之LLM主干(2):Qwen系列

AI多模态模型架构之LLM主干(3):Llama系列  

AI多模态模型架构之输出映射器:Output Projector  

AI多模态模型架构之模态生成器:Modality Generator

AI多模态实战教程:

AI多模态教程:从0到1搭建VisualGLM图文大模型案例

AI多模态教程:Mini-InternVL1.5多模态大模型实践指南

AI多模态教程:Qwen-VL升级版多模态大模型实践指南

AI多模态实战教程:面壁智能MiniCPM-V多模态大模型问答交互、llama.cpp模型量化和推理


http://www.niftyadmin.cn/n/5796799.html

相关文章

详解redis哨兵(高可用)

华子目录 为什么会出现redis的哨兵?redis哨兵哨兵机制能做什么?什么是主观下线和客观下线?主观下线客观下线 哨兵的三个定时监控master主节点下线后,怎么进行故障转移?leader哨兵的选举故障转移,选举新的master执行故…

实验6-2 基于二叉链表存储结构实现二叉树的基本操作

题目:计算二叉树中的叶子结点个数 (1)如果二叉树为空,则叶子结点个数为0。 (2)如果二叉树只有根节点,则叶子结点个数为1 (3)左子树叶子结点数+右子树叶子结点数 一、原代码 #include <stdio.h> #include <stdlib.h> #define TRUE 1 #define FALSE 0 #define …

数据可视化echarts学习笔记

目录&#xff0c;介绍 知识储备 一端操作&#xff0c;多端联动的效果&#xff08;开启了多个网页&#xff0c;操作一端&#xff0c;多个网页的效果会跟着改变&#xff09; cmd命令控制面板返回上一级或上上级 在当前目录打开文件&#xff1a; cd 文件名 在Windows命令提示符&am…

[文献阅读] Unsupervised Deep Embedding for Clustering Analysis (无监督的深度嵌入式聚类)

文章目录 Abstract:摘要聚类深度聚类 KL散度深度嵌入式聚类(DEC)KL散度聚类软分配&#xff08;soft assignment&#xff09;KL散度损失训练编码器的初始化聚类中心的初始化 实验评估总结 Abstract: This week I read Unsupervised Deep Embedding for Clustering Analysis .It…

HTTP协议及安全防范

由于图片解析问题&#xff0c;可以点击查看 &#x1f449;&#x1f3fb; 博客原文 HTTP&#xff08;Hypertext Transfer Protocol&#xff09;超文本传输协议是一个用于 Web 应用程序通信的应用层协议。它是一种客户端-服务器协议&#xff0c;客户端通过发送请求到服务器来获取…

Vue 单表 CRUD模板 前端

结合后端CRUD模板食用更佳 后端CRUD模板 js文件 指向了后端的方法 页面基本模板 import request from /utils/request // 查询关键词列表 export function page(param) {return request({url: /systemConfig/page,method: post,params: param}) }// 新增 export function ad…

2024年图像处理、多媒体技术与机器学习

重要信息 官网&#xff1a;www.ipmml.org 时间&#xff1a;2024年12月27-29日 地点&#xff1a;中国-大理 简介 2024年图像处理、多媒体技术与机器学习&#xff08;CIPMT 2024&#xff09;将于2024年12月27-29日于中国大理召开。将围绕图像处理与多媒体技术、机器学习等在…

RabbitMQ中的Topic模式

在现代分布式系统中&#xff0c;消息队列&#xff08;Message Queue&#xff09;是实现异步通信、解耦系统组件的重要工具。RabbitMQ 是一个广泛使用的开源消息代理&#xff0c;支持多种消息传递模式&#xff0c;其中 Topic 模式 是一种灵活且强大的模式&#xff0c;允许生产者…