卷積神經網絡概念與原理

2021-02-13 機器人網
一、卷積神經網絡的基本概念

       受Hubel和Wiesel對貓視覺皮層電生理研究啟發,有人提出卷積神經網絡(CNN),Yann Lecun 最早將CNN用於手寫數字識別並一直保持了其在該問題的霸主地位。近年來卷積神經網絡在多個方向持續發力,在語音識別、人臉識別、通用物體識別、運動分析、自然語言處理甚至腦電波分析方面均有突破。

       卷積神經網絡與普通神經網絡的區別在於,卷積神經網絡包含了一個由卷積層和子採樣層構成的特徵抽取器。在卷積神經網絡的卷積層中,一個神經元只與部分鄰層神經元連接。在CNN的一個卷積層中,通常包含若干個特徵平面(featureMap),每個特徵平面由一些矩形排列的的神經元組成,同一特徵平面的神經元共享權值,這裡共享的權值就是卷積核。卷積核一般以隨機小數矩陣的形式初始化,在網絡的訓練過程中卷積核將學習得到合理的權值。共享權值(卷積核)帶來的直接好處是減少網絡各層之間的連接,同時又降低了過擬合的風險。子採樣也叫做池化(pooling),通常有均值子採樣(mean pooling)和最大值子採樣(max pooling)兩種形式。子採樣可以看作一種特殊的卷積過程。卷積和子採樣大大簡化了模型複雜度,減少了模型的參數。

二、卷積神經網絡的應用場景

三、卷積神經網絡的原理

3.1 神經網絡

       首先介紹神經網絡,這一步的詳細可以參考資源1。簡要介紹下。神經網絡的每個單元如下:

       其對應的公式如下:

       其中,該單元也可以被稱作是Logistic回歸模型。當將多個單元組合起來並具有分層結構時,就形成了神經網絡模型。下圖展示了一個具有一個隱含層的神經網絡。

        其對應的公式如下:

       比較類似的,可以拓展到有2,3,4,5,…個隱含層。

       神經網絡的訓練方法也同Logistic類似,不過由於其多層性,還需要利用鏈式求導法則對隱含層的節點進行求導,即梯度下降+鏈式求導法則,專業名稱為反向傳播。關於訓練算法,本文暫不涉及。

3.2 卷積神經網絡

       受Hubel和Wiesel對貓視覺皮層電生理研究啟發,有人提出卷積神經網絡(CNN),Yann Lecun 最早將CNN用於手寫數字識別並一直保持了其在該問題的霸主地位。近年來卷積神經網絡在多個方向持續發力,在語音識別、人臉識別、通用物體識別、運動分析、自然語言處理甚至腦電波分析方面均有突破。

       卷積神經網絡與普通神經網絡的區別在於,卷積神經網絡包含了一個由卷積層和子採樣層構成的特徵抽取器。在卷積神經網絡的卷積層中,一個神經元只與部分鄰層神經元連接。在CNN的一個卷積層中,通常包含若干個特徵平面(featureMap),每個特徵平面由一些矩形排列的的神經元組成,同一特徵平面的神經元共享權值,這裡共享的權值就是卷積核。卷積核一般以隨機小數矩陣的形式初始化,在網絡的訓練過程中卷積核將學習得到合理的權值。共享權值(卷積核)帶來的直接好處是減少網絡各層之間的連接,同時又降低了過擬合的風險。子採樣也叫做池化(pooling),通常有均值子採樣(mean pooling)和最大值子採樣(max pooling)兩種形式。子採樣可以看作一種特殊的卷積過程。卷積和子採樣大大簡化了模型複雜度,減少了模型的參數。卷積神經網絡的基本結構如圖所示:


       卷積神經網絡由三部分構成。第一部分是輸入層。第二部分由n個卷積層和池化層的組合組成。第三部分由一個全連結的多層感知機分類器構成。

