Convolutional Neural Networks卷積神經網絡(二)

轉自http://blog.csdn.net/zouxy09/article/details/8781543算法

CNNs是第一個真正成功訓練多層網絡結構的學習算法。它利用空間關係減小須要學習的參數數目以提升通常前向BP算法的訓練性能。在CNN中,圖像的一小部分(局部感覺區域)做爲層級結構的最低層的輸入,信息再依次傳輸到不一樣的層,每層經過一個數字濾波器去得到觀測數據的最顯著的特徵。這個方法可以獲取對平移,縮放和旋轉不變的觀測數據的顯著特徵,由於圖像的局部感覺區域容許神經元或者處理單元能夠訪問到最基礎的特徵,例如定向邊緣或者角點。數據庫

2)卷積神經網絡的網絡結構網絡

 

卷積神經網絡是一個多層的神經網絡,每層由多個二維平面組成,而每一個平面由多個獨立神經元組成,機器學習

圖:卷積神經網絡的概念示範:輸入圖像經過和三個可訓練的濾波器和可加偏置進行卷積,濾波過程如圖一,卷積後在C1層產生三個特徵映射圖,而後特徵映射圖中每組的四個像素再進行求和,加權值,加偏置,經過一個Sigmoid函數獲得三個S2層的特徵映射圖。這些映射圖再進過濾波獲得C3層。這個層級結構再和S2同樣產生S4。最終,這些像素值被光柵化,並鏈接成一個向量輸入到傳統的神經網絡,獲得輸出函數

 通常地,C層爲特徵提取層,每一個神經元的輸入與前一層的局部感覺野相連,並提取該局部的特徵,一旦該局部特徵被提取後,它與其餘特徵間的位置關係也隨之肯定下來;S層是特徵映射層,網絡的每一個計算層由多個特徵映射組成,每一個特徵映射爲一個平面,平面上全部神經元的權值相等。特徵映射結構採用影響函數核小的sigmoid函數做爲卷積網絡的激活函數,使得特徵映射具備位移不變性佈局

       此外,因爲一個映射面上的神經元共享權值,於是減小了網絡自由參數的個數,下降了網絡參數選擇的複雜度。卷積神經網絡中的每個特徵提取層(C-層)都緊跟着一個用來求局部平均與二次提取的計算層(S-層),這種特有的兩次特徵提取結構使網絡在識別時對輸入樣本有較高的畸變容忍能力性能

3)關於參數減小與權值共享學習

      上面聊到,好像CNN一個牛逼的地方就在於經過感覺野和權值共享減小了神經網絡須要訓練的參數的個數。那到底是啥的呢?spa

       下圖左:若是咱們有1000x1000像素的圖像,有1百萬個隱層神經元,那麼他們全鏈接的話(每一個隱層神經元都鏈接圖像的每個像素點),就有1000x1000x1000000=10^12個鏈接,也就是10^12個權值參數。然而圖像的空間聯繫是局部的,就像人是經過一個局部的感覺野去感覺外界圖像同樣,每個神經元都不須要對全局圖像作感覺,每一個神經元只感覺局部的圖像區域,而後在更高層,將這些感覺不一樣局部的神經元綜合起來就能夠獲得全局的信息了。這樣,咱們就能夠減小鏈接的數目,也就是減小神經網絡須要訓練的權值參數的個數了。以下圖右:假如局部感覺野是10x10,隱層每一個感覺野只須要和這10x10的局部圖像相鏈接,因此1百萬個隱層神經元就只有一億個鏈接,即10^8個參數。比原來減小了四個0(數量級),這樣訓練起來就沒那麼費力了,但仍是感受不少的啊,那還有啥辦法沒?.net

