分享丨万字长文总结多模态大模型最新进展(Modality Bridging篇)

多模态大型语言模型(MLLM)最近已成为一个新兴的研究热点,它将强大的大型语言模型(LLMs)作为大脑来执行多模态任务。MLLM 的惊人新能力,如基于图像撰写故事和无 OCR 的数学推理,在传统方法中很少见,这表明了通向通用人工智能的潜在路径。

通常人们会在 pair 数据上进行大规模(相对于 instruction tuning)的预训练,以促进不同模态之间的对齐。对齐数据集通常是图像文本对或自动语音识别(ASR)数据集,它们都包含文本。

更具体地说,图像文本对以自然语言句子的形式描述图像,而 ASR 数据集包含语音的转录。对齐预训练的常见方法是保持预训练模块(例如视觉编码器和 LLMs)冻结,并训练一个可学习的接口,本文调研了到近期位置不同的接口设计以及学习方法相关的文章。

Flamingo

论文标题:

Flamingo: a Visual Language Model for Few-Shot Learning

论文链接:

https://arxiv.org/abs/2204.14198

总的来说,首先,Perceiver Resampler 接收来自视觉编码器的时空特征(从图像或视频获取),并输出固定数量的视觉标记。其次,这些视觉标记用于通过新初始化的交叉注意力层对冻结的语言模型进行条件化,这些层被插入到预训练的语言模型层之间。这些新层为语言模型提供了一种表达方式,以便将视觉信息纳入到下一个标记预测任务中

1.1 Visual processing and the Perceiver Resampler

视觉编码器:是一个预训练并冻结的 Normalizer-Free ResNet(NFNet),使用 Radford 等人提出的 two-term contrastive loss,在图像和文本对数据集上对视觉编码器进行对比目标的预训练。使用最终阶段的输出,即一个二维空间网格的特征,将其压平为一个一维序列。

对于视频输入,帧以 1 FPS 进行采样并独立编码,以获得一个三维时空特征网格,然后将学习到的时间嵌入添加到其中。特征然后被压平为一维,然后输入到 Perceiver Resampler 中。

▲ Perceiver Resampler 模块将由 Vision Encoder 输出的可变大小的时空视觉特征网格映射到固定数量的输出标记(图中为五个),与输入图像分辨率或输入视频帧数无关。这个 transformer 具有一组学习到的潜在向量作为查询,而键和值则是由时空视觉特征与学习到的潜在向量的连接组成。

Perceiver Resampler:从不同大小的大型特征图到少量视觉标记。这个模块将视觉编码器连接到冻结的语言模型,如上图所示。它以视觉编码器中的图像或视频特征的可变数量作为输入,并产生固定数量的视觉输出(64 个),从而降低了视觉-文本交叉注意力的计算复杂度。

类似于 Perceiver 和 DETR,本文学习了预定义数量的潜在输入查询,这些查询被输入到一个 Transformer 中,并对视觉特征进行交叉关注。消融研究中展示了使用这样一个视觉-语言重采样模块优于一个普通的 Transformer 和一个 MLP。

1.2 GATED XATTN-DENSE details

上图提供了一个 GATED XATTN-DENSE 块的示意图,以及它与一个冻结的 LM 块的连接方式,同时附上了伪代码。下图绘制了 Flamingo-3B 模型的 24 个 LM 层在训练过程中(从 0% 到 100%)不同层中 tanh 门控值的绝对值的演变。冻结的 LM 堆栈的所有层似乎都利用了视觉信息,因为 tanh 门控的绝对值从其 0 初始化中迅速增长。

我们还注意到,绝对值似乎随着深度增加而增加。然而,从这个观察中很难得出强有力的结论:门控之前的激活的规模也可能随着深度变化。未来的工作需要更好地理解这些添加层对优化动态和模型本身的影响。

1.3 Multi-visual input support

▲ 首先通过在文本中的视觉数据位置插入 image 标签以及特殊标记 BOS 表示“序列开始”或 EOC 表示“块结束”)来处理文本。图像由 Vision Encoder 和 Perceiver Resampler 独立处理,以提取视觉标记。在给定的文本标记处,模型仅与最后一个前导图像/视频对应的视觉标记进行交叉关注。𝜑 指示文本标记可以关注的图像/视频,或者在没有前导图像/视频时为 0

上图说明了本文使用的 mask 方法,以限制某个文本标记看到的视觉标记数量。我们还对图像/视频和文本的交错序列的符号化进行了规范化。交错的视觉数据和文本序列。我们考虑交错的图像/视频和文本示例:每个示例包含一系列文本 𝑦,一系列图像/视频 𝑥,以及图像在文本中的位置序列。

