什麼是多模態 AI?從單模態 LLM 到跨模態理解

從只能處理文字的 LLM,到能看、能聽、能讀的多模態 AI,理解編碼、對齊、融合與生成的核心流程。

什麼是多模態 AI?從單模態 LLM 到跨模態理解

你已經理解了傳統大型語言模型(LLM)如何處理文字:把詞彙轉成向量、用注意力機制理解語境,並自回歸生成回應。

但現實世界從來不只有文字。

人類理解世界的方式天生是多模態的——我們同時在看、聽、讀、觸摸。一張圖片、一段聲音或一個影片所包含的資訊量,往往超過千言萬語。當模型不再只能「讀文字」,而是具備了跨模態理解能力,它能為我們做到哪些事?

本文將帶你一次搞懂多模態 AI 是什麼、它是怎麼運作的、一個生活中的簡單例子,以及如何動手進行程式碼實作!

Text + Image + Audio + Video + Sensor = Multimodal

一、多模態是什麼?

多模態(Multimodal)指的是模型能同時處理多種模態的資訊——文字、圖像、聲音、影片、感測器資料等。

傳統的 LLM 只能處理文字。你給它一段文字,它回你一段文字。
但人類理解世界的方式是多模態的:我們同時看、聽、讀、觸摸。

多模態 AI 的目標,就是讓模型像人類一樣,從多種感官中理解世界。

打個比方:

  • 單模態 LLM 像一個只能讀文字的學者。
  • 多模態 AI 像一個能看、能聽、能讀的助理。

模態的種類

模態說明範例
文字書面語言文章、對話、程式碼
圖像靜態視覺照片、圖表、截圖
音訊聲音訊號語音、音樂、環境音
影片時序視覺電影、監控、教學影片
感測器物理測量溫度、加速度、GPS
動作行為輸出機器人關節、滑鼠軌跡

為什麼「多模態」不是「多個單模態」

把一個文字模型和一個圖像模型放在一起,並不會自動變成多模態模型。

真正的多模態能力,是指模型能在同一個表示空間中理解不同模態之間的關係。
例如:

  • 看到一張「貓在沙發上」的圖片,能回答「貓在哪裡?」
  • 聽到「請把紅色按鈕按下去」,能辨識出圖片中哪個是紅色按鈕。
  • 讀到一份圖表,能回答「第三季的成長率是多少?」

這些任務需要模型跨越模態邊界進行推理,而不是分別處理再拼接結果。

二、多模態模型怎麼運作?

多模態模型的核心挑戰是:不同模態的資料格式完全不同,如何讓它們在同一個模型中協同工作?

答案是:把不同模態都轉成向量,然後在同一個空間中對齊。

核心流程

1. 編碼(Encode):
   - 圖像 → 視覺編碼器 → 視覺 token
   - 文字 → 文字編碼器 → 文字 token
   - 聲音 → 音訊編碼器 → 音訊 token

2. 對齊(Align):
   - 把不同模態的 token 投影到同一個向量空間
   - 讓「狗的圖片」和「狗的文字」在空間中靠近

3. 融合(Fuse):
   - 把不同模態的 token 一起送入 Transformer
   - 讓模型學習跨模態的關係

4. 生成(Generate):
   - 根據融合後的表示,生成文字、圖像或其他模態

用一個比喻:

  • 編碼 像把不同語言翻譯成同一種語言。
  • 對齊 像確保翻譯後的詞彙在同一本字典中。
  • 融合 像把不同來源的資訊整合在一起。
  • 生成 像用整合後的資訊寫出一篇文章。

Encode → Align → Fuse → Generate

編碼:把不同模態轉成 token

圖像編碼:

圖片被切成固定大小的 patch,每個 patch 經過線性投影後變成一個視覺 token。ViT 將圖片視為一連串的 patch,直接應用純 Transformer 進行處理。ViT

圖片 (224×224) → 切成 14×14 個 patch → 每個 patch 變成一個向量 → 196 個視覺 patch

文字編碼:

文字經過分詞器切成 token,每個 token 對應一個嵌入向量。

"這隻貓在做什麼?" → ["這", "隻", "貓", "在", "做", "什", "麼", "?"] → 8 個文字 token

