日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

以LeNet-5为例理解CNN

發布時間:2024/7/23 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 以LeNet-5为例理解CNN 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在用caffe實現對MNIST手寫數字分類的過程中發現利用的網絡是LetNet-5.決定從這個網絡入手好好認識一下CNN。

LeNet-5早在1998年就出現了(5表示5層模型),標志著CNN的誕生。以其作者YannLeCun的名字命名。但是卻沒有得到廣泛的應用,原因一個是對機器要求高(當時沒有GPU),一個是因為其他算法(SVM,老實說是你干的吧?)也能達到類似的效果甚至超過。之后的模型還有AlexNet(以人的名字命名)、VGG(以機構名命名)、GoogleNet(機構名命名)、ResNet(以核心算法命名)。既然都是千年的狐貍(神經網絡),比的就是誰的模型更好,可以更好地模擬人腦認知的過程。而之后出現的R-CNN(使用了AlexNet),Fast R-CNN等就好比是《聊齋》,是一套方法,重要的是把故事講好。看《聊齋》的書,哪只狐貍什么樣子當然無所謂;但是如果是看電影,那么扮演狐貍的演員,她對狐貍的把握、還原就至關重要了。至于Caffe、TensorFlow、Torch等深度學習框架,僅僅是一個工具,就像是寫作的筆,沒有馬良的筆那么神奇,但也都足夠我們用來書寫自己的故事。

胡亂比喻了一下,不至于把他們混淆。下來好好認識一下這個LeNet-5網絡及CNN。

我準備從三個角度介紹一下LeNet-5網絡。先是側重每部分的作用,整體把握一下網絡的思路。然后從連接的角度,層與層之間在數學上的關系。最后對CNN中特有的幾個概念做一下解讀。

既然說是5層網絡,那么我們看一看到底是哪5層。看來看去,發現是7層(算上輸出層,不算輸入層)。就拿論文中的插圖來看,上圖的頂部是每層的名字。看來作者認為是6層。。

INPUT,輸入圖像是32x32,對比之下,MNIST輸入的圖像是28x28的。

C1:C意味著這是一個卷積層。在這一層我們將得到feature map。卷積應該不是一個陌生的概念,在圖像處理中,簡單來說就是旋轉180度之后卷積核和圖像對應像素加權求和。卷積之后的圖像是一個“響應”,如果是邊緣檢測算子,那么得到的響應就是圖像的邊緣,現在我們只知道我們希望得到的響應是feature map,得到輸入圖像的特征,但是不知道的是卷積核的參數(權重),所以我們需要一個網絡來訓練它。

這一層卷積核的大小是5x5.卷積核滑動一行之后,得到的結果的邊長變為32-5+1,得到的feature map大小是28x28.有6個不同的卷積核,希望從不同的角度得到圖像的特征。所以待定參數是(5x5+1)*6=156。剛才講到,參數要由網絡求得,網絡的層與層之間是通過feature map連接的。得到的28x28的feature map的每一個像素對應5x5+1個權值,這有點像MIMO,所以這里的連接個數是28x28x156=122304個。

S2:S指的是Subsamples,這層經過下采樣得到的也是featuremap。下采樣的作用是減少計算量,同時保留有用的信息。但是這里的下采樣和普通的不一樣,不是插值的方法,而是用一種叫池化的方法。就是把一幅圖像分割成幾個塊,每個塊的輸出是這個塊原有像素的統計結果,可以是最大值,那就是最大值池化Max_pooling,如果是均值,那就是均值池化Mean_Pooling。

這一層池的大小是2x2.所以最后得到6個14x14的feature map。和卷積層的連接數的計算方法一樣,連接數=參數個數*feature map大小=(2x2+1)x6x14x14=5880

C3:這一層還是卷積層。卷積核大小還是5x5.但是有16個(14-5+1)x(14-5+1)=10x10的fea map。所以得到16個這個層除了要對下采樣得到的feature map再進行一次卷積,還有一個問題值得注意。既然有16個卷積核,那么對每一幅feature map就可以得到16個全新的,總共可以得到16x6個feature map,但是這里得到的正好是16個feature map,所以其實在卷積之前,對池化后的feature map進行了組合,得到了16個新的圖像,每個圖像對應一個特有的卷積核,最終得到16個f.map。所以,現在的問題就是如何對6個feature map排列組合得到16個新圖像。論文中給出了一種組合方式(部分連接):

一共6行10列,每列的X表示C3中的一個feature map與S2中的feature map的連接情況。可以看到C3一共有6個與3個S2中的feature map連接,有9個是4連接,有一個是全連接。參數數目:(5x5x3+1)x6+(5x5x4+1)x9+5x5x6+1=1516.這里得到的每一個feature map其實是多核多通道卷積。把每一列叫作一個卷積核,它由若干個卷積模板構成。因為是多個卷積核模板卷積的結果得到一個feature map,仍然認為是一個卷積核,所以每列只有一個偏置參數。所以連接的數目=1516x10x10=151600.

S4:也是下采樣層,得到16個5x5的feature map。連接數=(2x2+1)x5x5x16=2000.