基于视觉数据的位置,我们定义一个函数 𝜑 : [1, 𝐿] ↦ → [0, 𝑁 ],它为每个文本位置分配最后一个出现在该位置之前的图像/视频的索引(或者如果该位置之前没有视觉数据,则为 0)。函数 𝜑 定义了我们考虑用于预测的标记 的可用视觉输入:前面的标记 .

1.4 训练细节

1. 训练数据集由不同格式的训练数据集混合而成。去除交错的图像文本数据集 M3W 导致性能下降超过 17%,而去除传统的配对图像文本对也会导致性能下降(下降 9.8%),这表明需要不同类型的数据集。

2. 冻结 LM 组件可以防止灾难性遗忘。如果从头开始训练,我们观察到性能大幅下降了-12.9%。有趣的是,微调我们预训练的 LM 也导致了性能下降了-8.0%。

3. 数据集加权。M3W、ALIGN、LTIP 和 VTP,其权重分别为 1.0、0.2、0.2 和 0.03。这些权重是在小模型规模下经验性地获得的,并且在之后保持不变。

BLIP-2

论文标题:

BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models

论文链接:

https://arxiv.org/abs/2301.12597

▲ BLIP-2 框架概述。我们通过一个两阶段策略预训练轻量级的查询 Transformer,以弥合模态差距。第一阶段从冻结的图像编码器中引导视觉-语言表示学习。第二阶段从冻结的 LLM 中引导视觉到语言的生成学习,这使得零样本指导的图像到文本生成成为可能。

LLM 本质上是个语言模型,自然无法直接接受其他模态的信息。所以如何把各个模态的信息,统一到 LLM 能理解的特征空间,就是第一步要解决的问题。为此,作者提出了 Q-Former。

▲(左)Q-Former 和 BLIP-2 的第一阶段视觉-语言表示学习目标的模型架构。我们共同优化三个目标,这些目标强制查询(一组可学习的嵌入)提取与文本最相关的视觉表示。(右)每个目标的自注意力屏蔽策略,以控制查询-文本交互。

Learned Query 的引入在这里至关重要。可以看到这些 Query 通过 Cross-Attention 与图像的特征交互,通过 Self-Attention 与文本的特征交互。这样做的好处有两个:

1. 这些 Query 是基于两种模态信息得到的;

2. 无论多大的视觉 Backbone,最后都是 Query 长度的特征输出,大大降低了计算量。

比如在实际实验中,ViT-L/14 的模型的输出的特征是 257x1024 的大小,最后也是 32x768 的 Query 特征。针对 Q-Former 的三个训练任务分别是 Image-Text Contrastive Learning(ITC),Image-grounded Text Generation(ITG),Image-Text Matching(ITM)。

第一阶段,对于模型的训练,就是由以上三个任务组成,通过这几个任务,实现了对于特征的提取与融合。但现在模型还没见过 LLM。我们现在用传感器完成了数据的提取与融合,下一步,我们得把数据转换成处理器能识别的格式。

▲ BLIP-2 的第二阶段视觉到语言生成预训练,从冻结的大型语言模型(LLM)中引导。(顶部)引导基于解码器的 LLM(例如 OPT)。(底部)引导基于编码器-解码器的 LLM(例如 FlanT5)。全连接层从 Q-Former 的输出维度调整到所选 LLM 的输入维度。

通过第一阶段的训练,Query 已经浓缩了图片的精华,现在要做的,就是把 Query 变成 LLM 认识的样子。这里作者针对两类不同 LLM 设计了不同的任务:

Decoder 类型的 LLM(如 OPT):以 Query 做输入,文本做目标;Encoder-Decoder 类型的 LLM(如 FlanT5):以 Query 和一句话的前半段做输入,以后半段做目标;

为了适合各模型不同的 Embedding 维度,作者引入了一个 FC 层做维度变换。

训练细节

作为图文预训练的工作,工程问题往往是关键。BLIP2 的训练过程主要由以下几个值得关注的点:

  1. 训练数据方面:包含常见的 COCO,VG,SBU,CC3M,CC12M 以及 115M的LAION400M中的图片。采用了BLIP中的CapFilt方法来 Bootstrapping 训练数据。

  2. CV 模型:选择了 CLIP 的 ViT-L/14 和 ViT-G/14,特别的是,作者采用倒数第二层的特征作为输出。

  3. 训练时,CV 模型和 LLM 都是冻结的状态,并且参数都转为了 FP16。这使得模型的计算量大幅度降低。主要训练的基于 BERT-base 初始化的 Q-Former 只有 188M 的参数量。

InstructBLIP

论文标题:

InstructBLIP: Towards General-purpose Vision-Language Models with Instruction Tuning

