cnn程序流程图_深度学习(一)——CNN算法流程
深度學習(一)——CNN(卷積神經(jīng)網(wǎng)絡)算法流程
0?引言
20世紀60年代,Hubel和Wiesel在研究貓腦皮層中用于局部敏感和方向選擇的神經(jīng)元時發(fā)現(xiàn)其獨特的網(wǎng)絡結構可以有效地降低反饋神經(jīng)網(wǎng)絡的復雜性,繼而提出了卷積神經(jīng)網(wǎng)絡(Convolutional Neural Networks-簡稱CNN)。現(xiàn)在,CNN已經(jīng)成為眾多科學領域的研究熱點之一,特別是在模式分類領域,由于該網(wǎng)絡避免了對圖像的復雜前期預處理,可以直接輸入原始圖像,因而得到了更為廣泛的應用。 K.Fukushima在1980年提出的新識別機是卷積神經(jīng)網(wǎng)絡的第一個實現(xiàn)網(wǎng)絡。隨后,更多的科研工作者對該網(wǎng)絡進行了改進。其中,具有代表性的研究成果是Alexander和Taylor提出的“改進認知機”,該方法綜合了各種改進方法的優(yōu)點并避免了耗時的誤差反向傳播。
一般地,CNN的基本結構包括兩層:
1)特征提取層:每個神經(jīng)元的輸入與前一層的局部接受域相連,并提取該局部的特征。一旦該局部特征被提取后,它與其它特征間的位置關系也隨之確定下來;
2)特征映射層,網(wǎng)絡的每個計算層由多個特征映射組成,每個特征映射是一個平面,平面上所有神經(jīng)元的權值相等。特征映射結構采用影響函數(shù)核小的sigmoid函數(shù)作為卷積網(wǎng)絡的激活函數(shù),使得特征映射具有位移不變性。
此外,由于一個映射面上的神經(jīng)元共享權值,因而減少了網(wǎng)絡自由參數(shù)的個數(shù)。卷積神經(jīng)網(wǎng)絡中的每一個卷積層都緊跟著一個用來求局部平均與二次提取的計算層,這種特有的兩次特征提取結構減小了特征分辨率。
1?神經(jīng)網(wǎng)絡結構
如圖為單層神經(jīng)網(wǎng)絡:
其計算表達式如下:
其中,該單元也可以被稱作是Logistic回歸模型。當將多個單元組合起來并具有分層結構時,就形成了神經(jīng)網(wǎng)絡模型如下圖所示:
則其表達式如下所示
如此一層一層的加上去,最終就形成了深度神經(jīng)網(wǎng)絡。而本文的卷積神經(jīng)網(wǎng)絡就是一種深度神經(jīng)網(wǎng)絡。
2?卷積神經(jīng)網(wǎng)絡
卷積神經(jīng)網(wǎng)絡CNN的結構一般包含這幾個層(如圖1):
1)輸入層:用于數(shù)據(jù)的輸入
2)卷積層:使用卷積核進行特征提取和特征映射
3)激勵層:由于卷積也是一種線性運算,因此需要增加非線性映射
4)池化層:進行下采樣,對特征圖稀疏處理,減少數(shù)據(jù)運算量。
5)全連接層:通常在CNN的尾部進行重新擬合,減少特征信息的損失
在卷積神經(jīng)網(wǎng)絡中,有幾個特別重要的改進思路和技術,為了降低神經(jīng)網(wǎng)絡節(jié)點,來提高學習效率,具體如下所述:
2.1 局部感知
卷積神經(jīng)網(wǎng)絡有兩種神器可以降低參數(shù)數(shù)目,第一種神器叫做局部感知野。一般認為人對外界的認知是從局部到全局的,而圖像的空間聯(lián)系也是局部的像素聯(lián)系較為緊密,而距離較遠的像素相關性則較弱。因而,每個神經(jīng)元其實沒有必要對全局圖像進行感知,只需要對局部進行感知,然后在更高層將局部的信息綜合起來就得到了全局的信息。網(wǎng)絡部分連通的思想,也是受啟發(fā)于生物學里面的視覺系統(tǒng)結構。視覺皮層的神經(jīng)元就是局部接受信息的(即這些神經(jīng)元只響應某些特定區(qū)域的刺激)。如下圖所示:左圖為全連接,右圖為局部連接。
在上右圖中,假如每個神經(jīng)元只和10×10個像素值相連,那么權值數(shù)據(jù)為1000000×100個參數(shù),減少為原來的千分之一。而那10×10個像素值對應的10×10個參數(shù),其實就相當于卷積操作。
2.2 參數(shù)共享
但其實這樣的話參數(shù)仍然過多,那么就啟動第二級神器,即權值共享。在上面的局部連接中,每個神經(jīng)元都對應100個參數(shù),一共1000000個神經(jīng)元,如果這1000000個神經(jīng)元的100個參數(shù)都是相等的,那么參數(shù)數(shù)目就變?yōu)?00了。
怎么理解權值共享呢?我們可以這100個參數(shù)(也就是卷積操作)看成是提取特征的方式,該方式與位置無關。這其中隱含的原理則是:圖像的一部分的統(tǒng)計特性與其他部分是一樣的。這也意味著我們在這一部分學習的特征也能用在另一部分上,所以對于這個圖像上的所有位置,我們都能使用同樣的學習特征。
更直觀一些,當從一個大尺寸圖像中隨機選取一小塊,比如說 8×8 作為樣本,并且從這個小塊樣本中學習到了一些特征,這時我們可以把從這個 8×8 樣本中學習到的特征作為探測器,應用到這個圖像的任意地方中去。特別是,我們可以用從 8×8 樣本中所學習到的特征跟原本的大尺寸圖像作卷積,從而對這個大尺寸圖像上的任一位置獲得一個不同特征的激活值。
如下圖所示,展示了一個33的卷積核在55的圖像上做卷積的過程。每個卷積都是一種特征提取方式,就像一個篩子,將圖像中符合條件(激活值越大越符合條件)的部分篩選出來。
2.3 多卷積核
上面所述只有100個參數(shù)時,表明只有1個100*100的卷積核,顯然,特征提取是不充分的,我們可以添加多個卷積核,比如32個卷積核,可以學習32種特征。在有多個卷積核時,如下圖所示:
上圖右,不同顏色表明不同的卷積核。每個卷積核都會將圖像生成為另一幅圖像。比如兩個卷積核就可以將生成兩幅圖像,這兩幅圖像可以看做是一張圖像的不同的通道。如下圖所示,下圖有個小錯誤,即將w1改為w0,w2改為w1即可。下文中仍以w1和w2稱呼它們。
下圖展示了在四個通道上的卷積操作,有兩個卷積核,生成兩個通道。其中需要注意的是,四個通道上每個通道對應一個卷積核,先將w2忽略,只看w1,那么在w1的某位置(i,j)處的值,是由四個通道上(i,j)處的卷積結果相加然后再取激活函數(shù)值得到的。
所以,在上圖由4個通道卷積得到2個通道的過程中,參數(shù)的數(shù)目為4×2×2×2個,其中4表示4個通道,第一個2表示生成2個通道,最后的2×2表示卷積核大小。
2.4 Down-pooling
在通過卷積獲得了特征 (features) 之后,下一步我們希望利用這些特征去做分類。理論上講,人們可以用所有提取得到的特征去訓練分類器,例如 softmax 分類器,但這樣做面臨計算量的挑戰(zhàn)。例如:對于一個 96X96 像素的圖像,假設我們已經(jīng)學習得到了400個定義在8X8輸入上的特征,每一個特征和圖像卷積都會得到一個 (96 ? 8 + 1) × (96 ? 8 + 1) = 7921 維的卷積特征,由于有 400 個特征,所以每個樣例 (example) 都會得到一個 892 × 400 = 3,168,400 維的卷積特征向量。學習一個擁有超過 3 百萬特征輸入的分類器十分不便,并且容易出現(xiàn)過擬合 (over-fitting)。
為了解決這個問題,首先回憶一下,我們之所以決定使用卷積后的特征是因為圖像具有一種“靜態(tài)性”的屬性,這也就意味著在一個圖像區(qū)域有用的特征極有可能在另一個區(qū)域同樣適用。因此,為了描述大的圖像,一個很自然的想法就是對不同位置的特征進行聚合統(tǒng)計,例如,人們可以計算圖像一個區(qū)域上的某個特定特征的平均值 (或最大值)。這些概要統(tǒng)計特征不僅具有低得多的維度 (相比使用所有提取得到的特征),同時還會改善結果(不容易過擬合)。這種聚合的操作就叫做池化 (pooling),有時也稱為平均池化或者最大池化 (取決于計算池化的方法)。
至此,卷積神經(jīng)網(wǎng)絡的基本結構和原理已經(jīng)闡述完畢。
2.5 多層卷積
在實際應用中,往往使用多層卷積,然后再使用全連接層進行訓練,多層卷積的目的是一層卷積學到的特征往往是局部的,層數(shù)越高,學到的特征就越全局化。
總結
以上是生活随笔為你收集整理的cnn程序流程图_深度学习(一)——CNN算法流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu要更新18.04了,lei了
- 下一篇: 腾讯帮助警方破获 30+ 起吃鸡外挂案件