3.2.1局部感受野

       卷積神經網絡有兩種神器可以降低參數數目,第一種神器叫做局部感知野。一般認為人對外界的認知是從局部到全局的,而圖像的空間聯繫也是局部的像素聯繫較為緊密,而距離較遠的像素相關性則較弱。因而,每個神經元其實沒有必要對全局圖像進行感知,只需要對局部進行感知,然後在更高層將局部的信息綜合起來就得到了全局的信息。網絡部分連通的思想,也是受啟發於生物學裡面的視覺系統結構。視覺皮層的神經元就是局部接受信息的(即這些神經元只響應某些特定區域的刺激)。如下圖所示:左圖為全連接,右圖為局部連接。

        在上右圖中,假如每個神經元只和10×10個像素值相連,那麼權值數據為1000000×100個參數,減少為原來的萬分之一。而那10×10個像素值對應的10×10個參數,其實就相當於卷積操作。

3.2.3 權值共享

       但其實這樣的話參數仍然過多,那麼就啟動第二級神器,即權值共享。在上面的局部連接中,每個神經元都對應100個參數,一共1000000個神經元,如果這1000000個神經元的100個參數都是相等的,那麼參數數目就變為100了。

       怎麼理解權值共享呢?我們可以這100個參數(也就是卷積操作)看成是提取特徵的方式,該方式與位置無關。這其中隱含的原理則是:圖像的一部分的統計特性與其他部分是一樣的。這也意味著我們在這一部分學習的特徵也能用在另一部分上,所以對於這個圖像上的所有位置,我們都能使用同樣的學習特徵。

       更直觀一些,當從一個大尺寸圖像中隨機選取一小塊,比如說 8x8 作為樣本,並且從這個小塊樣本中學習到了一些特徵,這時我們可以把從這個 8x8 樣本中學習到的特徵作為探測器,應用到這個圖像的任意地方中去。特別是,我們可以用從 8x8 樣本中所學習到的特徵跟原本的大尺寸圖像作卷積,從而對這個大尺寸圖像上的任一位置獲得一個不同特徵的激活值。

       如下圖所示,展示了一個3×3的卷積核在5×5的圖像上做卷積的過程。每個卷積都是一種特徵提取方式,就像一個篩子,將圖像中符合條件(激活值越大越符合條件)的部分篩選出來。

3.2.4 多卷積核

       上面所述只有100個參數時,表明只有1個10*10的卷積核,顯然,特徵提取是不充分的,我們可以添加多個卷積核,比如32個卷積核,可以學習32種特徵。在有多個卷積核時,如下圖所示:

       上圖右,不同顏色表明不同的卷積核。每個卷積核都會將圖像生成為另一幅圖像。比如兩個卷積核就可以將生成兩幅圖像,這兩幅圖像可以看做是一張圖像的不同的通道。如下圖所示,下圖有個小錯誤,即將w1改為w0,w2改為w1即可。下文中仍以w1和w2稱呼它們。

      下圖展示了在四個通道上的卷積操作,有兩個卷積核,生成兩個通道。其中需要注意的是,四個通道上每個通道對應一個卷積核,先將w2忽略,只看w1,那麼在w1的某位置(i,j)處的值,是由四個通道上(i,j)處的卷積結果相加然後再取激活函數值得到的。

       所以,在上圖由4個通道卷積得到2個通道的過程中,參數的數目為4×2×2×2個,其中4表示4個通道,第一個2表示生成2個通道,最後的2×2表示卷積核大小。