咱們知道,隱含層的每個神經元都鏈接10x10個圖像區域,也就是說每個神經元存在10x10=100個鏈接權值參數。那若是咱們每一個神經元這100個參數是相同的呢?也就是說每一個神經元用的是同一個卷積核去卷積圖像。這樣咱們就只有100個參數,無論隱層的神經元個數有多少,兩層間的鏈接只有100個參數,這是權值共享,就是卷積神經網絡的主要優點,共同窗習。

       好了,你就會想,這樣提取特徵也忒不靠譜吧,這樣你只提取了一種特徵啊?對了,真聰明,咱們須要提取多種特徵對不?假如一種濾波器,也就是一種卷積核就是提出圖像的一種特徵,例如某個方向的邊緣。那麼咱們須要提取不一樣的特徵,怎麼辦,加多幾種濾波器不就好了嗎?對了。因此假設咱們加到100種濾波器,每種濾波器的參數不同,表示它提出輸入圖像的不一樣特徵,例如不一樣的邊緣。(這樣就會有100個feature map)這樣每種濾波器去卷積圖像就獲得對圖像的不一樣特徵的放映,咱們稱之爲Feature Map。因此100種卷積核就有100個Feature Map這100個Feature Map就組成了一層神經元。到這個時候明瞭了吧。咱們這一層有多少個參數了?100種卷積核x每種卷積核共享100個參數=100x100=10K,也就是1萬個參數。見下圖右:不一樣的顏色表達不一樣的濾波器。

 嘿喲,遺漏一個問題了。剛纔說隱層的參數個數和隱層的神經元個數無關,只和濾波器的大小和濾波器種類的多少有關。那麼隱層的神經元個數怎麼肯定呢?它和原圖像,也就是輸入的大小(神經元個數)、濾波器的大小和濾波器在圖像中的滑動步長都有關!例如,個人圖像是1000x1000像素,而濾波器大小是10x10,假設濾波器沒有重疊,也就是步長爲10,這樣隱層的神經元個數就是(1000x1000 )/ (10x10)=100x100個神經元了,假設步長是8,也就是卷積核會重疊兩個像素,那麼……我就不算了,思想懂了就好。注意了,這只是一種濾波器,也就是一個Feature Map的神經元個數哦,若是100個Feature Map就是100倍了。因而可知,圖像越大,神經元個數和須要訓練的權值參數個數的貧富差距就越大。

 

      須要注意的一點是,上面的討論都沒有考慮每一個神經元的偏置部分。因此權值個數須要加1 。這個也是同一種濾波器共享的。

      總之,卷積網絡的核心思想是將:局部感覺野、權值共享(或者權值複製)以及時間或空間亞採樣這三種結構思想結合起來得到了某種程度的位移、尺度、形變不變性

例子:

 LeNet-5共有7層,不包含輸入,每層都包含可訓練參數(鏈接權重)。輸入圖像爲32*32大小。這要比Mnist數據庫(一個公認的手寫數據庫)中最大的字母還大。這樣作的緣由是但願潛在的明顯特徵如筆畫斷電或角點可以出如今最高層特徵監測子感覺野的中心。

        咱們先要明確一點:每一個層有多個Feature Map,每一個Feature Map經過一種卷積濾波器提取輸入的一種特徵,而後每一個Feature Map有多個神經元。

        C1層是一個卷積層(爲何是卷積?卷積運算一個重要的特色就是,經過卷積運算,可使原信號特徵加強,而且下降噪音),由6個特徵圖Feature Map構成。特徵圖中每一個神經元與輸入中5*5的鄰域相連。特徵圖的大小爲28*28,這樣能防止輸入的鏈接掉到邊界以外(是爲了BP反饋時的計算,不致梯度損失,我的看法)。C1有156個可訓練參數(每一個濾波器5*5=25個unit參數和一個bias參數,一共6個濾波器,共(5*5+1)*6=156個參數),共156*(28*28)=122,304個鏈接。

       S2層是一個下采樣層(爲何是下采樣?利用圖像局部相關性的原理,對圖像進行子抽樣,能夠減小數據處理量同時保留有用信息),有6個14*14的特徵圖。特徵圖中的每一個單元與C1中相對應特徵圖的2*2鄰域相鏈接。S2層每一個單元的4個輸入相加,乘以一個可訓練參數,再加上一個可訓練偏置。結果經過sigmoid函數計算。可訓練係數和偏置控制着sigmoid函數的非線性程度。若是係數比較小,那麼運算近似於線性運算,亞採樣至關於模糊圖像。若是係數比較大,根據偏置的大小亞採樣能夠被當作是有噪聲的「或」運算或者有噪聲的「與」運算。每一個單元的2*2感覺野並不重疊,所以S2中每一個特徵圖的大小是C1中特徵圖大小的1/4(行和列各1/2)。S2層有12個可訓練參數和5880個鏈接。

