1. 程式人生 > >CNN(卷積層convolutional layer,激勵層activating layer,池化層pooling,全連線層fully connected)

CNN(卷積層convolutional layer,激勵層activating layer,池化層pooling,全連線層fully connected)

CNN產生的原因:當使用全連線的神經網路時,因為相鄰兩層之間的神經元都是有邊相連的,當輸入層的特徵緯度非常高時(譬如圖片),全連線網路需要被訓練的引數就會非常多(引數太多,訓練緩慢),CNN可以通過訓練少量的引數從而進行特徵提取。

上圖每一個邊就代表一個需要訓練的引數,可以直觀的感受到需要訓練的引數太多了。

CNN的優點:1.相鄰兩層神經元部分相連。2.且同一層神經元的w(權重)和b(偏移)是共享的。

卷積:用一個核(矩陣)和圖片相乘,相當於進行低通道濾波,因此這個核也被稱為濾波器。當對一個圖進行卷積,在特定的曲線和周邊區域,得到的值很高,在其他區域,值相對較低,因此卷積得到的結果也叫啟用圖。

為什麼說CNN相鄰兩層神經元部分相連

:因為上一層和下一層通過卷積核來連線,譬如一個2*2的卷積核,它和輸入進行乘法得到下一層的一個神經元的值: 4-->1,因此在這個例子裡,上層的四個神經元對應下層的一個神經元,所以叫相鄰兩層神經元部分相連。

為什麼說CNN同一層神經元的權值共享:因為上層和下層僅僅通過卷積核來操作,一層神經元僅僅依賴於這個卷積核,沒有其他需要依賴的引數,所以該層的權值就是這個卷積核的大小和步長。(換句話說,訓練的就是這個卷積核)


feature map:將一個卷積核對輸入資料進行掃描得到的下層神經元矩陣。

激勵層:主要對卷積層的輸出進行一個非線性對映,一般為ReLu函式。

  • 使用ReLu時,應調小learning rate,防止出現很多梯度為零的神經元
  • 如果不能解決learning rate的問題,就使用Leaky ReLu、PReLu來替代
  • 不建議使用sigmoid函式,用tanh替代

池化層:當卷積核很小時,得到的feature map還是很大,可以通過池化層來進行降維操作,一般有兩種方式:

  • max pooling:取池化視野中的最大值
  • Average pooling:取池化視野中的平均值

池化視野類似於卷積核的local receptive field