0
雷鋒網(wǎng) AI 科技評論按:2019 年底、2020 年初,許多機器學習界活躍的教授、研究員們投身參與了一場的突如其來的討論:深度學習是什么?
在過去十年洶涌而來的深度學習浪潮中,大家對深度學習在應(yīng)用中體現(xiàn)出的各種特點已經(jīng)非常熟悉了,但畢竟深度學習的理論仍未建立完善。更重要的是,大家已經(jīng)意識到了深度學習的種種限制,那么想要破除限制、實現(xiàn)更高級的智慧時,就免不了需要思考,是「繼續(xù)改進深度學習就可以達到目標」,還是「我們需要在深度學習之外另起爐灶」,這里也就引出了那個看似簡單,但大家尚未達成共識的問題「深度學習是什么?」
不少學者最近都參與了這個討論,雷鋒網(wǎng) AI 科技評論帶大家回顧一下各方觀點。
Keras作者、谷歌大腦高級研究員 Fran?ois Chollet 最先給出了自己的觀點:
什么是深度學習?在 2019 年這個時間點,大家經(jīng)常用到的那種深度學習定義大概是這樣的:「它由一連串可微分的參數(shù)化的層組成,而且是用反向傳播算法端到端地訓練的」。不過這個說法在我看來太過狹隘了,它最多是「我們現(xiàn)在做的深度學習」的描述,而不是對深度學習本身的定義。
比如說,如果你有一個卷積網(wǎng)絡(luò)模型,然后你用 ADMM 訓練它的權(quán)重,它就不是深度學習了嗎?一個自己學習特征的 HMAX 模型就不是深度學習了嗎?甚至于,用貪婪算法逐層訓練的深度神經(jīng)網(wǎng)絡(luò)就不是深度學習了嗎?要我說的話,它們都是深度學習。
深度學習應(yīng)該指的是一種表征學習方法,其中的模型是由一連串的模塊組成的(一般都會堆成一個多層的或者金字塔形的模型,這也就是「深度」的由來),而其中的每一個模塊分別拿出來訓練之后都可以作為獨立的特征提取器。我在我自己的書里也就是這么定義的。
通過這樣的定義,我們也就能明確深度學習不是下面這樣的模型:
不學習表征的模型,比如 SIFT 之類的人工特征工程,符號 AI,等等
淺層學習,只有一層特征提取器的模型
深度學習的定義里不需要指定固定的某種學習機制(比如反向傳播),也不需要指定固定的使用方式(比如監(jiān)督學習還是強化學習),而且也不是一定要做聯(lián)合的端到端學習(和貪婪學習相反)。這才是深度學習「是什么」的本質(zhì)屬性、根本結(jié)構(gòu)。這之外的描述僅僅是「我們是如何做深度學習的」。
清晰的定義也就劃分出了明確的邊界,有的東西是深度學習,有的東西不是。2019 年隨處可見的這種深度神經(jīng)網(wǎng)絡(luò)自然是深度學習,而用演化策略 ES、ADMM、虛擬梯度之類的反向傳播替代方案訓練的深度神經(jīng)網(wǎng)絡(luò)當然也是深度學習。
基因編程就不是深度學習,快速排序不是深度學習,SVM 也不是。單獨一個全連接層不是深度學習,但很多個全連接層堆在一起就是;K-means 算法不是深度學習,但把許多個 K-means 特征提取器堆疊起來就是。甚至我自己在 2011 到 2012 年間,收集視頻數(shù)據(jù)的位置的成對的共同信息矩陣,然后把矩陣分解堆疊在上面,也是深度學習。
一般的人類軟件工程師用語言寫出的程序不是深度學習,給這些程序加上參數(shù)、能自動學習幾個常量,也仍然不是深度學習。一定要用成串連起來的特征提取器做表征學習,這才是深度學習。它的本質(zhì)在于通過深度層次化的特征來描述輸入數(shù)據(jù),而這些特征都是從數(shù)據(jù)里學習到的。
根據(jù)定義也能看出來,深度學習是一種逐步完善的、一點點優(yōu)化的從數(shù)據(jù)中提取表征的方法。以深度學習現(xiàn)在的形式來看,它至少是 C1 連續(xù)的(甚至到無限階都是連續(xù)的)。這一條可能不那么關(guān)鍵,但「逐步優(yōu)化」的這一條也是深度學習的固有屬性。
所以深度學習和以往的符號運算 AI、常規(guī)編程都完全不同,它的基礎(chǔ)結(jié)構(gòu)就是離散的、以數(shù)據(jù)流為核心的,而且通常也不需要任何中間層的數(shù)據(jù)表征。
想用深度學習做符號運算也不是不可能,但需要引入很多額外的步驟。可話又說回來,深度學習模型也就只能囊括所有程序中的很小很小的一部分而已,沒必要做什么都要用深度學習。
還可以再拓展一個問題:大腦是「深度學習」嗎?我認可的只有這一種答案:大腦是一個復(fù)雜得難以想象的東西,它把許許多多結(jié)構(gòu)不同的東西包括在內(nèi),而我們對大腦的了解還太少;大腦是不是深度學習,我們還給不出確定的答案。我有一個直覺是,大腦總體來說不是深度學習,不過其中的某一些子模塊可以用深度學習來描述,或者是部分符合深度學習的,比如視覺皮層就有深度層次化的特征表征,即便這些表征不都是學習得到的;視覺皮層也是深度學習的研究中重要的靈感來源。
我可以再補充一句,如果用樹形結(jié)構(gòu)來比喻的話,我們對現(xiàn)代的深度學習的理解和使用,主要還停留在早些時候發(fā)展的「現(xiàn)代機器學習」的這一枝上,和神經(jīng)科學之間沒多大關(guān)系。神經(jīng)科學帶來的影響主要在于高層次的新觀念啟發(fā),而不是直接的模仿借鑒。
在另一條故事線上,深度學習三駕馬車之一的 Yoshua Bengio 和「一直以來的深度學習黑粉」 Gary Marcus 的年度拌嘴留下了一個經(jīng)典問題:「深度學習是否已經(jīng)足夠了?」("Is DL enough?")這也再次引出了「深度學習到底是什么」的討論。2011 年圖靈獎得主、貝葉斯網(wǎng)絡(luò)之父 Judea Pearl 就表示「因為深度學習沒有清晰的定義,所以我沒辦法回答深度學習是不是已經(jīng)足夠了」。
有一種據(jù)說來自 Yann LeCun 的定義是這樣的:深度學習是一種方法論,是把多個參數(shù)化的模塊組合成圖(可以是動態(tài)圖),構(gòu)成模型,然后用基于梯度的方法優(yōu)化它。LeCun 本人表示,如果這么定義深度學習的話,那深度學習還遠遠不足以解決目前已經(jīng)遇到的問題,因為這個定義下的模型架構(gòu)、優(yōu)化目標、優(yōu)化方法都有了具體的限制。
討論中也有人提出,如果直接給出深度學習的定義有爭議,不如我們列一列都有什么東西不是深度學習?LeCun 給出的答案是:邏輯回歸、核方法、樸素貝葉斯、樹&森林、K-means、K-NN 都不是深度學習,因為它們都不學習數(shù)據(jù)表征;此外,通過 0 階方法(非梯度)優(yōu)化的高度不可微分模型也不是深度學習,即便它們可以學習數(shù)據(jù)表征。
一兩天的討論之后,學者之間沒能立刻形成廣泛一致的共識。Judea Pearl 覺得有點失望,他自己做了這樣一個總結(jié):
雖然我沒能看到什么好的定義,但是在「深度學習是什么」的討論里我的感受是,做深度學習的人們似乎都非常相信深度學習還有無限大的潛力,他們沉醉在這些程序、技巧、術(shù)語里無法自拔。我想起了我高中時候?qū)W代數(shù)學到第二周、第三周時候的樣子,我們也相信這些方法有無限的問題解決能力。但老師告訴我們,如果兩個方程里有三個未知數(shù),那你就解不出這個方程;聽到這句話的時候我們不免會有一些失望,也感受到了自己的無知,但同時,這也讓我們避免在無解的方程上浪費太多時間。只不過,朋友們,現(xiàn)在大家已經(jīng)都不是高中生了。
LeCun 在下面和他繼續(xù)討論了起來:
所以你這是不接受我的定義了?我的定義是,深度學習是一種方法論,是把多個參數(shù)化的模塊組合成圖(可以是動態(tài)圖),構(gòu)成模型,設(shè)置一個目標函數(shù),然后用某種基于梯度的方法優(yōu)化它。如果要夠「深」,那么這個圖就需要在從輸入到輸出的流程上有許多個非線性階段;這種深度也能讓模型學到內(nèi)部的表征。我的這個定義也沒有指定具體的學習范式(有監(jiān)督、無監(jiān)督、強化學習),甚至連結(jié)構(gòu)、目標也都不是定死的。
Judea Pearl 沒有繼續(xù)參與這個討論,不過,對比 Fran?ois Chollet 和 Yann LeCun 給出的答案,不難看出他們的大部分意見是一致的,只不過 LeCun 認為基于梯度的優(yōu)化方法也是深度學習的一部分,而 Chollet 認為不用基于梯度的方法也可以 —— Chollet 定義下的深度學習就要更寬一些。
那么回到前面那個問題,即便認可 Chollet 的更寬一些的深度學習的定義,那么深度學習就夠了嗎?按照他的態(tài)度來說,也不夠;我們有那么多種各式各樣的方法,不需要死守深度學習不放。即便只是今天的已經(jīng)能用深度學習的問題,也不是時時刻刻都需要用一個基于深度學習的解決方案。
不過站在今天的深度學習的視角來看,一些經(jīng)典方法看起來也變得有趣了。深度學習研究員、Fast.ai 創(chuàng)始人 Jeremy Howard 也參與了深度學習邊界的討論,他說邏輯回歸現(xiàn)在看起來就像深度學習,它是一個一層深度的、參數(shù)化的函數(shù)模塊,可以在數(shù)據(jù)樣本上用基于梯度的方法訓練。甚至,以他自己的感受來說,把 SVM 看作用 Hinge Loss 損失函數(shù)和 L1 正則化的神經(jīng)網(wǎng)絡(luò)要好學、好教得多。
LeCun 也表示贊同:「一個 SVM 就是一個兩層的神經(jīng)網(wǎng)絡(luò),其中,第一層的每一個神經(jīng)元都會通過核函數(shù)把輸入和某個訓練樣本做對比(所以其實第一層是一種無監(jiān)督學習的平凡形式:記憶),然后第二層會計算這些輸出的(經(jīng)過訓練后的)線性組合?!?/strong>
很多參與討論的網(wǎng)友都表示被這一條見解震驚了,其中有個人就說「有一次工作面試的時候他們讓我實現(xiàn) SVM 然后用梯度下降訓練它,我心想臥槽這不就是個 Hinge Loss 的神經(jīng)網(wǎng)絡(luò)嗎。本來這也不算多大的事,但是突然意識到以后覺得真的很神奇?!?/p>
也有網(wǎng)友接著追問:「可以不只有兩層吧?你可以用很多層學習一個核函數(shù),然后用最后一層計算核方法的預(yù)測規(guī)則。只要你施加一些規(guī)則,保證這個核是 Mercer 核,網(wǎng)絡(luò)中起到核的作用的層的數(shù)量就可以不受限制」。LeCun 回答:「核函數(shù)可以任意復(fù)雜。但如果核函數(shù)是學習得到的,那這就已經(jīng)是深度學習了…… 其實這就是我們訓練 Siamese 網(wǎng)絡(luò),也就是度量學習(metric learning)的時候做的事情。這就像是訓練一個相似度的核。最后只要你愿意的話,也可以在上面再增加一個線性層?!?/p>
文章結(jié)尾我想引用李飛飛高徒、特斯拉 AI 負責人 Andrej Karpathy 的一條推特作為結(jié)尾。
今天已經(jīng)有網(wǎng)友會在 Reddit 上提問「想要用神經(jīng)網(wǎng)絡(luò)之外的方法做分類任務(wù),理論上有可能嗎?」但其實也就大概八年前你更容易看到的問題是「想要用神經(jīng)網(wǎng)絡(luò)方法做分目標識別,理論上有可能嗎?」這幾年的變化可真有意思。
我們樂于看到深度學習繼續(xù)發(fā)展,理論更加完善、應(yīng)用更加豐富、資源利用更加高效,但同時也希望更多研究人員和開發(fā)者可以意識到,深度學習并不是那個唯一的、最終的解決方案。我們期待在 2020 年、在這個新十年里看到更高級的、補充深度學習的不足的新方法。
雷鋒網(wǎng) AI 科技評論報道。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。