多模态
多模态
视觉语言对齐、结构和幻觉。
058 · 难 · 多模态大模型(如 VLM)的核心挑战是什么?即如何实现不同模态信息(如视觉和语言)的有效对齐和融合?
来源:Hello-Agents Extra01
多模态大模型(VLM)的核心挑战在于解决 “模态鸿沟”(Modality Gap) 。视觉信息(如图像、视频)是以像素矩阵的形式存在的,密集、具体且连续;而语言信息是以离散的符号(token)序列存在的,稀疏、抽象且结构化。如何让模型跨越这两种完全不同的数据形式,实现有效的理解和推理,是VLM研究的中心问题。
这个挑战的解决方案主要包含两个关键环节:
- 对齐(Alignment):建立跨模态的语义连接
- 目标: 对齐的目标是让模型理解视觉世界中的“概念”和人类语言中的“符号”是指代的同一事物。例如,模型需要知道图片中的一只奔跑的狗的像素集合,和文本描述“a running dog”在语义上是等价的。
- 实现方式: 主流方法是表示空间对齐。通过设计一个训练任务,将图像和其对应的文本描述映射到一个共享的或可比较的向量空间中。在这个空间里,匹配的图文对的向量表示距离很近,而不匹配的图文对则距离很远。CLIP模型使用的对比学习就是实现对齐的经典范式。
- 融合(Fusion):实现跨模态信息的深度交互
- 目标: 在对齐的基础上,让两种模态的信息能够深度地交互,以完成更复杂的推理任务,而不仅仅是识别。例如,回答“图片中穿红色衣服的人在做什么?”就需要同时理解“红色衣服”(视觉属性)和“做什么”(动作识别),并将它们结合起来推理。
- 实现方式: 主流的融合方法包括:
- 连接器(Connector): 将视觉编码器提取的视觉特征,通过一个小的、可训练的模块(如MLP或Q-Former),转换为LLM能够理解的“视觉词元”(Visual Tokens),然后与文本词元拼接起来,送入LLM统一处理。LLaVA是这种方式的代表。
- 跨模态注意力(Cross-Attention): 在LLM的某些层中插入跨模态注意力模块,让文本表示(作为Query)能够“查询”视觉表示(作为Key和Value),从而在生成文本的每一步都能动态地关注到图像的不同区域。Flamingo和BLIP-2是这种方式的代表。
059 · 中 · 请解释 CLIP 模型的工作原理。它是如何通过对比学习来连接图像和文本的?
来源:Hello-Agents Extra01
CLIP(Contrastive Language-Image Pre-training)是一个通过在海量图文对数据上进行预训练,从而学会将图像和文本关联起来的 foundational model。它的核心是利用 对比学习(Contrastive Learning) 来打通视觉和语言两个模态。
工作原理如下:
- 双编码器架构(Dual-Encoder Architecture):
- 图像编码器(Image Encoder): 通常是一个标准的视觉模型,如ResNet或Vision Transformer (ViT),负责将输入的图像转换成一个高维的特征向量。
- 文本编码器(Text Encoder): 通常是一个Transformer模型,负责将输入的文本描述转换成一个同维度的高维特征向量。
共享嵌入空间(Shared Embedding Space):
模型的目标是将图像和文本的特征向量投影到一个共享的多模态嵌入空间中。在这个空间里,语义相似的图像和文本的向量应该彼此靠近。对比学习训练目标:
训练过程在一个包含N个(图像,文本)对的批次(Batch)中进行:
- 正样本(Positive Pairs): 对于批次中的任意一个图像,其对应的文本描述是唯一的正样本。反之亦然。
- 负样本(Negative Pairs): 批次中所有其他的(N-1)个文本描述都是该图像的负样本。同理,所有其他的(N-1)个图像也是该文本的负样本。
- 目标函数(InfoNCE Loss): 模型的目标是最大化正样本对(匹配的图文)特征向量之间的余弦相似度,同时最小化所有负样本对(不匹配的图文)特征向量之间的余弦相似度。
- 通过这种方式,模型被“逼迫”去学习图像内容和文本描述之间的内在联系。例如,当看到一张猫的图片和文本“a photo of a cat”时,模型会提高它们的相似度;而当看到猫的图片和文本“a photo of a dog”时,则会降低它们的相似度。
经过大规模数据(4亿图文对)的训练,CLIP的编码器能够生成高度泛化的、语义丰富的特征,使其在零样本(zero-shot)图像分类等任务上表现出色,因为它能理解自然语言描述的视觉概念。
060 · 中 · 像 LLaVA 或 MiniGPT-4 这样的模型是如何将一个预训练好的视觉编码器(Vision Encoder)和一个大语言模型(LLM)连接起来的?请描述其关键的架构设计。
来源:Hello-Agents Extra01
LLaVA和MiniGPT-4这类模型开创了一种高效构建强大VLM的范式,其核心思想是复用(leverage) 已经非常强大的预训练单模态模型,并通过一个轻量级的“连接器”将它们桥接起来。
其关键架构设计通常包含三个核心组件:
- 冻结的视觉编码器(Frozen Vision Encoder):
- 通常采用一个已经预训练好的、强大的视觉模型,最常见的是CLIP的Vision Transformer (ViT)。
- 在训练VLM时,这个视觉编码器大部分时间是冻结的,不更新其参数。这样做的好处是保留了其强大的、泛化的视觉特征提取能力,并极大地节省了计算资源。
- 它的作用是将输入的图像转换成一系列的视觉特征向量(Image Patches' Embeddings)。
- 连接器模块(Connector Module):
- 这是整个架构的关键“胶水层”。它的作用是将来自视觉编码器的视觉特征,转换成大语言模型(LLM)能够理解的输入格式,即与文本词元(word embeddings)在同一向量空间中的“视觉词元”(visual tokens)。
- 在LLaVA中,这个连接器是一个简单的线性投影层(Linear Projection Layer)。
- 在MiniGPT-4或BLIP-2中,这个连接器是一个更复杂的Q-Former (Querying Transformer),它通过一组可学习的查询向量来从视觉特征中“浓缩”出最相关的信息。
- 这个模块是整个模型中主要需要训练的部分。
- 冻结的大语言模型(Frozen Large Language Model):
- 使用一个现成的、强大的预训练LLM,如Llama、Vicuna等。
- LLM在训练中也通常是冻结的(或使用LoRA等参数高效微调方法)。这保留了LLM强大的语言生成、推理和指令遵循能力。
- LLM接收拼接后的序列(视觉词元 + 文本词元),并像处理纯文本一样,自回归地生成回答。
训练过程通常分为两阶段:
- 第一阶段(视觉-语言对齐预训练): 使用大量的图像-标题数据,只训练连接器模块,目的是教会连接器如何将视觉特征有效地映射为LLM能理解的表示。
- 第二阶段(视觉指令微调): 使用高质量、多样化的多模态指令跟随数据(例如,图像+问题+答案),对整个模型(主要是连接器和LLM的LoRA部分)进行微调,教会模型如何根据指令进行对话、描述和推理。
061 · 中 · 什么是视觉指令微调?为什么说它是让 VLM 具备良好对话和指令遵循能力的关键步骤?
来源:Hello-Agents Extra01
视觉指令微调(Visual Instruction Tuning, VIT) 是一种训练方法,它使用一个由大量“指令-响应”对组成的数据集来微调一个预训练好的VLM。与传统任务(如VQA、图像描述)的数据集不同,指令微调数据集的格式更加多样和自由,旨在模拟人类与智能助手的交互方式。
每条数据通常包含三个部分:
- 视觉输入(Vision Input): 一张图片或视频。
- 指令(Instruction): 一个用自然语言提出的、与视觉输入相关的任务或问题。例如,“请详细描述这幅画的风格”,“图中最高的建筑物是什么?”,“根据这张图写一个三句话的故事”。
- 响应(Response): 针对该指令的理想回答。
为什么是关键步骤?
视觉指令微调是连接 VLM 基础能力与应用能力的桥梁,其关键性体现在:
- 泛化到未知任务: 传统的VQA或描述模型只能执行它们被训练过的特定任务。而通过在成千上万种不同指令上进行微调,模型学会了理解指令意图的泛化能力。它不再是死板地回答“what is this?”,而是能理解“describe”、“compare”、“explain why”等各种指令背后的复杂要求。
- 激发LLM的潜力: 经过对齐预训练后,VLM只是学会了将视觉信息“翻译”给LLM。而指令微调则真正教会了LLM如何使用这些视觉信息来完成推理、遵循复杂指令和进行多轮对话。它将LLM固有的强大能力(如常识推理、代码生成、创意写作)与视觉输入结合了起来。
- 对齐人类交互模式: 指令微调使得模型的输出格式和交互方式更符合人类的期望,使其表现得更像一个真正的“多模态对话助手”,而不是一个任务单一的工具。这是模型从“可用”到“好用”的决定性一步。
062 · 难 · 在处理视频等多模态数据时,相比于静态图片,VLM 需要额外解决哪些问题?(例如,如何表征时序信息?)
来源:Hello-Agents Extra01
处理视频数据引入了时间维度,这带来了相比静态图片额外且独特的挑战:
- 时序信息表征(Temporal Information Representation):
- 挑战: 视频的核心在于动态变化、动作和事件的发生顺序。模型必须能够理解帧与帧之间的时序关系,例如物体的运动轨迹、动作的连续性、事件的因果关系等。
- 解决方案:
- 帧采样+融合: 从视频中抽取部分关键帧,分别提取它们的特征,然后通过一个时间融合模块(如时间注意力、3D卷积或简单的拼接池化)来聚合时序信息。
- 时空建模: 使用能够直接处理时空数据的网络结构,如3D CNN或Video Transformer (ViViT),在提取特征的阶段就同时考虑空间和时间维度。
- 巨大的计算和存储开销:
- 挑战: 视频本质上是图像序列,一个短视频可能包含数百甚至数千帧,数据量远超单张图片。这导致了巨大的计算(模型前向传播)和显存(存储特征)开销。
- 解决方案:
- 稀疏采样: 采用智能的帧采样策略,只处理变化显著或具有代表性的帧。
- 特征压缩: 对逐帧提取的特征进行压缩或池化,减少送入后续模型的Token数量。
- 长距离依赖建模:
- 挑战: 视频中的关键因果关系可能跨越很长的时间窗口(例如,一个视频开头的铺垫可能要到结尾才揭示其意义)。模型需要具备捕捉这种长距离时间依赖的能力。
- 解决方案: 采用类似Transformer的架构来建模帧之间的关系,利用其全局感受野的优势。
- 多模态融合的复杂性增加:
- 挑战: 视频通常还伴随着音频(语音、背景音)和字幕等模态。VLM需要解决将视觉时序信息、音频流信息和文本信息同步对齐和融合的难题。
- 解决方案: 设计更复杂的对齐和融合模块,能够处理多个异步或同步的时间序列数据。
063 · 中 · 请解释Grounding在 VLM 领域中的含义。我们如何评估一个 VLM 是否能将文本描述准确地对应到图片中的特定区域?
来源:Hello-Agents Extra01
在VLM领域,Grounding(定位或指代) 指的是将语言中的某个特定概念或短语(a phrase or a concept)与图像中的特定像素区域(a specific pixel region) 建立准确对应关系的能力。简单来说,就是模型不仅知道图片里“有什么”,还要知道“在哪里”。
例如,对于指令“请告诉我图片中那只戴着红色项圈的黑猫”,一个具备Grounding能力的模型,其内部注意力机制应该能够准确地聚焦在图片中黑猫所在的区域,而不是图片中的其他物体或背景。
如何评估Grounding能力?
评估Grounding能力通常需要带有位置标注的数据集(如RefCOCO, Visual Genome),评估方法主要有:
- 指代短语定位(Referring Expression Grounding):
- 任务: 给定一张图片和一个描述图片中某个物体的短语(如“the woman in the red dress”),模型需要输出该物体的位置,通常是一个边界框(Bounding Box)。
- 评估指标: 将模型预测的边界框与人工标注的真实边界框(Ground Truth BBox)进行比较,计算它们的交并比(Intersection over Union, IoU)。
$$\text{IoU} = \frac{\text{Area of Overlap}}{\text{Area of Union}}$$
通常会设定一个IoU阈值(如0.5或0.75),如果模型预测的IoU超过该阈值,则认为定位正确。最后计算准确率(Accuracy@IoU>threshold)。
- 视觉Grounding对话:
- 任务: 在对话中,当模型生成引用了图片中某个物体的文本时,同时输出该物体的位置。
- 评估: 这类评估更复杂,可能需要人工判断模型生成的文本和其对应的边界框是否一致且准确。一些新的基准(如Shikra, GPT4-ROI)正在探索这类评估方式。
- 注意力图可视化(定性分析):
- 方法: 虽然不是一个定量的指标,但通过可视化模型在生成与某个物体相关的文本时,其内部注意力机制的激活区域,可以直观地判断模型是否“看对”了地方。如果生成“猫”这个词时,注意力主要集中在猫的区域,说明其具备一定的隐式Grounding能力。
064 · 中 · 请对比至少两种不同的 VLM 架构范式(如共享编码器 vs. 跨模态注意力融合),并分析它们的优劣。
来源:Hello-Agents Extra01
当前主流的VLM架构范式,根据视觉和语言信息融合方式的不同,主要可以分为两大类:基于连接器的架构 和 基于跨模态注意力的架构。
| 架构范式 | 基于连接器(Connector-based) | 基于跨模态注意力(Cross-Attention-based) |
|---|---|---|
| 代表模型 | LLaVA, MiniGPT-4 | Flamingo, BLIP-2 |
| 核心思想 | 前期对齐,后期融合。将视觉特征通过一个轻量级模块“翻译”成LLM能理解的“视觉词元”,然后与文本词元拼接,让LLM统一处理。 | 边生成边融合。在LLM内部插入跨模态注意力层,允许文本特征在生成的每一步都动态地“查询”和“参考”视觉特征。 |
| 工作流程 | 1. 视觉编码器提特征 2. 连接器将视觉特征转为定长的Visual Tokens 3. [Visual Tokens] + [Text Tokens] 送入LLM | 1. 视觉编码器提特征 2. LLM在生成文本时,其内部的Query会与视觉特征的Key/Value进行Cross-Attention计算,动态注入视觉信息。 |
| 优势 | 1. 训练和推理效率高: 只需训练一个轻量级的连接器,且可以复用强大的预训练视觉和语言模型,成本较低。 2. 架构简洁优雅: 实现简单,易于扩展和复现。 3. 性能强大: 在许多基准上证明了其有效性,尤其是在视觉指令跟随方面。 | 1. 深度融合: 视觉和语言信息的交互发生在LLM的每一层或多层,融合得更充分、更深入。 2. 少样本学习能力强: Flamingo证明了这种架构在上下文少样本学习(in-context few-shot learning)上表现极其出色。 3. 对视觉细节的动态捕捉: 在生成长文本时,可以根据需要动态地关注图像的不同部分。 |
| 劣势 | 1. 信息瓶颈: 视觉信息被连接器压缩成固定数量的“视觉词元”,可能在转换过程中丢失部分细节,存在信息瓶颈。 2. 融合深度较浅: 视觉和语言的融合完全依赖于LLM自身的自注意力机制,不如显式的跨模态注意力来得直接。 | 1. 架构复杂,训练成本高: 需要修改LLM的内部结构,并进行大规模的训练,计算开销巨大。 2. 推理速度较慢: 额外的跨模态注意力计算增加了推理时的延迟。 |
总结: 基于连接器的架构是当前实现高性价比、高性能VLM的主流方案,追求效率和简洁。而基于跨模态注意力的架构则代表了追求极致性能和深度融合的方向,但成本更高。
065 · 难 · 在 VLM 的应用中,如何处理高分辨率的输入图像?这会带来哪些计算和模型设计上的挑战?
来源:Hello-Agents Extra01
处理高分辨率图像是当前VLM领域的一个重要挑战,因为标准的视觉编码器(如ViT)通常被设计用于处理低分辨率的固定尺寸输入(例如224x224或336x336)。
带来的挑战:
- 计算量爆炸: Vision Transformer (ViT) 将图像分割成固定大小的图块(Patches)。输入图像的分辨率如果从224x224增加到448x448,边长变为2倍,图块数量会变为4倍。而自注意力机制的计算复杂度与输入序列长度(即图块数量)的平方成正比,这意味着计算量会变为原来的16倍,这是不可接受的。
- 位置编码失效: 预训练好的ViT的位置编码是针对特定数量的图块进行学习或设计的。输入更高分辨率的图像会导致图块数量增加,超出现有的位置编码范围,导致模型无法理解图块的相对位置。
- 显存占用剧增: 更多的图块意味着更长的序列,在Transformer的每一层都需要存储巨大的激活值,导致显存占用急剧增加。
处理方法:
目前主要有以下几种策略来处理高分辨率图像:
- 切片-编码-拼接(Slicing-based approach):
- 方法: 将高分辨率图像切割成多个重叠或不重叠的低分辨率子图(例如,切成4个或6个224x224的图块)。将每个子图独立地送入标准的视觉编码器提取特征,最后将所有子图的特征拼接或融合起来,作为LLM的视觉输入。
- 代表模型: LLaVA-1.5 的部分实现思路。
- 优点: 简单有效,可以直接利用预训练好的低分辨率模型。
- 缺点: 破坏了图像的全局结构,模型难以理解跨越不同切片的物体。
- 可变分辨率图块(Variable-size Patches):
- 方法: 保持图块数量不变,但根据输入分辨率动态调整每个图块的大小。例如,对于高分辨率图像,使用更大的图块尺寸。
- 优点: 保持了固定的序列长度,避免了计算量爆炸。
- 缺点: 大图块会丢失局部细节信息,需要对模型进行相应的预训练或微调。
- 多尺度特征融合(Multi-scale Feature Fusion):
- 方法: 设计一个可以处理高分辨率图像的视觉编码器(如Swin Transformer),并从其不同层级提取多尺度的特征图。然后通过一个特征金字塔网络(FPN)或类似结构将这些特征融合,再送入一个适配器模块(Adapter)转换成固定长度的序列给LLM。
- 代表模型: Fuyu-8B, Monkey。
- 优点: 能够在保留细节的同时兼顾全局信息。
- 缺点: 需要更复杂的视觉主干网络和适配器设计。
066 · 中 · VLM 在生成内容时,同样会遇到“幻觉”(Hallucination)问题,但它的表现形式和纯文本 LLM 有何不同?请举例说明。
来源:Hello-Agents Extra01
VLM和纯文本LLM都会产生“幻觉”,即生成与事实不符或无中生有的内容。但VLM的幻觉是基于视觉输入的,其表现形式与纯文本LLM有显著不同,主要体现在将错误的、不存在的视觉事实强行“植入”到描述中。
VLM幻觉的主要表现形式:
- 物体幻觉(Object Hallucination):
- 描述: 这是最常见的幻觉形式,即模型描述了图像中完全不存在的物体。
- 与LLM区别: 纯文本LLM的物体幻觉是凭空捏造(如编造一个不存在的书名),而VLM的物体幻觉是错误地“看”到了图像中没有的东西。
- 举例:
- 输入图像: 一只猫坐在沙发上。
- VLM幻觉输出: “一只猫和一只小狗正舒适地躺在沙发上。”(图像中并没有狗)
- 属性幻觉(Attribute Hallucination):
- 描述: 模型正确识别了图像中的物体,但错误地描述了该物体的属性,如颜色、形状、大小、数量等。
- 与LLM区别: 纯文本LLM的属性幻觉是记错了事实(如“法国的首都是柏林”),而VLM的属性幻觉是看错了图像细节。
- 举例:
- 输入图像: 一个穿着蓝色衬衫的男人。
- VLM幻觉输出: “一个穿着红色衬衫的男人站在窗前。”(颜色错误)
- 输入图像: 桌子上有两个苹果。
- VLM幻觉输出: “桌上放着三个苹果。”(数量错误)
- 关系幻觉(Relationship Hallucination):
- 描述: 模型正确识别了多个物体,但错误地描述了它们之间的空间位置或交互关系。
- 与LLM区别: 纯文本LLM的关系幻觉是混淆了概念关系(如“牛顿发现了相对论”),而VLM的关系幻觉是混淆了物理空间关系。
- 举例:
- 输入图像: 一本书放在一个杯子旁边。
- VLM幻觉输出: “一本书放在一个杯子里面。”(空间关系错误)
- 输入图像: 一个女孩在追逐一个皮球。
- VLM幻觉输出: “一个皮球在追逐一个女孩。”(动作关系错误)
067 · 难 · 除了图片描述和视觉问答(VQA),你还能列举出 VLM 的哪些前沿或具有潜力的应用方向?
来源:Hello-Agents Extra01
除了基础的图片描述和视觉问答,VLM正在向更复杂、更具交互性的前沿方向发展,展现出巨大的应用潜力:
- 多模态对话系统与个人助手:
- 用户可以发送图片、截图,并围绕这些视觉信息与助手进行多轮、深入的对话。例如,“帮我看看这张冰箱里的图片,晚上能做什么菜?”“如果用鸡蛋和西红柿,具体步骤是什么?”
- 视觉定位与指令执行(Visual Grounding & Grounded Agents):
- VLM不仅能理解图像内容,还能在图像上进行定位和操作。这可以用于:
- UI自动化: 指挥VLM“点击那个写着‘提交’的蓝色按钮”,VLM能理解指令并定位按钮位置。
- 具身智能(Embodied AI): 作为机器人的“大脑”,VLM可以理解摄像头捕捉的实时画面,并根据指令(如“把桌上的红苹果拿给我”)规划并执行动作。
- 专业领域的视觉分析助手:
- 医疗影像分析: 辅助医生解读X光片、CT扫描图,识别异常并生成初步报告。
- 工业质检: 在生产线上实时分析产品图像,检测瑕疵和缺陷。
- 保险定损: 上传车辆事故照片,VLM可以自动评估损伤程度和维修方案。
- 内容创作与代码生成:
- 所见即所得的网页/App生成: 用户上传一张设计草图或UI截图,VLM可以直接生成实现该界面的前端代码(HTML/CSS/JavaScript)。
- 图表和数据可视化解读: VLM可以“阅读”复杂的图表(如流程图、柱状图、K线图),提取关键信息,并生成数据摘要或代码进行复现。
- 教育与无障碍辅助:
- 实时场景描述: 为视障人士实时描述周围的环境、识别物体、阅读文字。
- 交互式学习: 拍下教科书上的一张图或一道题,VLM可以提供详细的讲解和相关的知识点。
068 · 中 · 有没有做过VLM相关方面的微调?什么模型?
来源:Hello-Agents Extra01
这是经验题。原文给的范例是用 LLaVA-1.5 做工业缺陷检测,面试讲清选型和微调点即可。
选型是 LLaVA-1.5 7B:ViT + 线性投影 + Vicuna,通用视觉对话已经够,要补的是领域说法。数据是小规模视觉指令,一条里有产品图、模仿质检员的多种问法、写明缺陷类型和位置的标准答案。只对 LLM 做 LoRA,CLIP ViT 和 MLP 连接器冻结。评估以人工看专业性、准确性和定位为主,文本相似度只是辅助。原文的结论是:几百条高质量领域指令就够把模型拉到这个任务上,贵的是标注。