论文链接:

https://arxiv.org/abs/2305.06500

▲ InstructBLIP 的模型架构。Q-Former 从冻结的图像编码器的输出嵌入中提取了指示感知的视觉特征,并将这些视觉特征作为软提示输入馈送给冻结的 LLM。我们使用语言建模损失对模型进行指令调整,以生成响应。

视觉编码器提取输入图片的特征,并喂入 Q-Former 中。此外,Q-Former 的输入还包括可学习的 Queries(BLIP-2 的做法)和 Instruction。Q-Former 的内部结构黄色部分所示,其中可学习的 Queries 通过 Self-Attention 和 Instruction 交互,可学习的 Queries 通过 Cross-Attention 和输入图片的特征交互,鼓励提取与任务相关的图像特征。

Q-Former 的输出通过一个 FC 层送入 LLM,Q-Former 的预训练过程遵循 BLIP-2 的两步:1)不用 LLM,固定视觉编码器的参数预训练 Q-Former 的参数,训练目标是视觉语言建模。2)固定 LLM 的参数,训练 Q-Former 的参数,训练目标是文本生成。

在推理的时候,对于大部分数据集,如 image captioning,open-ended VQA 等,InstructBLIP 可以直接使用 LLM 生成的文本作为输出;对于 classification 和 multi-choice VQA 这样的任务,InstructBLIP 遵循 ALBEF 的做法生成固定的几种答案,根据概率选择最后的结果作为输出。

这种做法的数据集包括有 ScienceQA、IconQA、A-OKVQA(多项选择)、HatefulMemes、Visual Dialog、MSVD 和 MSRVTT 数据集。

Tricks

数据重采样由于训练数据集数量太大,而且每个数据集的大小存在显着差异,均匀混合它们可能会导致模型过拟合较小的数据集,并欠拟合更大的数据集。因此,作者改了一下采样数据的概率,从某个数据集里面采样数据的概率是 ,其中 是单个数据集的大小。

所有资料 ⚡️ ,朋友们如果有需要全套 《LLM大模型入门+进阶学习资源包》,扫码获取~

👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享

### AI Agent 技术原理 AI Agent 的核心技术在于其具备感知环境、决策制定和执行操作的能力。这种能力来源于多个关键技术模块的协同工作,主要包括以下几个方面: #### 1. **感知与输入** AI Agent 需要通过传感器或其他形式的数据采集设备来感知外部世界。这可以包括摄像头捕捉视觉信息、麦克风接收音频信号或者网络接口获取数化数据[^2]。 #### 2. **状态表示与建模** 为了有效地处理来自外界的信息,Agent 必须构建内部的状态模型。这一过程通常涉及将原始感官数据转化为结构化特征向量或更高层次的概念描述。现代方法常依赖于深度神经网络来进行自动化的特征提取和抽象[^4]。 #### 3. **规划与推理** 基于当前所处的状态以及既定的目标,AI Agent 使用各种算法进行路径寻找或是策略推导。强化学习便是其中一种重要手段,在未知环境中探索最优行为序列的同时不断优化奖励函数下的累积收益[^1]。 #### 4. **行动控制** 最终决定做出后,还需要有机制将其转换成实际物理世界的动作指令或者是虚拟空间内的命令发送出去。对于机械臂来说可能是电机驱动参数调整;而对于软件型Agents,则更多表现为API调用或者其他形式的服务请求发起[^3]。 --- ### AI Agent 应用场景分析 随着技术进步,AI Agents 已经渗透到我们生活的方方面面,并展现出强大的实用价值: #### 自动驾驶车辆 利用复杂的传感融合技术和实时路况判断逻辑,使得无人驾驶成为可能。这类系统不仅需要精确识别周围物体位置关系还要预测其他交通参与者未来动态趋势以便安全高效通行[^3]. ```python def autonomous_driving(perception_data, traffic_rules): state = process_perception(perception_data) action_plan = plan_actions(state, traffic_rules) execute_commands(action_plan) def process_perception(data): # Example of feature extraction using deep learning models. model_output = neural_network_forward_pass(data) return interpret_model_results(model_output) ``` #### 游戏娱乐行业 无论是单机还是在线多人游戏中都存在大量NPC角色扮演者,他们依据预设剧本加上随机应变技巧给予玩家沉浸式体验感。同时电竞训练营也采用类似的思路培养顶尖选手对抗水平[^2]. #### 客服支持平台 借助自然语言理解和生成技术,智能客服能够快速响应客户咨询并提供解决方案减少人工成本提高效率。例如当收到订单查询需求时会自动检索数据库返回相应结果甚至主动推荐关联商品促进销售增长. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值