Convnet介紹(1)
阿新 • • 發佈:2019-01-07
最近準備開始進軍deep learning這個深坑了!最開始還是要從卷積神經網路看起。最近剛剛翻到一篇講解convnet非常好的文章,決定在此翻譯下來。供參考學習。
(附原版文章地址連結:http://cs231n.github.io/convolutional-networks/#pool)
卷積神經網路(CNNs/ConvNets)
卷積神經網路與傳統的神經網路非常類似:他們是由一系列可以被訓練的神經元組成(可訓練的部分為權重(weight)與偏置(bias))。每一個神經元接收一些輸入,然後通過點乘和一些非線性變換(如:reLu,sigmoid函式,tanh等等)。整個網路可以模擬出一個可微分的打分函式:以原始的影象畫素為輸入,以各個類別的分數為輸出。CNN在最後一層通常也有損失函式(loss function)(比如SVM/softmax),這點跟傳統的神經網路非常像。那麼CNN跟傳統神經網路有什麼區別?本文的CNN假設輸入為影象,這樣就可以從影象的角度來改進網路,使得整個網路實現起來更加有效,同時減少了訓練引數的數目。
一、整體介紹
二:CNN用到的層
如上邊的示意圖看出,CNN實際上就是層的序列,每一層使用一個可微分的函式將一個多維矩陣變換成另外一個多維矩陣。常用的層有三種:卷積層,池化層(pooling)和全連線層。我們將這些東西有規則的組合到一起,就組成了一個卷積神經網路。 下邊我們舉一個例子:一個具有[輸入-卷積層-relu-池化層-全連線層].更進一步的: 輸入:[32*32*3]的矩陣。 卷積層:卷積層計算與輸入層區域性連線區域的神經元,計算與這些神經元對應的權重的內積。如果我們用12個濾波器的話,輸出就是[32*32*12]. RELU層:是一個逐點計算的啟用函式,形式為 max(0,x)。輸出仍然為[32*32*12]。 池化層:池化層會在空間維度下采樣(長和寬的維度),輸出為[16*16*12]。 全連線層:輸出為各個類別的分數,輸出為[1*1*10]。下圖為一個例子:下邊將詳細說明每一個具體的層: