人人都能讀懂卷積神經網路:Convolutional Networks for everyone
【導讀】近日,Rohan Thomas發布一篇博文,通俗地講解了卷積神經網路的結構、原理等各種知識。首先介紹了卷積神經網路(CNN)和人工神經網路(ANN)的不同,然後詳細解釋了卷積神經網路的各種概念:卷積核、pooling層、激活函數、全連接層、過擬合等問題,最後用python實現一個MNIST分類的CNN結構。整體而言,博文的寫作風格通俗易懂,旨在為讀者提供易於理解的CNN教程,對CNN不太了解的讀者千萬不可錯過。專知內容組編輯整理。
Convolutional Networks for everyone
構建卷積神經網路(CNN)並不是一項巨大挑戰,並不是只有數據科學家和機器學習工程師才可以做到。對於了解它的架構的人,很容易通過實現它來解決相應的人工智慧(AI)或機器學習(ML)問題。
這篇博文使深度學習架構易於理解,而不涉及太多的數學解釋。
▌卷積網路的人工神經網路
來源: https://goo.gl/aX44Z1
在ANN中有一個輸入層,其中輸入將是輸入向量的長度(例如,28×28 = 784個神經元)。 讓我們來看卷積網路與人工神經網路的不同之處。
▌CNN的網路結構與ANN有什麼不同
1. ConvNet體系結構明確地規定輸入是圖像。
2. 它們的體系結構不同於前饋神經網路,通過減少要學習的參數數量來提高它們的效率。
3. 在ANN中,如果你有一個150x150x3的圖像,第一個隱藏層中的每個神經元將有67500個權重。
4. ConvNets具有神經元的三維輸入,一個層中的神經元只連接到之前層的一個小區域。
▌ConvNets
ConvNet層中的神經元有三個維度:高度,寬度,深度。
這裡的深度並不是整個網路的深度。它是指層的第三維,因此是激活體積(activationvolumes)的第三維。
本質上,ConvNet由層組成,且具有簡單API——用一些可微函數(可能具有參數,可能沒有參數),將三維輸入體積轉換為三維輸出體積。
來源: StanfordUniversity (https://goo.gl/rHmTSP)
▌CNN中的層
▌CNN結構
source : MathWorks (https://goo.gl/zondfq)
▌核或過濾器
來源: Stanford University (https://goo.gl/g8FV4M)
一個過濾器由一個權重向量來表示,我們將其與輸入圖像進行卷積。 您可以增加輸入上的過濾器數量,以增加您獲得的激活映射的數量。 每個過濾器都會產生一個激活映射。
你得到的每個激活映射都試圖學習圖像的不同方面,如邊緣、顏色斑點等。
如果在32x32x3的圖像卷積上實現了12個大小為5x5x3的過濾器,則第一個卷積層在某些條件下將具有28x28x12的大小。
幾個過濾器被用來提取NNet的卷積層中的幾個特徵。 3X3矩陣的一個步驟就叫做「步幅」。
▌激活函數
激活函數通常是一個單元格中動作潛在的速率的抽象表示。
主要有線性激活和非線性激活。沒有非線性激活的神經網路將非常強大。 引入非線性的激活函數是必需的。
▌調整的線性單元層(ReLU)
和前饋神經網路一樣,Convnet中激活層的目的是引入非線性。
R(z)= max(0,z)是用於RELU激活的等式。 考慮兩個正數和一個負數
Positive(正數)
R(1) =max(0,1) = 1 Postive 輸出
Negative(負數)
R(-1) = max(0,-1) = 0 Negative 輸出
它減少了網路中的參數數量,從而使其能夠學得更快。
Softmax 激活
Softmax是邏輯激活函數,用於多類別分類
Softmax函數應用於網路的最後一層,用於預測類別的最大概率。
▌Pooling Layer
來源: Wiki (https://goo.gl/snMC4o)
來源: Towards Data Science (https://goo.gl/xohkdV)
pooling用於在深度不變的前提下,對圖像的寬度,高度進行下採樣。 主要有三種類型的pooling。 最小值pooling,最大值pooling,平均值pooling。
pooling層獨立地在每個深度層面上獨立工作,使用指定的數學運算(例如MAX或者Avg)來調整層的大小。
▌全連接層
最後,經過多個卷積和最大pooling層後,神經網路中的高層推理通過全連接層完成。正如常規神經網路中所見,全連接層中的神經元與前一層中的所有激活都有連接。因此可以用一個矩陣乘法和一個偏置(bias)偏移來計算它們的激活。
在全連接層中使用softmax激活來獲取最大概率並進行預測。
▌過擬合問題
訓練數據的分類精度可能超過「訓練精度」,如果訓練精度超出了我們的測試精度,則意味著我們的模型訓練數據時過於強調細節和有雜訊的學習,能很好地在訓練數據上工作。資源(Rutger Ruizendaal,Towards Data Science, https://goo.gl/87as34)
減少過擬合:
1、增加更多數據
2、使用數據增強
3、使用泛化的體系結構
4、加入正則化(或者mostly dropout, L1/L2 regularization)
5、降低架構的複雜性。
▌實現cnn
讓我們嘗試在MNSIT數據集中實現CNN。
可以再下址下載
(http://yann.lecun.com/exdb/mnist/)
更多鏈接:
www.github.com/rohanthomas
www.rohanthomas.me
http://www.deeplearningbook.org/ (Book by Ian Good Fellow,
Yoshua Bengio, Aaron Courville
https://medium.com/@rohanthomas.me/convolutional-networks-for-everyone-1d0699de1a9d
-END-
專 · 知
人工智慧領域主題知識資料查看獲取:【專知薈萃】人工智慧領域26個主題知識資料全集(入門/進階/論文/綜述/視頻/專家等)
同時歡迎各位用戶進行專知投稿,詳情請點擊:
TAG:專知 |