跳到主要内容

多模态学习基础

学习目标

完成本节后,你将能够:

  • 理解什么是“模态”
  • 说清楚多模态系统为什么更接近真实世界
  • 理解融合(fusion)和对齐(alignment)的直觉
  • 跑通一个极简的图文匹配小例子

一、什么叫模态?

模态(modality)可以简单理解成“信息的表现形式”。

常见模态包括:

  • 文本
  • 图像
  • 音频
  • 视频
  • 结构化表格

所以多模态系统,就是同时处理两种或更多种信息形式的系统。

类比一下:

人类理解世界不是只靠文字,而是会同时看、听、读、说。多模态 AI 也是在往这个方向走。


二、为什么真实世界天然是多模态的?

想几个日常场景:

  • 看商品图 + 读商品描述
  • 看病历文字 + 看医学影像
  • 看监控视频 + 听报警音
  • 上传截图 + 问“这是什么错误”

如果 AI 只能看文字,它就像“闭着眼工作”;
如果只能看图片,它又像“不会读说明书”。

所以多模态系统的重要性在于:

它能把不同来源的信息拼在一起理解。


三、多模态任务有哪些?

任务例子
图像描述给图片生成一句话说明
图文检索用文字找图、用图找文字
视觉问答看图回答问题
OCR + 理解读图中文字并理解内容
视频理解总结视频内容
语音助手听懂语音并回答

四、融合(Fusion)是什么意思?

融合可以理解成:

把不同模态的信息合在一起,形成更完整的理解。

比如做商品推荐时:

  • 只看图片,可能知道风格
  • 只看文字,可能知道用途
  • 图文一起看,理解才更完整

一个极简例子

假设我们把商品图片和文案都提取成特征,再合并:

import numpy as np

# 图片特征:亮度、红色程度、圆形程度
image_feature = np.array([0.8, 0.7, 0.2])

# 文本特征:时尚感、运动感、商务感
text_feature = np.array([0.6, 0.2, 0.1])

# 最简单的融合:拼接
fused_feature = np.concatenate([image_feature, text_feature])

print("图像特征:", image_feature)
print("文本特征:", text_feature)
print("融合后特征:", fused_feature)
print("融合后维度:", fused_feature.shape)

真实模型里当然比这复杂得多,但“多源信息合并”的思路就是这样。


五、对齐(Alignment)是什么意思?

对齐是多模态里另一个关键概念。

你可以把它理解成:

让不同模态里的“同一个意思”,在表示空间里彼此靠近。

比如:

  • 一张猫的图片
  • 文本 “a cute cat”

如果模型学得好,它们的向量表示应该比较接近。


六、一个可运行的图文匹配玩具例子

import numpy as np

images = {
"red_apple.jpg": np.array([0.9, 0.1, 0.0]), # 红色、圆形、不是交通工具
"blue_car.jpg": np.array([0.1, 0.2, 1.0]), # 非红、略圆、是交通工具
"orange_ball.jpg": np.array([0.8, 0.9, 0.0]) # 偏暖色、很圆、不是交通工具
}

texts = {
"red fruit": np.array([0.95, 0.2, 0.0]),
"vehicle": np.array([0.0, 0.1, 1.0]),
"round toy": np.array([0.7, 0.95, 0.0])
}

def cosine_similarity(a, b):
return float(np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b)))

for text_name, text_vec in texts.items():
print(f"\\n查询文本: {text_name}")
scores = []
for image_name, image_vec in images.items():
scores.append((cosine_similarity(text_vec, image_vec), image_name))
scores.sort(reverse=True)
for score, image_name in scores:
print(f" {image_name}: {score:.4f}")

这就是“跨模态检索”的最小原理版:

  • 文本和图像都变成向量
  • 再比较相似度

七、多模态为什么更难?

因为它同时要解决两类问题:

  1. 每种模态内部怎么建模
  2. 不同模态之间怎么对齐和融合

比如图像有图像自己的难点:

  • 空间结构
  • 光照变化
  • 视角变化

而文本又有文本自己的难点:

  • 歧义
  • 上下文
  • 长文本结构

两边一合起来,复杂度自然更高。


八、今天常见的多模态路线

1. 双塔检索路线

图像一套编码器,文本一套编码器,最后比向量相似度。

2. 统一 Transformer 路线

把图像、文本都映射到统一序列空间,再统一建模。

3. 大模型扩展路线

在语言模型前面接上图像编码器、音频编码器等模块。

这就是为什么今天很多系统都能做到:

  • 看图问答
  • 图文对话
  • OCR 理解

九、初学者常见误区

1. 以为多模态就是“图片 + 文本”

不止。
语音、视频、传感器信号也都属于模态。

2. 以为多模态一定比单模态强

不一定。
如果额外模态质量差,反而可能引入噪声。

3. 只看酷炫 Demo,不看对齐问题

多模态真正难的地方,往往就在对齐和融合。


小结

这节课最重要的一句话是:

多模态的价值,在于把不同信息来源拼起来,形成更完整的理解。

后面继续学视觉语言模型时,你会看到这种“图文对齐”是如何被真正用到模型里的。


练习

  1. 修改上面的图像和文本向量,观察匹配排序怎么变化。
  2. 自己设计一个“食物 / 交通工具 / 动物”的玩具向量空间。
  3. 想一想:为什么“截图报错 + 提问文字”比只给报错文字,更适合用多模态系统?