「深度學習」和「多層神經網路」的區別?


沒什麼區別,是數年前幾個大牛為了把學術界的目光重新轉到神經網路上提出的新名詞。

當然,最近有一些深度學習背景下產生的新技巧新設計,但是本質沒變


"深度學習"是為了讓層數較多的多層神經網路可以訓練,能夠work而演化出來的一系列的 新的結構和新的方法。

新的網路結構中最著名的就是CNN,它解決了傳統較深的網路參數太多,很難訓練的問題,使用了「局部感受野」和「權植共享」的概念,大大減少了網路參數的數量。關鍵是這種結構確實很符合視覺類任務在人腦上的工作原理。

新的結構還包括了:LSTM,ResNet等。

新的方法就多了:新的激活函數:ReLU,新的權重初始化方法(逐層初始化,XAVIER等),新的損失函數,新的防止過擬合方法(Dropout, BN等)。這些方面主要都是為了解決傳統的多層神經網路的一些不足:梯度消失,過擬合等。

---------------------- 下面是原答案 ------------------------

從廣義上說深度學習的網路結構也是多層神經網路的一種。

傳統意義上的多層神經網路是只有輸入層、隱藏層、輸出層。其中隱藏層的層數根據需要而定,沒有明確的理論推導來說明到底多少層合適。

而深度學習中最著名的卷積神經網路CNN,在原來多層神經網路的基礎上,加入了特徵學習部分,這部分是模仿人腦對信號處理上的分級的。具體操作就是在原來的全連接的層前面加入了部分連接的卷積層與降維層,而且加入的是一個層級。

輸入層 - 卷積層 -降維層 -卷積層 - 降維層 -- .... -- 隱藏層 -輸出層

簡單來說,原來多層神經網路做的步驟是:特徵映射到值。特徵是人工挑選。

深度學習做的步驟是 信號-&>特徵-&>值。 特徵是由網路自己選擇。


如果要做事,想趕快入門,速度出活,請先死記住:

深度學習=多層的神經網路

如果要寫論文,要作報告,要閑聊,請堅持一個原則:

深度學習絕不僅僅是多層的神經網路。


深度學習是一種學習方式,指的是採用深度模型進行學習,不是模型。多層神經網路是一種模型。

問題轉成深度模型和多層神經網路的區別。多層神經網路只要夠深就能稱為深度模型。但是深度模型不止只有夠深的多層神經網路一種,還有 DBM、DBN 等圖模型,也有一些帶反饋的神經網路如 RNN 什麼的。


以我的理解,兩種網路被設計出來,所要解決的問題和目的不同。


多層神經網路與universal approximation theorem [1] (泛逼近性原理,不知這樣翻譯可對?)相伴而生。該理論指出,單隱藏層(hidden layer)非線性前饋神經網路,可以在實數空間近似任何連續函數。上世紀80 90年代,Backpropagation 剛剛開始大行其道,利用這一演算法,只需知道輸入和輸出便可訓練網路參數,從而得到一個神經網路「黑箱」。之所以稱為黑箱,是因為無需知道y=f(x) 中f的表達式是什麼,也能輕易做函數計算,因為f(objective function)就是網路本身。多層神經網路的座右銘是:「函數是什麼我不管,反正我能算!「。

當然多層神經網路並非天下無敵,它有三個主要限制:

一是在面對大數據時,需要人為提取原始數據的特徵作為輸入,這個問題前面的知友提到過@楊延生。必須忽略不相關的變數,同時保留有用的信息。這個尺度很難掌握,多層神經網路會把蹲在屋頂的Kitty和騎在貓奴頭上的Kitty識別為不同的貓咪,又會把二哈和狼歸類為同一種動物。前者是對不相關變數過於敏感,後者則因無法提取有實際意義的特徵。

二是想要更精確的近似複雜的函數,必須增加隱藏層的層數,這就產生了梯度擴散問題@青青子衿。所謂「強弩之末勢不能穿魯縞「。

三是無法處理時間序列數據(比如音頻),因為多層神經網路不含時間參數。

隨著人工智慧需求的提升,我們想要做複雜的圖像識別,做自然語言處理,做語義分析翻譯,等等。多層神經網路顯然力不從心。那麼深度模型是如何解決以上三個問題的。

第一,深度學習自動選擇原始數據的特徵。舉一個圖像的例子,將像素值矩陣輸入深度網路(這裡指常用於圖像識別的卷積神經網路CNN),網路第一層表徵物體的位置、邊緣、亮度等初級視覺信息。第二層將邊緣整合表徵物體的輪廓……之後的層會表徵更加抽象的信息,如貓或狗這樣的抽象概念。所有特徵完全在網路中自動呈現,並非出自人工設計。更重要的一點是這種隨著層的深入,從具象到抽象的層級式表徵跟大腦的工作原理吻合,視網膜接收圖像從LGN到視皮層、顳葉皮層再到海馬走的是同樣的路數[2]!

第二,深度網路的學習演算法。一種方法是改變網路的組織結構,比如用卷積神經網路代替全連接(full connectivity)網路,訓練演算法仍依據Backpropagating gradients的基本原理。另一種則是徹底改變訓練演算法,我嘗試過的演算法有Hessian-free optimization[3],recursive least-squares(RLS) 等。