圖:卷積和子採樣過程:卷積過程包括:用一個可訓練的濾波器fx去卷積一個輸入的圖像(第一階段是輸入的圖像,後面的階段就是卷積特徵map了),而後加一個偏置bx,獲得卷積層Cx。子採樣過程包括:每鄰域四個像素求和變爲一個像素,而後經過標量Wx+1加權,再增長偏置bx+1,而後經過一個sigmoid激活函數,產生一個大概縮小四倍的特徵映射圖Sx+1

       因此從一個平面到下一個平面的映射能夠看做是做卷積運算,S-層可看做是模糊濾波器,起到二次特徵提取的做用。隱層與隱層之間空間分辨率遞減,而每層所含的平面數遞增,這樣可用於檢測更多的特徵信息。

       C3層也是一個卷積層,它一樣經過5x5的卷積核去卷積層S2,而後獲得的特徵map就只有10x10個神經元,可是它有16種不一樣的卷積核,因此就存在16個特徵map了。這裏須要注意的一點是:C3中的每一個特徵map是鏈接到S2中的全部6個或者幾個特徵map的,表示本層的特徵map是上一層提取到的特徵map的不一樣組合(這個作法也並非惟一的)。(看到沒有,這裏是組合,就像以前聊到的人的視覺系統同樣,底層的結構構成上層更抽象的結構,例如邊緣構成形狀或者目標的部分)。

       剛纔說C3中每一個特徵圖由S2中全部6個或者幾個特徵map組合而成。爲何不把S2中的每一個特徵圖鏈接到每一個C3的特徵圖呢?緣由有2點。第一,不徹底的鏈接機制將鏈接的數量保持在合理的範圍內。第二,也是最重要的,其破壞了網絡的對稱性。因爲不一樣的特徵圖有不一樣的輸入,因此迫使他們抽取不一樣的特徵(但願是互補的)。

      例如,存在的一個方式是:C3的前6個特徵圖以S2中3個相鄰的特徵圖子集爲輸入。接下來6個特徵圖以S2中4個相鄰特徵圖子集爲輸入。而後的3個以不相鄰的4個特徵圖子集爲輸入。最後一個將S2中全部特徵圖爲輸入。這樣C3層有1516個可訓練參數和151600個鏈接。

       S4層是一個下采樣層,由16個5*5大小的特徵圖構成。特徵圖中的每一個單元與C3中相應特徵圖的2*2鄰域相鏈接,跟C1和S2之間的鏈接同樣。S4層有32個可訓練參數(每一個特徵圖1個因子和一個偏置)和2000個鏈接。

       C5層是一個卷積層,有120個特徵圖。每一個單元與S4層的所有16個單元的5*5鄰域相連。因爲S4層特徵圖的大小也爲5*5(同濾波器同樣),故C5特徵圖的大小爲1*1:這構成了S4和C5之間的全鏈接。之因此仍將C5標示爲卷積層而非全相聯層,是由於若是LeNet-5的輸入變大,而其餘的保持不變,那麼此時特徵圖的維數就會比1*1大。C5層有48120個可訓練鏈接。

       F6層有84個單元(之因此選這個數字的緣由來自於輸出層的設計),與C5全鏈接。有(120+1)*84個可訓練參數。如同經典神經網絡,F6層計算輸入向量和權重向量之間的點積,再加上一個偏置。而後將其傳遞給sigmoid函數產生單元i的一個狀態。

       最後,輸出層由歐式徑向基函數單元組成,

RBF (Radial Basis Function)能夠看作是一個高維空間中的曲面擬合(逼近)問題,學習是爲了在多維空間找到一個可以最佳匹配訓練數據的曲面,而後來一批新的數據,用剛纔訓練的那個曲面來處理(好比迴歸、分類)。RBF的本質思想是反向傳播學習算法應用遞歸技術,這種技術在統計學中被稱爲隨機逼近。RBF裏的basis function(徑向基函數裏的基函數)就是在神經網絡的隱單元裏提供了一個函數集,該函數集在輸入模式(向量)擴散至隱空間時,爲其構建了一個任意的基。這個函數集中的函數就被稱爲徑向基函數。

映射到高維空間的緣由:

一、一個模式分類問題若是映射到一個高維空間將會比映射到一個地位空間更可能實現線性可分。

二、隱空間的維數越高,逼近就越精確

注意:這裏是非線性映射到高維空間,其目的是是使得分類更加容易、精確。

最後,輸出層由歐式徑向基函數單元組成,每類一個單元,每一個有84個輸入。換句話說,每一個輸出RBF單元計算輸入向量和參數向量之間的歐式距離。輸出離參數向量越遠,RBF輸出的越大。一個RBF輸出能夠被理解爲衡量輸入模式和與RBF相關聯類的一個模型的匹配程度的懲罰項。用機率術語來講,RBF輸出能夠被理解爲F6層配置空間的高斯分佈的對數似然函數。給定一個輸入模式,損失函數應該能使F6的配置與RBF參數向量(即模式的指望分類)足夠接近。這些單元的參數時人工選取並保持固定的。

RBF參數向量起着F6層目標向量的角色。須要指出這些向量的成分是+1或者-1,這正好在F6 sigmoid的範圍內,所以能夠防止sigmoid函數飽和。實際上,+1和-1是sigmoid函數的最大彎曲的點處。這使得F6單元運行在最大非線性範圍內。必須避免sigmoid函數的飽和,由於這將會致使損失函數較慢的收斂和病態問題。

