1. 程式人生 > >深度學習 --- 深度卷積神經網路詳解(AlexNet 網路詳解)

深度學習 --- 深度卷積神經網路詳解(AlexNet 網路詳解)

 

本篇將解釋另外一個卷積神經網路,該網路是Hinton率領的谷歌團隊(Alex Krizhevsky,Ilya Sutskever,Geoffrey E. Hinton)在2010年的ImageNet大賽獲得冠軍的一個神經網路,因此本節主要參考的論文也是這次大賽的論文即“ImageNet分類與深卷積神經網路”,大家可以找到這篇論文看看,好,和前面一樣,本節主要是介紹網路的架構,同時和LeNet -5-網路進行對比學習,詳細介紹本文引入的新概念影象增強,Dropout等技術,下面就開始從ImageNet大賽開始介紹:

ImageNet大賽

ImageNet是一個計算機視覺系統識別專案,是目前丐界上影象識別最大的資料庫。是美國斯坦福的電腦科學家,模擬人類的識別系統建立的。能夠從圖片識別物體.ImageNet LSVRC影象識別大賽素有國際計算機視覺奧林大賽之稱。資料集包含大約1000多萬張各種圖片,被分為1000個分類,參賽者訓練分類器,在測試資料上取得最高辨識正確率者為優勝

,大家需要資料可以到官網進行下載:ImageNet主頁

深度卷積神經網路

這裡的網路和LeNet -5-網路有些許不同,在LeNet-5網路裡,卷積層和池化層是分開的即一層卷積層一層池化這樣分佈的,但是深度卷積神經網路和LeNet -5-網路不同,主要不同在卷積和池化層合為一體了,而且還是分兩路設計網路,下面我們都會解說,那麼我們下面就針對這個圖進行講解:

輸入(1號位置):

         本層的輸入層如上圖1號位置,輸入的圖片的畫素是224x224的且有三層,這三層代表三原色RGB(我們知道所謂的彩色其實就是三原色組合而成的,因此彩色圖片也是這樣),我們可以簡單的看做有三張圖片堆疊而成的彩色圖片,這三張圖片分別對應紅色,綠色,藍色,在LeNet -5-網路只有一層,因為顏色是灰度的。輸入層的取樣視窗為11×11且也有三層對應圖片的三層,那麼每取樣一次有多少個連線呢?有11x11x3 = 363個,取樣視窗的平移步長是4,(在LeNet -5-網路移動步長是1,這裡是4,應該很容易理解)為什麼步長是4而不是1呢?因為考慮到計算量的問題,如果是1步計算量太大。那麼這樣的取樣視窗在影象上取樣後的維度是多少呢?

MAX pooling層(2號位置):

          這一層就是上圖的2號位置,那麼這裡的維度是多少呢?通過11×11的取樣和卷積的視窗對224x224的圖片進行取樣得到55x55的層級地圖,那厚度是48的什麼意思呢?其實就是對應LeNet -5-網路不同的卷積特徵平面,如C1有6個特徵平面。因此這裡的有48 + 48 = 96個55x55的特徵平面,為什麼是48 + 48,因為這裡計算是通過GPU平行計算的,因此採用兩路,合併起來就是LeNet -5-網路的那種形式,這裡大家需要結合LeNet -5-網路進行理解。

3號位置:

         3號位置的層和2號類似,這裡的對2號設定的取樣視窗為5×5,得到的3號維度為27x27,總有256個卷積核,在此基礎上同理得到4號位置的層,此時的維度為13×13,總共384個卷積核,同理5號,6號也是如此,這裡不細講了。

第6層和第7層是BP形式的全連線,總共有4096個神經元,第7層和第8層也是BP形式的全連線,總共有4096個神經元,最後就是輸出1000個輸出。

下面系統給出該過程描述:

