CNN 與影像辨識:從 filter 到特徵金字塔
本頁為依教材與考古題整理的原創摘要;考古題答案經技術覆核,但不是官方答案。
考古題證據邊界: im-it-ai-cnn-rnn-sequence 目前沒有 direct primary past-paper refs,本課為教材導向的進階補充。
第一次接觸也沒關係
這堂先懂這些詞
先記住白話意思,不必急著背英文。看到正文時,再把正式名稱接回來。
CNN、RNN 與 LSTM
也會看到:CNN、convolutional neural network、RNN、LSTMCNN 擅長利用局部與共享模式;RNN/LSTM 以序列狀態處理前後次序資訊。
- 生活例子:
- CNN 像在照片各處找同一種圖案,RNN/LSTM 像讀句子時保留前文線索。
- 別搞混:
- 這是典型設計偏好,不代表 CNN 只能看圖片或 RNN 一定最適合所有序列。
神經網路
也會看到:neural network、layer、weight、activation function、神經網路由多層可調參數的計算單元組成,透過資料調整權重來近似複雜關係。
- 生活例子:
- 像一排排篩選站,各站把前一站訊息重新加權後再傳下去。
- 別搞混:
- 名稱來自生物啟發,但不是大腦的完整複製品。
過度擬合與模型評估
也會看到:overfitting、training set、validation set、test set、precision、recall過度擬合是模型太會記訓練資料卻不會應付新資料,需用未參與訓練的資料與合適指標檢查。
- 生活例子:
- 背熟題庫答案卻遇到改寫題就不會,是過度擬合的生活版。
- 別搞混:
- 訓練分數高不等於模型好;accuracy 也不適合所有不平衡問題。
監督式與非監督式學習
也會看到:supervised learning、unsupervised learning、label、監督式學習、非監督式學習監督式學習從有答案標籤的例子學預測,非監督式學習則從無標籤資料找結構。
- 生活例子:
- 用已標垃圾郵件訓練分類器是監督式;自動把客群分群是非監督式。
- 別搞混:
- 監督式不是有人每一步盯著模型,非監督式也不是完全沒有目標。
深入 CNN 的卷積運算、pooling 策略與典型架構演進(LeNet → VGG → ResNet),理解 feature map 的階層語義,並以 transfer learning 連結預訓練模型與下游任務。補齊零考古題的 CNN 子題。
先抓住這幾件事
- 說明 convolution filter 如何在 input 上滑動並產生 feature map
- 區分 max pooling 與 average pooling 的取捨
- 以 ResNet 的 skip connection 解釋為何更深的網路不一定更難訓練
- 說明 transfer learning 如何將預訓練的 feature extractor 接上新任務
先想像這個場景
圖書館自動分類系統
圖書館想自動辨識書封上的圖案來分類:掃描器用固定大小的視窗逐格檢查,每層看到越來越複雜的圖樣(邊緣→紋理→物件),最後壓縮成一個分類標籤。
先別急著往下看,花十秒想一想:
如果把一本偵探小說的書封左移 5 像素,系統還能正確分類嗎?
把故事換成電腦語言
| 生活中的角色 | 對應到 | 技術概念 |
|---|---|---|
| 固定大小視窗逐格掃描書封 | Convolution filter sliding over input | |
| 每層看到更複雜的圖樣 | Hierarchical feature extraction | |
| 壓縮成一個代表值 | Pooling reduces spatial dimensions | |
| 借用已訓練好的辨識器只換分類頭 | Transfer learning with pre-trained backbone |
題目出現這些字,先想到
- Convolution 的 parameter sharing 讓同一 filter 偵測所有位置的 pattern。
- Max pooling 取最大值,average pooling 取平均值。
- ResNet 的 skip connection 解決深層網路的 degradation problem。
- Transfer learning 分 feature extraction(凍結)和 fine-tuning(微調)兩種模式。
1.Convolution 提取局部空間特徵
CNN 的核心運算是 convolution:一個小型 filter(通常 3×3 或 5×5)在 input 上滑動,每個位置計算 element-wise multiply 再加總,產生一個 feature map 的值。同一個 filter 在所有位置共享 weights,這就是 parameter sharing — 讓 CNN 能偵測位移不變的局部 pattern(如邊緣、角落、紋理),且參數量遠小於 fully connected layer。
- Filter size 決定 receptive field,stride 決定 output resolution
- Padding 用來控制 output 尺寸,常見 same padding 保持 input 大小
- 多個 filters 產生多個 feature maps,每個偵測不同 pattern
- Parameter sharing 是 CNN 高效的關鍵:一個 3×3 filter 只有 9 個 weights
2.Pooling 壓縮空間保留語義
Pooling layer 降低 feature map 的空間尺寸,保留重要特徵同時減少運算量。Max pooling 取 window 內最大值,保留最強 activation;average pooling 取平均值,保留整體分布。Global average pooling 將整張 feature map 壓成一個數值,常用在最後的分類層之前,取代 fully connected layer。
- Max pooling 對微小位移提供 translation invariance
- Average pooling 保留更多空間資訊但可能模糊 strong activation
- Pooling 不含可學習參數,純粹是降維操作
- 現代架構有時用 stride > 1 的 convolution 取代 pooling
3.從 LeNet 到 ResNet:深度的挑戰與解法
LeNet(1998)用 5 層處理手寫數字;VGG(2014)證明堆疊 3×3 filters 到 16-19 層能大幅提升效果;但更深的網路遇到 vanishing gradient 與 degradation problem — training accuracy 反而下降。ResNet(2015)引入 skip connection:每個 block 的 output 加上 input(y = F(x) + x),讓 gradient 有直接通路,使 100+ 層的訓練成為可能。
- VGG 用多個 3×3 取代大 filter,receptive field 相同但參數更少
- Degradation 不是 overfitting — training error 也上升
- Skip connection 讓 block 只需學習 residual F(x) = y - x
- ResNet-50 是許多 transfer learning 任務的預設 backbone
4.Transfer learning 讓預訓練知識可重用
在大型資料集(如 ImageNet)預訓練好的 CNN 已學到通用的視覺特徵:低層是邊緣和紋理,高層是物件部件和語義。Transfer learning 凍結或微調這些層,只重新訓練最後的分類頭,讓小資料集也能達到好效果。這是目前最常見的 CNN 應用方式。
- Feature extraction 模式:凍結所有卷積層,只訓練分類層
- Fine-tuning 模式:以較小 learning rate 微調部分或全部卷積層
- 預訓練模型的底層特徵通常可跨 domain 重用
- 資料量越少越應偏向 feature extraction,避免 overfitting
一起拆題目
範例 1:一個 3×3 filter 在 32×32 input 上以 stride=1、padding=0 滑動,output feature map 大小是多少?
- Output size = (input - filter + 2*padding) / stride + 1
- = (32 - 3 + 0) / 1 + 1 = 30
- Output 是 30×30
所以答案是:30×30。每邊少了 (filter_size - 1) / 2 = 1 個像素。
範例 2:為什麼 ResNet-152 的 training error 比 plain 56-layer network 還低?
- Plain network 深度增加後遇到 degradation — training error 反而上升。
- ResNet 的 skip connection 讓 gradient 直接流過,解決 gradient vanishing。
- 每個 block 只需學 residual,worst case 是 identity mapping。
所以答案是:Skip connection 確保加深不會比淺網路差,gradient 有直接通路。
這裡最容易選錯
- 把 pooling 當成有可學習參數的操作
- 認為更深的網路一定更好(忽略 degradation)
- 把 transfer learning 的 feature extraction 和 fine-tuning 混為一談
- 認為 CNN 只能處理影像(也可處理 1D signal 和 structured grid data)
換你快速判斷
先在心中作答,再展開答案。答不出來時,回頭找本課的對照關係。
再到題庫找辨識線索
這個基礎主題在現有考古題中沒有可確認的直接題,所以不會為了湊數量而硬連題目。可回到完整題庫,練習辨識它與相鄰概念的關係。
瀏覽資訊科技概論題庫