[CLPR] 卷積神經網絡的結構

本文翻譯自: http://www.codeproject.com/Articles/16650/Neural-Network-for-Recognition-of-Handwritten-Digi

正如前文所述, 程序並未實現一個通用神經網絡, 也並非一個神經網絡開發環境. 它其實是一個非常特殊的網絡, 一個5層卷積神經網絡. 輸入層接收 29x29 的灰度手寫數字圖片, 輸出層由10個神經元組成, 判斷結果對應的神經元輸出1, 其餘輸出-1(理想).

CNN是基於"權值共享"的NN. 主要思想是使用一個小的核窗, 它在前一層的神經元上移動. 在本實現中, 我使用的是5x5的尺寸. 核中的每個元素都有一個獨立於其他元素的權值. 所以共有25個權值(外加1個偏置). 這個核被前一層的所有神經元共享.

圖例和說明.

下圖是CNN的一個圖示:

輸入層(#0) 是灰度圖像. MNIST圖像庫中的圖像是28x28, 但基於Simard在"Best Practices for Convolutional Neural Networks Applied to Visual Document Analysis," 中的描述, 圖片尺寸被放大爲29x29. 所以輸入層共有841個神經元.

層#1 是一個卷積層, 擁有6個特徵圖, 每個特徵圖的尺寸爲13x13 像素/神經元. 特徵圖中的每個神經元都是一個輸入層的5x5的卷積核, 但輸入層中的像素每隔一個就被跳過. 結果就是每行每列均有(29-5)/2 + 1 = 13個卷積中心. 所以層#1共有13*13*6 = 1014個神經元和(5x5 +1) * 6 = 156個權值.

另外, 每個神經元都有26個連接(5x5+1), 所以共有1014*26 = 26364個連接. 共享權值的好處在此處顯現: 因爲權值是共享的, 儘管有26364個連接, 只需要控制156個權值即可. 如果是全連接的網絡, 則有大量的權值需要訓練.

層#2 也是卷積層, 但有50個特徵圖, 每個特徵圖都是5x5的. 所以共有5x5x50 = 1250個神經元, (5x5+1)*6*50 = 7800個權值, 1250x26 = 32500個連接.

在介紹層#3前, 我們需要再講解一些網絡的結構, 特別是層#2. 正如上文提及, 每一個層#2中的特徵圖都連接到前一層的6個特徵圖. 這是一個設計選擇, 但並非唯一的選擇. 我認爲, 設計是和Simard博士的設計相同的. 但和LeCun博士的設計不同. LeCun博士有意地沒有把層#2的每個特徵圖都和前一層的所有特徵圖連接起來, 而是選擇性地連接到前一層的某一些特徵圖上.

層#3 和 層#4 是全連接的層.

本實現的層#4和LeCun博士的不同, 他使用的是RBF網絡, 但出於簡潔和易於實現的目的, 我選擇的是Simard的結構.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章