3.2.5 Down-pooling

       在通過卷積獲得了特徵 (features) 之後,下一步我們希望利用這些特徵去做分類。理論上講,人們可以用所有提取得到的特徵去訓練分類器,例如 softmax 分類器,但這樣做面臨計算量的挑戰。例如:對於一個 96X96 像素的圖像,假設我們已經學習得到了400個定義在8X8輸入上的特徵,每一個特徵和圖像卷積都會得到一個 (96 − 8 + 1) × (96 − 8 + 1) = 7921 維的卷積特徵,由於有 400 個特徵,所以每個樣例 (example) 都會得到一個 7921 × 400 = 3,168,400 維的卷積特徵向量。學習一個擁有超過 3 百萬特徵輸入的分類器十分不便,並且容易出現過擬合 (over-fitting)。

       為了解決這個問題,首先回憶一下,我們之所以決定使用卷積後的特徵是因為圖像具有一種「靜態性」的屬性,這也就意味著在一個圖像區域有用的特徵極有可能在另一個區域同樣適用。因此,為了描述大的圖像,一個很自然的想法就是對不同位置的特徵進行聚合統計,例如,人們可以計算圖像一個區域上的某個特定特徵的平均值 (或最大值)。這些概要統計特徵不僅具有低得多的維度 (相比使用所有提取得到的特徵),同時還會改善結果(不容易過擬合)。這種聚合的操作就叫做池化 (pooling),有時也稱為平均池化或者最大池化 (取決於計算池化的方法)。

       

       子採樣有兩種形式,一種是均值子採樣(mean-pooling),一種是最大值子採樣(max-pooling)。兩種子採樣看成特殊的卷積過程,如圖下圖所示:

       (1)均值子採樣的卷積核中每個權重都是0.25,卷積核在原圖inputX上的滑動的步長為2。均值子採樣的效果相當於把原圖模糊縮減至原來的1/4。

       (2)最大值子採樣的卷積核中各權重值中只有一個為1,其餘均為0,卷積核中為1的位置對應inputX被卷積核覆蓋部分值最大的位置。卷積核在原圖inputX上的滑動步長為2。最大值子採樣的效果是把原圖縮減至原來的1/4,並保留每個2*2區域的最強輸入。


        至此,卷積神經網絡的基本結構和原理已經闡述完畢。

3.2.6 多卷積層

       在實際應用中,往往使用多層卷積,然後再使用全連接層進行訓練,多層卷積的目的是一層卷積學到的特徵往往是局部的,層數越高,學到的特徵就越全局化。

四、卷積神經網絡的訓練

      本文的主要目的是介紹CNN參數在使用bp算法時該怎麼訓練,畢竟CNN中有卷積層和下採樣層,雖然和MLP的bp算法本質上相同,但形式上還是有些區別的,很顯然在完成CNN反向傳播前了解bp算法是必須的。

4.1 Forward前向傳播

       前向過程的卷積為典型valid的卷積過程,即卷積核kernalW覆蓋在輸入圖inputX上,對應位置求積再求和得到一個值並賦給輸出圖OutputY對應的位置。每次卷積核在inputX上移動一個位置,從上到下從左到右交疊覆蓋一遍之後得到輸出矩陣outputY(如圖4.1與圖4.3所示)。如果卷積核的輸入圖inputX為Mx*Nx大小,卷積核為Mw*Nw大小,那麼輸出圖Y為(Mx-Mw+1)*(Nx-Nw+1)大小。


4.2 BackForward反向傳播

       在錯誤信號反向傳播過程中,先按照神經網絡的錯誤反傳方式得到尾部分類器中各神經元的錯誤信號,然後錯誤信號由分類器向前面的特徵抽取器傳播。錯誤信號從子採樣層的特徵圖(subFeatureMap)往前面卷積層的特徵圖(featureMap)傳播要通過一次full卷積過程來完成。這裡的卷積和上一節卷積的略有區別。如果卷積核kernalW的長度為Mw*Mw的方陣,那麼subFeatureMap的錯誤信號矩陣Q_err需要上下左右各拓展Mw-1行或列,與此同時卷積核自身旋轉180度。subFeatureMap的錯誤信號矩陣P_err等於featureMap的誤差矩陣Q_err卷積旋轉180度的卷積核W_rot180。

       下圖錯誤信號矩陣Q_err中的A,它的產生是P中左上2*2小方塊導致的,該2*2的小方塊的對A的責任正好可以用卷積核W表示,錯誤信號A通過卷積核將錯誤信號加權傳遞到與錯誤信號量為A的神經元所相連的神經元a、b、d、e中,所以在下圖中的P_err左上角的2*2位置錯誤值包含A、2A、3A、4A。同理,我們可以論證錯誤信號B、C、D的反向傳播過程。綜上所述,錯誤信號反向傳播過程可以用下圖中的卷積過程表示。

