給人工智能降點溫:深度學習不是萬能良藥
近幾年,深度學習已經(jīng)進入一定程度的狂熱狀態(tài),人們正試圖用這個技術(shù)解決每一個問題。然而,深度學習真是萬能的嗎?閱讀此文后,你便能夠從深層理解為什么深度學習并不是想象的那般神話了。
寫在前面
近日,在深度學習領(lǐng)域出現(xiàn)了一場熱烈的爭論。這一切都要從JeffLeek在SimplyStats上發(fā)表了一篇題為《數(shù)據(jù)量不夠大,別玩深度學習》(Don'tusedeeplearningyourdataisn'tthatbig)的博文開始。作者JeffLeek在這篇博文中指出,當樣本數(shù)據(jù)集很小時(這種情況在生物信息領(lǐng)域很常見),即使有一些層和隱藏單元,具有較少參數(shù)的線性模型的表現(xiàn)是優(yōu)于深度網(wǎng)絡(luò)的。為了證明自己的論點,Leek舉了一個基于MNIST數(shù)據(jù)庫進行圖像識別的例子,分辨0或者1。他還表示,當在一個使用僅僅80個樣本的MNIST數(shù)據(jù)集中進行0和1的分類時,一個簡單的線性預測器(邏輯回歸)要比深度神經(jīng)網(wǎng)絡(luò)的預測準確度更高。
這篇博文的發(fā)表引起了領(lǐng)域內(nèi)的爭論,哈佛大學藥學院的生物醫(yī)藥信息學專業(yè)博士后AndrewBeam寫了篇文章來反駁:《就算數(shù)據(jù)不夠大,也能玩深度學習》(Youcanprobablyusedeeplearningevenifyourdataisn'tthatbig)。AndrewBeam指出,即使數(shù)據(jù)集很小,一個適當訓練的深度網(wǎng)絡(luò)也能擊敗簡單的線性模型。
如今,越來越多的生物信息學研究人員正在使用深度學習來解決各種各樣的問題,這樣的爭論愈演愈烈。這種炒作是真的嗎?還是說線性模型就足夠滿足我們的所有需求呢?結(jié)論一如既往要視情況而定。在這篇文章中,作者探索了一些機器學習的使用實例,在這些實例中使用深度學習并不明智。并且解釋了一些對深度學習的誤解,作者認為正是這些錯誤的認識導致深度學習沒有得到有效地使用,這種情況對于新手來說尤其容易出現(xiàn)。
打破深度學習偏見
首先,我們來看看許多外行者容易產(chǎn)生的偏見,其實是一些半真半假的片面認識。主要有兩點,其中的一點更具技術(shù)性,我將詳細解釋。
深度學習在小樣本集上也可以取得很好的效果
深度學習是在大數(shù)據(jù)的背景下火起來的(第一個谷歌大腦項目向深度神經(jīng)網(wǎng)絡(luò)提供了大量的Youtube視頻),自從那以后,絕大部分的深度學習內(nèi)容都是基于大數(shù)據(jù)量中的復雜算法。
然而,這種大數(shù)據(jù)+深度學習的配對不知為何被人誤解為:深度學習不能應用于小樣本。如果只有幾個樣例,將其輸入具有高參數(shù)樣本比例的神經(jīng)網(wǎng)絡(luò)似乎一定會走上過擬合的道路。然而,僅僅考慮給定問題的樣本容量和維度,無論有監(jiān)督還是無監(jiān)督,幾乎都是在真空中對數(shù)據(jù)進行建模,沒有任何的上下文。
可能的數(shù)據(jù)情況是:你擁有與問題相關(guān)的數(shù)據(jù)源,或者該領(lǐng)域的專家可以提供的強大的先驗知識,或者數(shù)據(jù)可以以非常特殊的方式進行構(gòu)建(例如,以圖形或圖像編碼的形式)。所有的這些情況中,深度學習有機會成為一種可供選擇的方法例如,你可以編碼較大的相關(guān)數(shù)據(jù)集的有效表示,并將該表示應用到你的問題中。
這種典型的示例常見于自然語言處理,你可以學習大型語料庫中的詞語嵌入,例如維基百科,然后將他們作為一個較小的、較窄的語料庫嵌入到一個有監(jiān)督任務中。極端情況下,KUKA機器人示教器維修,你可以用一套神經(jīng)網(wǎng)絡(luò)進行聯(lián)合學習特征表示,這是在小樣本集中重用該表示的一種有效方式。這種方法被稱作一次性學習(one-shotlearning),并且已經(jīng)成功應用到包括計算機視覺和藥物研發(fā)在內(nèi)的具有高維數(shù)據(jù)的領(lǐng)域。
藥物研發(fā)中的一次性學習網(wǎng)絡(luò)
深度學習不是一切的答案
我聽過最多的第二個偏見就是過度宣傳。許多尚未入門該領(lǐng)域的人,僅僅因為深度神經(jīng)網(wǎng)絡(luò)在其它領(lǐng)域的出色表現(xiàn),就期待它也能為他們帶來神話般的表現(xiàn)提升。其他人則從深度學習在圖像、音樂和語言(與人類關(guān)系密切的三種數(shù)據(jù)類型)處理領(lǐng)域的令人印象深刻的表現(xiàn)中受到啟發(fā),于是就頭腦發(fā)熱地鉆入該領(lǐng)域,迫不及待地嘗試訓練最新的GAN結(jié)構(gòu)。
當然,這種大肆吹捧在很多方面是真實存在的。深度學習在機器學習中的地位不可小覷,也是數(shù)據(jù)建模方法庫的重要工具。它的普及帶動了諸如tensorflow和pytorch等許多重要框架的發(fā)展,它們即使是在深度學習之外也是十分有用的。失敗者崛起成為超級巨星的故事激勵了許多研究員重新審視以前的模糊算法,如進化算法和增強學習。
但任何情況下也不能認為深度學習是萬能良藥。除了天下沒有免費的午餐這點之外,深度學習模型是非常微妙的,并且需要仔細甚至非常耗時耗力的超參數(shù)搜索、調(diào)整,以及測試(文章后續(xù)有更多講解)。除此之外,在很多情況下,從實踐的角度來看,使用深度學習是沒有意義的,更簡單的模型反而能獲得更好的效果。
深度學習不僅僅是.fit()
深度學習模型從機器學習的其他領(lǐng)域傳來時,我認為還有另外一個方面經(jīng)常被忽略。大多數(shù)深度學習的教程和介紹材料都將模型描述為通過層次方式進行連接的節(jié)點層組成,其中第一層是輸入,最后一層是輸出,并且你可以用某種形式的隨機梯度下降(SGD)方法來訓練網(wǎng)絡(luò)。有些材料會簡單介紹隨機梯度下降是如何工作的,以及什么是反向傳播,但大部分介紹主要關(guān)注的是豐富的神經(jīng)網(wǎng)絡(luò)類型(卷積神經(jīng)網(wǎng)絡(luò),循環(huán)神經(jīng)網(wǎng)絡(luò)等等)。
而優(yōu)化方法本身卻很少受到關(guān)注,這是很不幸的,因為深度學習為什么能夠起到很大的作用,絕大部分原因就是這些特殊的優(yōu)化方法(具體論述可以參考FerencHuszár的博客以及博客中引用的論文)。了解如何優(yōu)化參數(shù),以及如何劃分數(shù)據(jù),從而更有效地使用它們以便在合理時間內(nèi)使網(wǎng)絡(luò)獲得良好的收斂,是至關(guān)重要的。
不過,為什么隨機梯度下降如此關(guān)鍵還是未知的,但是現(xiàn)在線索也正零星出現(xiàn)。我傾向于將該方法看成是貝葉斯推理的一部分。實質(zhì)上,在你進行某種形式的數(shù)值優(yōu)化時,你都會用特定的假設(shè)和先驗來執(zhí)行一些貝葉斯推理。其實有一個被稱做概率數(shù)值計算(probabilisticnumerics)的完整研究領(lǐng)域,就是從這個觀點開始的。隨機梯度下降也是如此,最新的研究成果表明,該過程實際上是一個馬爾科夫鏈,在特定假設(shè)下,可以看作是后向變分近似的穩(wěn)態(tài)分布。
所以當你停止隨機梯度下降,并采用最終的參數(shù)時,基本上是從這個近似分布中抽樣得到的。我認為這個想法很有啟發(fā)性,因為這樣一來,優(yōu)化器的參數(shù)(這里是指學習率)就更有意義了。例如,當你增加隨機梯度下降的學習參數(shù)時,馬爾可夫鏈就會變得不穩(wěn)定,直到它找到大面積采樣的局部最小值,這樣一來,就增加了程序的方差。
另一方面,如果減少學習參數(shù),庫卡機器人驅(qū)動器維修,馬爾科夫鏈可以慢慢的近似到狹義極小值,直到它收斂,這樣就增加了某個特定區(qū)域的偏置。而另一個參數(shù),隨機梯度下降的批次大小,也可以控制算法收斂的區(qū)域是什么類型,小的批次收斂到較大區(qū)域,大的批次收斂到較小區(qū)域。
隨機梯度下降根據(jù)學習速率或批尺寸來選擇較大或狹義最小值