论文:
https://dl.acm.org/doi/10.1145/3664647.3681712
引言
在探讨多模态情感任务时,我们经常关注文本和图像之间的交互,以及它们的源-目标关系。这些关系可能是显性的特征,也可能是深藏其中的隐含联系,而它们共同作用,构成信息的完整意义。然而,在不同的多模态任务中,比如反讽、仇恨检测或隐喻理解,这些源和目标之间的关系往往各不相同,需要我们进行明确的区分。例如,隐喻的源**-目标关系涉及概念上的映射,而反讽则更多依赖于语境和情感的反差,仇恨meme则需要结合视觉与文本信息来捕捉其隐含的攻击性。**因此,理解这些任务中的源-目标关系,对于多模态模型的深度理解至关重要。
这引发了一个问题:模型到底能在多大程度上理解像幽默或隐喻这样复杂的多模态信息?这种理解不仅需要对表层内容的感知,更需要对隐含意图的捕捉和推理。现有的模型在捕捉这些复杂的情感和意图时,往往会面临很多挑战。以下图中的经典“温水煮青蛙”隐喻为例,通过幽默的表达方式,作者传达了一个既微妙又深刻的主题——许多人虽然意识到环境在悄然恶化,但却选择无动于衷,最终导致不可挽回的局面。这种复杂的情感和隐喻是当前多模态大语言模型(MLLM)理解中面临的一大挑战。模型不仅要识别文本与图像的表面联系,还要深入理解其多层次的含义。那么,这些挑战的根源究竟是什么?
图1:多模态隐喻示例,为温水煮青蛙的例子
如果能够对多模态模型逐层解码,是否能揭示它们在理解这些丰富且微妙的交互过程中是如何逐步构建意义的?通过逐层解码,我们或许能够找到模型在理解过程中的盲点,也能够更清楚地了解它们在哪些方面还存在局限。这种逐层解码的方式,可能会为我们提供一种独特的视角,帮助我们更好地理解模型的局限性和改进的方向。
总结来说,多模态信息的理解远不止表面的感知,它要求模型具备对深层次关系的推理能力。如果能对模型的理解过程进行更细致的剖析,便有机会提升它们在复杂场景下的表现能力,使它们真正具备处理隐喻、幽默等深层信息的智能。
Layer–by–Layer 逐层解码
研究的出发点是将CLIP模型视为两个并行的模块:CLIP-ViT负责处理视觉信息,CLIP-Text负责处理文本信息。前人的研究已经证明,CLIP-ViT中的某些注意力头可以借助CLIP-Text聚集表示,从而对特定的图像或形状产生响应。在此基础上,本文更进一步,提出了一个设想:在CLIP-ViT之后接入大型语言模型(LLMs),是否就能洞察ViT每一层到底在关注什么?基于此想法,我们进行了若干尝试,尝试理解图像是如何逐层、逐头地被处理的,并将这些隐藏状态转化为人类容易理解的语言表达。为实现这一目标,我们使用了Instruct-Blip作为基础模型,这是一种多模态语言模型,包含一个40层的图像编码器(EVA-CLIP-ViT)和一个大模型作为文本解码器。
如图2图片所示,我们可以通过分析数据流、热力图和解码后的文本,观察到ViT如何逐层理解这张图片。具体描述为:
- Lower layers: The Texture Tailors 纹理裁缝
关注图像的局部纹理特征,如滑雪板的边缘、沙丘的纹理等。
对背景进行初步的识别和分割。
- Middle layers: The Concept Weavers 概念编织者
在局部特征的基础上,开始捕捉更高层次的视觉概念。
优化并细化物体的轮廓和细节,如滑雪者的姿态、滑雪板的形状等。
- Upper layers: The Semantic Sculptors 语义雕刻家
在掌握局部特征和物体概念后,进一步提炼语义信息。
从整体上理解图像的内容,如将滑雪者与背景山景关联,揭示出“滑雪”这一语义主题。
图2:理解图像是如何逐层的,将这些隐藏状态转化为人类容易理解的语言表达
更有趣的是,研究发现注意力向量的L2范数(长度视为信息量的度量)在网络的不同层呈现出一种抛物线型的变化趋势:先上升,达到峰值后又下降。这似乎暗示着视觉理解在中层达到了一个饱和状态,之后部分非核心信息被舍弃,最终提炼出高度凝练的语义表征。这给我们带来了一些启示,即每一个注意力头是否也能通过人类可以理解的自然语言来观察呢?
Head–by–Head逐头解码
如果把每一个transform block拆开来看,组成部分可以分为MLP、MSA(多头自注意力),还有残差连接。我们认为应该更加关注于MSA所带来的信息,因此我们尝试逐头进行解码。示例如图3所示,图中是一个“类似龙”的动物,在第26层时已经识别出其一些属性。而在第27层中,不同的注意力头表现出了不同的理解。例如,layer27-head1进行了细节的补充,layer27-head5认为这是一只蜥蜴,而layer27-head9则认为这是一种奇怪的鸟,且其头部像鱼。
图3:逐头解码示意图
这里有一些值得分享的观察。如果我们以向量长度(即L2范数)来代表信息量的话,单个头所提供的信息量和全部头所提供的信息量之间存在很大差距。因此,在对每个头进行解码时,我们使用了修正系数对单个头的向量长度进行缩放,以确保单头进行解码的过程中所输出的是正常的话语,而不是乱码。这种调整的必要性源于每个头的L2范数分布并不相同。如果不进行修正处理,对前一层与单个头进行直接解码可能会导致生成的内容不准确或“胡言乱语”。因为每一层的信息量可以看作是所有头的集合,其向量长度的差异也会影响解码结果。如果直接将所有头的输出暴力相加,可能会造成信息的不可控性。因此,我们必须对单头信息量进行适当缩放,确保解码结果的合理性。
这里可以很自然的想到,如果我们剔除一些方向的错误的头,是否可以加强整个任务的表现呢? 这里我们先不说结论,我们来看一下一些其他实验。
The Texture Tailors 纹理裁缝
为了深入探究底层的作用,我们对 “Texture Tailors” 的底层进行了攻击,采用反向分析的方法来理解这些层的功能。首先定义每一层的表示如下:
我们假设将每一层当前图片的学习向量替换为数据集上的每一层的平均向量,如公式中所示的Zl,以此来观察不同部分的模型变化带来的影响。例如,考虑一张图片 A 和整个数据集在各层的平均向量 H。我们提出两个场景:
Ⅰ. Attention模块学习图片 A 的信息,但残差部分加上平均向量 H。
Ⅱ. Attention模块学习平均向量 H 的信息,而残差部分加上图片 A 的表示。
我们发现,在非常底层的部分(如 0-10 层),无论是场景Ⅰ 还是场景Ⅱ,都会破坏最终的结果。然而,在相对稳定的中间层(10-20 层),场景 Ⅰ 仍会对表示产生显著影响,而场景Ⅱ 在不跨超过三层的情况下表现出较强的鲁棒性。
下面我们给出一些观察的实验结果:
0-10层的结果:
-
“这是一张没有花的花的照片。”
-
“这是一张黑白照片,里面没有人,这让它看起来像是一张人的黑白照片。”
这些描述显示出一种存在与不存在之间的奇怪混合态,反映了使用平均向量时导致的混杂信息,这种状态在文本描述中表现为介于“有”和“无”之间的模糊状态。
11-20层的结果:
-
“这是一张黑白旋涡图案的照片。它看起来像是一张数字创作的图像,但实际上是用手机相机拍摄的照片。背景中的形状没有完全对齐,形成了一个看起来像星空的三角形图案。”
-
“这是一张黑白彩虹的照片,但实际上是由不同色调的红、绿、蓝、黄、橙、紫,甚至黑色组成的。”
相较之下,11-20 层的输出倾向于解释更复杂的场景,通常结合了黑白和彩色的元素。这支持了这些层更多参与识别特定形状和颜色的假设,表明它们管理更细致的视觉信息,将复杂特征整合为一个连贯的图像表示。
The Concept Weavers 概念编织者
在整个工作中,最值得注意的是中间层(Layer 21-30)的发现,我们将这些层命名为 “Middle Layers: The Concept Weavers” 概念编织者。我们之所以这样命名,是因为这些层次明显展现了一个从抽象到具体的概念生成过程。这个过程的明显程度可以通过一个具体的示例来展示,如下图4所示:
图4:抽象到具体示意图
以图中的雪人为例,我们可以清晰地看到概念逐步细化的过程:
Layer 24引入了一个“甜甜圈状的物体”,虽然这个描述并不准确,但它抓住了图像中白色、圆形物体的基本特征;
Layer 25 提到了一个“大白色球体”,这个描述更加接近真实情况,但仍缺乏足够的细节;
Layer 26 描述了一个“大白色雕像”,形状特征更加明确,但其具体身份依然模糊;
Layer 27 准确地识别出图像中的“白色雪人”;
Layer 28 不仅正确识别出“白色雪人”,还补充了更多背景信息,比如雪人周围的仙人掌和其他植物。
可以看出,随着层数的增加,视觉概念经历了一个从笼统到细致、从抽象到具体的逐步演变。特别是在第 27 和 28 层,模型成功地将之前积累的特征表示整合起来,形成了一个高度语义化的图像理解。这一过程我们称之为“从抽象到具体”。 那么,如何对这种演变进行定量分析呢? 我们选择利用 GPT-4V 作为评分器,对所有层次进行评分,重点考量以下几个方面:实体数量,实体描述的准确性与精细程度,信息量的递进性,图文匹配的程度。基于这些标准,我们得到了如图所示的评分曲线。曲线如图5所示。
图5: GPT-4V打分曲线
曲线显示,在中间层的确存在一种递进关系,这种关系与人类视觉认知过程有着惊人的相似之处。人类在第一眼看到一个物体时,往往也是先有一个模糊的印象,然后随着观察的深入,逐步捕捉更多细节,最终形成一个完整而具体的认知。这种相似性在我们的实验中得到清晰的反映,说明模型的中间层在图像理解过程中扮演着类似人类的角色。
注意力头剪枝
在我们观察各层和注意力头的工作方式过程中,一个显而易见的问题浮现:**在这种从抽象到具体的进程中,是否存在与主要趋势相悖的注意力头?如果我们剪枝这些“开倒车”的注意力头,是否能提升任务的表现?**这个问题和我们之前在Head-by-Head逐头解码中提到的设想不谋而合,即通过剪除错误方向的注意力头来优化整体模型的表现。
为此,我们提出了一种注意力头剪枝算法,旨在通过去除不符合趋势的注意力头来提高模型性能。其算法流程如图6所示,其工作原理如下:1)趋势性采样:从数据集中选取一个小样本,以分析和捕捉主要的趋势方向;2)相似度测量:对于每一个注意力头,我们计算其输出与层整体输出之间的相似度,来衡量它对整体趋势的贡献;3)权重调整:基于这种相似度,我们对注意力权重应用一个修正系数,保留那些符合趋势的注意力头,减小那些偏离方向的头的影响。
图6:注意力头剪枝算法
通过这种剪枝方法,我们在测试中观察到性能提升。具体如表1所示。
表1:注意力头剪枝算法的有效性
结论
本研究通过逐层和逐头的解码方法,深入探讨了CLIP模型在多模态任务中的表现。我们发现ViT的不同层次从初步的纹理识别到高级语义理解,经历了逐步演变,特别是在中间层展现了从抽象到具体的递进过程,类似于人类的认知过程。我们发现中间层的递进关系符合人类逐步捕捉细节的方式,验证了模型对图像信息处理的层次性特点。在逐头分析中,我们识别出一些与整体趋势相悖的注意力头,提出了剪枝算法,通过去除这些头来优化模型性能,最终在所选数据集上取得了显著的性能提升。这一研究为理解和改进ViT及类似变换器模型提供了新视角,尤其在复杂的情感和隐喻理解方面,提出了有效的改进方向。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。