回想一下BP神經網絡。BP網絡每一層節點是一個線性的一維排列狀態,層與層的網絡節點之間是全連接的。這樣設想一下,如果BP網絡中層與層之間的節點連接不再是全連接,而是局部連接的。這樣,就是一種最簡單的一維卷積網絡。如果我們把上述這個思路擴展到二維,這就是我們在大多數參考資料上看到的卷積神經網絡。具體參看下圖:
上圖左:全連接網絡。如果我們有1000x1000像素的圖像,有1百萬個隱層神經元,每個隱層神經元都連接圖像的每一個像素點,就有1000x1000x1000000=10^12個連接,也就是10^12個權值參數。
上圖右:局部連接網絡,每一個節點與上層節點同位置附件10x10的窗口相連接,則1百萬個隱層神經元就只有100w乘以100,即10^8個參數。其權值連接個數比原來減少了四個數量級。
根據BP網絡信號前向傳遞過程,我們可以很容易計算網絡節點的輸出。例如,對於上圖中被標註爲紅色節點的淨輸入,就等於所有與紅線相連接的上一層神經元節點值與紅色線表示的權值之積的累加。這樣的計算過程,很多書上稱其爲卷積。
事實上,對於數字濾波而言,其濾波器的係數通常是對稱的。否則,卷積的計算需要先反向對摺,然後進行乘累加的計算。上述神經網絡權值滿足對稱嗎?我想答案是否定的!所以,上述稱其爲卷積運算,顯然是有失偏頗的。但這並不重要,僅僅是一個名詞稱謂而已。只是,搞信號處理的人,在初次接觸卷積神經網絡的時候,帶來了一些理解上的誤區。
卷積神經網絡另外一個特性是權值共享。例如,就上面右邊那幅圖來說,權值共享,不是說,所有的紅色線標註的連接權值相同。這一點,初學者容易產生誤解。
上面描述的只是單層網絡結構,前A&T Shannon Lab 的 Yann LeCun等人據此提出了基於卷積神經網絡的一個文字識別系統 LeNet-5。該系統90年代就被用於銀行手寫數字的識別。
2. 文字識別系統LeNet-5
在經典的模式識別中,一般是事先提取特徵。提取諸多特徵後,要對這些特徵進行相關性分析,找到最能代表字符的特徵,去掉對分類無關和自相關的特徵。然而,這些特徵的提取太過依賴人的經驗和主觀意識,提取到的特徵的不同對分類性能影響很大,甚至提取的特徵的順序也會影響最後的分類性能。同時,圖像預處理的好壞也會影響到提取的特徵。那麼,如何把特徵提取這一過程作爲一個自適應、自學習的過程,通過機器學習找到分類性能最優的特徵呢?
卷積神經元每一個隱層的單元提取圖像局部特徵,將其映射成一個平面,特徵映射函數採用 sigmoid 函數作爲卷積網絡的激活函數,使得特徵映射具有位移不變性。每個神經元與前一層的局部感受野相連。注意前面我們說了,不是局部連接的神經元權值相同,而是同一平面層的神經元權值相同,有相同程度的位移、旋轉不變性。每個特徵提取後都緊跟着一個用來求局部平均與二次提取的亞取樣層。這種特有的兩次特徵提取結構使得網絡對輸入樣本有較高的畸變容忍能力。也就是說,卷積神經網絡通過局部感受野、共享權值和亞取樣來保證圖像對位移、縮放、扭曲的魯棒性。
下面,有必要來解釋下上面這個用於文字識別的LeNet-5深層卷積網絡。
1. 輸入圖像是32x32的大小,局部滑動窗的大小是5x5的,由於不考慮對圖像的邊界進行拓展,則滑動窗將有28x28個不同的位置,也就是C1層的大小是28x28。這裏設定有6個不同的C1層,每一個C1層內的權值是相同的。
2. S2層是一個下采樣層。簡單的說,由4個點下采樣爲1個點,也就是4個數的加權平均。但在LeNet-5系統,下采樣層比較複雜,因爲這4個加權係數也需要學習得到,這顯然增加了模型的複雜度。在斯坦福關於深度學習的教程中,這個過程叫做Pool。
3. 根據對前面C1層同樣的理解,我們很容易得到C3層的大小爲10x10. 只不過,C3層的變成了16個10x10網絡! 試想一下,如果S2層只有1個平面,那麼由S2層得到C3就和由輸入層得到C1層是完全一樣的。但是,S2層由多層,那麼,我們只需要按照一定的順利組合這些層就可以了。具體的組合規則,在 LeNet-5 系統中給出了下面的表格:
簡單的說,例如對於C3層第0張特徵圖,其每一個節點與S2層的第0張特徵圖,第1張特徵圖,第2張特徵圖,總共3個5x5個節點相連接。後面依次類推,C3層每一張特徵映射圖的權值是相同的。
4. S4 層是在C3層基礎上下采樣,前面已述。在後面的層由於每一層節點個數比較少,都是全連接層,這個比較簡單,不再贅述。