音訊編碼:

音訊被切成短時間窗口,每個窗口經過編碼器變成一個音訊 token。

依模型的時間窗切分 → 產生一系列音訊 token
例如:音訊 (16kHz, 10秒) → 切成 100 個 100ms 窗口 → 100 個音訊 token

對齊:讓不同模態在同一個空間

編碼後的 token 還在各自的空間中。
對齊的目的是把它們投影到同一個向量空間。

最經典的方法是 CLIP 的對比學習。CLIP CLIP 使用網路上 4 億個圖文對進行訓練,以文字作為監督信號來編碼圖像。

圖片 → 視覺編碼器 → 圖片向量 ─┐
                              ├→ 對比學習 → 同一空間
文字 → 文字編碼器 → 文字向量 ─┘

訓練時,匹配的圖文對被拉近,不匹配的被推遠。

訓練完成後:

  • 「狗的圖片」和「狗的文字」在空間中靠近。
  • 「貓的圖片」和「狗的文字」在空間中遠離。

SigLIP 進一步改進了這個方法,用一對一的 Sigmoid 損失取代了 CLIP 中的 Softmax 對比損失,不需要跨樣本歸一化。SigLIP

融合:讓模型學習跨模態關係

對齊之後,不同模態的 token 可以一起送入 Transformer。

[視覺 token 1, 視覺 token 2, ..., 文字 token 1, 文字 token 2, ...]
    ↓
Transformer
    ↓
融合後的表示

在 Transformer 中,注意力機制讓視覺 token 和文字 token 互相關注:

  • 文字中的「貓」關注到圖片中的貓。
  • 圖片中的「沙發」關注到文字中的「坐」。

模型學習到跨模態的對應關係。

Flamingo 是一個經典的例子,它能夠處理任意交錯的文字和圖像序列,並在少量標註樣本下快速適應新任務。Flamingo

生成:產出回答

最後,模型根據融合後的表示生成回答。

融合後的表示 → 解碼器 → 生成的文字

對於生成圖像的模型,則是:

融合後的表示 → 擴散模型 → 生成的圖像

三、一個具體的例子

假設你給模型一張圖片和一個問題:

[圖片:一隻貓坐在沙發上]
問題:「這隻貓在做什麼?」

多模態模型的處理過程:

步驟一:編碼圖片

圖片 → ViT 編碼器 → 576 個視覺 token
每個 token 是一個向量,代表圖片的一小塊區域

步驟二:編碼文字

問題 → 文字分詞器 → 10 個文字 token
每個 token 是一個向量,代表一個詞

步驟三:對齊與融合

視覺 token 和文字 token 一起送入 Transformer
模型學習到:
- 圖片中的「貓」對應到文字中的「貓」
- 圖片中的「沙發」對應到文字中的「坐」
- 圖片中的「坐姿」對應到文字中的「做什麼」

步驟四:生成回答

模型生成:「這隻貓正坐在沙發上休息。」

這就是多模態模型的基本運作方式。

更複雜的例子

圖表問答:

[圖片:一張營收成長圖表]
問題:「第三季的成長率是多少?」

模型需要:
1. 辨識圖表中的座標軸與數據點
2. 找到第三季對應的數據
3. 計算成長率
4. 生成回答

跨模態推理:

[圖片:一個紅色按鈕和一個藍色按鈕]
語音指令:「請按下紅色按鈕」

模型需要:
1. 辨識圖片中的紅色和藍色按鈕
2. 理解「紅色按鈕」的語意
3. 對應到圖片中的位置
4. 輸出正確的動作

這些任務都需要模型跨越模態邊界進行推理。

四、如何實作?

一個最簡單的多模態模型,可以用以下步驟實作:

import torch
from transformers import AutoProcessor, AutoModelForVision2Seq
from PIL import Image
import requests

# 1. 載入模型和處理器
model_name = "HuggingFaceM4/idefics2-8b"
processor = AutoProcessor.from_pretrained(model_name)
model = AutoModelForVision2Seq.from_pretrained(
    model_name,
    torch_dtype=torch.float16,
    device_map="auto",
)

# 2. 準備輸入
image = Image.open(
    requests.get("https://example.com/cat.jpg", stream=True).raw
)
prompt = "這隻貓在做什麼?"