C5:又一個卷積層。注意到它與S4是Fullconnection,因為卷積核大小依然是5x5,正好與S4得到的feature map大小一樣,得到的feature map就是1x1大小的,時刻注意連接指的是feature map之間的連接。還注意到這里的示意圖是帶狀了,這是因為feature map到這里太多了,有多少呢?有120個。如果用類似上圖的矩陣表示,那就是16x120的全1矩陣。

F6:只有86個神經元,繼續降低特征的維數。采用了正切函數。連接數=86x(120+1)=10164.

完全連接層就是傳統的多層感知機。使用softmax連接函數,輸出的概率和為1.

最終經過高斯連接,得到10維的輸出。輸出層采用了RBF徑向歐式距離函數。計算輸入向量和參數向量的歐式距離。

?

卷積神經網絡在本質上是一種輸入到輸出的映射,它能夠學習大量的輸入與輸出之間的映射關系,而不需要任何輸入與輸出之間的精確的數學表達式,只要用已知的模式對卷積神經網絡加以訓練,網絡就具有輸入與輸出之間的映射能力。卷積網絡是有監督學習,所以它的樣本集都形如:(輸入向量,理想輸出向量)之類的向量對構成。

? ? 在訓練之前,所有權值都用一些不同的小隨機數進行初始化,小的隨機數可以保證網絡不會因權值太大而進入飽和狀態,從而導致訓練失敗。不同則保證網絡可以正常學習。

如果要是用相同的數去初始化矩陣,網絡會沒有學習的能力。

關于偏置和激活

卷積、池化其實不是簡單的加權求和、統計最大值/均值。首先,它們都會加一個偏置系數。池化的連接處還有一個激活函數,這同樣是模仿人的神經系統,因為刺激達到一定程度神經元才會做出反應,而反應又可分為刺激(正)和抑制(負)。激活函數的選取也很重要,可選擇的有sigmoid函數、tanh雙曲正切函數、ReLU函數。前兩個函數是飽和的。現在一般使用ReLu作為激活函數(雖然sigmoid的求導形式優美,f’(x)=f(x)(1-f(x)),可以加速收斂。

參考6提到卷積之后也會加ReLU函數。ReLU 是一個針對元素的操作(應用于每個像素),并將特征映射中的所有負像素值替換為零。ReLU 的目的是在卷積神經網絡中引入非線性因素,因為在實際生活中我們想要用神經網絡學習的數據大多數都是非線性的(卷積是一個線性運算)

關于C3的部分連接

C3中的每一個Feature Map連接到S2的所有6個Feature Map或者是幾個Feature Map。表示本層的Feature Map是上一層提取的Feature Map的不同組合。為什么不把S2的每一個Feature Map連接到S3的每一個Feature Map中?原因有2: 第一,不完全連接機制連接的數量保持在合理范圍,第二,這樣破壞了網絡的對稱性,由于不同的Feature Map有不同的輸入,所以迫使他們抽取不同的特征(理想狀態特征互補)。

關于連接數的計算

上文中提到連接數=參數個數*featuremap大小,但是以C2為例,不同的feature map是由不同的卷積核得到的,所以有一些連接對是沒有聯系的。為什么也要將他們連接起來呢?我的思考是雖然他們沒有因果關系,但是因為我們的目的是在構建網絡之后訓練得到網絡的參數,所以除了前向傳播通過損失函數得到損失,我們還需要向后傳播梯度信息,更新權重。反向傳播的過程中,已經得到的某個feature map當然可以推算對應的卷積核,但是對其他的卷積核也有啟示作用,因為我們是基于局部感知的,每個神經元只負責對圖像某一部分,這里的某一部分,我覺得指的不是圖像的空域部分,而是圖像的某一種特征,如顏色或者邊緣信息,然后在更高的層次進行組合得到全局的,更加完整的感知。這也解釋了為什么C3部分連接組合,也可以解釋為什么一開始選擇用6個卷積核。

關于池化的作用

池化的作用是逐步減少輸入的空間大小[4]。具體來說有以下四點:

使輸入(特征維度)更小,更易于管理

減少網絡中的參數和運算次數,因此可以控制過擬合 [4]

使網絡對輸入圖像微小的變換、失真和平移更加穩健(輸入圖片小幅度的失真不會改池化的輸出結果 —— 因為我們取了鄰域的最大值/平均值)。

可以得到尺度幾乎不變的圖像(確切的術語是“等變”)。這是非常有用的,這樣無論圖片中的物體位于何處,我們都可以檢測到,(詳情參閱[18]和[19])

?

Reference:

1.1998論文:http://pdfs.semanticscholar.org/162d/958ff885f1462aeda91cd72582323fd6a1f4.pdf

2.SVM干的https://www.cnblogs.com/alexanderkun/p/6923064.html

3.https://blog.csdn.net/genius_zz/article/details/52804585

4.https://www.cnblogs.com/ranjiewen/articles/7467600.html

5.諾貝爾醫學獎可視皮層是分級的https://www.cnblogs.com/alexcai/p/5506806.html

6.http://www.mamicode.com/info-detail-2310074.html

總結

以上是生活随笔為你收集整理的以LeNet-5为例理解CNN的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。