Leo Yeh's Blog

SAS 深度學習 (2)

教學目標

初步了解 SAS 深度學習中卷積神經網路的基本概念。

重點概念

首先卷積神經網路 (CNN) 主要由多個神經元和多個層所組成,主要有五個圖層類型,分別為輸入層、卷積層、池化層、完全連接層和輸出層所組成,不同圖層皆有不同的特定屬性和功能,像是透過卷積層和池化層提高運算的效率,並且增強模型能夠捕獲輸入分佈中的重要特徵點,更進一步增加模型的成效,因此卷積神經網路主旨在於將影像資料作為輸入,假設允許使用結構資訊,以利有更佳的運算效率,並且使用更少的儲存空間,至於卷積神經網路主要應用於影像分類和目標偵測,像是自動駕駛汽車、故障檢測、聊天機器人、…等其它實務應用。

接著輸入層主要儲存要進行分類的影像原始像素值,像是以常見的 CIFAR-10 資料集中的每個影像的高度為 32,寬度為 32,深度為三個顏色的通道,分別為藍色、綠色和紅色,所謂 CIFAR-10 資料集主要是由 10 個分類中的 60,000 個 32 x 32 彩色影像所組成,每個類別有 6,000 個影像,並且其中有 50,000 個訓練影像和 10,000 個測試影像,同時資料集分為五個訓練批次和一個測試批次,每個批次有 10,000 個影像,測試批次包含來自每個類別的 1,000 個隨機選擇的影像,而訓練批次包含隨機順序的剩餘影像,但是一些訓練批次可能包含來自一個類別的更多影像而不是另一個類別,以及訓練批次包含來自每個類別的 5,000 個影像。此外輸出層本上是與特定損失函數相關聯的完全連接層,其與特定的計算預測中誤差的損失函數相關聯,像是分類的 cross-entropy ,並且輸出層主要會進行類別的評分,以 CIFAR-10 資料集類別為例,其結果大小為 1 x 1 x 10,其中第三維度中的 10 個數字中的每一個都對應一個類別評分,並且類別評分將會對應至 CIFAR-10 中的 10 個影像類別集。

再來卷積層主要將卷積運算應用於輸入,並且計算連接至輸入中局部區域的神經元輸出,同時卷積也能夠反應出單個神經元對視覺刺激的反應,所以卷積層主要執行卷積神經網路的繁重工作任務,而卷積層主要使用過濾器來測量輸入與特徵的相似程度,過濾器主要是在訓練期間學習的權重向量,卷積神經網路學習過濾器,其精通於檢測特定類型的視覺特徵,像是直線、半圓、… 等,而過濾器的濾鏡通常具有較小的寬度和高度,並且與輸入有相同的深度,像是維度為 5 x 5 x 3 的濾鏡,濾鏡寬度為 5 像素,濾鏡高度為 5 像素,並且對於藍色、綠色和紅色的 3 色通道的濾鏡深度為 3。此外當我們使用 SAS 深度學習套件建立卷積神經網路時,無需為卷積層或池化層指定填充,系統將自動計算填充,以利在使用步幅 (Stride) 為 1 時,則會使得輸出影像大小不會被改變,也就是卷積之後的大小與卷積之前的大小完全相同,而當步幅 (Stride) 為 2 時,則會使得輸出影像大小的大小是輸入影像大小二分之一,而當步幅 (Stride) 為 3 時則會使得輸出影像大小的大小是輸入影像大小三分之一,依此類推,至於輸出影像大小的計算公式則為 ( ( ( n + 2p - f ) / s ) + 1 ) x ( ( n + 2p - f ) / s ) + 1 ),其中 n 為輸入維度、p 為填充維度、f 為濾鏡維度以及 s 為步幅 (Stride) 數。

最後池化層主要透過逐漸減小影像的空間維度和相關參數來簡化卷積層的輸出,池化層通常會放置在連續的卷積層之間,其中池化層的高度和寬度大小會進行最大值、最小值和平均值的計算減小影像表示的大小,因為池化顯著減少了要分析的參數數量,因此減少了計算數量,將也更有助於緩解過度擬合,這也是卷積神經網路的常見挑戰。此外最大池化是最受歡迎的池化層計算方式,最大池化在二維空間中應用移動窗口以選擇最大值,當使用大小為 2 x 2 的過濾器使用步幅 (Stride) 為 2 的池化層可減少 75% 的傳入資訊量,因此透過池化層產生的輸出資訊將有助於摘要,簡單來說,建模者更關心物件是否存在,而不是其確切的位置。

相關資源

⬅️ Go back