5)訓練過程

        神經網絡用於模式識別的主流是有指導學習網絡,無指導學習網絡更多的是用於聚類分析。對於有指導的模式識別,因爲任同樣本的類別是已知的,樣本在空間的分佈再也不是依據其天然分佈傾向來劃分,而是要根據同類樣本在空間的分佈及不一樣類樣本之間的分離程度找一種適當的空間劃分方法,或者找到一個分類邊界,使得不一樣類樣本分別位於不一樣的區域內。這就須要一個長時間且複雜的學習過程,不斷調整用以劃分樣本空間的分類邊界的位置,使盡量少的樣本被劃分到非同類區域中。

       卷積網絡在本質上是一種輸入到輸出的映射,它可以學習大量的輸入與輸出之間的映射關係,而不須要任何輸入和輸出之間的精確的數學表達式,只要用已知的模式對卷積網絡加以訓練,網絡就具備輸入輸出對之間的映射能力。卷積網絡執行的是有導師訓練,因此其樣本集是由形如:(輸入向量,理想輸出向量)的向量對構成的。全部這些向量對,都應該是來源於網絡即將模擬的系統的實際「運行」結果。它們能夠是從實際運行系統中採集來的。在開始訓練前,全部的權都應該用一些不一樣的小隨機數進行初始化。「小隨機數」用來保證網絡不會因權值過大而進入飽和狀態,從而致使訓練失敗;「不一樣」用來保證網絡能夠正常地學習。實際上,若是用相同的數去初始化權矩陣,則網絡無能力學習。

       訓練算法與傳統的BP算法差很少。主要包括4步,這4步被分爲兩個階段:

第一階段,向前傳播階段:

a)從樣本集中取一個樣本(X,Yp),將X輸入網絡;

b)計算相應的實際輸出Op

      在此階段,信息從輸入層通過逐級的變換,傳送到輸出層。這個過程也是網絡在完成訓練後正常運行時執行的過程。在此過程當中,網絡執行的是計算(實際上就是輸入與每層的權值矩陣相點乘,獲得最後的輸出結果):

          Op=Fn(…(F2(F1(XpW(1))W(2))…)W(n)

第二階段,向後傳播階段

a)算實際輸出Op與相應的理想輸出Yp的差;

b)按極小化偏差的方法反向傳播調整權矩陣。

6)卷積神經網絡的優勢

        卷積神經網絡CNN主要用來識別位移、縮放及其餘形式扭曲不變性的二維圖形。因爲CNN的特徵檢測層經過訓練數據進行學習,因此在使用CNN時,避免了顯式的特徵抽取,而隱式地從訓練數據中進行學習;再者因爲同一特徵映射面上的神經元權值相同,因此網絡能夠並行學習,這也是卷積網絡相對於神經元彼此相連網絡的一大優點。卷積神經網絡以其局部權值共享的特殊結構在語音識別和圖像處理方面有着獨特的優越性,其佈局更接近於實際的生物神經網絡,權值共享下降了網絡的複雜性,特別是多維輸入向量的圖像能夠直接輸入網絡這一特色避免了特徵提取和分類過程當中數據重建的複雜度。

        流的分類方式幾乎都是基於統計特徵的,這就意味着在進行分辨前必須提取某些特徵。然而,顯式的特徵提取並不容易,在一些應用問題中也並不是老是可靠的。卷積神經網絡,它避免了顯式的特徵取樣,隱式地從訓練數據中進行學習。這使得卷積神經網絡明顯有別於其餘基於神經網絡的分類器,經過結構重組和減小權值將特徵提取功能融合進多層感知器。它能夠直接處理灰度圖片,可以直接用於處理基於圖像的分類。

       卷積網絡較通常神經網絡在圖像處理方面有以下優勢: a)輸入圖像和網絡的拓撲結構能很好的吻合;b)特徵提取和模式分類同時進行,並同時在訓練中產生;c)權重共享能夠減小網絡的訓練參數,使神經網絡結構變得更簡單,適應性更強。

7)小結

       CNNs中這種層間聯繫和空域信息的緊密關係,使其適於圖像處理和理解。並且,其在自動提取圖像的顯著特徵方面還表現出了比較優的性能。在一些例子當中,Gabor濾波器已經被使用在一個初始化預處理的步驟中,以達到模擬人類視覺系統對視覺刺激的響應。在目前大部分的工做中,研究者將CNNs應用到了多種機器學習問題中,包括人臉識別,文檔分析和語言檢測等。爲了達到尋找視頻中幀與幀之間的相干性的目的,目前CNNs經過一個時間相干性去訓練,但這個不是CNNs特有的。

相關文章
相關標籤/搜索