什麼是卷積神經網路 (CNN)?
卷積神經網路 (Convolutional Neural Networks, CNN) 是深度學習中專門處理圖像識別的模型。 電腦看圖片的方式與人類不同,它們看到的是一堆數字(像素值)。CNN 透過一個小小的視窗(稱為卷積核 Kernel 或 濾鏡 Filter)在圖片上滑動,計算局部特徵。
第一步:卷積運算 (Convolution)
原始圖片 (15x15 像素)
滑鼠移動到這裡查看運算
濾鏡 / Kernel (3x3)
原始圖片的像素上...
特徵圖 Feature Map (13x13)
第二步:修正線性單元 (ReLU)
卷積運算可能會產生負數。ReLU (Rectified Linear Unit) 的作用非常簡單:把所有負數變為 0。
Input: 120 → ReLU → Output: 120
第三步:池化 (Max Pooling)
池化層用於縮小圖片尺寸,減少運算量,同時保留最顯著的特徵。最常用的是 Max Pooling (最大池化)。
為什麼這些線條能變成貓? (深度學習的層次)
您現在在上面看到的只是 CNN 的第一層。這一層只負責看「哪裡有邊」。 這就像你在拼圖時,先把所有邊邊角角的碎片找出來一樣。 神經網路需要經過許多層的堆疊,才能將這些碎片拼成完整的貓。
邊緣與線條
我們目前在這裡。
電腦只看到線段,還不知道這是什麼。
形狀與部位
後面的層會把線條組合起來,
開始認出「三角形」或「圓形」。
完整物件
最後的層將部位拼在一起。
有了耳朵+眼睛+鬍鬚 = 貓!
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 仍然能抓到「有貓耳朵」這個特徵,讓辨識更穩健。