第三,使用帶反饋和時間參數的Recurrent neural network 處理時間序列數據。從某種意義上講,Recurrent neural network可以在時間維度上展開成深度網路,可以有效處理音頻信息(語音識別和自然語言處理等),或者用來模擬動力系統。

本人計算神經科學小博士,寫些粗淺的認識,有不對的地方還請各位大神指正。

[1] http://deeplearning.cs.cmu.edu/pdfs/Cybenko.pdf

[2] Distributed Hierarchical Processing in the Primate Cerebral Cortex

[3] http://icml2010.haifa.il.ibm.com/papers/458.pdf


為了克服神經網路中訓練的問題,DL採用了很不同的訓練機制。

傳統神經網路中,採用的是Back propagation的方式進行,簡單說來就是採用迭代的演算法來訓練整個網路,隨機設定初值,計算當前網路的輸出,然後根據當前網路輸出與label之間的差值去改變前面各層的參數,直至收斂(整體上是一個梯度下降法)。

而DL整體上是一個layer-wise的訓練機制。原因在於如果採用Back propagation的機制,對於一個deep network(7層以上),殘差傳播到最前面的層已經變得很小,會出現梯度擴散,影響精度。

另外DL第一步也不是隨機初始化!而是通過學習輸入數據的結構得到的,因而這個初值更接近全局最優,從而能夠獲得更好的效果。

總體說來,初值選取和訓練機制等方面截然不同。


個人理解:多層神經網路只是一種網路結構,不管你用什麼學習演算法。深度學習是網路結構加上一定的學習演算法。而在深度學習中一般的網路結構都是多層。

所以:深層的神經網路不一定就是神都學習


名字不同


深度學習的宗旨和意義在最初的幾篇paper中已經說的很清楚了。神經網路是在深度學習出現之前就早已存在的。深度學習的意義在於找到了重新挖掘了神經網路的潛力。

其實當初bengio隨便想的一個名字你們那麼糾結作甚。。。


Deep learning這個概念包括了多層神經網路,還包含一些訓練模型的演算法,

有dropout,contrast discrimination, autoencoder ,最近還把embedding和transfer learning的

東西也扔到這個筐里。

至少卷積神經網路,則是一種神經網路的連接結構,常用於不同大小的結構性數據的

問題,比如圖像識別。


水論文時,糾結了好幾天


做視頻圖像分析。從現象上說,都是屬於多層聚類分析的範疇,但是也有區別。多層神經網路可以看做是一種縱向延伸的塔型結構,上層塔(隱藏層)依託於下層(輸入),逐層抽象最後到達塔頂(結果)。而深層學習則是橫向擴展的多維度結構(園林),哪些是樹,哪些是石,哪些是花,哪些是鳥……,權和到一起,得到園林(結果)。以做人臉識別的一些策略舉例,多層神經網路的結構策略一般是0-1黑白化,在黑白化基礎上邊緣提取,在邊緣提取基礎上輪廓識別,在輪廓識別基礎上面部輪廓識別……根據層數的差別,識別的精度逐層提高。而深度學習的策略一般是基礎原材料基礎上進行眼睛識別,鼻子識別,額頭識別,嘴巴識別,眼角線識別……根據識別的項目數量,識別精度擴展提高。所以理論上,深度學習和多層神經網路是在同學術基礎上不同策略的擴展,簡單地與現代所謂的專精和博學的差異是一樣的。實際應用中,這個差異的效能也是不同的。卷積運算和視頻分析矩陣都是非常消耗cpu/gpu運算的操作。多層神經網路的識別一級一級的迭代消耗的是時間,而深度學習多角度的分析消耗的是算力,類似編程中的單線程和多線程,同步和非同步的關係。由於從事視頻圖像分析,最低25幀/s的實時視頻幀間隔也只有40ms,一般的多層神經網路結構就很容易被運算時間卡住,下一級的運算必須等著上一級出了結果才行,層數越多,時間越長。而深度學習則能夠並行分解,通過提高硬體性能,獲得性能上的提升,因為缺少的只是權值比重的一部分結果,在一定程度上保障結果的產生,如果有類似雲網路布局,則還可以突破單一硬設的限制,實現更深層次的擴展,對於像安防實時監控之類對時延約束比較嚴格的領域適應性更強。所以現在深度學習在AI的實際應用比較熱,因為AI除了準確性,反應速度也是關鍵指標。當然深度學習在算力剩餘的情況下也可以進行多層延伸,例如識別面部成功後擴展一層特徵值分布,比如眼型,眼寬,眼鼻距離,鼻型,嘴型等等等等,可以實現定向的人臉比對識別,進行身份驗證應用。工作中總結的一些淺見,歡迎討論指正。


深度學習演算法可以讓機器自動總結並學習特徵,減少人為設定特徵的不完備性。

而多層神經網路的特徵可以人為設定也可以機器自己學習,前者就是個高難度的神經網路,後者近似於深度學習。


深度學習是一類機器學習方法的統稱,深層神經網路是其中的一種。


推薦閱讀:

關於深度神經網路壓縮(下)
數學 · 神經網路(四)· Normalize
神經網路與TensorFlow實踐-前言
C++實現神經網路之一 | Net類的設計和神經網路的初始化

TAG:機器學習 | 神經網路 | 深度學習DeepLearning |