Abstract visualization of artificial intelligence and computer vision
Photo from Unsplash

生成式 AI 如何「讀懂」圖片?從像素到語意的三段旅程

你已經掌握文字生成的直覺:模型看過大量語料後,學會「在這個上下文裡,下一個 token 最可能是什麼」。但輪到圖片,我們常會卡住:圖片不是文字,它沒有 token;那 AI 到底怎麼「看懂」一張圖?

我喜歡用一句話把整件事收斂成可操作的模型: AI 不是直接理解圖片,而是先把圖片變成「可計算的 token 序列與向量表示」,再在這些表示上做對齊、推論與生成。

下面我用「三段旅程」拆給你看。

第一段:把圖片變成 token
像素 → 切 patch → 變成一串向量,類比文字 token。
第二段:把局部串成語意
注意力把邊緣、材質、部件整合成物體與場景。
第三段:把語意對齊到文字
用圖文配對或指令資料,讓「視覺向量」能觸發正確的文字與推理。

第一段旅程:圖片怎麼變成「類 token」的序列?

圖片在電腦裡是像素矩陣(RGB 數值),如果硬把每個像素當 token,序列會長到不可用。主流做法是把圖片拆成較大的「patch」,每個 patch 再投影成一個向量。Vision Transformer(ViT)就是把這件事做得非常直白: Dosovitskiy et al., 2020

簡化版流程長這樣:

  • 切 patch :例如把 224×224 的圖切成 16×16 的小方塊,會得到 196 個 patch。
  • 展平與線性投影 :每個 patch(16×16×3)展平成一個向量,再乘上一個可學習的投影矩陣,得到固定維度的「patch embedding」。
  • 加上位置資訊 :因為 Transformer 本身不內建空間順序,所以會加 positional embedding,讓模型知道「這個 token 在左上角」或「在中間偏右」。

到這一步為止,模型看到的已經不是「一張圖」,而是 一串向量 token


第二段旅程:模型怎麼從「局部」拼出「整體」?

理解圖片的重點不在單一 patch,而在 patch 與 patch 的關係。Transformer 的 self-attention 擅長做的事,就是在一堆 token 裡面找「哪些 token 應該互相參照」。

因此模型會在多層表徵裡逐步抽象:

  • 早期層 :邊緣、角點、顏色變化、紋理。
  • 中期層 :部件(例如眼睛、輪胎、窗框)。
  • 後期層 :物體(人、車、椅子)與場景(街景、室內、工地)。

這也是為什麼你會看到「模型看起來像在抓輪廓」,但它其實做的是更一般的事:它在學一個可壓縮、可泛化的表示,讓後面的任務(分類、偵測、描述、問答)都能用。


第三段旅程:為什麼它能把圖片內容「說成文字」?

到目前為止,我們只回答了「怎麼把圖片變成語意向量」。但你問的是「辨識能力」:它怎麼知道這些向量該對應到「貓」「安全帽」「紅色」或「正在施工」?

答案通常落在兩種訓練路線(很多模型會混合使用)。

路線 A:圖文對齊(contrastive learning,CLIP 類)

CLIP 的核心想法非常工程化:

  • 你有一批圖和一批文字(caption)。
  • 模型學的是:「哪一段文字跟哪一張圖是一對的?」

訓練完成後,圖片與文字會被投影到同一個向量空間;某張圖會靠近它的描述文字,而遠離不相干的文字。 Radford et al., 2021 (也可參考 OpenAI 提供的 PDF: https://cdn.openai.com/papers/Learning_Transferable_Visual_Models_From_Natural_Language.pdf )。

這帶來一個很直覺的效果:你丟一張圖,然後用「文字提示」去比相似度,模型就能做 zero-shot 分類。它不是真的「內建類別表」,而是 把「類別」換成了文字描述

路線 B:看圖後產生文字(captioning / VQA / 多模態 LLM)

多模態 LLM(Vision-Language Model, VLM)的典型形狀是:

  • 一個 vision encoder 把圖變成一串視覺 token。
  • 一個 connector / projector 把視覺 token 映射到語言模型可吃的空間。
  • 一個 LLM 在「看到視覺 token」的條件下,產生描述或回答。

像 LLaVA 這類工作,會用「指令式資料」去教模型:看到圖後,要能用對話方式回答問題,甚至遵循更複雜的指令。 Liu et al., 2023


一張圖的「讀懂流程」,用一張圖說清楚

Mermaid Diagram

為什麼它有時候會「看錯」甚至「腦補」?

只要你把「讀懂」重新定義成「在訓練分佈裡做統計推論」,很多現象就會變得不意外。

  • 缺少視覺證據時會補全 :模型會用語料裡常見的共現模式去補空缺,例如看到餐桌就補「盤子、叉子」。
  • 局部訊號太弱 :遠處的小物件、遮擋、反光、模糊,都會讓視覺 token 的訊號不足。
  • 對齊不完美 :圖文配對資料天然有噪音(caption 不精確或省略),模型就可能學到「近似但不等價」的連結。

學術界通常把這類現象稱為 hallucination(幻覺),在 VLM 上是一個非常活躍的研究主題。你可以參考 2024 年針對「大型視覺語言模型幻覺」的綜整論文(ACL Findings): Liu et al., 2024


你可以怎麼快速驗證:它到底看懂了沒?

如果你想把 VLM 當工具用,我建議你用「可檢核問題」去問它,而不是只問「這張圖是什麼」。這裡給你一組實用的提問清單:

  • 數量 :『畫面裡有幾個人?每個人手上拿什麼?』
  • 位置關係 :『紅色物體在藍色物體的左邊還是右邊?』
  • 屬性 :『那頂安全帽是什麼顏色?衣服上有沒有反光條?』
  • 文字(OCR) :『招牌上寫什麼?發票的總額是多少?』
  • 反問驗證 :『你剛剛提到有「X」,請指出它位於畫面哪個區域(例如左上、中央偏右)。』

當模型能穩定回答「能被你驗證」的問題時,你就比較能相信它真的抓到影像訊號,而不是靠語料習慣猜答案。


結語:圖片不是被「看懂」,是被「表示」與「對齊」

文字生成讓人覺得像接龍;圖片理解讓人覺得像魔法。但把流程拆開後,它其實更像工程:

  • 圖片先被切成 token。
  • token 被整合成語意向量。
  • 語意向量透過圖文對齊與指令資料,學會怎麼變成可讀的文字與答案。

如果你願意做一個小實驗:找兩張「看起來很像」但細節不同的圖片(例如安全帽顏色不同、標誌不同),用上面的提問清單去問同一個模型,你會很快抓到它的強項與盲點。


資料來源

網路資料

  1. An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale (arXiv:2010.11929)

    • Vision Transformer(ViT)把圖片切成 patch token 的經典論文。
  2. Learning Transferable Visual Models From Natural Language Supervision (arXiv:2103.00020)

    • CLIP 的核心方法:以對比式學習把圖片與文字對齊到同一個 embedding 空間。
  3. Visual Instruction Tuning (arXiv:2304.08485)

    • LLaVA:典型多模態 LLM 的訓練方式與「視覺指令微調」路線。
  4. A survey on hallucination in large vision-language models (ACL Findings 2024)

    • 彙整 VLM hallucination 的成因、評估與緩解方向,適合作為風險與限制的總覽參考。