4.3 權值更新過程中的卷積

       卷積神經網絡中卷積層的權重更新過程本質是卷積核的更新過程。由神經網絡的權重修改策略我們知道一條連接權重的更新量為該條連接的前層神經元的興奮輸出乘以後層神經元的輸入錯誤信號,卷積核的更新也是按照這個規律來進行。


       在前向卷積過程中,卷積核的每個元素(連結權重)被使用過四次,所以卷積核每個元素的產生四個更新量。把前向卷積過程當做切割小圖進行多個神經網絡訓練過程,我們得到四個4*1的神經網絡的前層興奮輸入和後層輸入錯誤信號,如圖所示。


        根據神經網絡的權重修改策略,我們可以算出如圖所示卷積核的更新量W_delta。權重更新量W_delta可由P_out和Q_err卷積得到,如圖下圖所示。

五、常見網絡結構

5.1 ImageNet-2010網絡結構

ImageNet LSVRC是一個圖片分類的比賽,其訓練集包括127W+張圖片,驗證集有5W張圖片,測試集有15W張圖片。本文截取2010年Alex Krizhevsky的CNN結構進行說明,該結構在2010年取得冠軍,top-5錯誤率為15.3%。值得一提的是,在今年的ImageNet LSVRC比賽中,取得冠軍的GoogNet已經達到了top-5錯誤率6.67%。可見,深度學習的提升空間還很巨大。

下圖即為Alex的CNN結構圖。需要注意的是,該模型採用了2-GPU並行結構,即第1、2、4、5卷積層都是將模型參數分為2部分進行訓練的。在這裡,更進一步,並行結構分為數據並行與模型並行。數據並行是指在不同的GPU上,模型結構相同,但將訓練數據進行切分,分別訓練得到不同的模型,然後再將模型進行融合。而模型並行則是,將若干層的模型參數進行切分,不同的GPU上使用相同的數據進行訓練,得到的結果直接連接作為下一層的輸入。

上圖模型的基本參數為:

輸入:224×224大小的圖片,3通道

第一層卷積:11×11大小的卷積核96個,每個GPU上48個。

第一層max-pooling:2×2的核。

第二層卷積:5×5卷積核256個,每個GPU上128個。

第二層max-pooling:2×2的核。

第三層卷積:與上一層是全連接,3*3的卷積核384個。分到兩個GPU上個192個。

第四層卷積:3×3的卷積核384個,兩個GPU各192個。該層與上一層連接沒有經過pooling層。

第五層卷積:3×3的卷積核256個,兩個GPU上個128個。

第五層max-pooling:2×2的核。

第一層全連接:4096維,將第五層max-pooling的輸出連接成為一個一維向量,作為該層的輸入。

第二層全連接:4096維

Softmax層:輸出為1000,輸出的每一維都是圖片屬於該類別的概率。

5.2 DeepID網絡結構

        DeepID網絡結構是香港中文大學的Sun Yi開發出來用來學習人臉特徵的卷積神經網絡。每張輸入的人臉被表示為160維的向量,學習到的向量經過其他模型進行分類,在人臉驗證試驗上得到了97.45%的正確率,更進一步的,原作者改進了CNN,又得到了99.15%的正確率。

如下圖所示,該結構與ImageNet的具體參數類似,所以只解釋一下不同的部分吧。

       上圖中的結構,在最後只有一層全連接層,然後就是softmax層了。論文中就是以該全連接層作為圖像的表示。在全連接層,以第四層卷積和第三層max-pooling的輸出作為全連接層的輸入,這樣可以學習到局部的和全局的特徵。

