1. 程式人生 > >CNN、RNN、DNN

CNN、RNN、DNN

圖像識別 https 自然語言處理 res 形式 實際應用 參考 異或 克服

一:神經網絡

  技術起源於上世紀五、六十年代,當時叫感知機(perceptron),包含有輸入層、輸出層和一個隱藏層。輸入的特征向量通過隱藏層變換到達輸出層,由輸出層得到分類結果。但早期的單層感知機存在一個嚴重的問題——它對稍微復雜一些的函數都無能為力(如異或操作)。直到上世紀八十年代才被Hition、Rumelhart等人發明的多層感知機克服,就是具有多層隱藏層的感知機。

多層感知機可以擺脫早期離散傳輸函數的束縛,使用sigmoid或tanh等連續函數模擬神經元對激勵的響應,在訓練算法上則使用Werbos發明的反向傳播BP算法。這就是現在所說的神經網絡NN。

神經網絡的層數直接決定了它對現實的刻畫能力——利用每層更少的神經元擬合更加復雜的函數。但問題出現了——隨著神經網絡層數的加深,優化函數越來越容易陷入局部最優解,並且這個“陷阱”越來越偏離真正的全局最優。利用有限數據訓練的深層網絡,性能還不如較淺層網絡。同時,另一個不可忽略的問題是隨著網絡層數增加,“梯度消失”現象更加嚴重。(具體來說,我們常常使用sigmoid作為神經元的輸入輸出函數。對於幅度為1的信號,在BP反向傳播梯度時,每傳遞一層,梯度衰減為原來的0.25。層數一多,梯度指數衰減後低層基本上接受不到有效的訓練信號。)

2006年,Hition提出了深度學習的概念,引發了深度學習的熱潮。具體是利用預訓練的方式緩解了局部最優解的問題,將隱藏層增加到了7層,實現了真正意義上的“深度”。

二:DNN形成

為了克服梯度消失,ReLU、maxout等傳輸函數代替了sigmoid,形成了如今DNN的基本形式。結構跟多層感知機一樣,如下圖所示:

技術分享圖片

我們看到全連接DNN的結構裏下層神經元和所有上層神經元都能夠形成連接,從而導致參數數量膨脹。假設輸入的是一幅像素為1K*1K的圖像,隱含層有1M個節點,光這一層就有10^12個權重需要訓練,這不僅容易過擬合,而且極容易陷入局部最優。

三:CNN形成

由於圖像中存在固有的局部模式(如人臉中的眼睛、鼻子、嘴巴等),所以將圖像處理和神將網絡結合引出卷積神經網絡CNN。CNN是通過卷積核將上下層進行鏈接,同一個卷積核在所有圖像中是共享的,圖像通過卷積操作後仍然保留原先的位置關系。

技術分享圖片技術分享圖片

通過一個例子簡單說明卷積神經網絡的結構。假設我們需要識別一幅彩色圖像,這幅圖像具有四個通道ARGB(透明度和紅綠藍,對應了四幅相同大小的圖像),假設卷積核大小為100*100,共使用100個卷積核w1到w100(從直覺來看,每個卷積核應該學習到不同的結構特征)。

用w1在ARGB圖像上進行卷積操作,可以得到隱含層的第一幅圖像;這幅隱含層圖像左上角第一個像素是四幅輸入圖像左上角100*100區域內像素的加權求和,以此類推。

同理,算上其他卷積核,隱含層對應100幅“圖像”。每幅圖像對是對原始圖像中不同特征的響應。按照這樣的結構繼續傳遞下去。CNN中還有max-pooling等操作進一步提高魯棒性。

技術分享圖片

註意到最後一層實際上是一個全連接層,在這個例子裏,我們註意到輸入層到隱藏層的參數瞬間降低到了100*100*100=10^6個!這使得我們能夠用已有的訓練數據得到良好的模型。題主所說的適用於圖像識別,正是由於CNN模型限制參數了個數並挖掘了局部結構的這個特點。順著同樣的思路,利用語音語譜結構中的局部信息,CNN照樣能應用在語音識別中。

四:RNN形成

DNN無法對時間序列上的變化進行建模。然而,樣本出現的時間順序對於自然語言處理、語音識別、手寫體識別等應用非常重要。為了適應這種需求,就出現了大家所說的另一種神經網絡結構——循環神經網絡RNN。雷鋒網

在普通的全連接網絡或CNN中,每層神經元的信號只能向上一層傳播,樣本的處理在各個時刻獨立,因此又被成為前向神經網絡(Feed-forward Neural Networks)。而在RNN中,神經元的輸出可以在下一個時間段直接作用到自身,即第i層神經元在m時刻的輸入,除了(i-1)層神經元在該時刻的輸出外,還包括其自身在(m-1)時刻的輸出!表示成圖就是這樣的:

技術分享圖片

為方便分析,按照時間段展開如下圖所示:

技術分享圖片

(t+1)時刻網絡的最終結果O(t+1)是該時刻輸入和所有歷史共同作用的結果!這就達到了對時間序列建模的目的。RNN可以看成一個在時間上傳遞的神經網絡,它的深度是時間的長度!正如我們上面所說,“梯度消失”現象又要出現了,只不過這次發生在時間軸上。

所以RNN存在無法解決長時依賴的問題。為解決上述問題,提出了LSTM(長短時記憶單元),通過cell門開關實現時間上的記憶功能,並防止梯度消失,LSTM單元結構如下圖所示:

技術分享圖片

除了DNN、CNN、RNN、ResNet(深度殘差)、LSTM之外,還有很多其他結構的神經網絡。如因為在序列信號分析中,如果我能預知未來,對識別一定也是有所幫助的。因此就有了雙向RNN、雙向LSTM,同時利用歷史和未來的信息。

事實上,不論是哪種網絡,他們在實際應用中常常都混合著使用,比如CNN和RNN在上層輸出之前往往會接上全連接層,很難說某個網絡到底屬於哪個類別。不難想象隨著深度學習熱度的延續,更靈活的組合方式、更多的網絡結構將被發展出來。

參考鏈接:https://www.leiphone.com/news/201702/ZwcjmiJ45aW27ULB.html

簡單總結如下:

技術分享圖片

CNN、RNN、DNN