「卷積層 (Convolutional Layer)」是卷積神經網路 (CNN) 中最核心的組成部分,它負責從輸入圖像中提取各種視覺特徵。
卷積層的主要功能:
- 特徵提取 (Feature Extraction): 通過使用一系列可學習的濾波器(或稱為卷積核),卷積層能夠自動地從輸入圖像中提取出有意義的局部模式,例如邊緣、角點、紋理、顏色梯度等。
- 降低參數量 (Parameter Reduction): 由於卷積層中的濾波器會在整個輸入圖像上滑動並重複使用相同的權重(權重共享),因此相較於全連接層,卷積層的參數數量大大減少,這有助於防止過擬合並提高訓練效率。
- 保留空間關係 (Spatial Relationship Preservation): 卷積運算考慮了像素之間的空間鄰近關係,這對於處理圖像這種具有空間結構的數據非常重要。
- 濾波器 (Filters / Kernels): 卷積層包含一個或多個小的權重矩陣,這些權重矩陣就是濾波器或卷積核。每個濾波器負責檢測輸入圖像中的一種特定特徵。濾波器的大小通常是小的奇數方形矩陣,例如 3x3、5x5 等。
- 卷積運算 (Convolution Operation):
- 卷積層會將每個濾波器在輸入圖像上滑動(或稱卷積),從左到右、從上到下。 在滑動的每一個位置,濾波器會與輸入圖像中對應大小的局部區域進行點乘(element-wise multiplication),然後將所有乘積相加,得到一個單個的輸出值。 這個輸出值就代表了在該位置上,輸入圖像與該濾波器所要檢測的特徵的相似程度。
- 步長 (Stride): 濾波器在輸入圖像上滑動時,每次移動的像素數量稱為步長。步長的大小決定了輸出特徵圖的尺寸。步長越大,輸出特徵圖的尺寸越小。
- 填充 (Padding): 在進行卷積運算之前,有時會在輸入圖像的邊緣填充額外的像素(通常是 0)。填充的目的是控制輸出特徵圖的尺寸,或者使得邊緣像素也能被充分地卷積。常見的填充方式有:
- Valid Padding (No Padding): 不進行填充,輸出特徵圖的尺寸會小於輸入圖像。 Same Padding: 填充足夠的像素,使得輸出特徵圖的尺寸與輸入圖像相同(通常用於步長為 1 的情況)。
- 特徵圖 (Feature Maps): 對輸入圖像使用一個濾波器進行卷積運算後,會得到一個二維的輸出矩陣,稱為特徵圖或激活圖 (activation map)。每個特徵圖對應一個濾波器,並反映了該濾波器在輸入圖像不同位置上的響應強度。如果卷積層包含多個濾波器,那麼輸出就會是多個特徵圖的疊加。
- 激活函數 (Activation Function): 在卷積運算之後,通常會對特徵圖的每個元素應用一個非線性激活函數(例如 ReLU),以引入非線性特性。
總結來說,卷積層通過在輸入圖像上滑動可學習的濾波器來提取局部特徵。濾波器的權重會在訓練過程中自動學習,以檢測對分類或其他任務有用的視覺模式。通過調整濾波器的大小、數量、步長和填充等參數,可以控制卷積層的行為和輸出。