單層感知機
擁有輸入層、隱含層、輸出層。輸入的特徵向量通過隱含層變換達到輸出層,在輸出層得到分類結果。只能處理很簡單的函數。
多層感知機(現在叫神經網絡NN)
特點:包含多個隱含層;
使用sigmoid和tanh等連續函數模擬神經元對激勵的響應;
使用反向傳播BP算法來訓練;
擺脫了早起離散傳輸函數的束縛。
圖1上下層神經元全部相連的神經網絡——多層感知機
神經網絡的層數直接決定了它對現實的刻畫能力——利用每層更少的神經元擬合更加複雜的函數。
層數增加帶來的問題:
優化函數容易陷入局部最優,偏離真正的全局最優;
性能下降;
“梯度消失”現象嚴重。
2006年,Hinton利用預訓練方法緩解了局部最優解問題,將隱含層推動到了7層。
DNN深度神經網絡
克服梯度措施:用ReLU、maxout等傳輸函數代替了sigmoid,形成了如今DNN的基本形式。單從結構上來說,全連接的DNN和圖1的多層感知機沒有任何區別。
後來的高速公路網絡(highway network)和深度殘差學習(deep residual learning)進一步避免了梯度消失,網絡層數達到了前所未有的一百多層(深度殘差學習:152層)
圖2縮減版的深度殘差學習網絡,僅有34層,終極版有152層
全連接DNN潛在問題:參數數量的膨脹。這不僅容易過擬合,而且極容易陷入局部最優。另外,圖像中有固有的局部模式可以利用,應該將圖像處理中的概念和神經網絡技術相結合。
CNN卷積神經網絡(空間上深度)
通過“卷積核”作爲中介連接上下層神經元,不是全連接。同一個卷積核在所有圖像內是共享的,圖像通過卷積操作後仍然保留原先的位置關係。兩層之間的卷積傳輸的示意圖如下:
圖3卷積神經網絡隱含層(摘自Theano教程)
假設圖3中m-1=1是輸入層,我們需要識別一幅彩色圖像,這幅圖像具有四個通道ARGB(透明度和紅綠藍,對應了四幅相同大小的圖像)。
卷積核大小爲100*100,共100個卷積核w1到w100。
用w1在ARGB圖像上進行卷積操作,可以得到隱含層的第一幅圖像;這幅隱含層圖像左上角第一個像素是四幅輸入圖像左上角100*100區域內像素的加權求和,以此類推。
同理,算上其他卷積核,隱含層對應100幅“圖像”。每幅圖像對是對原始圖像中不同特徵的響應。按照這樣的結構繼續傳遞下去。
CNN中還有max-pooling等操作進一步提高魯棒性。
圖4一個典型的卷積神經網絡結構,注意到最後一層實際上是一個全連接層(摘自Theano教程)
我們注意到輸入層到隱含層的參數瞬間降低到了100*100*100=10^6個!這使得我們能夠用已有的訓練數據得到良好的模型。CNN模型限制參數了個數並挖掘了局部結構,使它成功應用在了圖像識別領域。同理,利用語音語譜結構中的局部信息,CNN照樣能應用在語音識別中。
RNN遞歸神經網絡(時間上深度)
全連接的DNN還存在着另一個問題:無法對時間序列上的變化進行建模。然而,樣本出現的時間順序對於自然語言處理、語音識別、手寫體識別等應用非常重要。
爲了解決這個問題遞歸神經網絡RNN出現了。
在普通的全連接網絡或CNN中,每層神經元的信號只能向上一層傳播,樣本的處理在各個時刻獨立,因此又被成爲前向神經網絡(Feed-forward Neural Networks)。而在RNN中,神經元的輸出可以在下一個時間戳直接作用到自身,表示成圖就是這樣的:
圖5 RNN網絡結構
即在隱含層節點之間增加了互連。爲了分析方便,將RNN在時間上進行展開,得到如圖6所示的結構:
圖6 RNN在時間上進行展開
(t+1)時刻網絡的最終結果O(t+1)是該時刻輸入和所有歷史共同作用的結果!這就達到了對時間序列建模的目的。
RNN可以看成一個在時間上傳遞的神經網絡,它的深度是時間的長度!
不過,“梯度消失”現象又要出現了,只不過這次發生在時間軸上。之前說“所有歷史”共同作用只是理想的情況,在實際中,這種影響也就只能維持若干個時間戳。
補充基本概念
神經元的組成:
分類:
衍生:CW-RNN(Clockwork RNN)
通過將隱含層劃分幾個模塊來減少RNN中的長時間依賴從而減少訓練時間。
學習算法
BPTT(Back Propagation Through Time):BP算法的擴展,將加在網絡上的時序信號按層展開,用BP算法訓練。
RTRL(Real Time Recurrent Learning):用於訓練局部網絡。
LSTM長短時記憶單元
爲了解決RNN時間上的梯度消失,機器學習領域發展出了LSTM,通過門的開關實現時間上記憶功能,並防止梯度消失,一個LSTM單元長這個樣子:
圖7 LSTM的模樣
除了CNN、RNN、DNN三種網絡,和之前提到的深度殘差學習、LSTM外,深度學習還有許多其他的結構,還有了雙向RNN、雙向LSTM,同時利用歷史和未來的信息。
圖8雙向RNN
事實上,不論是那種網絡,他們在實際應用中常常都混合着使用。
參考文獻:
[1] Bengio Y. Learning Deep Architectures for AI[J]. Foundations & Trends廬 in Machine Learning, 2009, 2(1):1-127.
[2] Hinton G E, Salakhutdinov R R. Reducing the Dimensionality of Data with Neural Networks[J]. Science, 2006, 313(5786):504-507.
[3] He K, Zhang X, Ren S, Sun J. Deep Residual Learning for Image Recognition. arXiv:1512.03385, 2015.
[4] Srivastava R K, Greff K, Schmidhuber J. Highway networks. arXiv:1505.00387, 2015.
[5] Ng寫的Ufldl:UFLDL教程 - Ufld
[6]Theano內自帶的教程:Deep Learning Tutorialsl