2018年5月14日 星期一

.人工智慧之卷積神經網路(CNN)

Convolutional Neural Networks (CNNs) explained








人工智慧之機器學習主要有三大類:1)分類;2)回歸;3)聚類。今天我們重點探討一下卷積神經網路(CNN)算法。

20世紀60年代,Hubel和Wiesel在研究貓腦皮層中,用於局部敏感和方向選擇的神經元時,發現其獨特的網路結構,可以有效地降低回饋神經網路的複雜性,繼而提出了卷積神經網路CNN(Convolutional Neural Networks)。

1980年,K.Fukushima 提出的新辨識機器是卷積神經網的第一個實現網。隨後,更多的科研工作者對該網進行了改進。其中,具有代表性的研究成果,是Alexander和Taylor提出的「改進認知機」,該方法綜合了各種改進方法的優點,並避免了耗時的誤差反向傳播。


現在,CNN已經成為眾多科學領域的研究熱點之一,特別是在模式分類領域,由於該網路避免了對圖像的複雜前期預處理,可以直接輸入原始圖像,因而得到了更為廣泛的應用。


blob.png



CNN概念:
在機器學習中,卷積神經網路CNN(Convolutional Neural Network)是一種前饋神經網路,它的人工神經元可以響應一部分覆蓋範圍內的周圍單元,可以應用於語音辨識、圖像處理和圖像辨識等領域。

CNN引入意義:
全連接神經網路中(下面左圖),每相鄰兩層之間的每個神經元之間,都是有邊相連的。當輸入層的特徵維度變得很高時,這時全連接網路需要訓練的參數,就會增大很多,計算速度就會變得很慢。


而在卷積神經網路CNN中(下面右圖),卷積層的神經元,只與前一層的部分神經元節點相連,即它的神經元間的連接是非全連接的,且同一層中某些神經元之間的連接的權重w,和偏移b是共享的,這樣大量地減少了需要訓練參數的數量


blob.png



CNN核心思想:
CNN模型限制參數了個數,並挖掘了局部結構。主要用來辨識位移、縮放,及其他形式扭曲不變性的二維圖形。局部感受視野,權值共享以及時間或空間,亞採樣這三種思想結合起來,獲得了某種程度的位移、尺度、形變不變性。

透過「卷積核」,作為中介。同一個卷積核在所有圖像內是共享的,圖像透過卷積操作後,仍然保留原先的位置關係。


blob.png


CNN實質:
CNN在本質上是一種輸入到輸出的映射,它能夠學習大量的輸入與輸出之間的映射關係,而不需要任何輸入和輸出之間的精確的數學表達式,只要用已知的模式,對卷積網路加以訓練,網路就具有輸入輸出對之間的映射能力。

卷積網路執行的是有導師訓練,所以其樣本集是由形如:(輸入向量,理想輸出向量)的向量對構成的。所有這些向量對,都應該是來源於網路,即將模擬的系統的實際「運行」結果。

它們可以是從實際運行系統中採集來的。在開始訓練前,所有的權都應該用一些不同的小隨機數進行初始化。「小隨機數」用來保證網路不會因權值過大,而進入飽和狀態,而導致訓練失敗;「不同」用來保證網路可以正常地學習。

CNN基本結構:

卷積神經網路CNN的結構,一般包含下面幾層:

blob.png


1)  輸入層:用於數據的輸入


2)  卷積層卷積層是卷積核在上一級輸入層上,透過逐一滑動窗口計算而得,卷積核中的每一個參數,都相當於傳統神經網路中的權值參數,與對應的局部像素相連接,將卷積核的各個參數,與對應的局部像素值相乘之和,得到卷積層上的結果。一般地,使用卷積核進行特徵提取,和特徵映射。


blob.png



特徵提取每個神經元的輸入,與前一層的局部接受域相連,並提取該局部的特徵。一旦該局部特徵被提取後,它與其它特徵間的位置關係,也隨之確定下來;

特徵映射網路的每個計算層,由多個特徵映射組成,每個特徵映射是一個平面,平面上所有神經元的權值相等。特徵映射結構,採用影響函數核小的sigmoid函數,作為卷積網路的激活函數,使得特徵映射具有位移不變性。

此外,由於一個映射面上的神經元共享權值,因而減少了網路自由參數的個數。

卷積神經網路中的每一個卷積層,都緊跟著一個,用來求局部平均,與二次提取的計算層,這種特有的兩次特徵提取結構,減小了特徵分辨率。


3)激勵層由於卷積也是一種線性運算,因此需要增加非線性映射。使用的激勵函數一般為ReLu函數:f(x)=max(x,0)。


blob.png



4)池化層:進行下採樣,對特徵圖稀疏處理,減少數據運算量。透過卷積層獲得了圖像的特徵之後,理論上可以直接使用這些特徵訓練分類器(如softmax),但這樣做將面臨巨大的計算量挑戰,且容易產生過擬合現象。

為了進一步降低網路訓練參數及模型的過擬合程度,需要對卷積層進行池化/採樣(Pooling)處理。池化/採樣的方式,通常有以下兩種:a)Max-Pooling: 選擇Pooling窗口中的最大值作為採樣值;b)Mean-Pooling: 將Pooling窗口中的所有值相加取平均,以平均值作為採樣值。


blob.png



5)全連接層CNN尾部進行重新擬合,減少特徵資訊的損失。


blob.png


6)輸出層用於最後輸出結果。

CNN訓練過程:
1)向前傳播階段:

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

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

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

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

2)向後傳播階段:

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

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

CNN優點:
1)  輸入圖像和網路的拓撲結構能很好的吻合;

2)  儘管使用較少參數,仍然有出色性能;

3)  避免了顯式的特徵抽取,而隱式地從訓練數據中進行學習;

4)  特徵提取和模式分類同時進行,並同時在訓練中產生,網路可以並行學習;

5)  權值共享減少網路的訓練參數,降低了網路結構的複雜性,適用性更強;

6)  無需手動選取特徵,訓練好權重,即得特徵,分類效果好;

7)  可以直接輸入網路,避免了特徵提取和分類過程中,數據重建的複雜度。


blob.png


CNN缺點
1)需要調整參數;

2)需要大樣本量,訓練最好要GPU;

3)物理含義不明確,神經網路本身就是一種難以解釋的 「黑箱模型」。

CNN常用框架:
1) Caffe:源於Berkeley的主流CV工具包,支持C++,python,matlab; Model Zoo中有大量預訓練好的模型供使用;

2) Torch: Facebook用的卷積神經網路工具包,透過時域卷積的本地接口,使用非常直觀; 定義新網路層簡單

3) TensorFlow:Google的深度學習框架;TensorBoard可視化很方便;數據和模型並行化好,速度快

CNN應用場景:
應用場景包括機器學習、語音辨識、文檔分析、語言檢測和圖像辨識等領域。

特別強調的是:CNN在圖像處理和圖像辨識領域,取得了很大的成功,在國際標準的ImageNet數據集上,許多成功的模型,都是基於CNN的。CNN相較於傳統的圖像處理算法的好處之一在於:避免了對圖像複雜的前期預處理過程,可以直接輸入原始圖像。


blob.png



結語:
卷積神經網路CNN是近年發展起來,並引起廣泛重視的一種高效辨識方法。卷積神經網路,以其局部權值共享的特殊結構,在模式辨識方面有著獨特的優越性,其佈局更接近於實際的生物神經網路,權值共享降低了網路的複雜性,特別是多維輸入向量的圖像,可以直接輸入網路,這一特點避免了特徵提取和分類過程中,數據重建的複雜度。

CNN算法在人工智慧機器學習、語音辨識、文檔分析、語言檢測和圖像辨識等領域等領域,有著廣泛應用。


                                                                                                                                                                                                                 
  

沒有留言:

張貼留言