1. 程式人生 > >深度學習(九)之卷積網路①

深度學習(九)之卷積網路①

卷積網路也叫卷積神經網路(CNN),是一種專門依賴處理具有類似網路結構的資料的神經網路。卷積是一種特殊的線性運算。卷積網路是指那些至少在網路的一層中使用卷積運算來代替一般的矩陣乘法運算的神經網路。

9.1 卷積運算

在通常形式中,卷積是對兩個變體函式的一種數學運算。

假設我們正在用鐳射感測器追蹤一艘宇宙飛船的位置。我們的機關感測器給出一個單獨的輸出x(t),表示宇宙飛船在時刻t的位置。x和t都是實值的,這意味著我們可以在任意時刻從感測器中讀出飛船的位置。 
現在假設我們的感測器感受到一定程度的噪聲干擾。為了得到飛船位置的低噪聲估計,我們對得到的測量結果進行平均。顯然,時間上越近的測量結果越相關,所以我們採用一種加權平均的方法,對於最近的測量結果賦予更高的權重。我們可以採用一個加權函式w(a)來實現,其中a表示測量結果距當前時刻的時間間隔。如果我們對任意時刻都採用這種加權平均的操作,就得到一個新的對於飛船位置的平滑估計函式s:

640?wx_fmt=png&wxfrom=5&wx_lazy=1

這種運算就叫卷積。卷積運算通常用星號表示:

640?wx_fmt=png&wxfrom=5&wx_lazy=1

在卷積網路的術語中,卷積的第一個引數(函式x)通常叫做輸入,第二個引數(函式w)叫做核函式。輸出有時被稱做特徵對映

下圖演示了一個在2維張量的卷積運算的例子。

640?wx_fmt=png&wxfrom=5&wx_lazy=1

任何一個使用矩陣乘法但是並不依賴矩陣結構的特殊性質的神經網路演算法,都適用於卷積運算,並且不需要對神經網路做出大的修改。

9.2 動機

卷積運算通過三個重要的思想來幫助改進機器學習系統:稀疏互動、引數共享、等變表示。另外,卷積提供了一種處理大小可變的輸入的方法。下面將會介紹。

卷積網路具有稀疏互動(也叫稀疏連線或者稀疏權重)的特徵。例如,當處理一張影象時,輸入的影象可能包含成千上萬個畫素點,但是我們可以通過只佔幾個到上百個畫素點來檢測一些小的有意義的特徵,例如影象邊緣。這意味著我們需要儲存的引數更少,不僅減少了模型的儲存需求,而且提高了他的統計效率。稀疏的圖形化解釋如圖9.2和圖9.3所示。在深度卷積網路中,處在網路深層的單元可能與絕大部分輸入是間接互動的,如圖9.4所示。這允許網路可以通過只描述稀疏互動的基石來高效地描述多個變數的複雜互動。 
0?wx_fmt=png

0?wx_fmt=png

0?wx_fmt=png

引數共享是指在一個模型的多個函式中使用相同的引數。下圖演示了引數共享時如何實現的。

0?wx_fmt=png

一個實際例子,圖9.6說明了稀疏連線和引數共享時如何顯著提高線性函式在一張影象上進行邊緣檢測的效率。

0?wx_fmt=png

9.3 池化

卷積網路中一個典型層包含三級,如下圖所示。在第一級中,這一層並行地計算多個卷積產生一組線性啟用響應。在第二級中,每一個線性啟用響應將會通過一個非線性的啟用函式,例如整流線性啟用函式。這一級有時也被稱為探測級。在第三級中,我們使用池化函式來進一步調整這一層的輸出。

0?wx_fmt=png

使用池化可以看作是增加了一個無限強的先驗:這一層學得的函式必須具有對少量平移的不變性。當這個假設成立是,池化可以極大地提高網路的統計效率。 
對空間區域進行池化產生了平移不變性,但當我們對分離引數的卷積輸出進行池化時,特徵能夠學得應該對哪種變換具有不變性,如圖9.9所示。

0?wx_fmt=png

9.4 卷積與池化作為一種無限強的先驗

先驗被認為是強或者弱取決於先驗中概率密度的集中程度。一個無限強的先驗需要對一些引數的概率置零並且完全禁止對這些引數賦值,無論資料對於這些引數的值給出了多大的支援。

使用池化時一直無限強的先驗:麼謳歌單元都具有對少量平移的不變性。把神經網路當作一個具有無限強先驗的全連線網路來實現會導致極大的計算浪費。但把卷積神經網路想成具有無限強先驗的全連線網路可以幫助我們更好地洞察卷積神經網路是如何工作的。其中一個關鍵的洞察是卷積和池化可能導致欠擬合。另一個關鍵的洞察是當我們比較卷積模型的統計學習表現是,只能以基準中的其他卷積模型作為比較的物件。