機器學習範例:圖片分類

卷積類神經網路簡介

建構圖片分類模型的突破之處,在於探索可用於使用卷積類神經網路 (CNN) 逐步擷取較高層級的圖片內容表示法。CNN 只會將圖片的原始像素資料做為輸入內容,並「瞭解」如何擷取圖片,藉此瞭解材質和形狀等特徵,而不是擷取資料。

首先,CNN 會接收輸入特徵對應,其中前 2 個維度的大小對應到圖片的寬度和寬度 (以像素為單位)。第三個尺寸為 3 (對應至顏色圖片的 3 個管道:紅色、綠色和藍色)。CNN 包含一組模組,每個模組會執行三個作業。

1. 卷積

「卷積」會擷取輸入特徵對應的圖塊,並為其套用篩選器以計算新功能,產生輸出特徵地圖或卷積特徵 (大小可能與輸入特徵對應不同)。卷積由兩個參數定義:

  • 擷取的圖塊大小 (通常是 3x3 或 5x5 像素)。
  • 輸出特徵對應的深度,對應已套用的篩選器數量。

在卷積期間,篩選器 (與圖塊大小相同的矩陣) 會有效在輸入特徵貼圖與方向上垂直滑過一個像素,一次一個像素,並擷取每個對應圖塊 (請參閱圖 3)。

3x3 卷積在 4x4 特徵對應上 圖 3. 深度 1 的 3x3 卷積在 5x5 輸入特徵圖 (以及深度 1) 上執行。有 9 個可能的 3x3 位置從 5x5 功能對應中擷取圖塊,因此卷積會產生 3x3 的輸出特徵對應。

針對各個篩選器圖塊組合,CNN 會對元素矩陣和圖塊矩陣進行元素擴展的乘法,然後加總結果矩陣的所有元素以取得單一值。每個篩選器圖塊組合的每一個結果值都會輸出至合併特徵矩陣 (請參閱圖 4a 和 4b)。

5x5 特徵對應和 3x3 卷積 圖 4a. :5x5 輸入特徵對應 (深度 1)。:3x3 卷積 (深度 1)。

圖 4b. :3x3 卷積在 5x5 輸入特徵對應上執行。:產生的捲積特徵。按一下輸出特徵對應中的某個值,即可查看相關計算方式。

在訓練期間,CNN 會「學習」,讓篩選器矩陣從輸入特徵對應中擷取有意義的特徵 (紋理、邊緣、形狀)。隨著輸入內容套用的篩選器 (輸出特徵對應深度) 數量增加,CNN 可擷取的特徵數量也會增加。不過,優缺點是 CNN 使用的大部分資源是由 CNN 使用,因此訓練量會隨著更多篩選條件增加。此外,新增至網路的每項篩選器提供的值都比前一個值少,因此工程師希望建構網路時,能夠使用擷取所需圖片分類功能所需的最少篩選器數量。

2. 邏輯驗證

每次卷積運算後,CNN 都會對經過校正的特徵套用修正後的線性單位 (ReLU) 轉換,藉此將非線性方式導入模型。ReLU 函式 \(F(x)=max(0,x)\)會針對 x 的所有值傳回 x,並針對 x 的所有值傳回 0 ≤ 0。

3. 集區

ReLU 進入集區步驟後,CNN 會降低卷積特徵 (為了節省處理時間),減少特徵對應的維度數量,同時仍保留最重要的特徵資訊。這項程序的常用演算法稱為「集區集區」

最大集區的運作方式與卷積類似。我們會在功能對應上滑動並擷取指定大小的圖塊。每個圖塊的最大值會輸出至新的特徵對應,而所有其他值都會遭到捨棄。集區集區作業使用兩個參數:

  • 集區集區篩選器的大小 (通常為 2x2 像素)
  • 步伐:以像素為單位的距離,將每個擷取的圖塊分隔開來。與卷積不同的是,在最大集區中,篩選條件會以像素為單位在特徵地圖像素上滑動,因此步幅會決定每個圖塊的擷取位置。針對 2x2 篩選器,2 的步長表示最大集區運算會從特徵地圖擷取所有非重疊的 2x2 圖塊 (請參閱圖 5)。

4x4 特徵地圖的最大集區動畫,其中包含 2x2 濾鏡和 2 步

圖 5. :在 4x4 特徵對應上執行的最大集區集區,包含 2x2 篩選器和 2 步。:最大集區作業的輸出內容。請注意,產生的特徵對應是 2x2,且只會保留每個圖塊的最大值。

完全連結圖層

卷積類神經網路結尾是一或多個完整層 (當兩個層「完全連線」時,第一個層中的每個節點都會連結至第二個圖層中的每個節點)。他們的工作會根據卷積的特徵執行分類。一般而言,最終的完整連結層包含 softmax 啟用函式,可針對模型嘗試預測的每個分類標籤,輸出 0 到 1 的機率值。

圖 6 說明卷積類神經網路的端對端結構。

卷積類神經網路的端對端圖表,顯示輸入、兩個卷積模組以及兩個完全連接的分類層

圖 6. 這裡顯示的 CNN 包含兩個用於壓縮擷取的捲積模組 (卷積 + ReLU + 集區),以及兩個用於分類的完整層。其他 CNN 可能包含更多或更小型的計算模組,以及更完整或更完整的完整連結層。工程師通常會進行實驗,找出最能為模型產生最佳設定的設定。