CNN核心概念理解


卷積神經網絡 (Convolutional Neural Networks,簡稱CNN),是一種經典的神經網絡算法。由於在圖像識別領域取得的良好效果,隨着人工智能的火熱,它也受到越來越多的關注。CNN的核心概念卷積、池化聽起來好像很神秘,了解之后會發現其實也並不復雜。本文試圖用通俗的語言,簡明扼要地介紹這些關鍵的概念,給讀者帶來一個直觀的理解。作者在文章最后給出了一些參考資料,以便讀者進一步參考。

一、為什么要提出CNN?

我們知道CNN是一種基於神經網絡的算法。而傳統的神經網絡,多層感知機(MLP),在圖像識別領域的效果並不好。原因也很容易理解:按照傳統網絡的觀點,要處理圖像,需要將圖片按行展開,每一個像素就是一個輸入。可想而知,參數數量會多么巨大,而這又會帶來更多問題:需要龐大的數據集、漫長的訓練時間不說,還容易帶來讓人頭疼的過擬合問題。

以手寫體識別為例,一個圖像經過平移、旋轉、縮放等變換會呈現出不同的姿態。人類很容易應對這種變換,但是對於傳統的神經網絡來說,其泛化能力就不足以處理這些變換了。

還有一個問題,圖像本身帶有拓撲結構——典型的二維結構。而傳統的全連接網絡不能有效利用這種結構。在進入神經網絡之前,這些重要的結構信息就已經被破壞掉了。為了解決上面提到的各種問題,LeCun在1998年提出了LeNet,從此CNN應運而生。

 

二、什么是卷積?

首先來看看“卷積”這個關鍵概念。首先需要明確的是,卷積不是在CNN中被提出的,而是一種有着廣泛應用的數學運算,有明確的數學定義和物理意義。在圖像處理領域常常使用卷積操作,很多圖像處理操作比如模糊、銳化等都可以通過卷積來實現。

下面來看看CNN中卷積運算是怎么進行的:對於給定的一幅圖像來說,給定一個卷積核,卷積操作就是根據卷積窗口進行加權求和。卷積窗口在整個圖片上滑動,在每一個位置輸出一個數值,最終仍然輸出一個矩陣。如下圖所示:

在圖像處理中,卷積核是已知的。而在CNN的卷積層,卷積核的參數也是需要訓練的。在LeCun的論文中,他使用局部感受野的概念來解釋其原理。考慮到人類在感知目標時總是從局部到總體、從片面到全面的,這樣就從神經科學的角度解釋了卷積層的原理。本文從另一個角度解釋,卷積可以視為圖像處理的操作,但是圖像變換的參數是未知的,需要從數據集中學習得到。這正是機器學習方法擅長的套路。

希望上面的解釋能使讀者對卷積產生一個直觀的認識。實際上CNN中的卷積和數學上的卷積並不完全一致,如果想要進一步理解卷積的概念和應用,可以參閱下面給出的參考資料。

  • http://setosa.io/ev/image-kernels/,以交互的方式理解圖像處理中的卷積
  • https://www.zhihu.com/question/22298352/answer/228543288,對卷積運算的通俗理解
  • https://blog.csdn.net/lz0499/article/details/70195284,從數字信號處理角度理解卷積,包括在圖像領域中的應用

 

三、什么是池化?

LeNet5中第一個隱藏層是卷積層,第二個隱藏層就是池化層。池化,實際上也沒有聽上去那么神秘,其實就是圖片下采樣 (sub-sampling)。具體來說就是對圖片的每個子區域進行聚合統計,例如最大值、平均值等。得到的效果是相鄰的幾個像素合並成一個像素。下面舉一個例子 (2, 2) 最大池化的例子。

假設原圖是一張4 * 4的圖片,(2, 2) 池化就是對相鄰的4個像素,取最大值作為下采樣后的像素值。計算過程如下所示:

經過此次下采樣,我們得到處理后的圖片為:

池化的方法還有很多,比如可以使用不同的聚合函數,還有重疊采樣的池化等。那么在神經網絡中加入池化層有什么作用呢?首先,很明顯地,經過池化后像素點的個數大大減少了,訓練參數的數量也隨之下降。在計算能力足夠的情況下是不是就不需要池化了呢?也不是的,池化的過程省略掉了圖片的一些細節,這樣有利於避免過擬合,增加模型的泛化性能。

四、全連接層

在經過若干次卷積和池化之后,特征圖被送到全連接層進行分類。全連接層的功能相當於經典的前向全連接網絡,因此作為分類器是非常自然的。回過頭來看CNN的整體架構,可以把卷積和池化的步驟看做是特征提取的過程,把最后的全連接層看做一個分類器。這就回歸到機器學習的經典套路了,理解這種結構也比較自然了。

五、總結

本文簡要介紹了CNN中的幾個關鍵性的概念,力圖清晰,不求全面。最后,作者也是剛剛接觸深度學習不久,如有謬誤之處,還請批評指正。

參考資料

  • 《Gradient-Based Learning Applied to Document Recognition》,LeCun經典之作
  • https://blog.csdn.net/hjimce/article/details/47323463,包含了理論和實戰部分
  • https://my.oschina.net/u/876354/blog/1620906,給出了很不錯的例子
  • https://blog.csdn.net/qianqing13579/article/details/71076261:翻譯了LeNet論文部分篇章


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM