來源年份: 投影片與作業是 Spring 2026;錄影是 Spring 2025(YouTube)。兩者可能有差異,本文以 2026 投影片為準,錄影只當輔助。
這是 Stanford CS231N 導讀系列的第 17 篇。上一篇是 L14:生成模型(二)Diffusion,下一篇是 A3 導讀:Transformer Captioning、SSL、DDPM、CLIP & DINO。L15(3D 視覺)在系列裡移到 A3 之後,見 L15 導讀。
CS231N 2026 年 5 月 26 日那一講,課表寫的標題是「Vision and Language」,投影片封面則是「Vision + Language (and Foundation Models)」。官方材料是 122 頁的 lecture_16.pdf,對應的公開錄影是 Spring 2025 Lecture 16。
錄影和投影片的差異這一講特別大。 2025 年的 lecture_16.pdf 有 148 頁,講者是 Ranjay Krishna,其中有一大段 Segment Anything;2026 版只在分類圖上列出 Segment Anything,另外新增了 Qwen3-VL、SigLIP 與 omni 模型。看 2025 錄影時,遇到 2026 投影片沒有的段落,就當成補充。
場景:一個任務一個模型,還能走多遠?
第 2 頁回顧課程到目前為止的思考方式:每個任務訓練一個專門模型。四個資料領域、四個模型、四個任務。
第 3 頁換成另一個範式:基礎模型(Foundation Model)。用大規模、多樣的資料集預訓練一個模型,再透過微調、zero-shot 或 few-shot 接到很多任務。
怎麼判斷一個模型算不算基礎模型?第 4 頁給了兩層標準:
- 一定會看到:能泛用、穩健地處理很多不同任務
- 常常會看到:參數量大、資料量大、自監督的預訓練目標
第 7 頁把基礎模型分成五類,並標出本講的主題:Language(ELMo、BERT、GPT、T5)、Classification(CLIP、CoCa)、LM + Vision(LLaVA、Flamingo、GPT、Gemini、Qwen)、Chaining(LMs + CLIP、Visual Programming),以及 And More(Segment Anything、Whisper、DALL·E、Stable Diffusion、Imagen)。
直覺:把 SimCLR 的表示空間,擴大到也能放句子
第 9–11 頁先回顧 L12 的 SimCLR:用自監督目標學影像特徵,同一張圖的兩個變形拉近、不同圖推開,希望學到的表示能泛化到新的例子。
第 13 頁問了一個關鍵問題:如果這個表示空間也能嵌入句子呢?「我最喜歡的狗是黃金獵犬」和「一隻可愛蓬鬆的貓」如果能和圖片放在同一個空間,要怎麼建出這個圖文聯合空間?
機制一:CLIP 的兩個步驟
第一步:收集大量資料(第 14–15 頁)。CLIP 的訓練資料是從網路上大規模爬下來的圖片和對應的 alt-text,約 4 億組圖文配對。投影片補充這個資料收集方式後來也被重現(Xu et al., Demystifying CLIP Data, ICLR 2024)。
第二步:選損失函數(第 17–25 頁)。投影片引用 CLIP 作者對先前做法(例如影像描述)的評論:不需要從圖片預測一字不差的描述,只要學會把正確的描述配到圖片上。
所以 CLIP 用的是和 SimCLR 同一類的對比目標(InfoNCE):一批 N 張圖和 N 段文字分別經過影像編碼器和文字編碼器,兩兩算相似度得到 N×N 的矩陣。雙向的 InfoNCE(圖找文、文找圖)讓對角線上的配對相似度越高越好。投影片註明有些細節沒畫出來,例如溫度參數、向量會先做 L2 正規化。訓練完得到一個能嵌入圖片和文字、並給出圖文相似度分數的模型。
機制二:不微調,直接分類
傳統用法(第 26–27 頁)是把預訓練的編碼器接一個線性分類器,轉移到分類、偵測、分割等下游任務。
但語言模型有另一種用法(第 28 頁):不微調,直接拿來「創意地」使用。例如把影評分類寫成填空題「這則影評『我討厭這部電影』是 ___」。視覺語言模型能不能也這樣?
CLIP 的巧招(第 30–37 頁):
- 用文字編碼器為每個類別產生一個向量,例如 "plane"、"dog"、"bird"
- 新圖片經過影像編碼器,和每個類別向量算相似度
- 選最相似的類別
投影片形容這很像 1-NN,只是「訓練資料」換成了文字向量。兩個提示工程的小技巧:
| 做法 | ImageNet 上的提升(投影片) |
|---|---|
| 把類別寫成句子「A photo of a [category]」,因為 CLIP 是用句子訓練的 | +1.3% |
| 用多種句型(「A photo of…」「A drawing of…」)再取平均向量 | +5% |
結果(第 38–43 頁):用 4 億組圖文配對訓練後,CLIP 的 zero-shot 準確率追上在 ImageNet 上訓練的 ResNet-101,而 CLIP 完全沒用人工標註。更有意思的是泛化:在 ImageNet 上訓練的模型換到 ObjectNet(同樣類別、奇怪視角)表現就掉下來,CLIP zero-shot 卻表現很好,在圖像、素描、對抗資料集上也一樣。
為什麼沒標註能贏過有標註? 第 46–48 頁提了三個可能答案:「沒標註」這說法有點誤導(文字本身就是監督)、預訓練規模巨大、測試集外洩。第三點大概不是主因:資料集外洩約 2%。規模的對比是:
| CLIP | ImageNet ResNet | |
|---|---|---|
| 參數 | 3.07 億 | 4,450 萬 |
| 訓練資料 | 4 億張圖 | 128 萬張 |
兩個常見變體(第 49–52 頁):
- SigLIP:用 sigmoid 取代 softmax。好處是算每個樣本的損失時不必把整批材料化,能省記憶體
- CoCa:在 CLIP 之外加一個生成目標,也就是多一個帶 captioning loss 的解碼器
CLIP 式模型的強項與弱點
強項(第 54 頁):
- 內積非常有效率:容易訓練、方便擴展;推論也快,例如能在 50 億張圖上做檢索
- 開放詞彙,可以 zero-shot 泛化
- 可以和其他模型串接(本講後面的 CuPL)
弱點(第 55–62 頁)。投影片引用 2022 年 4 月 Tristan Thrush 等人的例子:CLIP 分不出「there is a mug in some grass」和「there is some grass in a mug」。
- 太依賴 batch size 學概念。 batch 越大,概念越細:batch 4 時只學到「animal」,100 時學到「dog」,32,000 時學到「Welsh Corgi」。但這條路有極限:就算 batch 有 32K,也不太可能同時看到「草地上的杯子」和「杯子裡的草」。這類問題叫組合性,相關評測有 Winoground、CREPE、ARO。一個解法是 hard negative 微調(「horse eating grass」對「grass eating horse」),但它也有自己的問題:「一隻黑貓和一隻棕狗」和「一隻棕狗和一隻黑貓」其實是同一件事,是「hard positive」,不該被推開
- 整張圖的描述不夠當監督。 可以改用帶 bounding box 座標的區域描述來訓練
- 一份 50 億的資料集不可能包含一切。 資料的收集和過濾必須非常刻意
機制三:讓 LLM 看得到圖——LLaVA 與 Flamingo
動機(第 65 頁):做下一個 token 預測的語言模型,推論時能處理數學、情感分析、符號推理等各種任務。能不能做一個吃圖片和文字、輸出文字的模型?這就是視覺語言模型(VLM)。
歷史脈絡(第 66–67 頁):VLM 不是從 LLaVA 開始的,至少可以追溯到 2019 年的 ViLBERT。但當時每個任務都要各自微調,還要用不簡單的任務專屬方法,例如 RefCOCO 要用 Mask R-CNN 重排 bounding box。這又回到本講開頭批評的「任務專屬」範式。
LLaVA 的關鍵想法(第 68–75 頁):LLM 本來就是自迴歸地解碼文字,那就在文字 token 前面插入圖片 token。用哪種圖片 token 最好?CLIP 編碼器是好選擇,但要選對層:
- 最後一層的 patch token 沒有被監督(CLIP 的對比損失只看 CLS 或 pooling token),它們就算是亂的,損失也不會變
- 所以用倒數第二層。實務上這些 token 對 LLM 保留了最多空間與語言資訊,丟掉 CLS 還能稍微變好
LLaVA 的訓練配方分三步:用預訓練的 LLM(例如 LLaMA)初始化解碼器、用預訓練的 CLIP 當影像編碼器;訓練一個新的線性層,把 CLIP 特徵接到 LLM 的輸入空間;再把 LLM 和線性層一起微調。投影片提到約 17.8 萬筆「圖片+指令+輸出文字」的樣本就能得到不錯的表現。
Flamingo 的另一種融合方式(第 76–85 頁):影像經過視覺編碼器後,從旁邊接進語言模型的各層,圖片在文字序列裡只留一個 <image> 標記。第 78 頁的架構圖標出凍結的部分是視覺編碼器和 LM block,學出來的部分有兩個:一是 Perceiver sampler,把數量不定的圖片 token 轉成固定數量;二是插在 LM block 之間的 gated cross-attention 層(圖上標為 GATED XATTN-DENSE)。訓練資料的排法像語言模型,用 <image>、<eos> 這類特殊標記表示圖片出現或文字結束。它支援 in-context learning,能做 zero-shot 和 few-shot。
2026 的現況:開放權重不等於完全開源
誰是 SOTA?(第 86 頁)投影片寫的是 Gemini 被普遍認為是最好的專有 VLM。
開放模型(第 87–94 頁):投影片先區分兩件事——開放權重(能下載、在本機跑)和完全開源(能重現訓練)。接著以 Qwen3-VL 技術報告(2025 年 12 月)說明和 LLaVA 的差異:
- 原生影像解析度:越大的圖用越多 token,位置編碼改用 2D-RoPE 處理不同尺寸
- 視覺編碼器改用 SigLIP-2,不是 CLIP
- 影片的每一幀時間用文字給出,例如
<0.0 seconds> - 使用 SigLIP-2 第 8、16、24 層的嵌入
- 四個訓練階段,從接上視覺編碼器開始,後面包含拉長 context
開放權重的模型多半是蒸餾來的(第 96–102 頁,Molmo 與 PixMo,CVPR 2025)。投影片把模型分成 API only、open weights、distilled、completely open,並拿資料量做對比:Molmo 用的 PixMo 約 70 萬組圖文配對,投影片對照的 Llama 3.1V 則是 60 億組。這是品質與數量的取捨:網路資料常是偶然的(「pink, japan, aesthetic」),人工標註則是刻意的。問題是密集描述很難收集。Molmo 的解法很聰明:人不喜歡打字,但喜歡講話。標註者對一張圖講 60 到 90 秒,再自動把語音轉成文字當預訓練資料。
機制四:Chaining——把模型串起來
CuPL(第 104–107 頁,Pratt et al.):模型遇到沒看過的概念(marimba、viaduct、papillon、lorikeet)怎麼分類?先讓 LLM 產生這個類別的描述,再用描述去分類。
VisProg(第 108–116 頁,Gupta et al.):能不能把 chaining 推廣到所有視覺任務?傳統做法是為新任務訓練新模型,或手寫一段 Python 把現有模型串起來(例如跑兩次單圖 VQA 再合併答案),但手寫的程式只適用兩張圖。VisProg 讓 GPT 產生這段程式,組合現成的視覺模型去回答問題。
Omni 模型(第 117 頁):超越視覺和語言,訓練一個模型同時輸入輸出文字、音訊和影片。投影片說這從 2024 年的 GPT-4o 開始,最近 Thinking Machines 和 Gemini 也推出了自己的版本。
連回模型:這一講在整門課的位置
回頭看,這一講把前面幾講的零件都收在一起:L8 的 ViT 是 CLIP 的影像編碼器,L12 的對比學習變成圖文對比,L7 的影像描述則是 CLIP 作者認為不必走的那條路。上一講的 FLUX.1 也用 CLIP 當文字編碼器之一。
作業對應。 A3 的 Q4 是 CLIP 與 DINO(CLIP_DINO.ipynb、cs231n/clip_dino.py)。CLIP 部分沿用 A2 影像描述用過的 COCO 資料,要實作圖文相似度、zero-shot 分類器和以文字找圖的檢索器;其中一個 inline question 就是本講的弱點一:「CLIP 的學習為什麼依賴 batch size?」細節見 A3 導讀。
想深入
官方材料
- lecture_16.pdf(2026)
- lecture_16.pdf(2025):多了 Segment Anything 的段落,對應 2025 錄影
- 錄影:Spring 2025 L16
- A3:Q4 CLIP & DINO
站內延伸閱讀(各自完整,重疊部分不刪)
- CS224N:多模態——從 NLP 課的角度看同一批模型
- CS336 Lecture 17:多模態對齊——從訓練語言模型的角度看影像 token
存取限制
依全球 AI/CS 課程地圖的分級,這門課是 A3:2026 投影片、作業與起始碼公開,另有 2025 完整錄影。本講的缺口是 2026 錄影只放在 Canvas、限修課生觀看;而且 2025 錄影和 2026 投影片的內容差異比其他講次大。
參考資料
- Stanford CS231N 課程首頁(Spring 2026)
- CS231N Spring 2026 課表
- CS231N Spring 2026 Lecture 16 投影片
- CS231N Spring 2025 課表
- CS231N Spring 2025 Lecture 16 投影片
- YouTube:CS231N Spring 2025 Lecture 16: Vision and Language
- CS231N Assignment 3(Spring 2026)
- Radford et al., Learning Transferable Visual Models From Natural Language Supervision(CLIP)
- Zhai et al., Sigmoid Loss for Language Image Pre-Training(SigLIP)
- Yu et al., CoCa: Contrastive Captioners are Image-Text Foundation Models
- Liu et al., Visual Instruction Tuning(LLaVA)
- Alayrac et al., Flamingo
- Qwen3-VL Technical Report
- Deitke et al., Molmo and PixMo
- Pratt et al., What does a platypus look like?(CuPL)
- Gupta & Kembhavi, Visual Programming(VisProg)
Loading...