倍可親

回復: 0
列印 上一主題 下一主題

CNN(卷積神經網路)、RNN(循環神經網路)、DNN(深度神經網路)概念區分理解

[複製鏈接]

1萬

主題

2萬

帖子

3萬

積分

貝殼精神領袖

Rank: 6Rank: 6

積分
35927
跳轉到指定樓層
樓主
華盛頓人 發表於 2018-2-13 12:58 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  2018-02-13 07:00

  1、相關知識

  從廣義上來說,NN(或是更美的DNN)確實可以認為包含了CNN、RNN這些具體的變種形式。有很多人認為,它們並沒有可比性,或是根本沒必要放在一起比較。在實際應用中,所謂的深度神經網路DNN,往往融合了多種已知的結構,包括convolution layer 或是 LSTM 單元。其實,如果我們順著神經網路技術發展的脈絡,就很容易弄清這幾種網路結構發明的初衷,和他們之間本質的區別。

  2、神經網路發展2.1 感知機

  神經網路技術起源於上世紀五、六十年代,當時叫感知機(perceptron),擁有輸入層、輸出層和一個隱含層。輸入的特徵向量通過隱含層變換達到輸出層,在輸出層得到分類結果。早期感知機的推動者是Rosenblatt。但是,Rosenblatt的單層感知機有一個嚴重得不能再嚴重的問題,對於計算稍微複雜的函數其計算力顯得無能為力。

  2.2 多層感知機的出現

  隨著數學的發展,這個缺點直到上世紀八十年代才被Rumelhart、Williams、Hinton、LeCun等人發明的多層感知機(multilayer perceptron)克服。多層感知機,顧名思義,就是有多個隱含層的感知機。我們看一下多層感知機的結構:

  

  圖1 :多層感知機(神經網路)

  多層感知機可以擺脫早期離散傳輸函數的束縛,使用sigmoid或tanh等連續函數模擬神經元對激勵的響應,在訓練演演算法上則使用Werbos發明的反向傳播BP演演算法。對,這就是我們現在所說的神經網路(NN)!多層感知機解決了之前無法模擬異或邏輯的缺陷,同時更多的層數也讓網路更能夠刻畫現實世界中的複雜情形。多層感知機給我們帶來的啟示是,神經網路的層數直接決定了它對現實的刻畫能力——利用每層更少的神經元擬合更加複雜的函數。

  即便大牛們早就預料到神經網路需要變得更深,但是有一個夢魘總是縈繞左右。隨著神經網路層數的加深,優化函數越來越容易陷入局部最優解,並且這個「陷阱」越來越偏離真正的全局最優。利用有限數據訓練的深層網路,性能還不如較淺層網路。同時,另一個不可忽略的問題是隨著網路層數增加,「梯度消失」現象更加嚴重。具體來說,我們常常使用 sigmoid作為神經元的輸入輸出函數。對於幅度為1的信號,在BP反向傳播梯度時,每傳遞一層,梯度衰減為原來的0.25。層數一多,梯度指數衰減后低層基本上接受不到有效的訓練信號。

  2.3 (DNN)神經網路「具有深度」

  2006年,Hinton利用預訓練方法緩解了局部最優解問題,將隱含層推動到了7層(參考論文:Hinton G E, Salakhutdinov R R. Reducing the Dimensionality of Data with Neural Networks[J]. Science, 2006, 313(5786):504-507.),神經網路真正意義上有了「深度」,由此揭開了深度學習的熱潮。這裡的「深度」並沒有固定的定義——在語音識別中4層網路就能夠被認為是「較深的」,而在圖像識別中20層以上的網路屢見不鮮。為了克服梯度消失,ReLU、maxout等傳輸函數代替了 sigmoid,形成了如今 DNN的基本形式。單從結構上來說,全連接的DNN和上圖的多層感知機是沒有任何區別的。值得一提的是,今年出現的高速公路網路(highway network)和深度殘差學習(deep residual learning)進一步避免了梯度彌散問題,網路層數達到了前所未有的一百多層(深度殘差學習:152層,具體去看何愷明大神的paper)!

  2.4 CNN(卷積神經網路)的出現

  如圖1所示,我們看到全連接DNN的結構里下層神經元和所有上層神經元都能夠形成連接,帶來的潛在問題是參數數量的膨脹。假設輸入的是一幅像素為1K*1K的圖像,隱含層有1M個節點,光這一層就有10^12個權重需要訓練,這不僅容易過擬合,而且極容易陷入局部最優。另外,圖像中有固有的局部模式(比如輪廓、邊界,人的眼睛、鼻子、嘴等)可以利用,顯然應該將圖像處理中的概念和神經網路技術相結合。此時我們可以祭出題主所說的卷積神經網路CNN。對於CNN來說,並不是所有上下層神經元都能直接相連,而是通過「卷積核」作為中介。同一個卷積核在所有圖像內是共享的,圖像通過卷積操作后仍然保留原先的位置關係。卷積層之間的卷積傳輸的示意圖如下:

  

  圖2:LeNet-5

  通過一個例子簡單說明卷積神經網路的結構。假設我們需要識別一幅彩色圖像,這幅圖像具有四個通道 ARGB(透明度和紅綠藍,對應了四幅相同大小的圖像),假設卷積核大小為 3∗3共使用100個卷積核w1到w100(從直覺來看,每個卷積核應該學習到不同的結構特徵)。用w1在ARGB圖像上進行卷積操作,可以得到隱含層的第一幅圖像;這幅隱含層圖像左上角第一個像素是四幅輸入圖像左上角 3∗3區域內像素的加權求和,以此類推。同理,算上其他卷積核,隱含層對應100幅「圖像」。每幅圖像對是對原始圖像中不同特徵的響應。按照這樣的結構繼續傳遞下去。CNN中還有 max-pooling等操作進一步提高魯棒性。

  本文來自 微信公眾號 datadw 【大數據挖掘DT數據分析

  我們注意到,對於圖像,如果沒有卷積操作,學習的參數量是災難級的。CNN之所以用於圖像識別,正是由於CNN模型限制了參數的個數並挖掘了局部結構的這個特點。順著同樣的思路,利用語音語譜結構中的局部信息,CNN照樣能應用在語音識別中。在普通的全連接網路或CNN中,每層神經元的信號只能向上一層傳播,樣本的處理在各個時刻獨立,因此又被成為前向神經網路(Feed-forward Neural Networks)。

  2.5 RNN(循環神經網路)的出現

  全連接的DNN還存在著另一個問題——無法對時間序列上的變化進行建模。然而,樣本出現的時間順序對於自然語言處理、語音識別、手寫體識別等應用非常重要。對了適應這種需求,就出現了另一種神經網路結構——循環神經網路RNN。而在RNN中,神經元的輸出可以在下一個時間戳直接作用到自身,即第i層神經元在m時刻的輸入,除了(i−1)層神經元在該時刻的輸出外,還包括其自身在(m−1)時刻的輸出。

  RNN可以看成一個在時間上傳遞的神經網路,它的深度是時間的長度!正如我們上面所說,「梯度消失」現象又要出現了,只不過這次發生在時間軸上。對於t時刻來說,它產生的梯度在時間軸上向歷史傳播幾層之後就消失了,根本就無法影響太遙遠的過去。因此,之前說「所有歷史」共同作用只是理想的情況,在實際中,這種影響也就只能維持若干個時間戳。為了解決時間上的梯度消失,機器學習領域發展出了長短時記憶單元 LSTM,通過門的開關實現時間上記憶功能,並防止梯度消失

  3 結束語

  事實上,不論是那種網路,他們在實際應用中常常都混合著使用,比如CNN和RNN在上層輸出之前往往會接上全連接層,很難說某個網路到底屬於哪個類別。不難想象隨著深度學習熱度的延續,更靈活的組合方式、更多的網路結構將被發展出來。儘管看起來千變萬化,但研究者們的出發點肯定都是為了解決特定的問題。對於想進行這方面的研究的朋友,不妨仔細分析一下這些結構各自的特點以及它們達成目標的手段。入門的話可以參考:

時代小人物. 但也有自己的思想,情感. 和道德.
您需要登錄后才可以回帖 登錄 | 註冊

本版積分規則

關於本站 | 隱私權政策 | 免責條款 | 版權聲明 | 聯絡我們

Copyright © 2001-2013 海外華人中文門戶:倍可親 (http://big5.backchina.com) All Rights Reserved.

程序系統基於 Discuz! X3.1 商業版 優化 Discuz! © 2001-2013 Comsenz Inc.

本站時間採用京港台時間 GMT+8, 2024-4-25 22:39

快速回復 返回頂部 返回列表