多模态大模型在纯文本任务上翻车这件事,我最早是在一个文本分类的对比实验里撞上的。当时手头有一个图文联合训练过的模型和一个同参数量的纯文本模型,按理说前者见过的数据更多、能力更全面,结果在几个标准文本任务上,多模态版本反而低了几个点。这个现象不是个例,后来在摘要生成、逻辑推理、长文问答上都复现过类似情况。所以这篇就围绕“多模态大模型为何在纯文本任务上表现下降”这个核心问题,把注意力机制的改动和数据偏见这两条主线拆开讲清楚,顺带把排查思路和可落地的验证方法一并整理出来。适合正在做多模态训练、或者打算把多模态模型直接拿来跑文本任务的同学参考,不管你是刚入门还是已经踩过坑,应该都能找到能直接用的东西。
1. 问题定位与整体分析框架
1.1 先搞清楚“下降”到底降在哪
很多人一上来就说多模态模型文本能力弱,但这句话太粗。我习惯先把“下降”拆成几个可测量的维度,不然你根本不知道该往哪个方向查。通常我会分四块看:第一是基础语言建模能力,比如困惑度、完形填空准确率;第二是任务级指标,比如分类F1、抽取式问答的EM值;第三是长文本处理能力,尤其是超过训练窗口长度之后的衰减曲线;第四是指令跟随与格式稳定性,多模态模型在纯文本指令下经常出现格式跑偏、答非所问的情况。
这四块的下降原因往往不一样。基础语言建模下降,多半和训练数据里文本占比被稀释有关;任务级指标下降,可能是注意力结构改动导致表征偏移;长文本衰减,通常指向位置编码和注意力窗口的设计;指令跟随变差,则更多是数据配比和指令微调阶段的问题。你要是不做这个拆分,直接笼统地说“多模态拖累了文本”,那排查就无从下手。
我一般会建一个对照表,把纯文本基线和多模态版本在同样评测集上的分数并排放,差值超过阈值(比如分类任务2个点以上)才认定为显著下降。这个阈值不是拍脑袋,是结合评测集本身的方差定的,跑三次取均值,避免把随机波动当成真实退化。
1.2 两条主线:注意力机制与数据偏见
定位清楚之后,原因基本收敛到两条主线。注意力机制这条线,核心是多模态训练引入了跨模态注意力层,或者对原有自注意力做了结构改造,这些改动会让模型在处理纯文本时,注意力分配模式和纯文本模型产生系统性差异。数据偏见这条线,说的是训练数据里图文对和纯文本的配比、质量、分布差异,导致模型在文本上的表征被“带偏”。
这两条线不是孤立的。跨模态注意力层在训练时大量接触图文对齐信号,这些信号会反过来影响文本token之间的注意力权重分布;而数据配比失衡又会加剧这种偏移。所以分析的时候要两条线一起看,但排查的时候可以分开做消融,先定位是结构问题还是数据问题,再决定怎么修。
下面这张表是我常用的初步判断依据,把现象和可能的主线对应起来,能帮你快速缩小范围:
| 现象 | 优先怀疑主线 | 初步验证手段 |
|---|---|---|
| 基础困惑度明显升高 | 数据偏见 | 检查文本数据占比与质量 |
| 长文本后半段指标骤降 | 注意力机制 | 对比位置编码与窗口设计 |
| 短文本任务小幅下降 | 两者皆有可能 | 分别做结构与数据消融 |
| 指令格式不稳定 | 数据偏见 | 检查指令微调数据配比 |
| 特定句式或领域退化严重 | 数据偏见 | 分析训练语料领域分布 |
2. 注意力机制改动带来的表征偏移
2.1 跨模态注意力层如何“污染”纯文本表征
多模态模型为了对齐图像和文本,通常会插入跨模态注意力层,让文本token能attend到视觉token,反之亦然。问题在于,这些层在纯文本推理时,视觉token是缺失的,模型要么用占位符填充,要么直接跳过这些层。无论哪种处理,都会让文本token的注意力分布和纯文本模型产生差异。
我用一个生活化的类比来解释:纯文本模型像一个只读文字的人,注意力全在字里行间;多模态模型像一个同时看图识字的人,训练时习惯了“看字的时候余光扫图”。当你只给它文字、不给图的时候,它的“余光”无处安放,注意力分配就会变得不稳定。实测下来,这种不稳定在短句上影响不大,但在需要长距离依赖的任务上会被放大。
具体到结构上,跨模态注意力层往往和文本自注意力层交替排列。训练时,跨模态层的梯度会回流到文本表征,让文本表征朝着“便于和视觉对齐”的方向偏移。这个偏移在图文任务上是好事,但在纯文本任务上就是噪声。我做过一个简单的消融:把跨模态层在推理时完全冻结、只走文本通路,文本任务指标能回升一部分,但回不到纯文本基线,说明偏移已经写进了文本层的参数里,不是推理时绕过就能解决的。
2.2 位置编码与注意力窗口的隐性冲突
第二个容易被忽略的点是位置编码。多模态模型为了容纳图像token,往往会把位置编码的维度或范围扩大,或者改用可学习的位置嵌入。这些改动在图文场景下没问题,但纯文本任务对位置信息非常敏感,尤其是长文本任务。
举个具体的:纯文本模型常用的旋转位置编码,在扩展到支持图像序列后,频率参数的设置可能被调整过。调整之后,文本token之间的相对位置感知会发生变化,短距离还行,长距离的相对位置信号会衰减得更快。这直接导致长文本任务后半段的指标骤降。我遇到过一篇长文摘要任务,多模态版本在前512个token上表现和基线持平,超过1000个token之后ROUGE掉得厉害,查下来就是位置编码外推能力被削弱了。
注意力窗口的设计也是同理。有些多模态模型为了控制图文序列的总长度,会对注意力做稀疏化或分块处理。这些策略在图像patch序列上是合理的,但套用到纯文本上,会切断文本token之间本该存在的长距离依赖。文本的语义连贯性依赖跨句、跨段的注意力,窗口一缩,连贯性就断了。
2.3 注意力头分工的重新洗牌
还有一个更隐蔽的现象:注意力头的功能分工被打乱了。纯文本模型在训练中会自发形成分工,有的头专门捕捉局部语法,有的头负责长距离指代,有的头处理实体关系。多模态训练引入视觉信号后,一部分注意力头会被“征用”去处理跨模态对齐,原本的文本分工被稀释。
这个现象很难直接观测,但可以通过注意力可视化间接验证。我的做法是取一批纯文本样本,把多模态模型和纯文本模型的注意力图并排画出来,看同一层同一头的注意力分布是否一致。实测发现,多模态模型里负责长距离指代的头明显减少,很多头变成了“泛化对齐头”,对文本内部的精细关系不敏感了。这解释了为什么多模态模型在指代消解、共指链这类任务上退化更明显。
提示:做注意力可视化对比时,一定要用同一批输入、同一套分词,否则分布差异里混入了预处理噪声,结论不可靠。
3. 数据偏见:配比、质量与分布的三重影响
3.1 文本数据被稀释的直接后果
多模态训练集里,图文对占了很大比例,纯文本的占比被压缩。这不是简单的“文本数据变少”,而是文本数据的多样性和难度分布同时被改变。图文对里的文本描述通常是短句、描述性语言,长逻辑链、复杂推理的文本很少。模型长期在这种文本上训练,处理复杂文本的能力自然退化。
我做过一个粗略统计:某类多模态训练集里,图文对的文本平均长度远低于纯文本语料,而且句式以陈述和描述为主,疑问、否定、条件、转折这些结构出现频率低很多。模型见得多的是“一只猫在草地上”,见得少的是“如果前提不成立,那么结论是否仍然有效”。后者恰恰是纯文本推理任务的核心。
这种稀释效应在训练早期不明显,因为模型还在学基础语言能力;到了中后期,文本能力的提升曲线会明显放缓,甚至出现回退。我的经验是,如果你的多模态训练里纯文本占比低于某个比例(具体阈值因任务而异,我一般控制在三成以上),文本任务的退化几乎不可避免。
3.2 图文对文本的“描述性偏见”
比配比更隐蔽的是质量偏见。图文对里的文本是为图像服务的,它天然带有描述性偏见:偏向具体名词、视觉可感知的形容词、空间关系,而抽象概念、逻辑连接词、情感细腻表达相对匮乏。模型在这种文本上训练,会形成一种“看得见才说得出”的表达习惯。
这个偏见在纯文本任务上的表现很典型:模型倾向于把抽象问题具体化,把逻辑推理降级为描述。比如你问一个因果推理问题,它可能给你描述现象而不是分析因果。这不是它不会推理,是训练数据里推理型文本太少,描述型文本太多,表征被拉向了描述一侧。
我验证这个偏见的方法是构造两组评测:一组是描述型文本任务,一组是推理型文本任务,分别测多模态版本和纯文本基线。结果描述型任务差距很小,推理型任务差距明显。这就坐实了偏见的方向。
3.3 数据分布偏移与灾难性遗忘
第三个层面是分布偏移。多模态训练数据的采集渠道和纯文本语料往往不同,领域分布、时间分布、文体分布都有差异。如果多模态数据偏某个领域(比如电商图文、社交配图),模型在这个领域的文本上会变强,但在其他领域会变弱,整体文本能力被拉偏。
更麻烦的是灾难性遗忘。多模态训练阶段如果学习率、训练步数控制不好,模型会把之前纯文本预训练学到的能力覆盖掉。我见过最典型的情况是:模型在图文任务上表现很好,但纯文本的常识问答能力大幅退化,问它一些基础事实都答错。查下来是训练后期文本数据几乎断供,模型完全在图文对上更新参数,旧能力被冲掉了。
注意:多模态训练阶段一定要保留一定比例的纯文本回放数据,比例可以不高,但必须有,这是对抗灾难性遗忘最直接的手段。
4. 实操排查流程与验证方法
4.1 第一步:建立纯文本基线对照
排查的第一步永远是建立干净的对照。拿同参数量、同架构(去掉跨模态层)的纯文本模型作为基线,在完全相同的评测集、相同的推理配置下跑分。这一步的关键是控制变量:分词器要一致,评测脚本要一致,解码参数要一致。我见过有人拿不同分词器的两个模型对比,结论完全失真。
评测集的选择也有讲究。我一般会覆盖三类:通用语言理解(比如完形填空、句子排序)、任务型(分类、抽取)、生成型(摘要、问答)。每类至少两个数据集,取平均,避免单数据集的特异性干扰。跑完之后算差值,差值显著的维度进入下一步细查。
4.2 第二步:结构与数据的分离消融
确定下降维度后,做分离消融。结构侧:把跨模态注意力层在推理时屏蔽,只走文本通路,看指标回升多少。数据侧:用纯文本数据对多模态模型做少量继续预训练(轻量回放),看指标回升多少。两边各做一次,就能判断主因在哪一侧。
我的经验是,多数情况下两边都有贡献,但权重不同。如果屏蔽跨模态层回升明显,说明结构改动是主因;如果轻量回放回升明显,说明数据偏见是主因。回升幅度都很小,说明偏移已经深入参数,需要更彻底的方案。
这里有个细节:轻量回放的学习率要设得很低,步数要少,目的是“唤醒”而不是“重训”,否则会把多模态能力破坏掉。我一般用基线的十分之一学习率,跑几百步就停,边跑边看文本指标和多模态指标的平衡。
4.3 第三步:注意力分布与数据分布的定量分析
结构侧深入分析,就做注意力分布对比。取固定输入,统计各层各头的注意力熵、注意力集中度、长距离注意力占比,和多模态模型对比。熵偏高说明注意力分散,长距离占比低说明长依赖能力弱。这些指标能量化“注意力被污染”的程度。
数据侧深入分析,就做语料统计。统计训练数据里文本的长度分布、句式分布、领域分布、抽象词与具体词比例,和纯文本语料对比。差异大的维度就是偏见来源。我一般会重点看逻辑连接词密度和平均句长,这两个指标对推理能力影响很大。
4.4 第四步:针对性修复与回归验证
定位清楚后,修复方案分两条线。结构线:如果跨模态层污染严重,可以考虑在纯文本推理时做层归一化补偿,或者对文本通路做轻量适配器微调,把表征拉回来。数据线:调整训练配比,提高纯文本占比,补充推理型、长逻辑链文本,训练后期保留文本回放。
修复之后一定要做回归验证,而且要看双向指标:纯文本任务是否回升,多模态任务是否保持。只盯一边容易修过头。我一般会设一个平衡阈值,文本回升到基线的95%以上、多模态任务下降不超过2个点,就算达标。
5. 常见问题速查与避坑经验
5.1 典型问题速查表
实际排查中遇到的问题五花八门,我把高频的整理成表,方便对照:
| 问题现象 | 可能原因 | 排查动作 | 处理建议 |
|---|---|---|---|
| 文本指标全面小幅下降 | 数据配比失衡 | 统计文本占比与分布 | 提高文本占比,补回放 |
| 长文本后半段骤降 | 位置编码外推弱 | 测不同长度衰减曲线 | 调整位置编码或窗口 |
| 指代消解退化明显 | 注意力头分工打乱 | 注意力可视化对比 | 文本通路适配器微调 |
| 指令格式跑偏 | 指令数据配比问题 | 检查指令微调语料 | 补充纯文本指令数据 |
| 特定领域退化 | 数据分布偏移 | 分领域评测 | 领域数据均衡采样 |
| 常识问答答错 | 灾难性遗忘 | 测基础事实问答 | 训练后期文本回放 |
5.2 几个容易踩的坑
第一个坑是只看总分不看分项。总分持平不代表没问题,可能是一部分任务涨、一部分跌,互相抵消了。一定要分项看,尤其是长文本和推理类任务,这两块最容易藏退化。
第二个坑是评测集泄漏。多模态训练数据里如果混入了评测集的文本,分数会虚高,掩盖真实退化。做对比前一定要做去重检查,把训练集和评测集的交集清掉。
第三个坑是解码参数不一致。多模态模型和纯文本模型的最优解码参数可能不同,用同一套参数对比不公平。我的做法是各自调一组最优参数再比,或者用贪心解码统一口径。
第四个坑是忽视分词器差异。多模态模型为了处理图像,分词器可能改过,文本分词结果和基线不一致,直接影响所有文本指标。对比前务必确认分词器一致,不一致就统一用基线分词器重新评测。
提示:排查顺序建议从数据侧开始,因为数据问题更容易验证和修复,结构问题往往需要改模型、成本高。先排除数据因素,再动结构,能省很多时间。
5.3 实操心得:平衡多模态与文本能力
最后分享几条我在平衡两种能力时总结的经验。第一,训练配比不是固定的,要分阶段调整,前期多模态为主打基础对齐,后期提高文本占比保语言能力。第二,文本回放数据要选高质量的,不是随便抓一批文本就行,优先选推理型、长逻辑链的语料。第三,结构改动要克制,跨模态层能少加就少加,加了就要配套文本通路的补偿机制。第四,评测要常态化,每轮训练都跑一遍文本基线对照,别等训完了才发现退化。
这套流程走下来,多模态模型在纯文本任务上的下降通常能控制在可接受范围内。完全消除很难,因为多模态和纯文本的表征需求本身有张力,但通过配比控制、结构补偿和持续评测,把退化压到不影响实际使用的程度是可行的。我目前手上的几个模型,文本任务基本能维持在基线的97%以上,多模态任务不受明显影响,这个平衡点是可以找到的。