神經網絡與深度學習有什麼區別?

知識匯聚

從廣義上來講,深度學習也就是深度神經網絡DNN,目前已經融合了各種各樣的神經網絡結構,比如CNN、RNN及其各種變種結構。神經網絡和深度學習已經相互交融。在這裡我們通過回顧神經網絡的發展歷程,去搞清楚各種網絡結構發展的初衷和他們之間的區別。

神經網絡在上世紀五、六十年代就已經被提出來了,當時還不叫神經網絡,而叫做perceptron,它有輸入層、輸出層和一個隱含層。輸入的特徵向量通過隱含層變換達到輸出層,在輸出層得到分類結果。


當時礙於計算機技術的落後,感知器傳輸函數是用線拉動變阻器改變電阻的方法機械實現的,試想一下當時的科學家在實驗室面對密密麻麻的導線的樣子,那時候硬件條件真的是太艱苦了。早期單層感知機的推動者是Rosenblatt,而單層感知機的最大問題我們都知道就是對稍複雜一些的函數都沒有辦法表達,比如:異或。因此當時的單層感知機是十分的雞肋了。

直到上世紀八十年代才Hinton等人提出了多層感知機(Multilayer Perceptron)克服了單層感知能力有限的問題。多層感知機的結構:

這時候的多層感知機就是我們現在說的全連接神經網絡,它啟示我們神經網絡的層數直接決定了它對問題的刻畫能力,但是隨著神經網絡層數的加深,問題也逐漸凸顯,就是優化函數越來越容易陷入局部最優解,偏離真正的全局最優。利用有限數據訓練的深層網絡,性能還不如較淺層網絡(神經網絡並不是越深越好)。與此同時,另一個嚴重的問題是隨著網絡層數增加,“梯度消失”現象更加嚴重。比如在利用sigmoid作為神經元的激活函數時,對於幅度為1的信號,在反向傳播梯度時,每傳遞一層,梯度衰減為原來的0.25,隨著層數的增加,低層基本接受不到有效的梯度更新。

到了2006年,Hinton利用預訓練方法緩解了局部最優解問題,將隱含層推動到了7層,也再一次激起了深度學習的熱潮。這裡所說的深度沒有確定標準,比如在語音識別領域中4層網絡就能夠被認為是“較深的”,而在圖像識別中20層以上的網絡都十分常見。此外,為了解決梯度消失的問題,ReLU,tanH等激活函數代替了sigmoid。此外,在2016年清華學霸何凱明提出的深度殘差網絡,讓深度學習變得超級深,網絡層數達到100多層。

至此,DNN的發展又面臨一個不可避免的問題——參數爆炸,網絡的的深度到來的性能的提高,與此犧牲的是對訓練數據的大量需求和過擬合現象。

這時我們要引出卷積神經網絡(CNN),CNN能以“卷積核”為中介,使得同一個卷積核在所有圖像內是共享的,

通過CNN特有的卷積、池化操作能大幅度降低全連接神經網絡的參數,利用有限數據也能得到效果良好的模型,CNN在捕捉圖像的局部特徵方面效果是有目共睹的。

但現實生活中,我們還有大量的時序數據需要處理,比如語音、文字等,面對這樣的問題,我們就需要召喚循環神經網絡RNN以及它的各種變種了。在普通的全連接網絡或CNN中,每層神經元的信號只能向上一層傳播,樣本的處理在各個時刻獨立,因此又被成為前向神經網絡(Feed-forward Neural Networks)。而在RNN中,神經元的輸出可以在下一個時間戳直接作用到自身,即第i層神經元在m時刻的輸入,除了(i-1)層神經元在該時刻的輸出外,還包括其自身在(m-1)時刻的輸出。表示成圖就是這樣的:


最後,不論是哪一種神經網絡,在實際應用時,需要結合具體問題分析哪一種網絡更加適合,而且各種神經網絡之間也往往混搭。儘管神經網絡的結構看起來千變萬化,但是隻要掌握了最基本的FCNN、CNN、RNN,其他的神經網絡也很容易理解和學習。


ICMLL實驗室

我是知名互聯網公司的算法工程師。這個問題有些體會。

神經網絡是一種計算模型。存在邊的2個節點說明他們有關係,可以建立很多層的網絡模型。神經網絡模型可以逼近任意一個函數,不管是簡單的還是複雜的函數。

深度學習是基於神經網絡模型的一種計算學習方法。大量的數據灌入模型,通過反向傳播,調參(邊的權重參數),不斷迭代後,誤差值逼近閾值,模型收斂。


因此,神經網絡是模型,深度學習是方法,它基於神經網絡模型學習。


如有疑問,歡迎進一步討論。


分享到:


相關文章: