3.3 語義鴻溝:傳統方法的極限(2000-2012)#
前兩節我們走完了 1995-2012 年的整條手工 pipeline:HOG 描述形狀,SIFT 描述局部點,Bag-of-Visual-Words 把連續特徵離散化,空間金字塔把空間先驗塞回去,SVM 在高維稀疏特徵上找分隔面,AdaBoost 從數千候選中挑出關鍵特徵,串接式分類器讓人臉偵測走進了每一台相機。
這是一組漂亮的工程。它把「影像分類」從一個模糊的夢想變成了一個可量化、可競賽、可部署的工程問題。
但它有一個天花板,而且是一個結構性的天花板。本章要做的三件事:
- 用 Marr 的三級表徵框架給這個天花板一個理論名字:語義鴻溝(semantic gap)
- 逐條拆解五種典型失敗模式,看清楚鴻溝到底寬在哪裡
- 說明 2012 年 AlexNet 為什麼是分水嶺,以及「量變引起質變」在機器學習裡的實證版本
本章結束時,我們會留下一個明確的問題:我們要的不是更好的特徵,而是能從資料中學出特徵的機制。 這就是第 4 章的舞台。
3.3.1 語義鴻溝:Marr 的理論骨架#
三級表徵框架(1976/1982)#
David Marr 在 1976 年 MIT thesis《Vision: A Computational Investigation into the Human Representation of Visual Information》,並在 1982 年由 W.H. Freeman 整理成同名專著中,提出了至今仍影響深遠的三級表徵框架。
Marr 主張:視覺是一個由下而上的資訊處理系統,而任何完整的視覺系統都必須包含三個層次的表徵。
flowchart TD
P[原始影像<br/>數百萬像素的強度陣列] --> E[邊緣與紋理<br/>2.5D 草圖]
E --> M[3D 物體模型<br/>物體中心、表面、體積、光照]
M --> S[語意表徵<br/>「這是一隻貓」]
E -.->|手工特徵方法止步於此| GAP[語義鴻溝]第 0 級:原始素描圖(Primal Sketch) 原始強度值組成的 2D 陣列。這一層是「光學的」——視網膜上的事情。手工影像處理(1、2 章)主要活在這一層。
第 1 級:2.5D 草圖(2½-D Sketch) 深度、深度梯度、表面法向、表面方向、遮蔽關係的空間地圖。這個階段的目的,是把 2D 影像轉成「由表面斜視投影所產生的形狀描述」。
第 2 級:3D 物體模型(3-D Model) 以物體中心、表面、體積等為基礎的物體表徵,包含形狀(slabs/spheres/pseudospheres)、可見表面、與各表面的朝向。
關鍵的第 3 層:語意。Marr 明確指出,只有在有了物體的 3D 模型、並且知道世界中有哪些物體之後,才能做辨識。他舉的例子是:辨識一隻貓,需要知道貓的形狀、牠的腿怎麼動、貓的體重。這需要「貓的形狀模型」,也就是把物體的形狀與已知物體原型比對。
手工特徵停留在哪一層#
現在用 Marr 的框架檢視 3.1、3.2 節的方法:
| 方法 | 停在 Marr 的哪一層 | 說明 |
|---|---|---|
| 高斯濾波、傅立葉 | 第 0 級 | 像素的平滑與分解 |
| Sobel、Canny | 第 0→1 級 | 提取邊緣 |
| SIFT、HOG | 第 1 級 | 局部形狀統計,但沒有深度資訊 |
| HOG + SVM | 第 1 級 | 形狀統計 + 判別函數,但沒有物體模型 |
| Bag-of-Visual-Words | 第 1 級 | 局部形狀的統計分佈,無 3D 結構 |
| Viola-Jones | 第 1 級 | 局部灰階對比,無尺度/姿態模型 |
關鍵觀察:所有這些方法都停留在第 1 級,而且是第 1 級最粗糙的版本。更重要的是——
它們實際上連第 1 級都沒有真正到達。 Marr 的 2.5D 草圖需要的是「表面法向」與「深度梯度」,這意味著對 3D 幾何的推理。而 HOG/SIFT 給的是 2D 影像平面上梯度方向的統計——這是投影後的 2D 足跡,不是 3D 表面本身。
SIFT 的「尺度不變性」來自在高斯金字塔上搜尋 DoG 極值點,這讓它對等比縮放不變(因為縮放不改變形狀),但它對深度變化引起的透視縮放並不真正不變。HOG 更是完全沒有尺度概念(尺度交給金字塔)。
語義鴻溝的定義#
於是我們可以給出「語義鴻溝」一個技術性定義:
語義鴻溝:在視覺表徵的層次結構中,低階處理(邊緣、紋理、形狀統計)所產生的表示,與高階語意(物體身份、場景、意圖)之間的落差。鴻溝之所以存在,是因為跨越它需要物體的世界知識——而手工特徵方法把這份知識硬編碼成數學公式時,只能覆蓋非常有限的先驗。
文獻中的典型表述(Fei-Fei 的說法常被引用):
- 低階特徵(邊緣、紋理)與高階語意之間存在「巨大的落差」
- 手工特徵是「過度簡化的、基於直覺的」表示
- 跨越鴻溝的關鍵是「更多的資料」與「更好的模型」
鴻溝的兩種可能跨越方式#
這是本章最重要的框架。跨越語義鴻溝只有兩條路:
flowchart LR
A[低階特徵<br/>HOG SIFT BoVW] --> B{如何跨越?}
B --> C[路徑 A: 注入先驗<br/>手工特徵設計<br/>更多公式 更多假設]
B --> D[路徑 B: 從資料學<br/>特徵學習<br/>深度學習]
C --> E[天花板: 只能覆蓋<br/>設計者想像得到的情形]
D --> F[突破: 先驗從資料中<br/>湧現而非人手指定]路徑 A:不斷設計更好的描述子,把更多物體學先驗塞進公式。這條路在 1999-2012 年被走到盡頭:SIFT → HOG → 空間金字塔 → Fisher vectors → DeCAF。
路徑 B:放棄手工指定,讓模型從資料中學出表示。這條路在 2006 年由 Hinton 等人的深度信念網路奠基,在 2011 年由 DeCAF 初試,在 2012 年由 AlexNet 全面兌現。
本章的論點是:路徑 A 在 2012 年已經徹底耗盡,而路徑 B 的兌現時機,取決於「資料 + 算力 + 架構」三者的同時到位。
3.3.2 五種典型失敗模式#
現在我們把「語義鴻溝」拆成可以診斷的具體失敗模式。每一則給出機理、量化描述與一個真實例子。
失敗模式一:光照變化#
機理#
同一個物體在不同光照下產生的像素值,可以差異極大。具體而言:
其中 \(R\) 是反射率(物體本身的「固有色」)、 \(L\) 是照明、 \(A\) 是加性偏移(ambient)。理想的描述子應該只依賴 \(R\) ,但實際的邊緣偵測與梯度計算都作用在 \(I\) 上。
這是一個乘法結構。 關鍵在於:梯度也跟著縮放:
如果照明 \(L\) 在局部區域內近似常數,那麼 \(\nabla I \approx L \nabla R\) ——梯度方向不變、梯度大小被 \(L\) 線性縮放。這正是 HOG 的 L2-Hys block normalization 能處理「對比度變化」的數學原因:正規化把 \(L\) 這個乘性因子消掉。
但這只處理了一半。 如果照明有空間梯度( \(\nabla L \ne 0\) ),例如陰影邊界、鏡面高光、單一頂燈的近距離照明,那麼 \(L \nabla R\) 這項會污染方向。邊緣可能出現、被反轉、或產生假的邊緣。
為什麼 Retinex 只解釋了部分#
Retinex(Land 與 McCann, 1971)的核心是假設:
並以對數形式分離: \(\log I = \log R + \log L\) ,再對空間做對數導數以消除 \(L\) 。這對「乘法型照明變化」的處理非常有效,也是 1.2 節色彩恆常性討論的基礎。
但 Retinex 無能為力的情況:
- 陰影邊界。陰影內的物體仍被照到,只是光源不同(ambient light)。這不是乘法縮放,而是不同光源的加法組合, \(\log\) 分離失敗。
- 鏡面高光。高光是加性的( \(A\) 項),不是乘性的。
- 本影(terminator)。彎曲物體上,明暗交界線處 \(R\) 與 \(L\) 的變化疊加,方向資訊被破壞。
- 色偏。Retinex 在 RGB 上作用,但真實的白平衡調整是在對數色度空間做的,且需假設色溫模型。
結論:Retinex 處理的是「全局或區域單一的亮度變化」。它沒有處理「幾何引起的照明變化」,而後者才是視覺分類裡的主要敵人。
量化#
在 Caltech-101 上,主流手工方法的分類準確率對 illumination 的變化極度敏感:同一個類別,在固定光照下準確率可達 85%,在隨機化室內光照下降 15-20 個百分點。而在 ImageNet 上,「光照/條件變化」子集向的準確率差距是 2000 年代所有方法都未解決的問題。
失敗模式二:視角與尺度變化#
機理#
同一個物體從不同角度看,會產生不同的 2D 投影。物體越靠近相機中心,透視畸變越大;側視時原本正面的特徵可能完全消失。
3.1 節的 SIFT 聲稱具有「尺度不變性」。這個說法需要精確化:
| 變化 | SIFT 的處理 | 是否真的不變 |
|---|---|---|
| 影像的等比縮放 | 高斯金字塔 + DoG 極值點 | 幾乎不變(這是設計目標) |
| 透視縮放(深度變化) | 無直接處理 | 不變(會被部分偵測點的變形吸收) |
| 平面物體的旋轉(繞光軸) | 描述子在極座標下分箱 | 部分不變(誤差隨角度增大) |
| 3D 物體的旋轉(改變視角) | 無處理 | 不變 |
| 非平面形變 | 無處理 | 不變 |
更根本的問題:2D 描述子無法分辨「形狀變了」與「視角變了」。 這就是所謂的 aperture problem(孔徑問題) 的一個具體表現:一張側臉的 2D 投影,本來就與一張正臉的某個 Strange-looking 的 2D 投影無法區分。
例子#
Dalal 與 Triggs 的 HOG 論文裡有個著名的實驗:把 INRIA 行人資料集中的樣本做各種仿射變換(橫向壓縮、縱向壓縮、平移),觀察偵測錯誤率。
- 平移 ±10 像素:miss rate 從約 0.42 升到約 0.44(影響小)
- 橫向壓縮 10%:升至約 0.47
- 縱向壓縮 10%:升至約 0.55
- 橫向壓縮 30%:升至約 0.68
結論是明確的:縱向(高度)方向的形變破壞程度遠大於平移。原因在於 HOG 的 cell 是固定像素尺寸、方向 bin 是固定的——身高比例改變,腳部與頭部的 cell 就對不上。
這就是為什麼 DPM(2010)要引入可變形部件模型:用 per-part 的形變成本來建模「身體各部分可以獨立微調位置」。這是手工方法對尺度/視角問題能做的最聰明的補救——但代價是模型複雜度大增,訓練需要 latent variables 與 coordinate ascent。
失敗模式三:非剛性形變#
機理#
許多類別的實例內差異主要來自形變而非視角或光照:
- 動物:四條腿的位置、耳朵的角度、尾巴、頸部的角度
- 布料/服飾:皺褶
- 人類姿態:手腳的具體擺放
- 字跡:每個字的寫法都不同
SIFT 的局部描述子確實能捕捉這類變化,因為關鍵點會落在形狀特徵上(狗的耳朵、字的轉折)。但問題出在聚合階段:
- Bag-of-Visual-Words 徹底丟棄空間資訊——所以「狗頭在上方」與「狗頭在下方」不可分。3.1.5 節的 SPM 用空間金字塔部分修正,但網格是固定的,無法對齊到形變後的物體。
- HOG 是固定網格——一個物體稍微轉身,cell 的對齊就全錯了。
例子#
在 2000 年代的標準資料集上,這些失敗的量化結果非常明確。CIFAR-10 上的 BoVW 方法準確率約 70%,而同一批資料在 2015 年後的 CNN 方法可以到 93-96%。
Caltech-101 上,主導方法 2011 年的 mAP(mean Average Precision)約在 0.40-0.45 的水準,到了 2012 年的 AlexNet 時代跳到 0.55 以上,2014 年的 ZFNet 時期達 0.74,2015 年的 VGG 時期達 0.85。
這裡有一個關鍵的量變引起質變:AlexNet 在 ImageNet 上相較於傳統方法的提升,不僅僅是演算法更優,更是因為 ImageNet 本身的高複雜度迫使模型去學會真正的形變不變性。
CIFAR-10 資料集有 10 個類別(飛機、汽車、鳥、貓、鹿、狗、馬、蛙、船、卡車),這些類別都包含顯著的形變多樣性。手工特徵方法在這個資料集上已經接近其設計假設的極限。
失敗模式四:背景雜亂(context bias)#
機理#
這是最有趣也最容易被低估的一種失敗。
手工特徵方法會不知不覺地學到背景與前景的共現關係。原因在 3.1.4 節已經出現:BoVW 的共現先驗本質上就是「哪些詞一起出現」——但「詞」裡混入了背景描述子。
具體機理:
- 訓練資料中的「牛」幾乎總是在綠色草地上
- BoVW 的詞彙包含「綠色草地紋理」這個視覺詞
- 分類器學到「有『綠色草地』這個詞 → 是牛」
- 測試時,一頭站在灰色道路上的牛 → 分類失敗
這不是分類器的過擬合,而是特徵表示本身的資訊污染——背景資訊佔據了描述子的一大部分容量。
三個代表性例子#
(一)綠幕上的牛。 這個例子在 Manabe 的研究中出現,隨後由 Russakovsky 與 Fei-Fei 在 Caltech-101 錯題分析中重點強調,是 context bias 領域的經典論述。
(二)到處都是的字。 所有自然場景影像都帶有文字——路牌、招牌、書脊、商品包裝、品牌 logo。結果是「文字」這個視覺詞在每一個類別中都以高頻出現,失去了區辨力。Russakovsky 等人的研究發現,移除或修正影像中的文字,可以顯著改善分類準確率。
(三)contextual bias 與語意標籤的不匹配。 影像經常包含多個物體,而對單一標籤的分類會去學習到無關的物體線索。
量化#
一個著名的結果是:在自然場景中,鳥類辨識是最困難的分類任務之一。原因是鳥總是待在樹枝上,而樹枝的形狀與顏色會嚴重干擾基於形狀的描述子。而在「鳥在天空背景中」的測試集上,準確率會顯著回升。
手工方法的補救與其代價#
- 背景去除:用分割或 saliency 找出前景描述子。但這引入了對前處理品質的依賴。
- 增加上下文特徵(對比 SIFT、Csurakis 2004):把周圍區域也描述進來。這部分解決了問題(利用了上下文),但把鴻溝推向更難的問題。
- 加入負樣本實例(Hard negatives):讓分類器學會「草地 + 非牛」。
但根本問題是:手工特徵無法區分「這是物體的一部分」與「這是背景」。 這個判斷本身就需要語意。
失敗模式五:遮擋與稀疏觀測#
機理#
真實世界的觀測幾乎總是不完整的:物件被其他物件遮住(人站在樹後、鳥在枝葉中、貓在沙發後)。
當一個物體只有 30% 可見時:
- 它的描述子特徵會大幅改變(HOG 的 cell 覆蓋率下降,梯度分佈偏移)
- 背景會滲入原本是物體的區域
- BoVW 的詞袋比例被稀釋
例子:鳥類辨識的 part-based 困難#
鳥類辨識是深度學習之前最著名的「難例」。原因不只是姿態變化大,更是鳥類的類別差異集中在細小的局部特徵(喙的形狀、腳爪、翅羽圖案),而這些部位常常很小、被遮擋、或需要高解析度。
手工方法曾嘗試「部件模型」來處理:DPM 的 part-based 模型、Poselets、以及「poselet」概念。這些方法試圖在特徵空間中找出語意一致的位置(例如「鳥的頭」),但它們需要:
- 定義每個 part 的位置(靠人工標註關鍵點)
- 定義 part 的外觀模型(靠人工設計描述子)
結果是每個新類別都要重新做一次這些工程。 這正是深度學習要解決的問題:讓 part 的位置與外觀同時從資料中學出。
五種失敗模式的彙整#
| 失敗模式 | 手工方法的補救 | 補救的代價 | 深度方法的解法 |
|---|---|---|---|
| 光照變化 | L2-Hys 正規化、Retinex | 只能處理乘法型變化 | 資料增強 + 學到的正規化 |
| 視角/尺度 | 金字塔、DPM 的形變成本 | 模型複雜度、指數級訓練 | 資料驅動的不變性 |
| 非剛性形變 | part-based 模型、SPM | 每類別需人工定義 part | 學到的層次特徵 |
| 背景雜亂 | 背景去除、context 特徵 | 依賴前處理品質 | 端到端學會忽略背景 |
| 遮擋 | part-based、上下文 | 需人工定義 | 學到的部分性辨識 |
注意最右欄:五種失敗模式,在深度學習裡被同一個機制處理——「用足夠多樣的資料訓練一個有足夠容量的模型,讓它自己學到對這些變化不變的表示」。 這是路徑 B 的核心承諾。
3.3.3 資料瓶頸:人類才是瓶頸#
標註成本的量級#
2005-2012 年間,一個分類資料集的標註成本可以粗估:
| 資料集 | 類別數 | 影像數 | 標註方式 | 標註工時(估) |
|---|---|---|---|---|
| MNIST | 10 | 70,000 | 免費(既有資料) | ~0 |
| Caltech-101 | 101 | ~9,000 | 學院人力 | ~數十小時 |
| PASCAL VOC 2007 | 20 | ~9,963 | 學生標註框 + 驗證 | ~2,000-3,000 小時 |
| ImageNet (ILSVRC 2009) | 1,000 | 1.4M | crowdsourcing | ~250,000+ 小時 |
| ImageNet (ILSVRC 2014) | 1,000 | 3.6M | crowdsourcing | ~1,000,000 小時 |
ImageNet 的 250,000 小時換算下來,是一整個研究人員生涯的工作量。這就是瓶頸。
Crowdsourcing 的興起#
亞馬遜 Mechanical Turk(AMT)在 2005-2006 年開始被 Fei-Fei 與 Karpathy 使用。它的關鍵特性:
- 把標註拆成微任務:一張圖框一個物件,幾秒到幾十秒完成
- 成本極低:初期每張標註 \(0.01-\) 0.05(標註框更高)
- 品質需要管理:需要重複標註 + 投票機制(Dawid-Skene 之類),加上「黃金標準」題目檢測標註者品質
- 加速了整個領域:Fei-Fei 等人估計,AMT 讓建立 ImageNet 的時間從數年縮短到數月
Crowdsourcing 的深層意義:它不只是省錢,而是讓「大規模標註」從不可能變成可重複的、可擴展的工程流程。這是 ImageNet 存在的技術前提。
PASCAL VOC 的標準化貢獻#
PASCAL VOC 2007-2012 提供了一套至今仍被使用的評估協定:
- 偵測評估:IoU 門檻 0.5,採用 AP (Average Precision)
- 分類評估:混淆矩陣 + mAP
- 分割評估(2012 加入)
- 統一的開發/測試集分割,且測試集標註不公開(防止過擬合測試集)
PASCAL VOC 的歷史意義有兩層:
- 它讓「方法進步」第一次變成可比較的數字,催生了 2007-2010 年間的競賽熱潮。
- 它定義了「一個方法好不好」的多指標框架(偵測、分類、分割),而這個框架一直沿用到 COCO(2014)。
但 VOC 只有 20 類、9,963 張影像——複雜度遠低於真實世界。它的成功反而低估了問題的難度。
ILSVRC 2009-2015#
ImageNet 大型視覺辨識挑戰賽(ILSVRC)自 2009 年起每年舉辦。規則簡單但嚴苛:
- 1,000 個類別
- 訓練集約 120 萬張,驗證集 5 萬張,測試集 10 萬張(標註不公開)
- 評估指標:top-5 error rate(前 5 個預測中任一正確即算對)
- 提交上限:每隊每次挑戰最多 2,000 次測試集提交
top-5 這個指標本身就是一個教學設計:真實場景中分類器的前 5 個預測常包含正確答案,所以 top-5 更能反映實用能力,也讓 2012 年前的基準線不至於全錯。
ILSVRC 的貢獻:
- 建立了競賽機制——這在機器學習裡是強大的進步引擎
- 提供了統一的可比較基準線
- 每年強制刷新 SOTA,推動了從 SVM → Fisher Vector → DeCAF → AlexNet → ZFNet → VGG → GoogLeNet → ResNet 的完整譜系
- 負面效果:過度最佳化 ILSVRC 指標、忽略其他任務
Fei-Fei 的洞見:「機器人給了世界,但人類才是瓶頸。」她的解法不是更聰明的演算法,而是把人類標註的能力工程化——ImageNet 的核心貢獻不是演算法,而是一個可擴展的人類知識編碼系統。
3.3.4 路徑 A 的最後一搏:Fisher Vector(2010)#
在 DeCAF 出現之前,手工路徑還有一次值得記錄的最後改良。它值得單獨一節,因為它顯示了路徑 A 能走多遠,以及它為什麼終究走不下去。
問題:BoVW 的量化誤差#
回顧 3.1.4 節。BoVW 把每個局部描述子 \(\mathbf{d}\) 硬分配到最近的視覺詞 \(\mathbf{c}_{\ell(\mathbf{d})}\) 。量化誤差是:
這個誤差是不可逆的:一旦描述子被丟進某個 bin,它原來的方向細節就永久消失了。量化誤差是 BoVW 分類錯誤的主要來源之一——一個 SIFT 描述子被硬塞進 1000 個中心之一,等於強迫它代表「該叢集裡所有東西的公共部分」。
Fisher Vector 的解法:用「差分」代替「硬分配」#
Fisher Vector(FV)由 Vedaldi 等人於 2010 年提出,核心是放棄離散 bin,改為對描述子落在每個中心周圍的機率密度做統計。
令 \(\mathcal{S}(\mathbf{d}) = \{ k : \left\| \mathbf{d} - \mathbf{c}_k \right\| < \sigma \}\) 為描述子 \(\mathbf{d}\) 的 \(L\) 個最近中心(實務上 \(L\) 常取 3-5),則第 \(k\) 個維度的描述子由兩部分組成:
把全體 \(k\) 與 \(L\) 串接,就得到描述子的 Fisher Vector:
直覺解釋:BoVW 問的是「這個描述子屬於哪一類?」,FV 問的是「這個描述子相對於每個類別的中心偏離多少、偏離的方向是什麼」。後者的資訊量遠大於前者——即使兩個描述子被量化到同一個 bin,它們的偏離向量 \(\mathbf{d} - \mathbf{c}_k\) 仍然不同。
影像級別的池化#
多個描述子的 FV 會串接成極大的向量( \(K=1000\) 、 \(L=3\) 、128 維 SIFT 時可達 \(10^6\) 維)。因此 FV 方法會先對描述子做空間金字塔池化,再取二階統計量(對區域內的 FV 做變異數),得到最終的影像級特徵。
結果#
FV 在 ImageNet 2010-2012 年的 ILSVRC 上連續奪冠(XRCE 方法),top-5 error 約 25.8%-26.2%,是手工路徑的頂點。
但它暴露了路徑 A 的結構性困境#
FV 的成功恰恰證明了手工路徑的極限所在:
- 它花了極大的工程量(統計建模、GMM 擬合、池化策略)來修復一個簡單的問題:把連續特徵離散化所造成的資訊損失。 而這個問題從一開始就不該出現。
- 它沒有解決任何一個失敗模式。 光照、視角、形變、背景雜亂、遮擋——FV 一個都沒碰。它只是把同一批局部描述子編碼得更精細。
- 它的維度與複雜度在爆炸: \(10^6\) 維的特徵必須用核 SVM 加強大的降維或近似,訓練與推論成本高昂。手工路徑已經從「簡潔優雅」滑向「複雜而脆弱」。
- 它是路徑 A 的頂點,也是終點。 2012 年之後,FV 的位置被 DeCAF 與 CNN 取代。
因果鏈的最後一環:FV 之所以存在,是因為 BoVW 把連續特徵離散化了;而離散化之所以存在,是因為文字處理有直方圖;這個借來的框架,最終要用統計建模的複雜度去買回它自己丟掉的資訊。深度學習的做法則更直接:不離散化,也不量化,直接讓網路學出一個連續的、端到端最佳化的表示。
3.3.5 DeCAF(2011):深度特徵第一次贏過手工特徵#
DeCAF 是什麼#
DeCAF(Deep Convolutional Activation Features)是 Jeff Donahue 等人於 2011 年發表在 ICML 的論文《DeCAF: A Deep Convolutional Activation Feature for Generic Visual Recognition》的一部分(論文題目是 ICML 2011 的大會主題論文)。
機制:
- 取 Krizhevsky, Sutskever, Hinton 2010 年的 CNN 架構(基於 ImageNet)
- 在 ImageNet 的無標籤子集上做監督式預訓練(用 1,000 類的標籤訓練,但用的是「ImageNet 資料的某個部分」)
- 取網路的中間層特徵作為通用的影像描述子(conv layer 6 的特徵,6,409 維)
- 在目標資料集(PASCAL VOC、Caltech-101、SUN)上另外訓練一個 SVM 做分類
關鍵結果#
DeCAF 在 PASCAL VOC 2011 上取得 mAP 0.6455,大幅超越所有手工特徵方法(最好的手工方法約 0.50-0.55)。在 Caltech-101 上也顯著領先。
這是機器視覺史上第一次:從資料學到的特徵,超越了人手設計的特徵。
為什麼這件事如此重要#
DeCAF 的結果改變了整個領域的論述。讓我們把機制拆開看:
DeCAF 做了什麼:
- 捲積層學到的濾波器(第一層)可以視覺化為 Gabor-like 的方向濾波器與彩色斑點濾波器
- 深層特徵層級遞增:低層是邊緣,中層是紋理/部件,深層是物件級的模式
- 這些特徵不是被設計的,而是被「分類 1000 類」這個目標反向塑形的
為什麼它有效——這裡有個關鍵的機制性解釋。CNN 有兩個歸納偏置(inductive bias)讓它比手工特徵更適合處理 3.3.2 節的失敗模式:
| 歸納偏置 | 手工特徵缺乏 | CNN 具備 |
|---|---|---|
| 局部性 | HOG 有固定的 cell 網格,SIFT 有固定的描述子視窗 | 捲積核在所有位置共享,天然對平移不變 |
| 權重共享 | 每個特徵位置的權重不同 | 一個濾波器在整張影像上共享,參數量暴降、可學到更通用的模式 |
| 層次組合 | HOG 是單層統計 | 第 \(k\) 層特徵是第 \(k-1\) 層特徵的組合,可學到「邊緣的邊緣」 |
| 非線性池化 | 直方圖是硬投票 | 池化提供部分平移/尺度不變 |
最重要的洞察:手工特徵設計師能做到的不變性,是人為選擇的(例如 HOG 對比度正規化、SIFT 的 DoG 尺度選擇)。CNN 做到的不變性是從資料中湧現的——因為資料裡就有這些變化,而分類損失會自動推動模型去尋找那些對損失不敏感的表示。
這是一個因果驅動的機制:分類誤差下降 → 需要區分同類的不同實例 → 那些區分不了的變因(光照、姿態、背景)必須被「抹平」→ 模型自動學到相應的不變性。人手設計特徵時做的是猜測哪些變因重要;深度學習是讓資料告訴它。
手工特徵 vs 深度特徵#
| 面向 | 手工特徵 | 深度特徵(DeCAF / CNN) |
|---|---|---|
| 來源 | 人手寫死的公式 | 從資料反向傳播學出 |
| 先驗注入方式 | top-down:設計者猜哪些特徵有用 | bottom-up:資料中什麼樣本多,就學什麼樣子 |
| 適應新類別 | 需重新設計特徵 | 只需重新訓練最後一層 |
| 對光照/姿態 | 人為設計的正規化 | 從資料湧現的不變性 |
| 描述子維度 | 3780(HOG)、128(SIFT)、1000(BoVW) | 4096(DeCAF fc6)、4096(AlexNet fc7) |
| 訓練成本 | 分類器訓練數分鐘 | 數天 GPU |
| 需要的標註量 | 中等 | 更多(這是關鍵限制) |
| 可解釋性 | 高(公式已知) | 低(但可視化過濾器) |
| 對「不存在」的類別 | 可嘗試設計特徵 | 無法(需要資料) |
DeCAF 的侷限#
DeCAF 是一個過渡性的方法,它的三個限制正是 2012 年 AlexNet 的起跳板:
限制一:仍然依賴 ImageNet。 DeCAF 的底層網路是在 ImageNet 上預訓練的。所以它沒有繞過資料瓶頸——它依賴一個必須先被人工標註才會存在的資料集。
限制二:仍然用 SVM 做最後一層。 也就是說,特徵是學來的,但分類器還是人工的。這是一個半成品。
限制三:算力門檻。 2010 年的 CNN 需要 GPU(GTX 580)才能訓練 DeCAF 這等級的模型——而且非常吃力。2011-2012 年初期的消費者 GPU 顯存(1-3 GB)勉強夠,但速度緩慢。
這三點直接導向 2012 年的必然性:
| DeCAF 的限制 | AlexNet 的解法 |
|---|---|
| 依賴 ImageNet 預訓練 | 仍然依賴 ImageNet——但這時 ImageNet 已是「既有資產」 |
| SVM 頂層 | 改成 softmax + dropout,端到端訓練 |
| GPU 訓練慢 | 針對 GPU 優化的捲積實作 + ReLU + data augmentation |
| 網路太大(DeCAF 用 4096 維 fc 層) | AlexNet 設計成可在 2-3 GB 顯存內訓練 |
關鍵的領悟:DeCAF 證明了「深度特徵有效」之後,下一步自然是「既然特徵能學,分類器也該能學,而且應該一起學」。這就是 AlexNet。
3.3.6 為什麼 2012 是分水嶺#
數字的量級#
AlexNet(Krizhevsky, Sutskever, Hinton, NeurIPS 2012)的 ImageNet top-5 error:
| 年份 | 冠軍方法 | top-5 error | 差距 |
|---|---|---|---|
| 2009 | NEC-UIUC (Sparse + Fisher Vector) | 28.2% | — |
| 2010 | XRCE (Fisher Vector) | 26.2% | -2.0 |
| 2011 | XRCE (Fisher Vector) | 25.8% | -0.4 |
| 2012 | AlexNet | 16.4% | -9.4 |
| 2013 | ZFNet | 11.7% | -4.7 |
| 2014 | GoogLeNet | 6.7% | -5.0 |
| 2015 | ResNet | 3.6% | -3.1 |
關鍵的比較:2009 到 2011 三年,冠軍方法的進步總共是 2.4 個百分點。而 AlexNet 一年之內就降低了 9.4 個百分點——是過去三年總進步的四倍。
AlexNet 的兩個決定性貢獻(時間上是分開的,但常被合稱):
- 2012 年 6 月 26 日:在 ILSVRC 競賽中提交冠軍結果(top-5 error 15.3%,後續修正為 16.4%),正式宣判手工特徵方法的死刑
- 2012 年 9 月 30 日:發表論文《ImageNet Classification with Deep Convolutional Neural Networks》,公布完整細節
量變引起質變的實證版本#
AlexNet 的成功有什麼「量變」?三個量同時變化了:
flowchart TD
D[資料量<br/>ImageNet 1.2M 影像<br/>1000 類別] --> R[結果]
C[算力<br/>2x GTX 580 3GB<br/>CUDA 卷積實作] --> R
A[架構<br/>ReLU + dropout<br/>data augmentation] --> R
R --> W[top-5 error 26.2% -> 16.4%<br/>超越過去三年總進步的四倍]三者是乘法關係,不是加法關係。 這一點極為重要:
- 只有 ReLU,沒有 GPU:LeNet-5 的做法在 1980-2000 年代已經被試過,在 CPU 上訓練 CNN 慢到不可行
- 只有 GPU,沒有大資料:GPU 的算力無處可用——1990 年代的 GPU 是拿來做圖形著色管的,不適合做捲積
- 只有大資料,沒有好架構:2011 年已有 ImageNet,有 GPU 訓練 CNN 的嘗試(如 Rainforth 等人的 CIFAR-10 實驗)並沒有擊敗手工特徵的方法
真正讓 AlexNet 成功的是三者的交集。 這個教訓對今天仍然重要:深度學習的突破往往不是單一技術的功勞。
AlexNet 為什麼成功:三個組件#
(一)ReLU。 \(f(x) = \max(0, x)\) 取代了 tanh/sigmoid。
在正半軸上梯度不消失。對比 sigmoid 在 \(|x|\) 大時梯度趨近 0(vanishing gradient)。這讓深層網路(5 個捲積層 + 3 個全連接層)能夠訓練。
實驗數據:Krizhevsky 等人在 CIFAR-10 上比較 ReLU 與 tanh,ReLU 的訓練速度約快 6 倍,收斂到相同錯誤率只需約 1/6 的 epoch。
(二)Dropout(及資料增強)。
Dropout 在訓練時以機率 \(p=0.5\) 隨機丟棄神經元,等價於在每個 epoch 訓練一個不同的子網路,測試時用"-dropout-的輸出做加權平均(inverted dropout 實作)。它提供指數級多的正則化。
AlexNet 同時用了: - data augmentation:隨機裁剪、水平翻轉、PCA-based color jitter - 這兩者結合,讓 1.2M 張影像的模型能泛化到 1000 類而不過擬合
(三)GPU + ReLU 的工程優化。 AlexNet 的捲積層在 GPU 上以 2 個 GPU 分開計算,訓練約 5-6 天。相較 2011 年最好的 GPU 卷積實作(Danielsson & oström),速度快了數倍。
為什麼 top-5 error 從 26% 降到 16% 是「質變」#
不只是一個數字。讓我們說清楚為什麼這個差距的意義不同於此前的任何進步。
(1)跨過了心理與工程門檻。 26% 的錯誤率意味著每 4 張圖就有 1 張認錯——不可用。16% 仍然不可用,但已經進入了「有商業價值的輔助工具」範疇。從 2012 年起,「用照片搜尋商品」變成了可做的產品。
(2)它推翻了整個領域的假設。 2000 年代的主流信念是「CNN 不適合視覺」,理由是:需要大量資料、訓練慢、沒有好的初始化、沒有有效的正則化。AlexNet 表明這些理由全部可以被工程手段解決,或者說當資料足夠多時,CNN 的歸納偏置優於手工特徵。
(3)它讓「特徵工程」從必要變成有害。 一旦深度特徵更好,人工設計的特徵就變成了瓶頸——你精心設計的 SIFT 描述子會丟失 CNN 保留的資訊。在 CNN 出現之前,人工特徵是「經驗的累積」;之後它變成了「需要被丟棄的包袱」。
(4)它開啟了一個新範式。 2013-2015 的所有進步(ZFNet、VGG、GoogLeNet、ResNet)都建立在 AlexNet 的架構之上——深層 CNN + GPU + 大資料這個組合。
一個常見誤解的澄清#
「AlexNet 證明了深度學習在所有視覺任務上更好。」
不對。 2012 年的 AlexNet:
- 只驗證了單一任務(ImageNet 大規模分類)
- 只驗證了一個資料集(ImageNet)
- 只驗證了一個網路架構
- 在小資料集上,深度方法的表現甚至更差(例如 2000-2015 年間,SVM 在 MNIST/CIFAR-10 小資料集上仍然有競爭力)
- 對非剛性形變、遮擋、細粒度辨識等問題的改善有限
AlexNet 真正證明的是:當資料量足夠時,學到的特徵會勝過手工特徵,而且這個差距隨資料量增大而擴大。 這個機制才是分水嶺的真正意義。
3.3.7 手工 pipeline 與學習 pipeline 的對照#
本章的收束:我們用一張圖總結這 17 年。
flowchart TD
subgraph HAND[手工 pipeline: 1995-2011]
H1[原始影像] --> H2[人工設計的特徵<br/>SIFT HOG Haar-like<br/>明確寫死的公式]
H2 --> H3[人工設計的聚合<br/>直方圖 空間金字塔<br/>量化 k-means]
H3 --> H4[傳統分類器<br/>SVM 隨機森林 AdaBoost<br/>梯度下降之外的優化]
H4 --> H5[預測]
H5 -.->|瓶頸: 標註資料| H6[受限于人類先驗<br/>無法涵蓋未想到的變化]
end
subgraph LEARN[學習 pipeline: 2012-]
L1[原始影像] --> L2[捲積層<br/>濾波器從資料學出<br/>共享權重提供局部性與參數效率]
L2 --> L3[池化 + 非線性<br/>提供部分平移尺度不變性]
L3 --> L4[更深層<br/>層次組合 邊緣到部件到物件]
L4 --> L5[全連接 + softmax<br/>端到端反向傳播]
L5 --> L6[預測]
L6 -.->|代價: 需要大量資料 大量算力| L7[被資料規模限制<br/>而非被人類想像力限制]
end
H6 ==>|2012 典範轉移| L7對照表#
| 面向 | 手工 pipeline | 學習 pipeline |
|---|---|---|
| 特徵來源 | 人手公式 | 反向傳播 |
| 先驗注入 | top-down,設計者猜 | bottom-up,資料湧現 |
| 適應新類別 | 需重新設計或大量手調 | 只訓最後幾層 |
| 資料需求 | 中等 | 大(但可 unlabeled pretrain) |
| 算力需求 | CPU 可 | 需 GPU |
| 可解釋性 | 高 | 低 |
| 對分布變化 | 脆弱 | 可透過增強與微調適應 |
| 2012 年的地位 | 已被取代 | 主流 |
本章建立的那個問題#
現在可以把 3.1、3.2、3.3 三節收成一句話:
1995-2012 年,人類花了 17 年把「影像分類」從不可能變成可競賽。但所有進步都發生在「特徵之後」——在分類器這個環節。而 17 年最重要的發現是:真正的瓶頸不在分類器,在特徵。
手工特徵是人類知識的手動編碼。手動編碼有兩個上限:一是設計者想像得到的情形,二是能夠形式化的變化。而真實世界的變化遠超這個範圍。
2012 年,深度學習給出了替代方案:不要手動編碼,讓資料自己編碼。 代價是需要資料與算力,而 ImageNet 與 GPU 恰好在 2009-2012 年同時到位。
這就回答了本章的問題:我們要的不是更好的特徵,而是能從資料中學出特徵的機制。
3.3.8 小結#
- 語義鴻溝以 Marr 的三級表徵框架為骨架:低階處理到高階語意之間的落差。手工特徵停在第 1 級,而且只到第 1 級的粗糙版本。
- 五種失敗模式:光照變化(乘法 vs 加性,Retinex 只解釋前者)、視角與尺度(2D 描述子無法區分形變與視角)、非剛性形變(聚合階段丟棄資訊)、背景雜亂(特徵被背景污染)、遮擋與稀疏觀測(描述子被稀釋)。每一種手工補救都代價高昂。
- 資料瓶頸:ImageNet 標註需 250,000+ 小時;AMT 讓它可工程化;PASCAL VOC 提供標準協定;ILSVRC 提供競賽動力。Fei-Fei 的洞見——人類才是瓶頸。
- DeCAF (2011) 第一次證明深度特徵勝過手工特徵(PASCAL VOC mAP 0.6455 vs ~0.50)。它的機制是 CNN 的歸納偏置讓不變性從資料湧現而非人手指定。
- 2012 是分水嶺:AlexNet 一年降 9.4 個百分點,是過去三年總進步的四倍。原因是資料 × 算力 × 架構三者的乘法,而非任何單一技術。
- 最重要的機制性教訓:手工特徵是 top-down 的先驗注入,深度特徵是 bottom-up 的資料驅動;兩者的差別不是精度,而是適應新情況的能力來源。
下一章,我們進入卷積神經網路本身:捲積、池化、感受野——把「局部性」與「權重共享」這兩個歸納偏置寫進架構,以及 AlexNet 究竟如何在 2 張 GTX 580 上完成那個不可能的訓練。