【深度學習】經典卷積神經網絡(一)LeNet-5

前言

爲了能更好地指導卷積神經網絡的設計,本系列將逐步學習一些經典的卷積神經網絡模型。從一些比較古老的例如LeNet到比較新的例如SENet、UNet,從它們的設計中尋找思路,這將在各類問題卷積神經網絡的設計都有參考價值。這類文章網上也很多,所以主要簡單介紹下一些基本的信息然後從中尋找一些自己的心得體會。本文首先從最經典的LeNet開始。

基本結構


LeNet作爲上個世紀的卷積神經網絡在設計上相對簡單,也能體現很多卷積神經網絡設計的思想。其結構可以參考上圖,這裏主要介紹下卷積神經網絡設計的一些動機。

關於卷積層

稀疏交互

如果像MLP一樣隱層採用全連接,那麼正如圖像下方這種情況,參數量是巨大的。而卷積操作實際上局部點幾個點決定下一層的某個點,例如上圖中s3由x2,x3,x4決定,這樣連接減少後的參數量大大減少。
不過這不只是爲了減少參數量,這裏因此也體現了隱馬爾科夫性的思想,只由附近的決定,並且對於圖像來說也更合理一些。另外,卷積從圖像處理的角度也能夠將圖像的特徵例如邊緣提取出來,類似仿生學的思想,從低級特徵到高級抽象,最終形成人腦中的視覺信號。

如果採用全連接就如同下面這種方式,28*28的圖像每個點下一層都需要輸入層784個點加權,這樣的參數量是巨大的。
參數共享
卷積神經網絡的參數主要是卷積核,例如上圖中每個同一方向的箭頭值都是一樣的,這樣能夠進一步減少參數量。
等變表示
如果一個函數滿足輸入改變,輸出也以同樣方式進行改變的話,我們稱它是等變的。
而卷積具有平移等變,而全連接層展開爲一維向量很難具有這樣的性質。

關於池化層

池化層主要是起一個下采樣的作用,增大感受野,形變也不怎麼明顯。池化一方面可以減少參數量,將臨近的相似像素合併,從而可以減小過擬合,只保留圖像中更有用的信息,降低噪聲的傳遞與對變化的明顯性。至於池化層的stride,如果平移的步幅大一點對信息影響不大的話又能提高速度,那麼也會進行設置。而padding是爲了充分利用信息,因爲有一些邊界信息可能會因爲窗口無法覆蓋而難以計算。

思考

卷積神經網絡在設計的過程中很多參數都會考慮運算量,是很有講究的。LeNet在設計上主要爲CNN提供了一種範例,即卷積+非線性激活函數+池化,相對現在很多流行的網絡也沒有太多可以挖掘的trick。

例如LeNet中有一個連接,也並非所有通道之間都有連接,原因也不是很好介紹,當時也主要是試出來的,對問題效果會比較好。
總結一下,對於LeNet可以學習的點:

  • 卷積神經網絡的規範
  • 卷積層、池化層的動機
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章