# 3. 處理輸入
inputs = processor(
    images=image,
    text=prompt,
    return_tensors="pt",
).to(model.device)

# 4. 生成
with torch.no_grad():
    outputs = model.generate(
        **inputs,
        max_new_tokens=100,
    )

# 5. 解碼輸出
response = processor.decode(outputs[0], skip_special_tokens=True)
print(response)

這段程式碼展示了多模態推理的基本流程:

  • 載入模型:使用預訓練的多模態模型。
  • 準備輸入:圖片和文字一起處理。
  • 處理輸入:把圖片轉成視覺 token,文字轉成文字 token。
  • 生成:模型根據融合後的表示生成回答。
  • 解碼:把生成的 token 轉回文字。

多模態的三種架構

多模態模型有三種主要架構:

架構說明代表模型
對比式分別編碼不同模態,對齊到同一空間CLIP、SigLIP
融合式在 Transformer 中融合不同模態LLaVA、Flamingo
統一式所有模態用同一個模型處理GPT-4o、Gemini

對比式:

圖片 → 視覺編碼器 → 圖片向量
文字 → 文字編碼器 → 文字向量
        ↓
   對比學習,讓匹配的圖文靠近

融合式:

圖片 → 視覺編碼器 → 視覺 token
文字 → 文字編碼器 → 文字 token
        ↓
   一起送入 Transformer

LLaVA 是融合式架構的代表,它將視覺編碼器與 LLM 連接起來,並透過視覺指令微調實現了通用的視覺與語言理解能力。LLaVA

統一式:

所有模態 → 同一個 Transformer → 統一表示

GPT-4o 是統一式架構的代表,它是一個自回歸的全模態模型,接受文字、音訊、圖像和影片的任意組合輸入,並生成文字、音訊和圖像的任意組合輸出。GPT-4o

這三種架構各有優缺點,我們會在下一篇深入討論。

五、為什麼多模態現在很重要?

三個原因:

1. 模型能力的天花板

純文字模型無法理解圖片、聲音、影片。
但真實世界的資訊是多模態的。

一份醫療報告包含文字描述、X 光片、檢驗數據。
一個客服問題可能是一張截圖。
一則新聞包含文字、圖片、影片。

如果模型只能處理文字,就無法理解這些完整的資訊。

2. 應用場景的需求

領域應用模態
醫療看 X 光片、病理切片圖像 + 文字
教育看圖說故事、互動式學習圖像 + 文字 + 語音
電商看圖搜商品、自動生成描述圖像 + 文字
客服看截圖解決問題圖像 + 文字
自駕辨識路況、行人、號誌圖像 + 感測器
機器人理解指令、操作物件圖像 + 文字 + 動作

3. 技術的成熟

  • 視覺編碼器:ViT、SigLIP、DINOv2 等模型成熟。ViT SigLIP
  • 對齊技術:CLIP 的對比學習成為標準。CLIP
  • 訓練方法:多階段訓練(預訓練 → 對齊 → 微調)成熟。
  • 開源模型:LLaVA、Idefics、Qwen-VL 等開源模型涌现。LLaVA

這些技術的成熟,讓多模態模型從研究走向應用。

六、小結

多模態 AI 讓模型從「只能讀文字」進化到「能看、能聽、能讀」。
它的核心是:把不同模態轉成向量,在同一個空間中對齊,然後融合生成。

這個核心可以拆解成四個步驟:

  1. 編碼:把圖像、文字、聲音轉成 token。
  2. 對齊:把不同模態的 token 投影到同一空間。
  3. 融合:用 Transformer 學習跨模態關係。
  4. 生成:根據融合後的表示產出回答。

理解了這個核心,你就有了進入多模態世界的基礎。

不過,多模態模型有很多種設計方式。
對比式、融合式、統一式,各有什麼優缺點?
為什麼 LLaVA 選擇融合式?為什麼 GPT-4o 選擇統一式?
這就是下一篇要談的主題。

下一篇預告

《多模態模型架構:對比式、融合式與統一式的取捨》

我們會深入三種多模態架構的設計邏輯、訓練方式、優缺點,以及在不同場景下該如何選擇。


參考文獻