(1)從上圖中可以發現,輸入的影象大小為224×224,但是考慮到影象是由RGB組成的三通道,因此輸入影象的規則是224×224×3(在AlexNet模型的實際處理過程中會通過預處影象的輸人規則是227×227×3)
(2)在AlexNet模型中,一共有96個11×11的卷積核進行特徵提取,考慮到影象為RGB影象,則存在三個通道,因此這96個濾波器實際使用過程中也是11×11×3,即原始影象是彩色影象,那麼提取的特徵也是具有彩色的特質特徵圖大小的計算方式採用如下公式:其中步幅表示步長,決定了卷積核滑動的大小。因此第一層卷積層生成的特徵圖大小為(227-11)/ 4 + 1 = 55,因此第一層卷積層得到的特徵圖一共是(96)AlexNet模型使用RELU函式作為啟用函式,使得特徵圖中特徵值取值範圍在合理範圍。(4)AlexNet模型中是96個,每一個特徵圖的大小是55x55,且帶RGB三通道。使到了 化處理的方式。比如核心是3×3的矩陣,則該過程是對3×3區域的資料進行處理,通過下采樣處理可以得到(55-3)/ 2 + 1 = 27,得到96個27x27的特徵圖,這96個特徵圖將會作為第二次卷積層操作的輸入。第3層卷積層的輸入是第2層卷積層輸出的96×27×27的特徵圖,採用的是256個5×5大小的卷積核,利用卷積核對輸入的特徵圖進行處理,處理方式與第2層卷積層的處理方式略有不同。過濾器是對96個特徵圖中的某幾個特徵圖中相應的區域乘以相應的權值,然後加上偏置之後對所得區域進行卷積,第3層卷積層計算完畢之後,得到的是256個13×13((27 - 3)/ 2 = 13)的特徵圖。
                                                          

 

後續的操作類似,第4層卷積層沒有采用下采樣操作,得到的是384個13×13的新特徵圖,第5層依然沒有進行下采樣操作,因此得到的依然是384個13×13的特徵圖,第6層得到的是256個6x6的特徵圖。

對於第7層的全連線層,使用4096個神經元,並對第6層輸出的256個6×6的特徵圖進行全連線:第8層的全連線層與上一層全連線層類似;第9層全連線層採用的是1000個神經元,對第8層的4096個神經元進行全連線,然後通過高斯濾波器,得到各項預測的可能性·
在訓練模型過程中,會通過實際值與期望值進行誤差計算,求出殘差,並通過鏈式求導法則,將殘差通過求解偏導數逐步向上傳遞,在神經網路的各個層不斷修改權值和偏置值和一般的神經網路思想類似。
值得說明的是,區域性響應值歸一化(區域性響應歸一化,LRN)是藉助神經生物學中的側抑制思想,即當某個神經元被啟用時,抑制相鄰的其他神經元。區域性響應值歸一化的目的是實現區域性的抑制,RELU也是一種“側抑制”方法。這樣做的意義在於有利於增強模型的泛化能力.LRN通過模仿神經生物學中的側抑 區域性的神經元實現了競爭機制,使得響應比較大的值相對能夠更擴大

通過計算可得到網路的權值總共大概有6000萬個引數,而樣本只有1000多萬張,因此樣本不足,很容易產生過擬合,如何處理?

資料增強:

      hintion他們使用的方法是,因為原始處理過的圖片的畫素是256×256,而我們輸入的是224x224,他是怎麼增強的呢如下圖?

原先是一個256×256,為了得到更多的樣本,我們使用一個224x224樣板對原圖進行擷取,如上圖,這樣每個圖片就可以生成很多類似的圖片,通過這種方法可以得到充足的樣本。這也就解釋了為什麼輸入的224x224的大小了。

資料增強的第二種形式是改變訓練影象中RGB通道的強度。具體地說,我們在整幅圖中對RGB畫素值集執行PCA進行降維,通過改變主要顏色的亮度然後生成更多圖片。

Dropout

hintion在那篇論文中還提出使用差進行避免過擬合同時增強神經網路的泛化能力,那什麼是Dropout呢?

Dropout可以作為訓練深度神經網路的一種選擇。在每個訓練批次中,通過忽略一半的特徵檢測器(讓一半的隱層節點值為0),可以明顯地減少過擬合現象。這種方式可以減少特徵檢測器(隱層節點)間的相互作用,檢測器相互作用是指某些檢測器依賴其他檢測器才能發揮作用.Dropout說的簡單一點就是:我們在前向傳播的時候,讓某個神經元的啟用值以一定的概率p停止工作,這樣可以使模型泛化性更強,因為它不會太依賴某些區域性的特徵,如下圖所示