更多機器人、無人機/車、AI 技術資料(點左下角閱讀原文)

相關焦點

  • 卷積神經網絡CNN:卷積的來源和原理
    卷積神經網絡(Convolutional Neural Network,簡稱為CNN或ConvNet)是一種具有
  • 卷積神經網絡工作原理直觀的解釋
    3.定義卷積神經網絡4.小結5.使用 CNN 分類圖像1. 機器如何看圖?3.定義一個卷積神經網絡我們需要三個基本的元素來定義一個基本的卷積網絡1. 卷積層2. 池化層(可選)3. 實際上,這樣可以使參數在卷積神經網絡中被共享。下面我們以一個真實圖像為例。
  • 給你一個卷積神經網絡工作原理最直觀的解釋
    卷積神經網絡(Convolutional Neural Network, CNN)是人工神經網絡的一種,是當下語音分析和圖像識別領域的研究熱點。這篇文章用最簡明的語言和最直觀的圖像,帶你入門CNN。準備好了嗎?Let’s go——我們先從最基礎的內容說起。對二維數位訊號(圖像)的操作,可以寫成矩陣形式。
  • 一文看懂卷積神經網絡-CNN(基本原理+獨特價值+實際應用)
    卷積神經網絡 - CNN 最擅長的就是圖片的處理。它受到人類視覺神經系統的啟發。
  • 卷積神經網絡數學原理解析
    事實上,我們每天都在使用計算機視覺——當我們用面部解鎖手機或在社交媒體上發照片前使用自動修圖。卷積神經網絡可能是這一巨大成功背後最關鍵的構建模塊。這一次,我們將加深理解神經網絡如何工作於CNNs。出於建議,這篇文章將包括相當複雜的數學方程,如果你不習慣線性代數和微分,請不要氣餒。我的目標不是讓你們記住這些公式,而是讓你們對下面發生的事情有一個直觀的認識。
  • 神奇GIF動畫讓你秒懂各種深度學習卷積神經網絡操作原理
    打開APP 神奇GIF動畫讓你秒懂各種深度學習卷積神經網絡操作原理 深度學習思考者 發表於 2017-11-15 18:58:34
  • 卷積神經網絡(CNN)綜述
    卷積神經網絡概念2. 卷積神經網絡的特點   2.1 局部區域連接   2.2 權值共享   2.3 降採樣3. 卷積神經網絡的結構   3.1 卷積層   3.2 池化層4. 卷積神經網絡的研究進展1.
  • 一文讀懂卷積神經網絡工作原理 | 網際網路數據資訊網-199IT | 中文...
    卷積神經網絡(Convolutional Neural Network, CNN)是人工神經網絡的一種,是當下語音分析和圖像識別領域的研究熱點。這篇文章用最簡明的語言和最直觀的圖像,帶你入門CNN。準備好了嗎?
  • 卷積神經網絡(CNN)
    1.卷積神經網絡是在CNN也運用前向傳播與反向傳播求解參數卷積神經網絡(Convolutional Neural Networks,CNN)由若干個卷積層和池化層組成的深度神經網絡,它屬於深度神經網絡的一個特例,它用於圖像識別和自然語言處理
  • CNN卷積神經網絡原理講解+圖片識別應用(附源碼)
    畢竟這些內容大多都是不可查的,我們看到的都只是輸入輸出的東西,裡面的內部運作以及工作原理,都需要沉心靜思。這篇CNN卷積神經網絡的原理介紹,也是自己通過收集來的資料閱讀、理解、操練後,有了一定的見解後才拙筆,裡面的內容我會儘量詳盡,不清楚明白的地方,望大家慧眼指出。
  • 卷積神經網絡(CNN)介紹與實踐
    - 來源:http://cs231n.github.io/classification/為了「教會」一種算法如何識別圖像中的對象,我們使用特定類型的人工神經網絡:卷積神經網絡(CNN)。他們的名字源於網絡中最重要的一個操作:卷積。卷積神經網絡受到大腦的啟發。
  • YJango的卷積神經網絡——介紹
    PS:YJango是我的網名,意思是我寫的教程,並不是一種網絡結構。。關於卷積神經網絡的講解,網上有很多精彩文章,且恐怕難以找到比斯坦福的CS231n還要全面的教程。 所以這裡對卷積神經網絡的講解主要是以不同的思考側重展開,通過對卷積神經網絡的分析,進一步理解神經網絡變體中「因素共享」這一概念。注意:該文會跟其他的現有文章有很大的不同。
  • 第六講 走進卷積神經網絡
    從本講開始,我們正式進入卷積神經網絡(Conventional Neural Networks, CNN)的學習了
  • 【卷積神經網絡】04-1VGG網絡結構詳解與原理分析
    我們看最初的兩個卷積神經網絡LeNet和AlexNet,他們都是將一個n×n×c的圖像最終變成了1×1×k的矩陣。其中n表示的是輸入圖像的尺寸(行與列),c表示圖像的通道數(深度),取值為1或3,k表示的是最終分類的個數。
  • 卷積神經網絡(CNN,ConvNet)及其原理詳解
    卷積神經網絡(CNN,有時被稱為 ConvNet)是很吸引人的。
  • 「範例卷積神經網絡」和信息最大化
    這一方法也能被理解為「卷積神經網絡範例」。本文內容摘要:本文對「範例卷積神經網絡」的訓練方法僅作了簡單簡單的概述,所以如果想要獲得更多、更真實的信息,請閱讀論文原文。本文簡要介紹了「變分信息最大化」,並將其運用到了「範例卷積神經網絡」的案例中。
  • 卷積神經網絡學習路線(五)| 卷積神經網絡參數設置,提高泛化能力?
    type:優化算法的選擇,一共有六種可選:SGD、AdaDelta、AdaGrad、Adam、Nesterov和RMSProp。默認為SGD。原理建議看看史丹福大學的CS231N視頻課程。這樣做下來最後的輸入值域為[-1,1],一般減均值是最常用的,後面的除以方差用不用可能需要自己動手試驗一下看看效果。殘差結構和密集連接。
  • 華為開發者學院|卷積神經網絡與圖像處理,聽這一節課就夠了
    華為開發者學院特邀國內首本TensorFlow知名書籍作者鄭澤宇老師,帶您了解卷積神經網絡基本原理和基本的卷積神經網絡結構,介紹圖像分類和圖像識別的核心思路和基本算法,在直播間中,您可將當前在學習中遇到的難點和困惑與大咖講師鄭澤宇交流,通過大咖的解讀,帶給你學習的方法與捷徑。
  • CNN卷積神經網絡— LeNet(二)
    一般神經網絡VS卷積神經網絡:相同點:卷積神經網絡也使用一種反向傳播算法(BP)來進行訓練不同點:網絡結構不同。卷積神經網絡的網絡連接具有局部連接、參數共享的特點。局部連接:是相對於普通神經網絡的全連接而言的,是指這一層的某個節點只與上一層的部分節點相連。參數共享:是指一層中多個節點的連接共享相同的一組參數。
  • 深入淺出解讀卷積神經網絡
    圖2 卷積神經網絡結構圖卷積神經網絡和全連接的神經網絡結構上的差異還是比較大的,全連接的網絡,相鄰兩層的節點都有邊相連,而卷積神經網絡,相鄰節點只有部分節點相連。那麼為什麼卷積神經網絡可以達到減小參數的目的呢?卷積神經網絡最為關鍵的有卷積層,池化層,全連接層。卷積層中每個節點的輸入只是上一層神經網絡的一小塊,通常由卷積核來實現,卷積核是一個過濾器,可以想像成一個掃描窗口,扣到每張圖片上,然後根據設置好的大小步長等等掃描圖片,計算規則是被扣的圖像像素矩陣跟卷積核的權重對應位置相乘然後求和,每掃描一次得到一個輸出。