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

以在輸入上滑動小型濾波器(卷積核)並計算乘積和的卷積層為核心,再疊加池化層等所構成的神經網路。由於同一個濾波器在整個輸入上重複使用,參數比全連接層少得多,並能不受位置影響地取出影像中的輪廓、紋理等局部特徵。用於影像辨識、物件偵測、語音處理等。

日文名稱: 畳み込みニューラルネットワーク(CNN)

「卷積神經網路(CNN)」出現在2領域的2道練習題中(AI硬體與軟體堆疊, 機器學習基礎等)。

這個名詞所屬的領域: 機器學習基礎

卷積層的計算

卷積層例如將3×3的濾波器從影像左上角開始,以固定間隔(步幅)滑動,計算重疊的像素與濾波器權重的乘積和,產生特徵圖。輸出大小可用輸入大小N、濾波器大小F、填充P、步幅S表示為 (N + 2P − F) ÷ S + 1。一層會使用多個濾波器,各自取出垂直輪廓、水平輪廓、顏色變化等不同的特徵。越深的層,越會對眼睛、車輪等大而複雜的特徵產生反應。

參數少的原因

對3通道輸入使用64個3×3濾波器的卷積層,參數為 3 × 3 × 3 × 64 + 64 = 1792個,與輸入影像的大小無關。若把同樣32×32×3的影像接到有64個輸出的全連接層,需要 32 × 32 × 3 × 64 + 64 = 196672個參數。只看鄰近的像素(局部連接),以及在整體上重複使用同一個濾波器(權重共享),使其能以少量參數有效率地學習。

池化與整體架構

池化層以2×2等區域為單位取最大值(最大池化)或平均值來縮小資料,減少計算量,並使網路不易受位置微小偏移的影響。典型的CNN會堆疊數組卷積層、啟動函數(ReLU等)與池化層,最後以全連接層與softmax函數進行分類。使用讓訊號跳過層傳遞的殘差連接,即使是超過100層的深層網路也能訓練。

練習卷積神經網路(CNN)的題目

在卷積神經網路中,有時會用im2col等方法將卷積計算轉換為矩陣相乘來計算,其原因下列何者正確?

  1. A因為轉換後運算次數會變為十分之一
  2. B因為可以使用高度最佳化的矩陣相乘函式庫,以及張量核心等矩陣運算單元
  3. C因為轉換後記憶體使用量必定減少
查看答案與解析

正確答案:B. 因為可以使用高度最佳化的矩陣相乘函式庫,以及張量核心等矩陣運算單元

im2col是建立一個大矩陣,把進入卷積各個視窗的輸入值排成一欄,再以與排列濾波器的矩陣相乘來計算卷積的方法。雖然視窗重疊的部分會使輸入重複而增加記憶體,但可以直接使用數十年來持續最佳化的矩陣相乘函式庫,以及張量核心這類矩陣運算單元,因此整體而言通常會變快。也有不產生重複而達成相同效果的實作。

常見問題

卷積層的計算與數學上的卷積相同嗎?

許多框架所稱的卷積,嚴格來說是不翻轉濾波器而直接取乘積和的互相關運算。由於濾波器的權重是透過學習決定的,是否翻轉不會影響模型的性能。

CNN可以用在影像以外的地方嗎?

可以。語音波形與時間序列資料使用一維卷積,影片與醫學立體影像使用三維卷積。適合用於相鄰資料之間有關聯、排列成格狀的資料。

解析中的「卷積神經網路(CNN)」

出現「卷積神經網路(CNN)」的題目(2題)

  1. 在卷積神經網路中,有時會用im2col等方法將卷積計算轉換為矩陣相乘來計算,其原因下列何者正確?
  2. 將以大量資料訓練好的模型,用少量資料運用到其他任務的遷移學習,下列敘述何者適當?

半導體、電子電路與資訊計算工具

相關名詞

摺積(卷積) 張量核心(Tensor core) 遷移學習(Transfer learning) 主成分分析(PCA) 正規化(Regularization) 交叉驗證(Cross-validation) 非監督式學習(Unsupervised learning) 強化學習(Reinforcement learning) 啟動函數(Activation function) 梯度下降法(Gradient descent)

前往名詞解釋列表