Dropout具體工作流程如下:        

 假如我們的神經網路是這樣的,在本節中其實就是最後兩層的全連線層,下面給出Dropout的過程:

輸入是X輸出是Y,正常的流程是:我們首先把X通過網路前向傳播,然後把誤差反向傳播以決定如何更新引數讓網路進行學習使用Dropout之後,過程變成如下:

(1)首先隨機(臨時)刪掉網路中一半的隱藏神經元,輸入輸出神經元保持不變(圖下圖虛線為部分臨時被刪除的神經元)

(2)然後把輸入X通過修改後的網路前向傳播,然後把得到的損失結果通過修改的網路反向傳播。一小批訓練樣本執行完這個過程後,在沒有被刪除的神經元上按照隨機梯度下降法更新對應的引數(W,b)。

(3)然後繼續重複這一過程:

恢復被刪掉的神經元(此時被刪除的神經元保持原樣,而沒有被刪除的神經元已經有所更新)。從隱藏層神經元中隨機選擇一個一半大小的子集臨時刪除掉(備份被刪除神經元的引數)。對一小批訓訓練本,先向前傳播然後反向傳播損失並根據隨機梯度下降法更新引數(W,b)(沒有被刪除的那一部分引數得到更新,刪除的神經元引數保持被刪除前的結果)。不斷重複這一過程。

Dropout為什麼可以解決過擬合? 

(1)取平均的作用:先回到標準的模型即沒有丟失,我們用相同的訓練資料去訓練5個不同的神經網路,一般會得到5個不同的結果,此時我們可以採用“5個結果取均值“或者 '多數取勝的投票策略' 去決定最終結果。例如3個網路判斷結果為數字9,那麼很有可能真正的結果就是數字9,其它兩個網路給出了錯誤結果。”綜合起來取平均”的策略通常可以有效防止過擬合問題。因為不同的網路可能產生不同的過擬合,取平均則有可能讓一些 '相反的' 擬合互相抵消.dropout掉不同的隱藏神經元就類似在訓練不同的網路,隨機刪掉一半隱藏神經元導致網路結構已經不同,整個。Dropout過程就相當於對很多個不同的神經網路取平均而不同的網路產生不同的過擬合,一些互為“反向”的擬合相互抵消就可以達到整體上減少過擬合。

(2)減少神經元之間複雜的共適應關係:因為Dropout程式導致兩個神經元不一定每次都在一個壓差網路中出現這樣權值的更新不再依賴於有固定關係的隱含節點的共同作用,阻止了某些特徵僅僅在其他特定特徵特徵下才有效果的情況。迫使網路去學習更加魯棒的特徵,這些特徵在其它的神經元的隨機子集中也存在。換句話說假如我們的神經網路是在做出某種預測,它不應該對一些特定的線索片段太過敏感,即使丟失特定的線索,它也應該可以從眾多其它線索中學習一些共同的特徵。從這個角度看Dropout就有點像L1,L2正則,減少權重使得網路對丟失特定神經元連線的魯棒性提高。

(3)Dropout類似於性別在生物進化中的角色:物種為了生存往往會傾向於適應這種環境,環境突變則會導致物種難以做出及時反應,性別的出現可以繁衍出適應新環境的變種,有效的阻止過擬合,即避免環境改變時物種可能面臨的滅絕。

至於學習演算法,hintion這篇論文沒說,論文的主要內容就這些,其他的就是資料了,這裡就不貼了,有興趣的檢視原文看看就可以了,估計應該和LeNet -5-網路差不多,因為他們都是基於BP的,因此大家應該把我的上一篇部落格好好看一下,本節到此結束,下一節我們將看看卷積神經網路的一些優化,或者說真的大多數網路的優化更合適吧,好本節到此結束。

(這裡的單詞差,我在編輯時老是被瀏覽器自動翻譯了,無語了)