你有没有试过让一个多模态大模型用不同语言描述同一张图?我的第一次尝试是这样的:给了一张一只柯基趴在草地上的照片,用中文问"这是什么?",回答"一只柯基犬趴在绿色的草地上,旁边有几朵小花。"用英文问"Describe this image",回答"A fluffy Corgi lying on grass, looking at the camera. There are some flowers in the background."看起来像模像样,但仔细一对比:英文版本多出了"looking at the camera",中文版本多出了"旁边有几朵小花"。为什么描述不一样?哪个才是"正确的"?这个困惑让我一头扎进了多语言图像描述这个研究方向。

一个让模型闹笑话的小实验
你可以自己试一下——随便找一张细节丰富的照片,分别用中文、英文、日文让同一个模型描述。大概率你会得到三份内容相似但细节不同的文案。有时候甚至会矛盾:中文说"一个人站在桥下",英文说"a person standing on the bridge"。别急着骂模型蠢,这不是简单的误差,而是一个结构性的技术问题。
多语言图像描述的任务定义很简单:输入一张图和一个语言指示,输出该语言的文字描述。标准的模型结构是视觉编码器(如ViT)加上多语言解码器(如mT5或LLaMA)。视觉编码器把图像变成一串向量,解码器根据这些向量逐词生成token。中文和英文的唯一区别,就是解码器走的是不同的分词表和语言路径。也就是说,模型并不是先想好一个"事实清单",然后翻译成不同语言。它是在视觉上下文的约束下,按各语言的统计规律即兴发挥。
为什么模型不是在"翻译",而是在"即兴发挥"
这里的关键是:模型生成每个词时,是在候选词表上按概率分布采样。视觉信息会影响概率分布,但语言先验——也就是这个语言里通常怎么说——也同样重要。假设图中有三个人,中文语料里说到"人"时更常强调数量,英文语料里更常强调正在进行的动作。那么模型自然会在中文描述里写"三个人",在英文描述里写"people chatting"。这不是不一致,这是语言统计特征的自然映射。
但头疼的是,这种统计特征并不总是对齐的。不同语言的训练语料来源差异很大,同一图像在不同语言网页上配的alt文本风格完全不同。模型只是诚实地学习了两种语言各自的描述习惯,而这两个习惯指向的"事实核心"却可能错位。
| 差异来源 | 中文描述特点 | 英文描述特点 | 日文描述特点 |
|---|---|---|---|
| 物体关注 | 强调颜色、材质、数量 | 强调行为、互动、情感 | 强调场景氛围、存在状态 |
| 空间位置 | 常用"旁边""附近" | 精确方位词如left/right/behind | 常用"手前/奥"等视角词 |
| 文化偏好 | 对食物、动物分类细 | 对人物活动、职业描述细 | 对季节、环境细节敏感 |
这种偏差在小样本场景下会被放大。mBLIP这篇论文就专门研究了多语言视觉模型的引导问题,他们发现直接在多语言数据上微调大规模视觉语言模型,不同语言之间的性能方差很大,尤其对日文这类资源相对少的语言,描述质量明显低于英文。
"一致"到底是什么意思?先别急着答
很多人以为跨语言一致性就是"中文描述逐词翻译成英文,跟英文描述完全一样"。这是错的。自然语言描述没有唯一答案,两张图描述如果都准确,措辞不同完全正常。我们要的是一致性,不是复制。
一个更合理的定义是:两种语言的描述所传达的"核心信息集合"应该是对齐的。比如图里有一只狗在睡觉,中文说"狗在睡觉",英文说"sleeping dog",这就算一致。如果英文说"a dog running",那就不一致。
我踩过的坑:以为语料对齐就能解决问题
我最早的想法特别天真:只要训练数据里有足够多的"同一张图像的中英文描述对",模型不就能自动学会跨语言对应了吗?后来发现这个前提根本不成立。
主流的多语言视觉语言数据集,比如Multi30K,确实提供了德、法、捷克的描述,但覆盖语言有限。而网络上采集的中英日图像文本对,绝大多数是"同一张图在不同语言网页上出现",但配的文字内容不一定对应——可能一个是讲摄影技巧,另一个是讲网页里的新闻事件。真正严格的"同一图像、两种语言、描述同一内容"的成对数据,少得可怜。Multi30K只是一个小众例外。
这个困境让我想通了一件事:模型没见过对齐数据,就不会学到对齐规律。单语数据混在一起训练,只会让模型在共享视觉特征上各自构建语言独有的描述路径。所以后来看到那些专门设计跨语言对齐机制的论文,我一下子就理解了他们的动机。
四条技术路线,解决跨语言不一致
当前研究大致有四条路线,各有取舍。
- 共享语义空间
- 用对比学习拉近同一图像的多种语言文本描述在语义空间里的距离。最典型的是多语言多模态预训练,比如将CLIP的图像编码器与多语言文本编码器对齐,让不同语言的文本都去靠近同一个图像锚点,间接实现语言间对齐。CLIP本身只做了英文,后来扩展的多语言版本(如mCLIP)就是这条路。
- 显式一致性损失
- 在生成训练中,除了交叉熵损失,额外加一个惩罚项,让中文描述和英文描述的句子编码向量余弦距离大。这有点像老师让一个学生用两种语言各写一段摘要,然后判断两段摘要是否在讲同一个核心。
- 知识蒸馏
- 用GPT-4V这类大型多语言教师模型,为训练图像生成高质量的多语对照描述,再用这些描述微调小模型。教师模型的一致性能力通过蒸馏传递给学生模型。成本高,但通常效果最直接。
- 统一解码空间
- 使用mT5、mBART这类混合多语言的解码器,把中、英、日token放在同一个词表里,让参数共享迫使模型在不同语言间迁移知识。缺点是共享词表可能相互干扰,但生成风格会更统一。
我见过很多团队在方案上摇摆,其实有效系统基本都是混合使用。比如用统一解码器作为基础,再在训练时加显式一致性损失,最后拿教师模型生成的高质量数据做冷启动。
想快速验证你的模型?三步走
如果你只是想知道自己的模型在跨语言一致性上表现如何,不用等论文的基准,可以自己做一个简易评测:
- 挑30张图和三个语言(中、英、日),生成三份描述。
- 把每份描述用多语言句子编码器如LaBSE编码成向量,两两计算余弦相似度。
- 计算平均相似度和标准差,再人工抽5张图,逐个检查是否丢失核心信息。
from sentence_transformers import SentenceTransformer
import numpy as np
model = SentenceTransformer('LaBSE')
zh = '一只柯基趴在草地上'
en = 'A corgi lying on the grass'
ja = '草地に横たわるコーギー'
vecs = model.encode([zh, en, ja])
# 归一化后两两点积就是余弦相似度
cos = np.dot(vecs, vecs.T)
print(cos)
这个指标很粗糙,但能快速暴露问题。如果平均相似度低于0.5,说明你的模型在中英日描述上已经自由发挥到相互无法辨认了。
跨语言一致性的三个翻车现场
我测过不少模型,总结了三个规律性失效场景。
第一种,多物体竞争。图里有猫、有沙发、有电视,中文模型大概率描述最显眼的猫,英文模型可能会去描述坐在沙发上的人。因为不同语言对"显著对象"的训练分布不同。
第二种,文化特定概念。比如"太极"、"榻榻米",模型在中文里倾向于给出抽象解释,英文倾向于描述外观,日文则可能用场景术语。三种说法都对,但信息集合完全不同。
第三种,长描述。生成超过20个词时,模型容易中途漂移,两种语言的后半段细节开始分叉,语义向量相似度也会断崖下降。
我的判断
跨语言一致的真正瓶颈不在网络结构,而在对齐数据的稀缺。与其指望模型自己涌现,我现在更倾向于用"事实清单"的提示策略:先让模型用任意语言生成一张图的物体、动作、属性清单,然后让它在清单基础上用目标语言组织句子。这个方法在今天的大模型上立竿见影,而且不需要重新训练。
如果你手上正有一个多语言视觉模型,不妨先别急着换架构,试试改变解码策略。语言之间的一致性,可能比你想的更容易改善。
原创文章,作者:guanweilu,如若转载,请注明出处:https://guanweilu.cn/article/712.html