Neural-Networks

神經網絡和深度神經網絡有什麼區別,為什麼深度神經網絡效果更好?

  • November 20, 2015

我還沒有看到用這些術語準確表達的問題,這就是我提出一個新問題的原因。

我感興趣的不是神經網絡的定義,而是理解與深度神經網絡的實際區別。

更多背景信息:我知道神經網絡是什麼以及反向傳播是如何工作的。我知道 DNN 必須有多個隱藏層。然而,10 年前在課堂上我了解到,就神經網絡能夠表示的功能而言,具有幾層或一層(不包括輸入和輸出層)是等效的(參見 Cybenko 的通用逼近定理),並且具有更多的層使分析變得更加複雜而不會提高性能。顯然,情況不再如此。

我認為,也許是錯誤的,差異在於訓練算法和屬性而不是結構,因此如果答案能夠強調使遷移到 DNN 成為可能的原因(例如數學證明或隨機玩網絡),我將不勝感激?)和可取的(例如收斂速度?)

讓我們從一個瑣事開始:深度神經網絡只是一個具有許多隱藏層的前饋網絡。

這或多或少是關於定義的全部內容。神經網絡可以是循環的或前饋的;前饋的在他們的圖中沒有任何循環,可以分層組織。如果有“很多”層,那麼我們說網絡很深

一個網絡必須有多少層才能達到深度?對此沒有明確的答案(這有點像問有多少顆粒構成一個堆),但通常有兩個或更多隱藏層算作深度。相比之下,只有一個隱藏層的網絡通常被稱為“淺層”。我懷疑這裡會發生一些通貨膨脹,十年後人們可能會認為任何少於十層的東西都是淺的,只適合幼兒園練習。非正式地,“深”表示網絡難以處理。

這是一個插圖,改編自這裡

深度與非深度神經網絡

但是,您要問的真正問題當然是,為什麼有很多層是有益的?

我認為有點令人驚訝的答案是沒有人真正知道。我將在下面簡要回顧一些常見的解釋,但沒有一個被令人信服地證明是正確的,甚至不能確定擁有多層是否真的有益。

我說這很驚人,因為深度學習非常流行,每年都在打破所有記錄(從圖像識別,到下圍棋,到自動翻譯等),正在被行業使用等等。我們仍然不太確定為什麼它運作良好。

我的討論基於Goodfellow、Bengio 和 Courville 於 2017 年出版的*深度學習書,該書被廣泛認為是關於深度學習的書。(它可以在線免費獲得。)相關部分是6.4.1 Universal Approximation Properties and Depth*。

你寫的

10 年前,我在課堂上了解到,就神經網絡能夠表示的功能而言,具有幾層或一層(不包括輸入和輸出層)是等價的 […]

您一定指的是所謂的通用逼近定理,該定理由 Cybenko 在 1989 年證明,並在 1990 年代被各種人推廣。它基本上說淺層神經網絡(具有 1 個隱藏層)可以逼近任何函數,即原則上可以學習任何東西。這適用於各種非線性激活函數,包括當今大多數神經網絡使用的校正線性單元(教科書參考Leshno 等人 1993 年的結果)。

如果是這樣,那麼為什麼每個人都使用深度網絡?

好吧,一個天真的答案是因為它們工作得更好。下面是深度學習書中的一張圖,顯示它有助於在一項特定任務中擁有更多層,但在不同的任務和領域中經常觀察到相同的現象:

更多的層是好的

我們知道淺層網絡性能與深層網絡一樣好。但事實並非如此;他們通常不會。問題是——為什麼?可能的答案:

  1. 也許淺層網絡比深層網絡需要更多的神經元?
  2. 也許一個淺層網絡更難用我們當前的算法訓練(例如它有更討厭的局部最小值,或者收斂速度更慢,或者其他什麼)?
  3. 也許淺層架構不適合我們通常試圖解決的那種問題(例如,對象識別是一個典型的“深層”、分層過程)?
  4. 還有什麼?

深度學習》一書主張要點 #1 和 #3。首先,它認為淺層網絡中的單元數量隨著任務複雜性呈指數增長。因此,為了有用,淺層網絡可能需要非常大;可能比深度網絡大得多。這是基於許多論文證明淺層網絡在某些情況下需要成倍增加的神經元;但是,例如 MNIST 分類還是圍棋是這樣的情況還不是很清楚。其次,這本書是這樣說的:

