原文地址:http://www.hackcv.com/index.php/archives/104/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io
卷積神經網絡的四個基本操作:
1、卷積
2、非線性處理(Relu)
3、赤化或者亞采樣
4、分類(全連接層)
一、先說卷積,卷積的主要目的是為了從輸入圖像中提取特征。卷積可以通過從輸入的一小塊數據中
學習到圖像的特征,並且可以保留像素的空間關系。
在CNN術語中,3X3的矩陣叫做 濾波器(filter)或者核(kernel) 或者 特征檢測器,
通過圖像上滑動濾波器並且計算點乘得到的矩陣叫做 “卷積特征(Convolved feature)"
濾波器在原始輸入圖像上的作用是特征檢測器。
在實踐中CNN會在訓練過程中學習到的這些濾波器的值,我們使用的濾波器越多,提取到的圖像特征就越多,網絡
所能在未知圖像上識別的模式就越好。
特征圖的大小由三個參數控制,我們需要在卷積前確定它們:
(1)深度:深度對應的是卷積操作所需要的濾波器的個數。
(2)步長:步長是我們在輸入矩陣上滑動濾波器矩陣的像素數。當步長為1時,我們每次移動濾波器一個像素的位置。
當步長為二時,每次移動濾波器會跳動2個像素。步長越大,講會得到更小的特征圖。
(3)零填充,對應padding參數的設置吧。有時,在輸入矩陣的邊緣使用零值進行填充。這樣我們可以對輸入圖像矩陣的邊緣
進行濾波。零填充的一大好處是可以讓我們控制特征圖的大小。使用零填充的也叫翻卷機,不適用零填充的叫做
嚴格卷積。
二、非線性處理
這部分主要是激活函數了,relu函數,tanh函數,sigmoid函數
relu用的比價多,可以解決梯度消失的問題,但是講BN的那篇論文說加了BN操作之后用sigmoid函數效果更好。
不過我自己試了mnist數據集的效果,還是relu更好些,不過BN加在激活函數之前確實是這樣。
三、池化操作
池化操作,叫做亞采樣或者下采樣,降低了各個特征圖的維度,但可以保持大部分重要的信心。
常用的池化操作包括:最大化,平均化,加和等。
池化可以控制特征的維度,見識網絡中的參數和計算量,控制過擬合
池化可以使網絡對輸入圖像的變化,冗余不敏感,微小的變化不會影響輸出。
獲得圖像最大程度上的尺度不變性
除此之外,池化還是一個無限強的先驗。
四、全連接層
卷積和池化層的輸出表示了輸入圖像的高級特征,全連接層的目的是為了使用這些特征把輸入圖像基於訓練數據進行分類。