當前位置:
首頁 > 最新 > 人人都能讀懂卷積神經網路:Convolutional Networks for everyone

人人都能讀懂卷積神經網路: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個主題知識資料全集(入門/進階/論文/綜述/視頻/專家等)

同時歡迎各位用戶進行專知投稿,詳情請點擊


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 專知 的精彩文章:

Seq2seq強化學習實戰

TAG:專知 |