選擇一個深度模型意味著一個非常普遍的信念,即我們想要學習的函數應該包括幾個更簡單的函數的組合。這可以從表示學習的角度解釋為,我們相信學習問題包括發現一組潛在的變異因素,而這些因素又可以用其他更簡單的潛在變異因素來描述。

我認為當前的“共識”是它是要點 #1 和 #3 的組合:對於現實世界的任務,深層架構通常是有益的,而淺層架構效率低下,並且需要更多的神經元才能獲得相同的性能。

但這遠未得到證實。考慮例如Zagoruyko 和 Komodakis,2016,Wide Residual Networks2015 年出現了 150+ 層的殘差網絡,並贏得了各種圖像識別比賽。這是一個巨大的成功,看起來像是一個支持深度的令人信服的論據。這是第一作者在殘差網絡論文上的演講中的一個圖(請注意,這裡的時間令人困惑地移到了左邊):

深度殘差網絡

但是上面鏈接的論文表明,“只有”16 層的“寬”殘差網絡可以勝過 150 層以上的“深”殘差網絡。如果這是真的,那麼上圖的全部要點就失效了。

或者考慮一下Ba 和 Caruana,2014 年,深度網絡真的需要深度嗎?

在本文中,我們提供了經驗證據,表明淺層網絡能夠學習與深度網絡相同的功能,並且在某些情況下具有與深度網絡相同數量的參數。為此,我們首先訓練一個最先進的深度模型,然後訓練一個淺層模型來模仿深度模型。使用下一節中描述的模型壓縮方案訓練模擬模型。值得注意的是,通過模型壓縮,我們能夠將淺層網絡訓練為與某些深度模型一樣準確,即使當淺層網絡直接在原始模型上進行訓練時,我們無法將這些淺層網絡訓練為與深度網絡一樣準確標記的訓練數據。如果一個與深度網絡具有相同數量參數的淺層網絡可以學習模仿一個具有高保真度的深度網絡,

如果屬實,這將意味著正確的解釋是我的子彈 #2,而不是 #1 或 #3。

正如我所說 — 還沒有人真正確切地知道。


結束語

在過去的 10 年裡,深度學習所取得的進步確實令人驚嘆,但大部分進步都是通過反複試驗實現的,我們仍然缺乏非常基本的了解,究竟是什麼深度網絡如此出色地工作。即使是人們認為對建立有效的深度網絡至關重要的事情清單似乎每隔幾年就會發生變化。

深度學習的複興始於 2006 年,當時 Geoffrey Hinton(他在神經網絡上工作了 20 多年,但沒有受到任何人的極大興趣)發表了幾篇突破性論文,提供了一種訓練深度網絡的有效方法(科學論文神經計算論文) . 訣竅是在開始梯度下降之前使用*無監督的預訓練。*這些論文徹底改變了該領域,幾年來人們認為無監督的預訓練是關鍵。

然後在 2010 年,Martens 表明,可以使用二階方法(所謂的 Hessian-free 方法)訓練深度神經網絡,並且可以勝過使用預訓練訓練的網絡:Deep learning via Hessian-free optimization。然後在 2013 年 Sutskever 等人。表明具有一些非常聰明的技巧的隨機梯度下降可以勝過無 Hessian 方法:關於深度學習中初始化和動量的重要性。此外,大約在 2010 年,人們意識到使用整流線性單元而不是 sigmoid 單元會對梯度下降產生巨大影響。2014年出現Dropout,2015年出現殘差網絡,人們不斷想出越來越有效的方法來訓練深度網絡和**10 年前看似重要的見解,如今通常被認為是令人討厭的事情。**所有這一切很大程度上都是由反複試驗驅動的,並且很少有人了解是什麼讓一些事情運作得如此順利,而另一些事情則不然。訓練深度網絡就像一大堆技巧。成功的技巧通常是事後合理化的。

我們甚至不知道為什麼深度網絡會達到性能平台。僅僅 10 年,人們過去常常指責局部最小值,但目前的想法是這不是重點(當性能停滯不前時,梯度往往會保持較大)。這是一個關於深度網絡的基本問題,我們甚至都不知道

**更新:**這或多或少是 Ali Rahimi 在 NIPS 2017 上關於機器學習作為煉金術的演講的主題:https ://www.youtube.com/watch?v=Qi1Yry33TQE 。


[這個答案在 2017 年 4 月完全重寫,所以下面的一些評論不再適用。]

引用自:https://stats.stackexchange.com/questions/182734

comments powered by Disqus