什麼是卷積神經網路 (CNN)?

卷積神經網路 (Convolutional Neural Networks, CNN) 是深度學習中專門處理圖像識別的模型。 電腦看圖片的方式與人類不同,它們看到的是一堆數字(像素值)。CNN 透過一個小小的視窗(稱為卷積核 Kernel濾鏡 Filter)在圖片上滑動,計算局部特徵。

1. 輸入圖片 2. 濾鏡處理 (卷積) 3. 特徵圖 (Output)

第一步:卷積運算 (Convolution)

選擇濾鏡:

原始圖片 (15x15 像素)

滑鼠移動到這裡查看運算

濾鏡 / Kernel (3x3)

偵測垂直線條
運算過程 (點積 Sum of Products)
請將滑鼠停留在左側
原始圖片的像素上...
*註:Emoji 已被柵格化 (Rasterized) 為像素,並轉換為亮度數值進行計算。

特徵圖 Feature Map (13x13)

正值 (特徵強)
零/負值 (無特徵)
贊助商廣告

第二步:修正線性單元 (ReLU)

卷積運算可能會產生負數。ReLU (Rectified Linear Unit) 的作用非常簡單:把所有負數變為 0

Input: -50 → ReLU → Output: 0
Input: 120 → ReLU → Output: 120

第三步:池化 (Max Pooling)

池化層用於縮小圖片尺寸,減少運算量,同時保留最顯著的特徵。最常用的是 Max Pooling (最大池化)

10
85
20
5
➔ Max ➔
85

為什麼這些線條能變成貓? (深度學習的層次)

您現在在上面看到的只是 CNN 的第一層。這一層只負責看「哪裡有邊」。 這就像你在拼圖時,先把所有邊邊角角的碎片找出來一樣。 神經網路需要經過許多層的堆疊,才能將這些碎片拼成完整的貓。

第 1 層 (淺層)

邊緣與線條

我們目前在這裡。
電腦只看到線段,還不知道這是什麼。

第 10 層 (中層)

形狀與部位

耳朵?
眼睛?

後面的層會把線條組合起來,
開始認出「三角形」或「圓形」。

第 50 層 (深層)

完整物件

最後的層將部位拼在一起。
有了耳朵+眼睛+鬍鬚 = 貓!

CNN 學習知識庫 (FAQ)

Q: 為什麼圖像辨識要用 CNN 而不是一般的神經網路 (MLP)?

一般的全連接神經網路 (MLP) 會將圖片的所有像素「拉直」成一條長長的輸入向量,這會破壞圖片中「鄰近像素」的空間關係(例如眼睛通常在鼻子上面)。 相反地,CNN (卷積神經網路) 保留了圖片的二維結構,利用卷積 (Convolution) 來提取局部特徵,不僅大幅減少了運算參數量,還能有效地捕捉形狀、紋理等空間資訊。

Q: 卷積層 (Convolution Layer) 實際上在做什麼?

卷積層就像是一個「特徵篩選器」。它使用不同的小方塊(稱為 Kernel 或 Filter,如本網頁演示的 3x3 方塊)在圖片上滑動。 每一個 Filter 負責尋找一種特定的圖案,例如「垂直邊緣」、「水平邊緣」或「顏色變化」。當 Filter 掃描到符合它負責的圖案時,就會產生一個高數值(Feature Map 中的亮點),告訴電腦:「這裡有我找的東西!」。

Q: 為什麼需要 ReLU 修正線性單元?

卷積運算本質上是線性的(只是乘法和加法)。如果沒有激活函數,整個神經網路就只是一堆線性運算的疊加,無法解決複雜的問題。 ReLU (Rectified Linear Unit) 引入了「非線性」,它將所有負數歸零,保留正數。這有點像神經元的「點火」機制——只有當訊號夠強(大於 0)時才傳遞下去,這讓神經網路能學習更複雜的特徵。

Q: 池化層 (Pooling) 會讓圖片變模糊,為什麼還要用?

雖然池化層(如 Max Pooling)確實會丟失部分細節,但這正是它的目的!它能: 1. 減少運算量:將圖片尺寸縮小(例如從 100x100 變 50x50),減少後續層的參數。 2. 防止過擬合 (Overfitting):去除不必要的雜訊,只保留最強的特徵。 3. 平移不變性 (Translation Invariance):即使貓咪稍微往左或往右移動一點,Max Pooling 仍然能抓到「有貓耳朵」這個特徵,讓辨識更穩健。