深度學(xué)習(xí)掀起海嘯
如今,深度學(xué)習(xí)浪潮拍打計(jì)算機(jī)語言的海岸已有好幾年,但是,2015年似乎才是這場海嘯全力沖擊自然語言處理(NLP)會(huì)議的一年。——Dr. Christopher D. Manning, Dec 2015
整個(gè)研究領(lǐng)域的成熟方法已經(jīng)迅速被新發(fā)現(xiàn)超越,這句話聽起來有些夸大其詞,就像是說它被「海嘯」襲擊了一樣。但是,這種災(zāi)難性的形容的確可以用來描述深度學(xué)習(xí)在過去幾年中的異軍突起——顯著改善人們對(duì)解決人工智能最難問題方法的駕馭能力,吸引工業(yè)巨人(比如谷歌等)的大量投資,研究論文的指數(shù)式增長(以及機(jī)器學(xué)習(xí)的研究生生源上升)。在聽了數(shù)節(jié)機(jī)器學(xué)習(xí)課堂,甚至在本科研究中使用它以后,我不禁好奇:這個(gè)新的「深度學(xué)習(xí)」會(huì)不會(huì)是一個(gè)幻想,抑或上世紀(jì)80年代已經(jīng)研發(fā)出來的「人工智能神經(jīng)網(wǎng)絡(luò)」擴(kuò)大版?讓我告訴你,說來話長——這不僅僅是一個(gè)有關(guān)神經(jīng)網(wǎng)絡(luò)的故事,也不僅僅是一個(gè)有關(guān)一系列研究突破的故事,這些突破讓深度學(xué)習(xí)變得比「大型神經(jīng)網(wǎng)絡(luò)」更加有趣,而是一個(gè)有關(guān)幾位不放棄的研究員如何熬過黑暗數(shù)十年,直至拯救神經(jīng)網(wǎng)絡(luò),實(shí)現(xiàn)深度學(xué)習(xí)夢想的故事。
機(jī)器學(xué)習(xí)算法的百年歷史
線性回歸
首先簡單介紹一下機(jī)器學(xué)習(xí)是什么。從二維圖像上取一些點(diǎn),盡可能繪出一條擬合這些點(diǎn)的直線。你剛才做的就是從幾對(duì)輸入值(x)和輸出值(y)的實(shí)例中概括出一個(gè)一般函數(shù),任何輸入值都會(huì)有一個(gè)對(duì)應(yīng)的輸出值。這叫做線性回歸,一個(gè)有著兩百年歷史從一些輸入輸出對(duì)組中推斷出一般函數(shù)的技巧。這就是它很棒的原因:很多函數(shù)難以給出明確的方程表達(dá),但是,卻很容易在現(xiàn)實(shí)世界搜集到輸入和輸出值實(shí)例——比如,將說出來的詞的音頻作為輸入,詞本身作為輸出的映射函數(shù)。
線性回歸對(duì)于解決語音識(shí)別這個(gè)問題來說有點(diǎn)太無用,但是,它所做的基本上就是監(jiān)督式機(jī)器學(xué)習(xí):給定訓(xùn)練樣本,「學(xué)習(xí)」一個(gè)函數(shù),每一個(gè)樣本數(shù)據(jù)就是需要學(xué)習(xí)的函數(shù)的輸入輸出數(shù)據(jù)(無監(jiān)督學(xué)習(xí),稍后在再敘)。尤其是,機(jī)器學(xué)習(xí)應(yīng)該推導(dǎo)出一個(gè)函數(shù),它能夠很好地泛化到不在訓(xùn)練集中的輸入值上,既然我們真的能將它運(yùn)用到尚未有輸出的輸入中。例如,谷歌的語音識(shí)別技術(shù)由擁有大量訓(xùn)練集的機(jī)器學(xué)習(xí)驅(qū)動(dòng),但是,它的訓(xùn)練集也不可能大到包含你手機(jī)所有語音輸入。
泛化能力機(jī)制如此重要,以至于總會(huì)有一套測試數(shù)據(jù)組(更多的輸入值與輸出值樣本)這套數(shù)據(jù)組并不包括在訓(xùn)練組當(dāng)中。通過觀察有多少個(gè)正確計(jì)算出輸入值所對(duì)應(yīng)的輸出值的樣本,這套單獨(dú)數(shù)據(jù)組可以用來估測機(jī)器學(xué)習(xí)技術(shù)有效性。概括化的克星是過度擬合——學(xué)習(xí)一個(gè)對(duì)于訓(xùn)練集有效但是卻在測試數(shù)據(jù)組中表現(xiàn)很差的函數(shù)。既然機(jī)器學(xué)習(xí)研究者們需要用來比較方法有效性的手段,隨著時(shí)間的推移,標(biāo)準(zhǔn)訓(xùn)練數(shù)據(jù)組以及測試組可被用來評(píng)估機(jī)器學(xué)習(xí)算法。
好了,定義談得足夠多了。重點(diǎn)是——我們繪制線條的聯(lián)系只是一個(gè)非常簡單的監(jiān)督機(jī)器學(xué)習(xí)例子:要點(diǎn)在于訓(xùn)練集(X為輸入,Y為輸出),線條是近似函數(shù),用這條線來為任何沒有包含在訓(xùn)練集數(shù)據(jù)里的X值(輸入值)找到相應(yīng)的Y值(輸出值)。別擔(dān)心,接下來的歷史就不會(huì)這么干巴巴了。讓我們繼續(xù)吧。
虛假承諾的荒唐
顯然這里話題是神經(jīng)網(wǎng)絡(luò),那我們前言里為何要扯線性回歸呢?呃, 事實(shí)上線性回歸和機(jī)器學(xué)習(xí)一開始的方法構(gòu)想,弗蘭克· 羅森布拉特(Frank Rosenblatt)的感知機(jī), 有些許相似性。
Perceptron
心理學(xué)家Rosenblatt構(gòu)想了感知機(jī),它作為簡化的數(shù)學(xué)模型解釋大腦神經(jīng)元如何工作:它取一組二進(jìn)制輸入值(附近的神經(jīng)元),將每個(gè)輸入值乘以一個(gè)連續(xù)值權(quán)重(每個(gè)附近神經(jīng)元的突觸強(qiáng)度),并設(shè)立一個(gè)閾值,如果這些加權(quán)輸入值的和超過這個(gè)閾值,就輸出1,否則輸出0(同理于神經(jīng)元是否放電)。對(duì)于感知機(jī),絕大多數(shù)輸入值不是一些數(shù)據(jù),就是別的感知機(jī)的輸出值。但有一個(gè)額外的細(xì)節(jié):這些感知機(jī)有一個(gè)特殊的,輸入值為1的,「偏置」輸入,因?yàn)槲覀兡苎a(bǔ)償加權(quán)和,它基本上確保了更多的函數(shù)在同樣的輸入值下是可計(jì)算的。這一關(guān)于神經(jīng)元的模型是建立在沃倫·麥卡洛克(Warren McCulloch)和沃爾特·皮茲(Walter Pitts)工作上的。他們?cè)砻鳎讯M(jìn)制輸入值加起來,并在和大于一個(gè)閾值時(shí)輸出1,否則輸出0的神經(jīng)元模型,可以模擬基本的或/與/非邏輯函數(shù)。這在人工智能的早期時(shí)代可不得了——當(dāng)時(shí)的主流思想是,計(jì)算機(jī)能夠做正式的邏輯推理將本質(zhì)上解決人工智能問題。
另一個(gè)圖表,顯示出生物學(xué)上的靈感。激活函數(shù)就是人們當(dāng)前說的非線性函數(shù),它作用于輸入值的加權(quán)和以產(chǎn)生人工神經(jīng)元的輸出值——在羅森布拉特的感知機(jī)情況下,這個(gè)函數(shù)就是輸出一個(gè)閾值操作
然而,麥卡洛克-皮茲模型缺乏一個(gè)對(duì)AI而言至關(guān)重要的學(xué)習(xí)機(jī)制。這就是感知機(jī)更出色的地方所在——羅森布拉特受到唐納德·赫布(Donald Hebb) 基礎(chǔ)性工作的啟發(fā),想出一個(gè)讓這種人工神經(jīng)元學(xué)習(xí)的辦法。赫布提出了一個(gè)出人意料并影響深遠(yuǎn)的想法,稱知識(shí)和學(xué)習(xí)發(fā)生在大腦主要是通過神經(jīng)元間突觸的形成與變化,簡要表述為赫布法則:
當(dāng)細(xì)胞A的軸突足以接近以激發(fā)細(xì)胞B,并反復(fù)持續(xù)地對(duì)細(xì)胞B放電,一些生長過程或代謝變化將發(fā)生在某一個(gè)或這兩個(gè)細(xì)胞內(nèi),以致A作為對(duì)B放電的細(xì)胞中的一個(gè),效率增加。
感知機(jī)并沒有完全遵循這個(gè)想法,但通過調(diào)輸入值的權(quán)重,可以有一個(gè)非常簡單直觀的學(xué)習(xí)方案:給定一個(gè)有輸入輸出實(shí)例的訓(xùn)練集,感知機(jī)應(yīng)該「學(xué)習(xí)」一個(gè)函數(shù):對(duì)每個(gè)例子,若感知機(jī)的輸出值比實(shí)例低太多,則增加它的權(quán)重,否則若設(shè)比實(shí)例高太多,則減少它的權(quán)重。更正式一點(diǎn)兒的該算法如下:
從感知機(jī)有隨機(jī)的權(quán)重和一個(gè)訓(xùn)練集開始。
對(duì)于訓(xùn)練集中一個(gè)實(shí)例的輸入值,計(jì)算感知機(jī)的輸出值。
如若感知機(jī)的輸出值和實(shí)例中默認(rèn)正確的輸出值不同:(1)若輸出值應(yīng)該為0但實(shí)際為1,減少輸入值是1的例子的權(quán)重。(2)若輸出值應(yīng)該為1但實(shí)際為0,增加輸入值是1的例子的權(quán)重。
對(duì)于訓(xùn)練集中下一個(gè)例子做同樣的事,重復(fù)步驟2-4直到感知機(jī)不再出錯(cuò)。
這個(gè)過程很簡單,產(chǎn)生了一個(gè)簡單的結(jié)果:一個(gè)輸入線性函數(shù)(加權(quán)和),正如線性回歸被非線性激活函數(shù)「壓扁」了一樣(對(duì)帶權(quán)重求和設(shè)定閾值的行為)。當(dāng)函數(shù)的輸出值是一個(gè)有限集時(shí)(例如邏輯函數(shù),它只有兩個(gè)輸出值True/1 和 False/0),給帶權(quán)重的和設(shè)置閾值是沒問題的,所以問題實(shí)際上不在于要對(duì)任何輸入數(shù)據(jù)集生成一個(gè)數(shù)值上連續(xù)的輸出(即回歸類問題),而在于對(duì)輸入數(shù)據(jù)做好合適的標(biāo)簽(分類問題)。
康奈爾航天實(shí)驗(yàn)室的Mark I 感知機(jī),第一臺(tái)感知機(jī)的硬件
羅森布拉特用定制硬件的方法實(shí)現(xiàn)了感知機(jī)的想法(在花哨的編程語言被廣泛使用之前),展示出它可以用來學(xué)習(xí)對(duì)20×20像素輸入中的簡單形狀進(jìn)行正確分類。自此,機(jī)器學(xué)習(xí)問世了——建造了一臺(tái)可以從已知的輸入輸出對(duì)中得出近似函數(shù)的計(jì)算機(jī)。在這個(gè)例子中,它只學(xué)習(xí)了一個(gè)小玩具般的函數(shù),但是從中不難想象出有用的應(yīng)用,例如將人類亂糟糟的手寫字轉(zhuǎn)換為機(jī)器可讀的文本。
很重要的是,這種方法還可以用在多個(gè)輸出值的函數(shù)中,或具有多個(gè)類別的分類任務(wù)。這對(duì)一臺(tái)感知機(jī)來說是不可能完成的,因?yàn)樗挥幸粋€(gè)輸出,但是,多輸出函數(shù)能用位于同一層的多個(gè)感知機(jī)來學(xué)習(xí),每個(gè)感知機(jī)接收到同一個(gè)輸入,但分別負(fù)責(zé)函數(shù)的不同輸出。實(shí)際上,神經(jīng)網(wǎng)絡(luò)(準(zhǔn)確的說應(yīng)該是「人工神經(jīng)網(wǎng)絡(luò)(ANN,Artificial Neural Networks)」)就是多層感知機(jī)(今天感知機(jī)通常被稱為神經(jīng)元)而已,只不過在這個(gè)階段,只有一層——輸出層。所以,神經(jīng)網(wǎng)絡(luò)的典型應(yīng)用例子就是分辨手寫數(shù)字。輸入是圖像的像素,有10個(gè)輸出神經(jīng)元,每一個(gè)分別對(duì)應(yīng)著10個(gè)可能的數(shù)字。在這個(gè)案例中,10個(gè)神經(jīng)元中,只有1個(gè)輸出1,權(quán)值最高的和被看做是正確的輸出,而其他的則輸出0。
多層輸出的神經(jīng)網(wǎng)絡(luò)
也可以想象一個(gè)與感知機(jī)不同的人工神經(jīng)網(wǎng)絡(luò)。例如,閾值激活函數(shù)并不是必要的; 1960年,Bernard Widrow和Tedd Hoff很快開始探索一種方法——采用適應(yīng)性的「自適應(yīng)(ADALINE)」神經(jīng)元來輸出權(quán)值的輸入,這種神經(jīng)元使用化學(xué)「 存儲(chǔ)電阻器」,并展示了這種「自適應(yīng)線性神經(jīng)元」能夠在電路中成為「 存儲(chǔ)電阻器」的一部分(存儲(chǔ)電阻器是帶有存儲(chǔ)的電阻)。他們還展示了,不用閾值激活函數(shù),在數(shù)學(xué)上很美,因?yàn)樯窠?jīng)元的學(xué)習(xí)機(jī)制是基于將錯(cuò)誤最小化的微積分,而微積分我們都很熟悉了。
如果我們多思考一下 「自適應(yīng)(ADALINE)」,就會(huì)有進(jìn)一步的洞見:為大量輸入找到一組權(quán)重真的只是一種線性回歸。再一次,就像用線性回歸一樣,這也不足以解決諸如語音識(shí)別或計(jì)算機(jī)視覺這樣的人工智能難題。McCullough,Pitts和羅森布拉特真正感到興奮的是聯(lián)結(jié)主義(Connectionism)這個(gè)寬泛的想法:如此簡單計(jì)算機(jī)單元構(gòu)成的網(wǎng)絡(luò),其功能會(huì)大很多而且可以解決人工智能難題。而且羅森布拉特說的和(坦白說很可笑的)《紐約時(shí)報(bào)》這段引文的意思差不多:
海軍披露了一臺(tái)尚處初期的電子計(jì)算機(jī),期待這臺(tái)電子計(jì)算機(jī)能行走,談話,看和寫,自己復(fù)制出自身存在意識(shí)…羅森布拉特博士,康奈爾航空實(shí)驗(yàn)室的一位心理學(xué)家說,感知機(jī)能作為機(jī)械太空探險(xiǎn)者被發(fā)射到行星上。
這種談話無疑會(huì)惹惱人工領(lǐng)域的其他研究人員,其中有許多研究人員都在專注于這樣的研究方法,它們以帶有具體規(guī)則(這些規(guī)則遵循邏輯數(shù)學(xué)法則)的符號(hào)操作為基礎(chǔ)。MIT人工智能實(shí)驗(yàn)室創(chuàng)始人Marvin Minsky和Seymour Paper就是對(duì)這一炒作持懷疑態(tài)度研究人員中的兩位,1969年,他們?cè)谝槐鹃_創(chuàng)性著作中表達(dá)了這種質(zhì)疑,書中嚴(yán)謹(jǐn)分析了感知機(jī)的局限性,書名很貼切,叫《感知機(jī)》。
他們分析中,最被廣為討論的內(nèi)容就是對(duì)感知機(jī)限制的說明,例如,他們不能學(xué)習(xí)簡單的布爾函數(shù)XOR,因?yàn)樗荒苓M(jìn)行線性分離。雖然此處歷史模糊,但是,人們普遍認(rèn)為這本書對(duì)人工智能步入第一個(gè)冬天起到了推波助瀾的作用——大肆炒作之后,人工智能進(jìn)入泡沫幻滅期,相關(guān)資助和出版都遭凍結(jié)。
感知機(jī)局限性的視覺化。找到一個(gè)線性函數(shù),輸入X,Y時(shí)可以正確地輸出+或-,就是在2D圖表上畫一條從+中分離出-的線;很顯然,就第三幅圖顯示的情況來看,這是不可能的
人工智能冬天的復(fù)蘇
因此,情況對(duì)神經(jīng)網(wǎng)絡(luò)不利。但是,為什么?他們的想法畢竟是想將一連串簡單的數(shù)學(xué)神經(jīng)元結(jié)合在一起,完成一些復(fù)雜任務(wù),而不是使用單個(gè)神經(jīng)元。換句話說,并不是只有一個(gè)輸出層,將一個(gè)輸入任意傳輸?shù)蕉鄠€(gè)神經(jīng)元(所謂的隱藏層,因?yàn)樗麄兊妮敵鰰?huì)作為另一隱藏層或神經(jīng)元輸出層的輸入)。只有輸出層的輸出是「可見」的——亦即神經(jīng)網(wǎng)絡(luò)的答案——但是,所有依靠隱藏層完成的間接計(jì)算可以處理復(fù)雜得多的問題,這是單層結(jié)構(gòu)望塵莫及的。
有兩個(gè)隱藏層的神經(jīng)網(wǎng)絡(luò)
言簡意賅地說,多個(gè)隱藏層是件好事,原因在于隱藏層可以找到數(shù)據(jù)內(nèi)在特點(diǎn),后續(xù)層可以在這些特點(diǎn)(而不是嘈雜龐大的原始數(shù)據(jù))基礎(chǔ)上進(jìn)行操作。以圖片中的面部識(shí)別這一非常常見的神經(jīng)網(wǎng)絡(luò)任務(wù)為例,第一個(gè)隱藏層可以獲得圖片的原始像素值,以及線、圓和橢圓等信息。接下來的層可以獲得這些線、圓和橢圓等的位置信息,并且通過這些來定位人臉的位置——處理起來簡單多了!而且人們基本上也都明白這一點(diǎn)。事實(shí)上,直到最近,機(jī)器學(xué)習(xí)技術(shù)都沒有普遍直接用于原始數(shù)據(jù)輸入,比如圖像和音頻。相反,機(jī)器學(xué)習(xí)被用于經(jīng)過特征提取后的數(shù)據(jù)——也就是說,為了讓學(xué)習(xí)更簡單,機(jī)器學(xué)習(xí)被用在預(yù)處理的數(shù)據(jù)上,一些更加有用的特征,比如角度,形狀早已被從中提取出來。
傳統(tǒng)的特征的手工提取過程的視覺化
因此,注意到這一點(diǎn)很重要:Minsky和Paper關(guān)于感知機(jī)的分析不僅僅表明不可能用單個(gè)感知機(jī)來計(jì)算XOR,而且特別指出需要多層感知機(jī)——亦即現(xiàn)在所謂的多層神經(jīng)網(wǎng)絡(luò)——才可以完成這一任務(wù),而且羅森布拉特的學(xué)習(xí)算法對(duì)多層并不管用。那是一個(gè)真正的問題:之前針對(duì)感知機(jī)概括出的簡單學(xué)習(xí)規(guī)則并不是適用于多層結(jié)構(gòu)。想知道原因?讓我們?cè)賮砘仡櫼幌聠螌咏Y(jié)構(gòu)感知機(jī)如何學(xué)習(xí)計(jì)算一些函數(shù):
和函數(shù)輸出數(shù)量相等的感知機(jī)會(huì)以小的初始權(quán)值開始(僅為輸入函數(shù)的倍數(shù))
選取訓(xùn)練集中的一個(gè)例子作為輸入,計(jì)算感知機(jī)的輸出
對(duì)于每一個(gè)感知機(jī),如果其計(jì)算結(jié)果和該例子的結(jié)果不匹配,調(diào)整初始權(quán)值
繼續(xù)采用訓(xùn)練集中的下一個(gè)例子,重復(fù)過程2到4次,直到感知機(jī)不再犯錯(cuò)。
這一規(guī)則并不適用多層結(jié)構(gòu)的原因應(yīng)該很直觀清楚了:選取訓(xùn)練集中的例子進(jìn)行訓(xùn)練時(shí),我們只能對(duì)最終的輸出層的輸出結(jié)果進(jìn)行校正,但是,對(duì)于多層結(jié)構(gòu)來說,我們?cè)撊绾握{(diào)整最終輸出層之前的層結(jié)構(gòu)權(quán)值呢?答案(盡管需要花時(shí)間來推導(dǎo))又一次需要依賴古老的微積分:鏈?zhǔn)椒▌t。這里有一個(gè)重要現(xiàn)實(shí):神經(jīng)網(wǎng)絡(luò)的神經(jīng)元和感知機(jī)并不完全相同,但是,可用一個(gè)激活函數(shù)來計(jì)算輸出,該函數(shù)仍然是非線性的,但是可微分,和Adaline神經(jīng)元一樣;該導(dǎo)數(shù)不僅可以用于調(diào)整權(quán)值,減少誤差,鏈?zhǔn)椒▌t也可用于計(jì)算前一層所有神經(jīng)元導(dǎo)數(shù),因此,調(diào)整它們權(quán)重的方式也是可知的。說得更簡單些:我們可以利用微積分將一些導(dǎo)致輸出層任何訓(xùn)練集誤差的原因分配給前一隱藏層的每個(gè)神經(jīng)元,如果還有另外一層隱藏層,我們可以將這些原因再做分配,以此類推——我們?cè)诜聪騻鞑ミ@些誤差。而且,如果修改了神經(jīng)網(wǎng)絡(luò)(包括那些隱藏層)任一權(quán)重值,我們還可以找出誤差會(huì)有多大變化,通過優(yōu)化技巧(時(shí)間長,典型的隨機(jī)梯度下降)找出最小化誤差的最佳權(quán)值。
反向傳播的基本思想
反向傳播由上世紀(jì)60年代早期多位研究人員提出,70年代,由Seppo Linnainmaa引入電腦運(yùn)行,但是,Paul Werbos在1974年的博士畢業(yè)論文中深刻分析了將之用于神經(jīng)網(wǎng)絡(luò)方面的可能性,成為美國第一位提出可以將其用于神經(jīng)網(wǎng)絡(luò)的研究人員。有趣的是,他從模擬人類思維的研究工作中并沒有獲得多少啟發(fā),在這個(gè)案例中,弗洛伊德心理學(xué)理論啟發(fā)了他,正如他自己敘述:
1968年,我提出我們可以多少模仿弗洛伊德的概念——信度指派的反向流動(dòng)( a backwards flow of credit assignment,),指代從神經(jīng)元到神經(jīng)元的反向流動(dòng)…我解釋過結(jié)合使用了直覺、實(shí)例和普通鏈?zhǔn)椒▌t的反向計(jì)算,雖然它正是將弗洛伊德以前在心理動(dòng)力學(xué)理論中提出的概念運(yùn)用到數(shù)學(xué)領(lǐng)域中!
盡管解決了如何訓(xùn)練多層神經(jīng)網(wǎng)絡(luò)的問題,在寫作自己的博士學(xué)位論文時(shí)也意識(shí)到了這一點(diǎn),但是,Werbos沒有發(fā)表將BP算法用于神經(jīng)網(wǎng)絡(luò)這方面的研究,直到1982年人工智能冬天引發(fā)了寒蟬效應(yīng)。實(shí)際上,Werbos認(rèn)為,這種研究進(jìn)路對(duì)解決感知機(jī)問題是有意義的,但是,這個(gè)圈子大體已經(jīng)失去解決那些問題的信念。
Minsky的書最著名的觀點(diǎn)有幾個(gè):(1)我們需要用MLPs[多層感知機(jī),多層神經(jīng)網(wǎng)絡(luò)的另一種說法)來代表簡單的非線性函數(shù),比如XOR 映射;而且(2)世界上沒人發(fā)現(xiàn)可以將MLPs訓(xùn)練得夠好,以至于可以學(xué)會(huì)這么簡單的函數(shù)的方法。Minsky的書讓世上絕大多數(shù)人相信,神經(jīng)網(wǎng)絡(luò)是最糟糕的異端,死路一條。Widrow已經(jīng)強(qiáng)調(diào),這種壓垮早期『感知機(jī)』人工智能學(xué)派的悲觀主義不應(yīng)怪在Minsky的頭上。他只是總結(jié)了幾百位謹(jǐn)慎研究人員的經(jīng)驗(yàn)而已,他們嘗試找出訓(xùn)練MLPs的辦法,卻徒勞無功。也曾有過希望,比如Rosenblatt所謂的backpropagation(這和我們現(xiàn)在說的 backpropagation并不完全相同!),而且Amari也簡短表示,我們應(yīng)該考慮將最小二乘(也是簡單線性回歸的基礎(chǔ))作為訓(xùn)練神經(jīng)網(wǎng)絡(luò)的一種方式(但沒有討論如何求導(dǎo),還警告說他對(duì)這個(gè)方法不抱太大期望)。但是,當(dāng)時(shí)的悲觀主義開始變得致命。上世紀(jì)七十年代早期,我確實(shí)在MIT采訪過Minsky。我建議我們合著一篇文章,證明MLPs實(shí)際上能夠克服早期出現(xiàn)的問題…但是,Minsky并無興趣(14)。事實(shí)上,當(dāng)時(shí)的MIT,哈佛以及任何我能找到的研究機(jī)構(gòu),沒人對(duì)此有興趣。
我肯定不能打保票,但是,直到十年后,也就是1986年,這一研究進(jìn)路才開始在David Rumelhart, Geoffrey Hinton和Ronald Williams合著的《Learning representations by back-propagating errors》中流行開來,原因似乎就是缺少學(xué)術(shù)興趣。
盡管研究方法的發(fā)現(xiàn)不計(jì)其數(shù)(論文甚至清楚提道,David Parker 和 Yann LeCun是事先發(fā)現(xiàn)這一研究進(jìn)路的兩人),1986年的這篇文章卻因其精確清晰的觀點(diǎn)陳述而顯得很突出。實(shí)際上,學(xué)機(jī)器學(xué)習(xí)的人很容易發(fā)現(xiàn)自己論文中的描述與教科書和課堂上解釋概念方式本質(zhì)上相同。
不幸的是,科學(xué)圈里幾乎無人知道Werbo的研究。1982年,Parker重新發(fā)現(xiàn)了這個(gè)研究辦法[39]并于1985年在M.I.T[40]上發(fā)表了一篇相關(guān)報(bào)道。就在Parker報(bào)道后不久,Rumelhart, Hinton和Williams [41], [42]也重新發(fā)現(xiàn)了這個(gè)方法, 他們最終成功地讓這個(gè)方法家喻戶曉,也主要?dú)w功于陳述觀點(diǎn)的框架非常清晰。
但是,這三位作者沒有止步于介紹新學(xué)習(xí)算法,而是走得更遠(yuǎn)。同年,他們發(fā)表了更有深度的文章《Learning internal representations by error propagation》。
文章特別談到了Minsky在《感知機(jī)》中討論過的問題。盡管這是過去學(xué)者的構(gòu)想,但是,正是這個(gè)1986年提出的構(gòu)想讓人們廣泛理解了應(yīng)該如何訓(xùn)練多層神經(jīng)網(wǎng)絡(luò)解決復(fù)雜學(xué)習(xí)問題。而且神經(jīng)網(wǎng)絡(luò)也因此回來了!
神經(jīng)網(wǎng)絡(luò)獲得視覺
隨著訓(xùn)練多層神經(jīng)網(wǎng)絡(luò)的謎題被揭開,這個(gè)話題再一次變得空前熱門,羅森布拉特的崇高雄心似乎也將得以實(shí)現(xiàn)。直到1989年另一個(gè)關(guān)鍵發(fā)現(xiàn)被公布,現(xiàn)在仍廣為教科書及各大講座引用。
多層前饋神經(jīng)網(wǎng)絡(luò)是普適模擬器( universal approximators)。」本質(zhì)上,可以從數(shù)學(xué)證明多層結(jié)構(gòu)使得神經(jīng)網(wǎng)絡(luò)能夠在理論上執(zhí)行任何函數(shù)表達(dá),當(dāng)然包括XOR(異或)問題。
然而,這是數(shù)學(xué),你可以在數(shù)學(xué)中暢想自己擁有無限內(nèi)存和所需計(jì)算能力——反向傳播可以讓神經(jīng)網(wǎng)絡(luò)被用于世界任何角落嗎?噢,當(dāng)然。也是在1989年,Yann LeCunn在AT&T Bell實(shí)驗(yàn)室驗(yàn)證了一個(gè)反向傳播在現(xiàn)實(shí)世界中的杰出應(yīng)用,即「反向傳播應(yīng)用于手寫郵編識(shí)別(Backpropagation Applied to Handwritten Zip Code Recognition)」。
你或許會(huì)認(rèn)為,讓計(jì)算機(jī)能夠正確理解手寫數(shù)字并沒有那么了不起,而且今天看來,這還會(huì)顯得你太過大驚小怪,但事實(shí)上,在這個(gè)應(yīng)用公開發(fā)布之前,人類書寫混亂,筆畫也不連貫,對(duì)計(jì)算機(jī)整齊劃一的思維方式構(gòu)成了巨大挑戰(zhàn)。這篇研究使用了美國郵政的大量數(shù)據(jù)資料,結(jié)果證明神經(jīng)網(wǎng)絡(luò)完全能夠勝任識(shí)別任務(wù)。更重要的是,這份研究首次強(qiáng)調(diào)了超越普通(plain)反向傳播 、邁向現(xiàn)代深度學(xué)習(xí)這一關(guān)鍵轉(zhuǎn)變的實(shí)踐需求。
傳統(tǒng)的視覺模式識(shí)別工作已經(jīng)證明,抽取局部特征并且將它們結(jié)合起來組成更高級(jí)的特征是有優(yōu)勢的。通過迫使隱藏單元結(jié)合局部信息來源,很容易將這樣的知識(shí)搭建成網(wǎng)絡(luò)。一個(gè)事物的本質(zhì)特征可以出現(xiàn)在輸入圖片的不同位置。因此,擁有一套特征探測器,可以探測到位于輸入環(huán)節(jié)任何地方的某個(gè)具體特征實(shí)例,非常明智。既然一個(gè)特征的精準(zhǔn)定位于分類無關(guān),那么,我們可以在處理過程中適當(dāng)舍棄一些位置信息。不過,近似的位置信息必須被保留,從而允許下面網(wǎng)絡(luò)層能夠探測到更加高級(jí)更加復(fù)雜的特征。(Fukushima1980,Mozer,1987)
一個(gè)神經(jīng)網(wǎng)絡(luò)工作原理的可視化過程
或者,更具體的:神經(jīng)網(wǎng)絡(luò)的第一個(gè)隱層是卷積層——不同于傳統(tǒng)網(wǎng)絡(luò)層,每個(gè)神經(jīng)元對(duì)應(yīng)的一個(gè)圖片像素都相應(yīng)有一個(gè)不同的權(quán)值(40*60=2400個(gè)權(quán)值),神經(jīng)元只有很少一部分權(quán)值(5*5=25)以同樣的大小應(yīng)用于圖像的一小個(gè)完整子空間。所以,比如替換了用四種不同的神經(jīng)元來學(xué)習(xí)整個(gè)輸入圖片4個(gè)角的45度對(duì)角線探測,一個(gè)單獨(dú)的神經(jīng)元能通過在圖片的子空間上學(xué)習(xí)探測45度對(duì)角線,并且照著這樣的方法對(duì)整張圖片進(jìn)行學(xué)習(xí)。每層的第一道程序都以相類似的方式進(jìn)行,但是,接收的是在前一隱藏層找到的「局部」特征位置而不是圖片像素值,而且,既然它們正在結(jié)合有關(guān)日益增大的圖片子集的信息,那么,它們也能「看到」其余更大的圖片部分。最后,倒數(shù)的兩個(gè)網(wǎng)絡(luò)層利用了前面卷積抽象出來的更加高級(jí)更加明顯的特征來判斷輸入的圖像究竟該歸類到哪里。這個(gè)在1989年的論文里提出的方法繼續(xù)成為舉國采用的支票讀取系統(tǒng)的基礎(chǔ),正如LeCun在如下小視頻中演示的:
這很管用,為什么?原因很直觀,如果數(shù)學(xué)表述上不是那么清楚的話:沒有這些約束條件,網(wǎng)絡(luò)就必須學(xué)習(xí)同樣的簡單事情(比如,檢測45°角的直線和小圓圈等),要花大把時(shí)間學(xué)習(xí)圖像的每一部分。但是,有些約束條件,每一個(gè)簡單特征只需要一個(gè)神經(jīng)元來學(xué)習(xí)——而且,由于整體權(quán)值大量減少,整個(gè)過程完成起來更快。而且,既然這些特征的像素確切位置無關(guān)緊要,那么,基本上可以跳過圖像相鄰子集——子集抽樣,一種共享池手段(a type of pooling)——當(dāng)應(yīng)用權(quán)值時(shí),進(jìn)一步減少了訓(xùn)練時(shí)間。多加了這兩層——(卷積層和匯集層)——是卷積神經(jīng)網(wǎng)絡(luò)(CNNs/ConvNets)和普通舊神經(jīng)網(wǎng)絡(luò)的主要區(qū)別。
卷積神經(jīng)網(wǎng)絡(luò)(CNN)的操作過程
那時(shí),卷積的思想被稱作「權(quán)值共享」,也在1986年Rumelhart、Hinton和Williams關(guān)于反向傳播的延伸分析中得到了切實(shí)討論。顯然,Minsky和Papert在1969年《感知機(jī)》中的分析完全可以提出激發(fā)這一研究想法的問題。但是,和之前一樣,其他人已經(jīng)獨(dú)立地對(duì)其進(jìn)行了研究——比如,Kunihiko Fukushima在1980年提出的Neurocognitron。而且,和之前一樣,這一思想從大腦研究汲取了靈感:
根據(jù)Hubel和Wiesel的層級(jí)模型,視覺皮層中的神經(jīng)網(wǎng)絡(luò)具有一個(gè)層級(jí)結(jié)構(gòu):LGB(外側(cè)膝狀體)→樣品細(xì)胞→復(fù)雜細(xì)胞→低階超復(fù)雜細(xì)胞->高階超復(fù)雜細(xì)胞。低階超復(fù)雜細(xì)胞和高階超復(fù)雜細(xì)胞之間的神經(jīng)網(wǎng)絡(luò)具有一個(gè)和簡單細(xì)胞與復(fù)雜細(xì)胞之間的網(wǎng)絡(luò)類似的結(jié)構(gòu)。在這種層狀結(jié)構(gòu)中,較高級(jí)別的細(xì)胞通常會(huì)有這樣的傾向,即對(duì)刺激模式的更復(fù)雜的特征進(jìn)行選擇性響應(yīng),同時(shí)也具有一個(gè)更大的接收域,而且對(duì)刺激模式位置的移動(dòng)更不敏感。因此,在我們的模型中就引入了類似于層級(jí)模型的結(jié)構(gòu)。
LeCun也在貝爾實(shí)驗(yàn)室繼續(xù)支持卷積神經(jīng)網(wǎng)絡(luò),其相應(yīng)的研究成果也最終在上世紀(jì)90年代中期成功應(yīng)用于支票讀取——他的談話和采訪通常都介紹了這一事實(shí):「在上世紀(jì)90年代后期,這些系統(tǒng)當(dāng)中的一個(gè)讀取了全美大約10%到20%的支票。」
神經(jīng)網(wǎng)絡(luò)進(jìn)入無監(jiān)督學(xué)習(xí)時(shí)期
將死記硬背,完全無趣的支票讀取工作自動(dòng)化,就是機(jī)器學(xué)習(xí)大展拳腳的例子。也許有一個(gè)預(yù)測性小的應(yīng)用? 壓縮。即指找到一種更小體量的數(shù)據(jù)表示模式,并從其可以恢復(fù)數(shù)據(jù)原有的表示形態(tài),通過機(jī)器學(xué)習(xí)找到的壓縮方法有可能會(huì)超越所有現(xiàn)有的壓縮模式。當(dāng)然,意思是在一些數(shù)據(jù)中找到一個(gè)更小的數(shù)據(jù)表征,原始數(shù)據(jù)可以從中加以重構(gòu)。學(xué)會(huì)壓縮這一方案遠(yuǎn)勝于常規(guī)壓縮算法,在這種情況下,學(xué)習(xí)算法可以找到在常規(guī)壓縮算法下可能錯(cuò)失的數(shù)據(jù)特征。而且,這也很容易做到——僅用訓(xùn)練帶有一個(gè)小隱藏層的神經(jīng)網(wǎng)絡(luò)就可以對(duì)輸入進(jìn)行輸出。
自編碼神經(jīng)網(wǎng)絡(luò)
這是一個(gè)自編碼神經(jīng)網(wǎng)絡(luò),也是一種學(xué)習(xí)壓縮的方法——有效地將數(shù)據(jù)轉(zhuǎn)換為壓縮格式,并且自動(dòng)返回到本身。我們可以看到,輸出層會(huì)計(jì)算其輸出結(jié)果。由于隱藏層的輸出比輸入層少,因此,隱藏層的輸出是輸入數(shù)據(jù)的一個(gè)壓縮表達(dá),可以在輸出層進(jìn)行重建。
更明確地了解自編碼壓縮
注意一件奇妙的事情:我們訓(xùn)練所需的唯一東西就是一些輸入數(shù)據(jù)。這與監(jiān)督式機(jī)器學(xué)習(xí)的要求形成鮮明的對(duì)比,監(jiān)督式機(jī)器學(xué)習(xí)需要的訓(xùn)練集是輸入-輸出對(duì)(標(biāo)記數(shù)據(jù)),來近似地生成能從這些輸入得到對(duì)應(yīng)輸出的函數(shù)。確實(shí),自編碼器并不是一種監(jiān)督式學(xué)習(xí);它們實(shí)際上是一種非監(jiān)督式學(xué)習(xí),只需要一組輸入數(shù)據(jù)(未標(biāo)記的數(shù)據(jù)),目的是找到這些數(shù)據(jù)中某些隱藏的結(jié)構(gòu)。換句話說,非監(jiān)督式學(xué)習(xí)對(duì)函數(shù)的近似程度不如它從輸入數(shù)據(jù)中生成另一個(gè)有用的表征那么多。這樣一來,這個(gè)表征比原始數(shù)據(jù)能重構(gòu)的表征更小,但它也能被用來尋找相似的數(shù)據(jù)組(聚類)或者潛在變量的其他推論(某些從數(shù)據(jù)看來已知存在但數(shù)值未知的方面)。
聚類,一種很常用的非監(jiān)督式學(xué)習(xí)應(yīng)用
在反向傳播算法發(fā)現(xiàn)之前和之后,神經(jīng)網(wǎng)絡(luò)都還有其他的非監(jiān)督式應(yīng)用,最著名的是自組織映射神經(jīng)網(wǎng)絡(luò)(SOM,Self Organizing Maps)和自適應(yīng)共振理論(ART,Adapative Resonance Theory)。SOM能生成低維度的數(shù)據(jù)表征,便于可視化,而ART能夠在不被告知正確分類的情況下,學(xué)習(xí)對(duì)任意輸入數(shù)據(jù)進(jìn)行分類。如果你想一想就會(huì)發(fā)現(xiàn),從未標(biāo)記數(shù)據(jù)中能學(xué)到很多東西是符合直覺的。假設(shè)你有一個(gè)數(shù)據(jù)集,其中有一堆手寫數(shù)字的數(shù)據(jù)集,并沒有標(biāo)記每張圖片對(duì)應(yīng)著哪個(gè)數(shù)字。那么,如果一張圖片上有數(shù)據(jù)集中的某個(gè)數(shù)字,那它看起來與其他大多數(shù)擁有同樣數(shù)字的圖片很相似,所以,盡管計(jì)算機(jī)可能并不知道這些圖片對(duì)應(yīng)著哪個(gè)數(shù)字,但它應(yīng)該能夠發(fā)現(xiàn)它們都對(duì)應(yīng)著同一個(gè)數(shù)字。這樣,模式識(shí)別就是大多數(shù)機(jī)器學(xué)習(xí)要解決的任務(wù),也有可能是人腦強(qiáng)大能力的基礎(chǔ)。但是,讓我們不要偏離我們的深度學(xué)習(xí)之旅,回到自編碼器上。
自組織映射神經(jīng)網(wǎng)絡(luò):將輸入的一個(gè)大向量映射到一個(gè)神經(jīng)輸出的網(wǎng)格中,在其中,每個(gè)輸出都是一個(gè)聚類。相鄰的神經(jīng)元表示同樣的聚類。
正如權(quán)重共享一樣,關(guān)于自編碼器最早的討論是在前面提到過的1986年的反向傳播分析中所進(jìn)行。有了權(quán)重共享,它在接下來幾年中的更多研究中重新浮出了水面,包括Hinton自己。這篇論文,有一個(gè)有趣的標(biāo)題:《自編碼器,最小描述長度和亥姆霍茲自由能》(Autoencoders, Minimum Description Length, and Helmholts Free Energy),提出「最自然的非監(jiān)督式學(xué)習(xí)方法就是使用一個(gè)定義概率分布而不是可觀測向量的模型」,并使用一個(gè)神經(jīng)網(wǎng)絡(luò)來學(xué)習(xí)這種模型。所以,還有一件你能用神經(jīng)網(wǎng)絡(luò)來做的奇妙事:對(duì)概率分布進(jìn)行近似。
神經(jīng)網(wǎng)絡(luò)迎來信念網(wǎng)絡(luò)
事實(shí)上,在成為1986年討論反向傳播學(xué)習(xí)算法這篇有重大影響力論文的合作者之前,Hinton在研究一種神經(jīng)網(wǎng)絡(luò)方法,可以學(xué)習(xí)1985年「 A Learning Algorithm for Boltzmann Machines」中的概率分布。
玻爾茲曼機(jī)器就是類似神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò),并有著和感知器(Perceptrons)非常相似的單元,但該機(jī)器并不是根據(jù)輸入和權(quán)重來計(jì)算輸出,在給定相連單元值和權(quán)重的情況下,網(wǎng)絡(luò)中的每個(gè)單元都能計(jì)算出自身概率,取得值為1或0。因此,這些單元都是隨機(jī)的——它們依循的是概率分布而非一種已知的決定性方式。玻爾茲曼部分和概率分布有關(guān),它需要考慮系統(tǒng)中粒子的狀態(tài),這些狀態(tài)本身基于粒子的能量和系統(tǒng)本身的熱力學(xué)溫度。這一分布不僅決定了玻爾茲曼機(jī)器的數(shù)學(xué)方法,也決定了其推理方法——網(wǎng)絡(luò)中的單元本身擁有能量和狀況,學(xué)習(xí)是由最小化系統(tǒng)能量和熱力學(xué)直接刺激完成的。雖然不太直觀,但這種基于能量的推理演繹實(shí)際上恰是一種基于能量的模型實(shí)例,并能夠適用于基于能量的學(xué)習(xí)理論框架,而很多學(xué)習(xí)算法都能用這樣的框架進(jìn)行表述。
一個(gè)簡單的信念,或者說貝葉斯網(wǎng)絡(luò)——玻爾茲曼機(jī)器基本上就是如此,但有著非直接/對(duì)稱聯(lián)系和可訓(xùn)練式權(quán)重,能夠?qū)W習(xí)特定模式下的概率。
回到玻爾茲曼機(jī)器。當(dāng)這樣的單元一起置于網(wǎng)絡(luò)中,就形成了一張圖表,而數(shù)據(jù)圖形模型也是如此。本質(zhì)上,它們能夠做到一些非常類似普通神經(jīng)網(wǎng)絡(luò)的事:某些隱藏單元在給定某些代表可見變量的可見單元的已知值(輸入——圖像像素,文本字符等)后,計(jì)算某些隱藏變量的概率(輸出——數(shù)據(jù)分類或數(shù)據(jù)特征)。以給數(shù)字圖像分類為例,隱藏變量就是實(shí)際的數(shù)字值,可見變量是圖像的像素;給定數(shù)字圖像「1」作為輸入,可見單元的值就可知,隱藏單元給圖像代表「1」的概率進(jìn)行建模,而這應(yīng)該會(huì)有較高的輸出概率。
玻爾茲曼機(jī)器實(shí)例。每一行都有相關(guān)的權(quán)重,就像神經(jīng)網(wǎng)絡(luò)一樣。注意,這里沒有分層——所有事都可能跟所有事相關(guān)聯(lián)。我們會(huì)在后文討論這樣一種變異的神經(jīng)網(wǎng)絡(luò)
因此,對(duì)于分類任務(wù),現(xiàn)在有一種計(jì)算每種類別概率的好方法了。這非常類似正常分類神經(jīng)網(wǎng)絡(luò)實(shí)際計(jì)算輸出的過程,但這些網(wǎng)絡(luò)有另一個(gè)小花招:它們能夠得出看似合理的輸入數(shù)據(jù)。這是從相關(guān)的概率等式中得來的——網(wǎng)絡(luò)不只是會(huì)學(xué)習(xí)計(jì)算已知可見變量值時(shí)的隱藏變量值概率,還能夠由已知隱藏變量值反推可見變量值概率。所以,如果我們想得出一幅「1」數(shù)字圖像,這些跟像素變量相關(guān)的單元就知道需要輸出概率1,而圖像就能夠根據(jù)概率得出——這些網(wǎng)絡(luò)會(huì)再創(chuàng)建圖像模型。雖然可能能夠?qū)崿F(xiàn)目標(biāo)非常類似普通神經(jīng)網(wǎng)絡(luò)的監(jiān)督式學(xué)習(xí),但學(xué)習(xí)一個(gè)好的生成模型的非監(jiān)督式學(xué)習(xí)任務(wù)——概率性地學(xué)習(xí)某些數(shù)據(jù)的隱藏結(jié)構(gòu)——是這些網(wǎng)絡(luò)普遍所需要的。這些大部分都不是小說,學(xué)習(xí)算法確實(shí)存在,而使其成為可能的特殊公式,正如其論文本身所描述的:
或許,玻爾茲曼機(jī)器公式最有趣的方面在于它能夠引導(dǎo)出一種(與領(lǐng)域無關(guān)的)一般性學(xué)習(xí)算法,這種算法會(huì)以整個(gè)網(wǎng)絡(luò)發(fā)展出的一種內(nèi)部模型(這個(gè)模型能夠捕獲其周圍環(huán)境的基礎(chǔ)結(jié)構(gòu))的方式修改單元之間的聯(lián)系強(qiáng)度。在尋找這樣一個(gè)算法的路上,有一段長時(shí)間失敗的歷史(Newell,1982),而很多人(特別是人工智能領(lǐng)域的人)現(xiàn)在相信不存在這樣的算法。
我們就不展開算法的全部細(xì)節(jié)了,就列出一些亮點(diǎn):這是最大似然算法的變體,這簡單意味著它追求與已知正確值匹配的網(wǎng)絡(luò)可見單元值(visible unit values)概率的最大化。同時(shí)計(jì)算每個(gè)單元的實(shí)際最有可能值 ,計(jì)算要求太高,因此,訓(xùn)練吉布斯采樣(training Gibbs Sampling)——以隨機(jī)的單元值網(wǎng)絡(luò)作為開始,在給定單元連接值的情況下,不斷迭代重新給單元賦值——被用來給出一些實(shí)際已知值。當(dāng)使用訓(xùn)練集學(xué)習(xí)時(shí),設(shè)置可見單位值( visible units)從而能夠得到當(dāng)前訓(xùn)練樣本的值,這樣就通過抽樣得到了隱藏單位值。一旦抽取到了一些真實(shí)值,我們就可以采取類似反向傳播的辦法——針對(duì)每個(gè)權(quán)重值求偏導(dǎo)數(shù),然后估算出如何調(diào)整權(quán)重來增加整個(gè)網(wǎng)絡(luò)做出正確預(yù)測的概率。
和神經(jīng)網(wǎng)絡(luò)一樣,算法既可以在監(jiān)督(知道隱藏單元值)也可以在無監(jiān)督方式下完成。盡管這一算法被證明有效(尤其是在面對(duì)自編碼神經(jīng)網(wǎng)絡(luò)解決的「編碼」問題時(shí)),但很快就看出不是特別有效。Redford M. Neal1992年的論文《Connectionist learning of belief networks》論證了需要一種更快的方法,他說:「這些能力使得玻耳茲曼機(jī)在許多應(yīng)用中都非常有吸引力——要不是學(xué)習(xí)過程通常被認(rèn)為是慢的要命。」因此,Neal引入了類似信念網(wǎng)絡(luò)的想法,本質(zhì)上就像玻耳茲曼機(jī)控制、發(fā)送連接(所以又有了層次,就像我們之前看過的神經(jīng)網(wǎng)絡(luò)一樣,而不像上面的玻耳茲曼機(jī)控制機(jī)概念)。跳出了討厭的概率數(shù)學(xué),這一變化使得網(wǎng)絡(luò)能以一種更快的學(xué)習(xí)算法得到訓(xùn)練。灑水器和雨水那一層上面可以視為有一個(gè)信念網(wǎng)絡(luò)——這一術(shù)語非常嚴(yán)謹(jǐn),因?yàn)檫@種基于概率的模型,除了和機(jī)器學(xué)習(xí)領(lǐng)域有著聯(lián)系,和數(shù)學(xué)中的概率領(lǐng)域也有著密切的關(guān)聯(lián)。
盡管這種方法比玻爾茲曼機(jī)進(jìn)步,但還是太慢了,正確計(jì)算變量間的概率關(guān)系的數(shù)學(xué)需求計(jì)算量太大了,而且還沒啥簡化技巧。Hinton、Neal和其他兩位合作者很快在1995年的論文《The wake-sleep algorithm for unsupervised neural networks》中提出了一些新技巧。這次他們又搞出一個(gè)和上個(gè)信念網(wǎng)絡(luò)有些不一樣的網(wǎng)絡(luò),現(xiàn)在被叫做「亥姆霍茲機(jī)」。再次拋開細(xì)節(jié)不談,核心的想法就是對(duì)隱含變量的估算和對(duì)已知變量的逆轉(zhuǎn)生成計(jì)算采取兩套不同的權(quán)重,前者叫做recognition weights,后者叫做generative weights,保留了Neal's信念網(wǎng)絡(luò)的有方向的特性。這樣一來,當(dāng)用于玻爾茲曼機(jī)的那些監(jiān)督和無監(jiān)督學(xué)習(xí)問題時(shí),訓(xùn)練就快得多。
最終,信念網(wǎng)絡(luò)的訓(xùn)練多少會(huì)快些!盡管沒那么大的影響力,對(duì)信念網(wǎng)絡(luò)的無監(jiān)督學(xué)習(xí)而言,這一算法改進(jìn)是非常重要的進(jìn)步,堪比十年前反向傳播的突破。不過,目前為止,新的機(jī)器學(xué)習(xí)方法也開始涌現(xiàn),人們也與開始質(zhì)疑神經(jīng)網(wǎng)絡(luò),因?yàn)榇蟛糠值南敕ㄋ坪趸谥庇X,而且因?yàn)橛?jì)算機(jī)仍舊很難滿足它們的計(jì)算需求,人工智能寒冬將在幾年內(nèi)到來。
神經(jīng)網(wǎng)絡(luò)做決定
神經(jīng)網(wǎng)絡(luò)運(yùn)用于無監(jiān)督學(xué)習(xí)的發(fā)現(xiàn)之旅結(jié)束后,讓我們也快速了解一下它們?nèi)绾伪挥糜跈C(jī)器學(xué)習(xí)的第三個(gè)分支領(lǐng)域:強(qiáng)化學(xué)習(xí)。正規(guī)解釋強(qiáng)化學(xué)習(xí)需要很多數(shù)學(xué)符號(hào),不過,它也有一個(gè)很容易加以非正式描述的目標(biāo):學(xué)會(huì)做出好決定。給定一些理論代理(比如,一個(gè)小軟件),讓代理能夠根據(jù)當(dāng)前狀態(tài)做出行動(dòng),每個(gè)采取行動(dòng)會(huì)獲得一些獎(jiǎng)勵(lì),而且每個(gè)行動(dòng)也意圖最大化長期效用。
因此,盡管監(jiān)督學(xué)習(xí)確切告訴了學(xué)習(xí)算法它應(yīng)該學(xué)習(xí)的用以輸出的內(nèi)容,但是,強(qiáng)化學(xué)習(xí)會(huì)過一段時(shí)間提供獎(jiǎng)勵(lì),作為一個(gè)好決定的副產(chǎn)品,不會(huì)直接告訴算法應(yīng)該選擇的正確決定。從一開始,這就是一個(gè)非常抽象的決策模型——數(shù)目有限的狀態(tài),并且有一組已知的行動(dòng),每種狀態(tài)下的獎(jiǎng)勵(lì)也是已知的。為了找到一組最優(yōu)行動(dòng),編寫出非常優(yōu)雅的方程會(huì)因此變得簡單,不過這很難用于解決真實(shí)問題——那些狀態(tài)持續(xù)或者很難界定獎(jiǎng)勵(lì)的問題。
強(qiáng)化學(xué)習(xí)
這就是神經(jīng)網(wǎng)絡(luò)流行起來的地方。機(jī)器學(xué)習(xí)大體上,特別是神經(jīng)網(wǎng)絡(luò),很善于處理混亂的連續(xù)性數(shù)據(jù) ,或者通過實(shí)例學(xué)習(xí)很難加以定義的函數(shù)。盡管分類是神經(jīng)網(wǎng)絡(luò)的飯碗,但是,神經(jīng)網(wǎng)絡(luò)足夠普適(general),能用來解決許多類型的問題——比如,Bernard Widrow和Ted Hoff的Adaline后續(xù)衍生技術(shù)被用于電路環(huán)境下的自適應(yīng)濾波器。
因此,BP研究復(fù)蘇之后,不久,人們就設(shè)計(jì)了利用神經(jīng)網(wǎng)絡(luò)進(jìn)行強(qiáng)化學(xué)習(xí)的辦法。早期例子之一就是解決一個(gè)簡單卻經(jīng)典的問題:平衡運(yùn)動(dòng)著的平臺(tái)上的棍子,各地控制課堂上學(xué)生熟知的倒立擺控制問題。
雙擺控制問題——單擺問題進(jìn)階版本,是一個(gè)經(jīng)典的控制和強(qiáng)化學(xué)習(xí)任務(wù)。
因?yàn)橛凶赃m應(yīng)濾波,這項(xiàng)研究就和電子工程領(lǐng)域密切相關(guān),這一領(lǐng)域中,在神經(jīng)網(wǎng)絡(luò)出現(xiàn)之前的幾十年當(dāng)中,控制論已經(jīng)成為一個(gè)主要的子領(lǐng)域。雖然該領(lǐng)域已經(jīng)設(shè)計(jì)了很多通過直接分析解決問題的辦法,也有一種通過學(xué)習(xí)解決更加復(fù)雜狀態(tài)的辦法,事實(shí)證明這一辦法有用——1990年,「Identification and control of dynamical systems using neural networks」的7000次高被引就是證明。或許可以斷定,另有一個(gè)獨(dú)立于機(jī)器學(xué)習(xí)領(lǐng)域,其中,神經(jīng)網(wǎng)絡(luò)就是有用的機(jī)器人學(xué)。用于機(jī)器人學(xué)的早期神經(jīng)網(wǎng)絡(luò)例子之一就是來自CMU的NavLab,1989年的「Alvinn: An autonomous land vehicle in a neural network」:
1. “NavLab 1984 - 1994”
正如論文所討論的,這一系統(tǒng)中的神經(jīng)網(wǎng)絡(luò)通過普通的監(jiān)督學(xué)習(xí)學(xué)會(huì)使用傳感器以及人類駕駛時(shí)記錄下的駕駛數(shù)據(jù)來控制車輛。也有研究教會(huì)機(jī)器人專門使用強(qiáng)化學(xué)習(xí),正如1993年博士論文「Reinforcement learning for robots using neural networks」所示例的。論文表明,機(jī)器人能學(xué)會(huì)一些動(dòng)作,比如,沿著墻壁行走,或者在合理時(shí)間范圍內(nèi)通過門,考慮到之前倒立擺工作所需的長得不切實(shí)際的訓(xùn)練時(shí)間,這真是件好事。
這些發(fā)生在其他領(lǐng)域中的運(yùn)用當(dāng)然很酷,但是,當(dāng)然多數(shù)強(qiáng)化學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)的研究發(fā)生在人工智能和機(jī)器學(xué)習(xí)范圍內(nèi)。而且,我們也在這一范圍內(nèi)取得了強(qiáng)化學(xué)習(xí)史上最重要的成績之一:一個(gè)學(xué)習(xí)并成為西洋雙陸棋世界級(jí)玩家的神經(jīng)網(wǎng)絡(luò)。研究人員用標(biāo)準(zhǔn)強(qiáng)化學(xué)習(xí)算法來訓(xùn)練這個(gè)被稱為TD-Gammon的神經(jīng)網(wǎng)絡(luò),它也是第一個(gè)證明強(qiáng)化學(xué)習(xí)能夠在相對(duì)復(fù)雜任務(wù)中勝過人類的證據(jù)。而且,這是個(gè)特別的加強(qiáng)學(xué)習(xí)辦法,同樣的僅采用神經(jīng)網(wǎng)絡(luò)(沒有加強(qiáng)學(xué)習(xí))的系統(tǒng),表現(xiàn)沒這么好。
西洋雙陸棋游戲中,掌握專家級(jí)別水平的神經(jīng)網(wǎng)絡(luò)
但是,正如之前已經(jīng)看到,接下來也會(huì)在人工智能領(lǐng)域再次看到,研究進(jìn)入死胡同。下一個(gè)要用TD-Gammnon辦法解決的問題,Sebastian Thrun已經(jīng)在1995年「Learning To Play the Game of Chess」中研究過了,結(jié)果不是很好..盡管神經(jīng)網(wǎng)絡(luò)表現(xiàn)不俗,肯定比一個(gè)初學(xué)者要好,但和很久以前實(shí)現(xiàn)的標(biāo)準(zhǔn)計(jì)算機(jī)程序GNU-Chess相比,要遜色得多。人工智能長期面臨的另一個(gè)挑戰(zhàn)——圍棋,亦是如此。這樣說吧,TD-Gammon 有點(diǎn)作弊了——它學(xué)會(huì)了精確評(píng)估位置,因此,無需對(duì)接下來的好多步做任何搜索,只用選擇可以占據(jù)下一個(gè)最有利位置的招數(shù)。但是,在象棋游戲和圍棋游戲里,這些游戲?qū)θ斯ぶ悄芏允且粋€(gè)挑戰(zhàn),因?yàn)樾枰A(yù)估很多步,可能的行動(dòng)組合如此之巨。而且,就算算法更聰明,當(dāng)時(shí)的硬件又跟不上,Thrun稱「NeuroChess不怎么樣,因?yàn)樗汛蟛糠謺r(shí)間花在評(píng)估棋盤上了。計(jì)算大型神經(jīng)網(wǎng)絡(luò)函數(shù)耗時(shí)是評(píng)價(jià)優(yōu)化線性評(píng)估函數(shù)(an optimized linear evaluation function),比如GNU-Chess,的兩倍。」當(dāng)時(shí),計(jì)算機(jī)相對(duì)于神經(jīng)網(wǎng)絡(luò)需求的不足是一個(gè)很現(xiàn)實(shí)的問題,而且正如我們將要看到的,這不是唯一一個(gè)…
神經(jīng)網(wǎng)絡(luò)變得呆頭呆腦
盡管無監(jiān)督學(xué)習(xí)和加強(qiáng)學(xué)習(xí)很簡潔,監(jiān)督學(xué)習(xí)仍然是我最喜歡的神經(jīng)網(wǎng)絡(luò)應(yīng)用實(shí)例。誠然,學(xué)習(xí)數(shù)據(jù)的概率模型很酷,但是,通過反向傳播解決實(shí)際問題更容易讓人興奮。我們已經(jīng)看到了Yann Lecun成功解決了識(shí)別手寫的問題(這一技術(shù)繼續(xù)被全國用來掃描支票,而且后來的使用更多),另一項(xiàng)顯而易見且相當(dāng)重要的任務(wù)也在同時(shí)進(jìn)行著:理解人類的語音。
和識(shí)別手寫一樣,理解人類的語音很難,同一個(gè)詞根據(jù)表達(dá)的不同,意思也有很多變化。不過,還有額外的挑戰(zhàn):長序列的輸入。你看,如果是圖片,你就可以把字母從圖片中切出來,然后,神經(jīng)網(wǎng)絡(luò)就能告訴你這個(gè)字母是啥,輸入-輸出模式。但語言就沒那么容易了,把語音拆成字母完全不切實(shí)際,就算想要找出語音中的單詞也沒那么容易。而且你想啊,聽到語境中的單詞相比單個(gè)單詞,要好理解一點(diǎn)吧!盡管輸入-輸出模式用來逐個(gè)處理圖片相當(dāng)有效,這并不適用于很長的信息,比如音頻或文本。神經(jīng)網(wǎng)絡(luò)沒有記憶賴以處理一個(gè)輸入能影響后續(xù)的另一個(gè)輸入的情況,但這恰恰是我們?nèi)祟愄幚硪纛l或者文本的方式——輸入一串單詞或者聲音,而不是單獨(dú)輸入。要點(diǎn)是:要解決理解語音的問題,研究人員試圖修改神經(jīng)網(wǎng)絡(luò)來處理一系列輸入(就像語音中的那樣)而不是批量輸入(像圖片中那樣)。
Alexander Waibel等人(還有Hinton)提出的解決方法之一,在1989年的「 Phoneme recognition using time-delay neural networks」中得到了介紹。這些時(shí)延神經(jīng)網(wǎng)絡(luò)和通常意義上的神經(jīng)網(wǎng)絡(luò)非常類似,除了每個(gè)神經(jīng)元只處理一個(gè)輸入子集,而且為不同類型的輸入數(shù)據(jù)延遲配備了幾套權(quán)重。易言之,針對(duì)一系列音頻輸入,一個(gè)音頻的「移動(dòng)窗口」被輸入到神經(jīng)網(wǎng)絡(luò),而且隨著窗口移動(dòng),每個(gè)帶有幾套不同權(quán)重的神經(jīng)元就會(huì)根據(jù)這段音頻在窗口中位置,賦予相應(yīng)的權(quán)重,用這種方法來處理音頻。畫張圖就好理解了:
時(shí)延神經(jīng)網(wǎng)絡(luò)
從某種意義上來說,這和卷積神經(jīng)網(wǎng)絡(luò)差不多——每個(gè)單元一次只看一個(gè)輸入子集,對(duì)每個(gè)小子集進(jìn)行相同的運(yùn)算,而不是一次性計(jì)算整個(gè)集合。不同之處在于,在卷積神經(jīng)網(wǎng)絡(luò)中不存在時(shí)間概念, 每個(gè)神經(jīng)元的輸入窗形成整個(gè)輸入圖像來計(jì)算出一個(gè)結(jié)果,而時(shí)延神經(jīng)網(wǎng)絡(luò)中有一系列的輸入和輸出。一個(gè)有趣的事實(shí):據(jù)Hinton說,時(shí)延神經(jīng)網(wǎng)絡(luò)的理念啟發(fā)了LeCun開發(fā)卷積神經(jīng)網(wǎng)絡(luò)。但是,好笑的是,積卷神經(jīng)網(wǎng)絡(luò)變得對(duì)圖像處理至關(guān)重要,而在語音識(shí)別方面,時(shí)延神經(jīng)網(wǎng)絡(luò)則敗北于另一種方法——遞歸神經(jīng)網(wǎng)絡(luò)(RNNs)。你看,目前為止討論過的所有神經(jīng)網(wǎng)絡(luò)都是前歸網(wǎng)絡(luò),這意味著某神經(jīng)元的輸出是下一層神經(jīng)元的輸入。但并不一定要這樣,沒有什么阻止我們勇敢的計(jì)算機(jī)科學(xué)家將最后一層的輸出變成第一層的輸入,或者將神經(jīng)元的輸出連接到神經(jīng)元自身。將神經(jīng)元回路接回神經(jīng)網(wǎng)絡(luò),賦予神經(jīng)網(wǎng)絡(luò)記憶就被優(yōu)雅地解決了。
遞歸神經(jīng)網(wǎng)絡(luò)圖。還記得之前的玻爾茲曼機(jī)嗎?大吃一驚吧!那些是遞歸性神經(jīng)網(wǎng)絡(luò)。
然而,這可沒有那么容易。注意這個(gè)問題——如果反向傳播需要依賴『正向傳播』將輸出層的錯(cuò)誤反饋回來,那么,如果第一層往回連接到輸出層,系統(tǒng)怎么工作?錯(cuò)誤會(huì)繼續(xù)傳到第一層再傳回到輸出層,在神經(jīng)網(wǎng)絡(luò)中循環(huán)往復(fù),無限次地。解決辦法是,通過多重群組獨(dú)立推導(dǎo),通過時(shí)間進(jìn)行反向傳播。基本來說,就是將每個(gè)通過神經(jīng)網(wǎng)絡(luò)的回路做為另一個(gè)神經(jīng)網(wǎng)絡(luò)的輸入,而且回路次數(shù)有限,通過這樣的辦法把遞歸神經(jīng)網(wǎng)絡(luò)鋪開。
通過時(shí)間概念反向傳播的直觀圖解。
這個(gè)很簡單的想法真的起作用了——訓(xùn)練遞歸神經(jīng)網(wǎng)絡(luò)是可能的。并且,有很多人探索出了RNN在語言識(shí)別領(lǐng)域的應(yīng)用。但是,你可能也聽說過其中的波折:這一方法效果并不是很好。為了找出原因,讓我們來認(rèn)識(shí)另一位深度學(xué)習(xí)的巨人:Yoshua Bengion。大約在1986年,他就開始進(jìn)行語言識(shí)別方向的神經(jīng)網(wǎng)絡(luò)研究工作,也參與了許多使用ANN和RNN進(jìn)行語言識(shí)別的學(xué)術(shù)論文,最后進(jìn)入AT&T BELL實(shí)驗(yàn)室工作,Yann LeCun正好也在那里攻克CNN。 實(shí)際上,1995年,兩位共同發(fā)表了文章「Convolutional Networks for Images, Speech, and Time-Series」,這是他們第一次合作,后來他們也進(jìn)行了許多合作。但是,早在1993年,Bengio曾發(fā)表過「A Connectionist Approach to Speech Recognition」。其中,他對(duì)有效訓(xùn)練RNN的一般錯(cuò)誤進(jìn)行了歸納:
盡管在許多例子中,遞歸網(wǎng)絡(luò)能勝過靜態(tài)網(wǎng)絡(luò),但是,優(yōu)化訓(xùn)練起來也更有難度。我們的實(shí)驗(yàn)傾向于顯示(遞歸神經(jīng)網(wǎng)絡(luò))的參數(shù)調(diào)整往往收斂在亞優(yōu)化的解里面,(這種解)只考慮了短效應(yīng)影響因子而不計(jì)長效影響因子。例如,在所述實(shí)驗(yàn)中我們發(fā)現(xiàn),RNN根本捕獲不到單音素受到的簡單時(shí)間約束…雖然這是一個(gè)消極的結(jié)果,但是,更好地理解這一問題可以幫助設(shè)計(jì)替代系統(tǒng)來訓(xùn)練神經(jīng)網(wǎng)絡(luò),讓它學(xué)會(huì)通過長效影響因子,將輸出序列映射到輸入序列(map input sequences to output sequences with long term dependencies ),比如,為了學(xué)習(xí)有限狀態(tài)機(jī),語法,以及其他語言相關(guān)的任務(wù)。既然基于梯度的方法顯然不足以解決這類問題,我們要考慮其他最優(yōu)辦法,得出可以接受的結(jié)論,即使當(dāng)判別函數(shù)(criterion function)并不平滑時(shí)。
新的冬日黎明
因此,有一個(gè)問題。一個(gè)大問題。而且,基本而言,這個(gè)問題就是近來的一個(gè)巨大成就:反向傳播。卷積神經(jīng)網(wǎng)絡(luò)在這里起到了非常重要的作用,因?yàn)榉聪騻鞑ピ谟兄芏喾謱拥囊话闵窠?jīng)網(wǎng)絡(luò)中表現(xiàn)并不好。然而,深度學(xué)習(xí)的一個(gè)關(guān)鍵就是——很多分層,現(xiàn)在的系統(tǒng)大概有20左右的分層。但是,二十世紀(jì)八十年代后期,人們就發(fā)現(xiàn),用反向傳播來訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)效果并不盡如人意,尤其是不如對(duì)較少層數(shù)的網(wǎng)絡(luò)訓(xùn)練的結(jié)果。原因就是反向傳播依賴于將輸出層的錯(cuò)誤找到并且連續(xù)地將錯(cuò)誤原因歸類到之前的各個(gè)分層。然而,在如此大量的層次下,這種數(shù)學(xué)基礎(chǔ)的歸咎方法最終產(chǎn)生了不是極大就是極小的結(jié)果,被稱為『梯度消失或爆炸的問題』,Jurgen Schmidhuber——另一位深度學(xué)習(xí)的權(quán)威,給出了更正式也更深刻的歸納:
一篇學(xué)術(shù)論文(發(fā)表于1991年,作者Hochreiter)曾經(jīng)對(duì)深度學(xué)習(xí)研究給予了里程碑式的描述。文中第五、第六部分提到:二十世紀(jì)九十年代晚期,有些實(shí)驗(yàn)表明,前饋或遞歸深度神經(jīng)網(wǎng)絡(luò)是很難用反向傳播法進(jìn)行訓(xùn)練的(見5.5)。Horchreiter在研究中指出了導(dǎo)致問題的一個(gè)主要原因:傳統(tǒng)的深度神經(jīng)網(wǎng)絡(luò)遭遇了梯度消失或爆炸問題。在標(biāo)準(zhǔn)激活狀態(tài)下(見1),累積的反向傳播錯(cuò)誤信號(hào)不是迅速收縮,就是超出界限。實(shí)際上,他們隨著層數(shù)或CAP深度的增加,以幾何數(shù)衰減或爆炸(使得對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行有效訓(xùn)練幾乎是不可能的事)。
通過時(shí)間順序扁平化BP路徑本質(zhì)上跟具有許多層的神經(jīng)網(wǎng)絡(luò)一樣,所以,用反向傳播來訓(xùn)練遞歸神經(jīng)網(wǎng)絡(luò)是比較困難的。由Schmidhuber指導(dǎo)的Sepp Hochreiter及Yoshua Bengio都寫過文章指出,由于反向傳播的限制,學(xué)習(xí)長時(shí)間的信息是行不通的。分析問題以后其實(shí)是有解決辦法的,Schmidhuber 及 Hochreiter在1997年引進(jìn)了一個(gè)十分重要的概念,這最終解決了如何訓(xùn)練遞歸神經(jīng)網(wǎng)絡(luò)的問題,這就是長短期記憶(Long Short Term Memory, LSTM)。簡言之,卷積神經(jīng)網(wǎng)絡(luò)及長短期記憶的突破最終只為正常的神經(jīng)網(wǎng)絡(luò)模型帶來了一些小改動(dòng):
LSTM的基本原理十分簡單。當(dāng)中有一些單位被稱為恒常誤差木馬(Constant Error Carousels, CECs)。每個(gè)CEC使用一個(gè)激活函數(shù) f,它是一個(gè)恒常函數(shù),並有一個(gè)與其自身的連接,其固定權(quán)重為1.0。由於 f 的恒常導(dǎo)數(shù)為1.0,通過CEC的誤差反向傳播將不會(huì)消失或爆炸(5.9節(jié)),而是保持原狀(除非它們從CEC「流出」到其他一些地方,典型的是「流到」神經(jīng)網(wǎng)絡(luò)的自適應(yīng)部分)。CEC被連接到許多非線性自適應(yīng)單元上(有一些單元具有乘法的激活函數(shù)),因此需要學(xué)習(xí)非線性行為。單元的權(quán)重改變經(jīng)常得益于誤差信號(hào)在時(shí)間里通過CECs往后傳播。為什么LSTM網(wǎng)絡(luò)可以學(xué)習(xí)探索發(fā)生在幾千個(gè)離散時(shí)間步驟前的事件的重要性,而之前的遞歸神經(jīng)網(wǎng)絡(luò)對(duì)于很短的時(shí)間步驟就已經(jīng)失敗了呢?CEC是最主要的原因。
但這對(duì)于解決更大的知覺問題,即神經(jīng)網(wǎng)絡(luò)比較粗糙、沒有很好的表現(xiàn)這一問題是沒有太大幫助的。用它們來工作是十分麻煩的——電腦不夠快、算法不夠聰明,人們不開心。所以在九十年代左右,對(duì)于神經(jīng)網(wǎng)絡(luò)一個(gè)新的AI寒冬開始來臨——社會(huì)對(duì)它們?cè)俅问バ判摹R粋€(gè)新的方法,被稱為支持向量機(jī)(Support Vector Machines),得到發(fā)展并且漸漸被發(fā)現(xiàn)是優(yōu)于先前棘手的神經(jīng)網(wǎng)絡(luò)。簡單的說,支持向量機(jī)就是對(duì)一個(gè)相當(dāng)于兩層的神經(jīng)網(wǎng)絡(luò)進(jìn)行數(shù)學(xué)上的最優(yōu)訓(xùn)練。事實(shí)上,在1995年,LeCun的一篇論文,「 Comparison of Learning Algorithms For Handwritten Digit Recognition」,就已經(jīng)討論了這個(gè)新的方法比先前最好的神經(jīng)網(wǎng)絡(luò)工作得更好,最起碼也表現(xiàn)一樣。
支持向量機(jī)分類器具有非常棒的準(zhǔn)確率,這是最顯著的優(yōu)點(diǎn),因?yàn)榕c其他高質(zhì)量的分類器比,它對(duì)問題不包含有先驗(yàn)的知識(shí)。事實(shí)上,如果一個(gè)固定的映射被安排到圖像的像素上,這個(gè)分類器同樣會(huì)有良好的表現(xiàn)。比起卷積網(wǎng)絡(luò),它依然很緩慢,并占用大量內(nèi)存。但由于技術(shù)仍較新,改善是可以預(yù)期的。
另外一些新的方法,特別是隨機(jī)森林(Random Forests),也被證明十分有效,并有強(qiáng)大的數(shù)學(xué)理論作為后盾。因此,盡管遞歸神經(jīng)網(wǎng)絡(luò)始終有不俗的表現(xiàn),但對(duì)于神經(jīng)網(wǎng)絡(luò)的熱情逐步減退,機(jī)器學(xué)習(xí)社區(qū)再次否認(rèn)了它們。寒冬再次降臨。
深度學(xué)習(xí)的密謀
當(dāng)你希望有一場革命的時(shí)候,那么,從密謀開始吧。隨著支持向量機(jī)的上升和反向傳播的失敗,對(duì)于神經(jīng)網(wǎng)絡(luò)研究來說,上世紀(jì)早期是一段黑暗的時(shí)間。Lecun與Hinton各自提到過,那時(shí)他們以及他們學(xué)生的論文被拒成了家常便飯,因?yàn)檎撐闹黝}是神經(jīng)網(wǎng)絡(luò)。上面的引文可能夸張了——當(dāng)然機(jī)器學(xué)習(xí)與AI的研究仍然十分活躍,其他人,例如Juergen Schmidhuber也正在研究神經(jīng)網(wǎng)絡(luò)——但這段時(shí)間的引用次數(shù)也清楚表明興奮期已經(jīng)平緩下來,盡管還沒有完全消失。在研究領(lǐng)域之外,他們找到了一個(gè)強(qiáng)有力的同盟:加拿大政府。CIFAR的資助鼓勵(lì)還沒有直接應(yīng)用的基礎(chǔ)研究,這項(xiàng)資助首先鼓勵(lì)Hinton于1987年搬到加拿大,然后一直資助他的研究直到九十年代中期。…Hinton 沒有放棄并改變他的方向,而是繼續(xù)研究神經(jīng)網(wǎng)絡(luò),并努力從CIFAR那里獲得更多資助,正如這篇例文(http://www.thestar.com/news/world/2015/04/17/how-a-toronto-professors-research-revolutionized-artificial-intelligence.html)清楚道明的:
「但是,在2004年,Hinton要求領(lǐng)導(dǎo)一項(xiàng)新的有關(guān)神經(jīng)計(jì)算的項(xiàng)目。主流機(jī)器學(xué)習(xí)社區(qū)對(duì)神經(jīng)網(wǎng)絡(luò)興趣寡然。」
「那是最不可能的時(shí)候」Bengio是蒙特利爾大學(xué)的教授,也是去年重新上馬的CIFAR項(xiàng)目聯(lián)合主管,「其他每個(gè)人都在做著不同的事。莫名其妙地,Geoff說服了他們。」
「我們應(yīng)該為了他們的那場豪賭大力贊許CIFAR。」
CIFAR「對(duì)于深度學(xué)習(xí)的社區(qū)形成有著巨大的影響。」LeCun補(bǔ)充道,他是CIFAR項(xiàng)目的另一個(gè)聯(lián)合主管。「我們像是廣大機(jī)器學(xué)習(xí)社區(qū)的棄兒:無法發(fā)表任何文章。這個(gè)項(xiàng)目給了我們交流思想的天地。」
資助不算豐厚,但足夠讓研究員小組繼續(xù)下去。Hinton和這個(gè)小組孕育了一場密謀:用「深度學(xué)習(xí)」來「重新命名」讓人聞之色變的神經(jīng)網(wǎng)絡(luò)領(lǐng)域。接下來,每位研究人員肯定都?jí)粝脒^的事情真的發(fā)生了:2006年,Hinton、Simon Osindero與Yee-Whye Teh發(fā)表了一篇論文,這被視為一次重要突破,足以重燃人們對(duì)神經(jīng)網(wǎng)絡(luò)的興趣:A fast learning algorithm for deep belief nets(論文參見:https://www.cs.toronto.edu/~hinton/absps/fastnc.pdf)。
正如我們將要看到的,盡管這個(gè)想法所包含的東西都已經(jīng)很古老了,「深度學(xué)習(xí)」的運(yùn)動(dòng)完全可以說是由這篇文章所開始。但是比起名稱,更重要的是如果權(quán)重能夠以一種更靈活而非隨機(jī)的方式進(jìn)行初始化,有著多層的神經(jīng)網(wǎng)絡(luò)就可以得以更好地訓(xùn)練。
「歷史上的第一次,神經(jīng)網(wǎng)絡(luò)沒有好處且不可訓(xùn)練的信念被克服了,并且這是個(gè)非常強(qiáng)烈的信念。我的一個(gè)朋友在ICML(機(jī)器學(xué)習(xí)國際會(huì)議)發(fā)表了一篇文章,而就在這不久之前,選稿編輯還說過ICML不應(yīng)該接受這種文章,因?yàn)樗顷P(guān)于神經(jīng)網(wǎng)絡(luò),并不適合ICML。實(shí)際上如果你看一下去年的ICML,沒有一篇文章的標(biāo)題有『神經(jīng)網(wǎng)絡(luò)』四個(gè)字,因此ICML不應(yīng)該接受神經(jīng)網(wǎng)絡(luò)的文章。那還僅僅只是幾年前。IEEE期刊真的有『不接收你的文章』的官方準(zhǔn)則。所以,這種信念其實(shí)非常強(qiáng)烈。」
受限的玻爾茲曼機(jī)器
那么什么叫做初始化權(quán)重的靈活方法呢?實(shí)際上,這個(gè)主意基本就是利用非監(jiān)督式訓(xùn)練方式去一個(gè)一個(gè)訓(xùn)練神經(jīng)層,比起一開始隨機(jī)分配值的方法要更好些,之后以監(jiān)督式學(xué)習(xí)作為結(jié)束。每一層都以受限波爾茲曼機(jī)器(RBM)開始,就像上圖所顯示的隱藏單元和可見單元之間并沒有連接的玻爾茲曼機(jī)器(如同亥姆霍茲機(jī)器),并以非監(jiān)督模式進(jìn)行數(shù)據(jù)生成模式的訓(xùn)練。事實(shí)證明這種形式的玻爾茲曼機(jī)器能夠有效采用2002年Hinton引進(jìn)的方式「最小化對(duì)比發(fā)散專家訓(xùn)練產(chǎn)品(Training Products of Experts by Minimizing Contrastive Divergence)」進(jìn)行訓(xùn)練。
基本上,除去單元生成訓(xùn)練數(shù)據(jù)的可能,這個(gè)算法最大化了某些東西,保證更優(yōu)擬合,事實(shí)證明它做的很好。因此,利用這個(gè)方法,這個(gè)算法如以下:
利用對(duì)比發(fā)散訓(xùn)練數(shù)據(jù)訓(xùn)練RBM。這是信念網(wǎng)絡(luò)(belief net)的第一層。
生成訓(xùn)練后RBM數(shù)據(jù)的隱藏值,模擬這些隱藏值訓(xùn)練另一個(gè)RBM,這是第二層——將之「堆棧」在第一層之上,僅在一個(gè)方向上保持權(quán)重直至形成一個(gè)信念網(wǎng)絡(luò)。
根據(jù)信念網(wǎng)絡(luò)需求在多層基礎(chǔ)上重復(fù)步驟2。
如果需要進(jìn)行分類,就添加一套隱藏單元,對(duì)應(yīng)分類標(biāo)志,并改變喚醒-休眠算法「微調(diào)」權(quán)重。這樣非監(jiān)督式與監(jiān)督式的組合也經(jīng)常叫做半監(jiān)督式學(xué)習(xí)。
Hinton引入的層式預(yù)訓(xùn)練
這篇論文展示了深度信念網(wǎng)絡(luò)(DBNs)對(duì)于標(biāo)準(zhǔn)化MNIST字符識(shí)別數(shù)據(jù)庫有著完美的表現(xiàn),超越了僅有幾層的普通神經(jīng)網(wǎng)絡(luò)。Yoshua Bengio等在這項(xiàng)工作后于2007年提出了「深層網(wǎng)絡(luò)冗余式逐層訓(xùn)練( “Greedy Layer-Wise Training of Deep Networks)」,其中他們表達(dá)了一個(gè)強(qiáng)有力的論點(diǎn),深度機(jī)器學(xué)習(xí)方法(也就是有著多重處理步驟的方法,或者有著數(shù)據(jù)等級(jí)排列特征顯示)在復(fù)雜問題上比淺顯方法更加有效(雙層ANNs或向量支持機(jī)器)。
關(guān)于非監(jiān)督式預(yù)訓(xùn)練的另一種看法,利用自動(dòng)代碼取代RBM。
他們還提出了為什么附加非監(jiān)督式預(yù)訓(xùn)練,并總結(jié)這不僅僅以更優(yōu)化的方式初始權(quán)重,而且更加重要的是導(dǎo)致了更有用的可學(xué)習(xí)數(shù)據(jù)顯示,讓算法可以有更加普遍化的模型。實(shí)際上,利用RBM并不是那么重要——普通神經(jīng)網(wǎng)絡(luò)層的非監(jiān)督式預(yù)訓(xùn)練利用簡單的自動(dòng)代碼層反向傳播證明了其有效性。同樣的,與此同時(shí),另一種叫做分散編碼的方法也表明,非監(jiān)督式特征學(xué)習(xí)對(duì)于改進(jìn)監(jiān)督式學(xué)習(xí)的性能非常有力。
因此,關(guān)鍵在于有著足夠多的顯示層,這樣優(yōu)良的高層數(shù)據(jù)顯示能夠被學(xué)習(xí)——與傳統(tǒng)的手動(dòng)設(shè)計(jì)一些特征提取步驟并以提取到的特征進(jìn)行機(jī)器學(xué)習(xí)方式完全不同。Hinton與Bengio的工作有著實(shí)踐上的證明,但是更重要的是,展示了深層神經(jīng)網(wǎng)絡(luò)并不能被訓(xùn)練好的假設(shè)是錯(cuò)誤的。LeCun已經(jīng)在整個(gè)九十年代證明了CNN,但是大部分研究團(tuán)體卻拒絕接受。Bengio與Yann LeCun一起,在「實(shí)現(xiàn)AI的算法(Scaling Algorithms Towards AI)」研究之上證明了他們自己:
「直至最近,許多人相信訓(xùn)練深層架構(gòu)是一個(gè)太過困難的優(yōu)化問題。然而,至少有兩個(gè)不同的方法對(duì)此都很有效:應(yīng)用于卷積神經(jīng)網(wǎng)絡(luò)的簡單梯度下降[LeCun et al., 1989, LeCunet al., 1998](適用于信號(hào)和圖像),以及近期的逐層非監(jiān)督式學(xué)習(xí)之后的梯度下降[Hinton et al., 2006, Bengio et al., 2007, Ranzato et al., 2006]。深層架構(gòu)的研究仍然處于雛形之中,更好的學(xué)習(xí)算法還有待發(fā)現(xiàn)。從更廣泛的觀點(diǎn)來看待以發(fā)現(xiàn)能夠引出AI的學(xué)習(xí)準(zhǔn)則為目標(biāo)這事已經(jīng)成為指導(dǎo)性觀念。我們希望能夠激發(fā)他人去尋找實(shí)現(xiàn)AI的機(jī)器學(xué)習(xí)方法。」
他們的確做到了。或者至少,他們開始了。盡管深度學(xué)習(xí)還沒有達(dá)到今天山呼海應(yīng)的效果,它已經(jīng)如冰面下的潛流,不容忽視地開始了涌動(dòng)。那個(gè)時(shí)候的成果還不那么引人注意——大部分論文中證明的表現(xiàn)都限于MNIST數(shù)據(jù)庫,一個(gè)經(jīng)典的機(jī)器學(xué)習(xí)任務(wù),成為了十年間算法的標(biāo)準(zhǔn)化基準(zhǔn)。Hinton在2006年發(fā)布的論文展現(xiàn)出驚人的錯(cuò)誤率,在測試集上僅有1.25%的錯(cuò)誤率,但SVMs已經(jīng)達(dá)到了僅1.4%的錯(cuò)誤率,甚至簡單的算法在個(gè)位數(shù)上也能達(dá)到較低的錯(cuò)誤率,正如在論文中所提到的,LeCun已經(jīng)在1998年利用CNNs表現(xiàn)出0.95%的錯(cuò)誤率。
因此,在MNIST上做得很好并不是什么大事。意識(shí)到這一點(diǎn),并自信這就是深度學(xué)習(xí)踏上舞臺(tái)的時(shí)刻的Hinton與他的兩個(gè)研究生,Abdel-rahman Mohamed和George Dahl,展現(xiàn)了他們?cè)谝粋€(gè)更具有挑戰(zhàn)性的任務(wù)上的努力:語音識(shí)別( Speech Recognition)。
利用DBN,這兩個(gè)學(xué)生與Hinton做到了一件事,那就是改善了十年間都沒有進(jìn)步的標(biāo)準(zhǔn)語音識(shí)別數(shù)據(jù)集。這是一個(gè)了不起的成就,但是現(xiàn)在回首來看,那只是暗示著即將到來的未來——簡而言之,就是打破更多的記錄。
蠻力的重要性
上面所描述的算法對(duì)于深度學(xué)習(xí)的出現(xiàn)有著不容置疑的重要性,但是自上世紀(jì)九十年代開始,也有著其他重要組成部分陸續(xù)出現(xiàn):純粹的計(jì)算速度。隨著摩爾定律,計(jì)算機(jī)比起九十年代快了數(shù)十倍,讓大型數(shù)據(jù)集和多層的學(xué)習(xí)更加易于處理。但是甚至這也不夠——CPU開始抵達(dá)速度增長的上限,計(jì)算機(jī)能力開始主要通過數(shù)個(gè)CPU并行計(jì)算增長。為了學(xué)習(xí)深度模型中常有的數(shù)百萬個(gè)權(quán)重值,脆弱的CPU并行限制需要被拋棄,并被具有大型并行計(jì)算能力的GPUs所代替。意識(shí)到這一點(diǎn)也是Abdel-rahman Mohamed,George Dahl與Geoff Hinton做到打破語音識(shí)別性能記錄的部分原因:
「由Hinton的深度神經(jīng)網(wǎng)絡(luò)課堂之一所激發(fā),Mohamed開始將它們應(yīng)用于語音——但是深度神經(jīng)網(wǎng)絡(luò)需要巨大的計(jì)算能力,傳統(tǒng)計(jì)算機(jī)顯然達(dá)不到——因此Hinton與Mohamed招募了Dahl。Dahl是Hinton實(shí)驗(yàn)室的學(xué)生,他發(fā)現(xiàn)了如何利用相同的高端顯卡(讓栩栩如生的計(jì)算機(jī)游戲能夠顯示在私人計(jì)算機(jī)上)有效訓(xùn)練并模擬神經(jīng)網(wǎng)絡(luò)。」
「他們用相同的方法去解決時(shí)長過短的語音中片段的音素識(shí)別問題,」Hinton說道,「對(duì)比于之前標(biāo)準(zhǔn)化三小時(shí)基準(zhǔn)的方法,他們有了更好的成果。」
在這個(gè)案例中利用GPU而不是CPU到底能變得有多快很難說清楚,但是同年《Large-scale Deep Unsupervised Learning using Graphics Processors》這篇論文給出了一個(gè)數(shù)字:70倍。是的,70倍,這使得數(shù)以周記的工作可以被壓縮到幾天就完成,甚至是一天。之前研發(fā)了分散式代碼的作者中包括高產(chǎn)的機(jī)器學(xué)習(xí)研究者吳恩達(dá),他逐漸意識(shí)到利用大量訓(xùn)練數(shù)據(jù)與快速計(jì)算的能力在之前被贊同學(xué)習(xí)算法演變愈烈的研究員們低估了。這個(gè)想法在2010年的《Deep Big Simple Neural Nets Excel on Handwritten Digit Recognition》(作者之一J. Schimidhuber正是遞歸LTSM網(wǎng)絡(luò)(recurrent LTSM networks)的投資者)中也得到了大力支持,展示了MNIST數(shù)據(jù)庫能夠達(dá)到令人驚嘆的0.35%錯(cuò)誤率,并且除去大型神經(jīng)網(wǎng)絡(luò)、輸入的多個(gè)變量、以及有效的反向傳播GPU實(shí)現(xiàn)以外沒有任何特殊的地方。這些想法已經(jīng)存在了數(shù)十年,因此盡管可以說算法的改進(jìn)并不那么重要,但是結(jié)果確實(shí)強(qiáng)烈表明大型訓(xùn)練數(shù)據(jù)集與快速腭化計(jì)算的蠻力方法是一個(gè)關(guān)鍵。
Dahl與Mohamed利用GPU打破記錄是一個(gè)早期且相對(duì)有限的成功,但是它足以激勵(lì)人們,并且對(duì)這兩人來說也為他們帶來了在微軟研究室實(shí)習(xí)的機(jī)會(huì)。在這里,他們可以享受到那時(shí)已經(jīng)出現(xiàn)的計(jì)算領(lǐng)域內(nèi)另一個(gè)趨勢所帶來的益處:大數(shù)據(jù)。這個(gè)詞語定義寬松,在機(jī)器學(xué)習(xí)的環(huán)境下則很容易理解——大量訓(xùn)練數(shù)據(jù)。大量的訓(xùn)練數(shù)據(jù)非常重要,因?yàn)闆]有它神經(jīng)網(wǎng)絡(luò)仍然不能做到很好——它們有些過擬合了(完美適用于訓(xùn)練數(shù)據(jù),但無法推廣到新的測試數(shù)據(jù))。這說得通——大型神經(jīng)網(wǎng)絡(luò)能夠計(jì)算的復(fù)雜度需要許多數(shù)據(jù)來使它們避免學(xué)習(xí)訓(xùn)練集中那些不重要的方面——這也是過去研究者面對(duì)的主要難題。因此現(xiàn)在,大型公司的計(jì)算與數(shù)據(jù)集合能力證明了其不可替代性。這兩個(gè)學(xué)生在三個(gè)月的實(shí)習(xí)期中輕易地證明了深度學(xué)習(xí)的能力,微軟研究室也自此成為了深度學(xué)習(xí)語音識(shí)別研究的前沿地帶。
微軟不是唯一一個(gè)意識(shí)到深度學(xué)習(xí)力量的大公司(盡管起初它很靈巧)。Navdeep Jaitly是Hinton的另一個(gè)學(xué)生,2011年曾在谷歌當(dāng)過暑假實(shí)習(xí)生。他致力于谷歌的語音識(shí)別項(xiàng)目,通過結(jié)合深度學(xué)習(xí)能夠讓他們現(xiàn)存的設(shè)備大大提高。修正后的方法不久就加強(qiáng)了安卓的語音識(shí)別技術(shù),替代了許多之前的解決方案。
除了博士實(shí)習(xí)生給大公司的產(chǎn)品帶來的深刻影響之外,這里最著名的是兩家公司都在用相同的方法——這方法對(duì)所有使用它的人都是開放的。實(shí)際上,微軟和谷歌的工作成果,以及IBM和Hinton實(shí)驗(yàn)室的工作成果,在2012 年發(fā)布了令人印象深刻的名為「深層神經(jīng)網(wǎng)絡(luò)語音識(shí)別的聲學(xué)建模:分享四個(gè)研究小組的觀點(diǎn)」的文章。
這四個(gè)研究小組——有三個(gè)是來自企業(yè),確定能從傷腦筋的深度學(xué)習(xí)這一新興技術(shù)專利中獲益,而大學(xué)研究小組推廣了技術(shù)——共同努力并將他們的成果發(fā)布給更廣泛的研究社區(qū)。如果有什么理想的場景讓行業(yè)接受研究中的觀念,似乎就是這一刻了。
這并不是說公司這么做是為了慈善。這是他們所有人探索如何把技術(shù)商業(yè)化的開始,其中最為突出的是谷歌。但是也許并非Hinton,而是吳恩達(dá)造成了這一切,他促使公司成為世界最大的商業(yè)化采用者和技術(shù)用戶者。在2011年,吳恩達(dá)在巡視公司時(shí)偶遇到了傳說中的谷歌人Jeff Dean,聊了一些他用谷歌的計(jì)算資源來訓(xùn)練神經(jīng)網(wǎng)絡(luò)所做的努力。
這使Dean著迷,于是與吳恩達(dá)一起創(chuàng)建了谷歌大腦(Google Brain)——努力構(gòu)建真正巨大的神經(jīng)網(wǎng)絡(luò)并且探索它們能做什么。這項(xiàng)工作引發(fā)了一個(gè)規(guī)模前所未有的無監(jiān)督式神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)——16000個(gè)CPU核,驅(qū)動(dòng)高達(dá)10億權(quán)重的學(xué)習(xí)(作為比較,Hinton在2006年突破性的DBN大約有100萬權(quán)重)。神經(jīng)網(wǎng)絡(luò)在YouTube視頻上被訓(xùn)練,完全無標(biāo)記,并且學(xué)著在這些視頻中去辨認(rèn)最平常的物體——而神經(jīng)網(wǎng)絡(luò)對(duì)于貓的發(fā)現(xiàn),引起了互聯(lián)網(wǎng)的集體歡樂。
谷歌最著名的神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)貓。這是輸入到一個(gè)神經(jīng)元中最佳的一張。
它很可愛,也很有用。正如他們常規(guī)發(fā)表的一篇論文中所報(bào)道的,由模型學(xué)習(xí)的特征能用來記錄標(biāo)準(zhǔn)的計(jì)算機(jī)視覺基準(zhǔn)的設(shè)置性能。
這樣一來,谷歌訓(xùn)練大規(guī)模的神經(jīng)網(wǎng)絡(luò)的內(nèi)部工具誕生了,自此他們僅需繼續(xù)發(fā)展它。深度學(xué)習(xí)研究的浪潮始于2006年,現(xiàn)在已經(jīng)確定進(jìn)入行業(yè)使用。
深度學(xué)習(xí)的上升
當(dāng)深度學(xué)習(xí)進(jìn)入行業(yè)使用時(shí),研究社區(qū)很難保持平靜。有效的利用GPU和計(jì)算能力的發(fā)現(xiàn)是如此重要,它讓人們檢查長久存疑的假設(shè)并且問一些也許很久之前被提及過的問題——也就是,反向傳播到底為何沒什么用呢?為什么舊的方法不起作用,而不是新的方法能奏效,這樣的問題觀點(diǎn)讓Xavier Glort 和 Yoshua Bengio在2010年寫了「理解訓(xùn)練深度前饋神經(jīng)網(wǎng)絡(luò)的難點(diǎn)」(Understanding the difficulty of training deep feedforward neural networks)一文。
在文中,他們討論了兩個(gè)有重大意義的發(fā)現(xiàn):
為神經(jīng)網(wǎng)絡(luò)中神經(jīng)元選取的特定非線性激活函數(shù),對(duì)性能有巨大影響,而默認(rèn)使用的函數(shù)不是最好的選擇。
相對(duì)于隨機(jī)選取權(quán)重,不考慮神經(jīng)層的權(quán)重就隨機(jī)選取權(quán)重的問題要大得多。以往消失的梯度問題重現(xiàn),根本上,由于反向傳播引入一系列乘法,不可避免地導(dǎo)致給前面的神經(jīng)層帶來細(xì)微的偏差。就是這樣,除非依據(jù)所在的神經(jīng)層不同分別選取不同的權(quán)重 ——否則很小的變化會(huì)引起結(jié)果巨大變化。
不同的激活函數(shù)。ReLU是**修正線性單元**
第二點(diǎn)的結(jié)論已經(jīng)很清楚了,但是第一點(diǎn)提出了這樣的問題:『然而,什么是最好的激活函數(shù)?』有三個(gè)不同的團(tuán)隊(duì)研究了這個(gè)問題:LeCun所在的團(tuán)隊(duì),他們研究的是「針對(duì)對(duì)象識(shí)別最好的多級(jí)結(jié)構(gòu)是什么?」;另一組是Hinton所在的團(tuán)隊(duì),研究「修正的線性單元改善受限玻爾茲曼機(jī)器」;第三組是Bengio所在的團(tuán)隊(duì)——「深度稀缺的修正神經(jīng)網(wǎng)絡(luò)」。他們都發(fā)現(xiàn)驚人的相似結(jié)論:近乎不可微的、十分簡單的函數(shù)f(x)=max(0,x)似乎是最好的。令人吃驚的是,這個(gè)函數(shù)有點(diǎn)古怪——它不是嚴(yán)格可微的,確切地說,在零點(diǎn)不可微,因此 就 數(shù)學(xué)而言論文看起來很糟糕。但是,清楚的是零點(diǎn)是很小的數(shù)學(xué)問題——更嚴(yán)重的問題是為什么這樣一個(gè)零點(diǎn)兩側(cè)導(dǎo)數(shù)都是常數(shù)的簡單函數(shù),這么好用。答案還未揭曉,但一些想法看起來已經(jīng)成型:
修正的激活導(dǎo)致了表征稀疏,這意味著在給定輸入時(shí),很多神經(jīng)元實(shí)際上最終需要輸出非零值。這些年的結(jié)論是,稀疏對(duì)深度學(xué)習(xí)十分有利,一方面是由于它用更具魯棒性的方式表征信息,另一方面由于它帶來極高的計(jì)算效率(如果大多數(shù)的神經(jīng)元在輸出零,實(shí)際上就可以忽略它們,計(jì)算也就更快)。順便提一句,計(jì)算神經(jīng)科學(xué)的研究者首次在大腦視覺系統(tǒng)中引入稀疏計(jì)算,比機(jī)器學(xué)習(xí)的研究早了10年。
相比指數(shù)函數(shù)或者三角函數(shù),簡單的函數(shù)及其導(dǎo)數(shù),使它能非常快地工作。當(dāng)使用GPU時(shí),這就不僅僅是一個(gè)很小的改善,而是十分重要,因?yàn)檫@能規(guī)模化神經(jīng)網(wǎng)絡(luò)以很好地完成極具挑戰(zhàn)的問題。
后來吳恩達(dá)聯(lián)合發(fā)表的「修正的非線性改善神經(jīng)網(wǎng)絡(luò)的語音模型 」(Rectifier Nonlinearities Improve Neural Network Acoustic Models)一文,也證明了ReLU導(dǎo)數(shù)為常數(shù)0或1對(duì)學(xué)習(xí)并無害處。實(shí)際上,它有助于避免梯度消失的問題,而這正是反向傳播的禍根。此外,除了生成更稀疏的表征,它還能生成更發(fā)散的表征——這樣就可以結(jié)合多個(gè)神經(jīng)元的多重值,而不局限于從單個(gè)神經(jīng)元中獲取有意義的結(jié)論。
目前,結(jié)合2006年以來的這些發(fā)現(xiàn),很清楚的是非監(jiān)督預(yù)訓(xùn)練對(duì)深度學(xué)習(xí)來說不是必要的。雖然,它的確有幫助,但是在某些情況下也表明,純粹的監(jiān)督學(xué)習(xí)(有正確的初始權(quán)重規(guī)模和激活函數(shù))能超越含非監(jiān)督訓(xùn)練的學(xué)習(xí)方式。那么,到底為什么基于反向傳播的純監(jiān)督學(xué)習(xí)在過去表現(xiàn)不佳?Geoffrey Hinton總結(jié)了目前發(fā)現(xiàn)的四個(gè)方面問題:
帶標(biāo)簽的數(shù)據(jù)集很小,只有現(xiàn)在的千分之一.
計(jì)算性能很慢,只有現(xiàn)在的百萬分之一.
權(quán)重的初始化方式笨拙.
使用了錯(cuò)誤的非線性模型。
好了,就到這里了。深度學(xué)習(xí)。數(shù)十年研究的積累,總結(jié)成一個(gè)公式就是:
深度學(xué)習(xí)=許多訓(xùn)練數(shù)據(jù)+并行計(jì)算+規(guī)模化、靈巧的的算法
我希望我是第一個(gè)提出這個(gè)賞心悅目的方程的,但是看起來有人走在我前面了。
更不要說這里就是希望弄清楚這點(diǎn)。差遠(yuǎn)了!被想通的東西剛好是相反的:人們的直覺經(jīng)常出錯(cuò),尤其是一些看似沒有問題的決定及假設(shè)通常都是沒有根據(jù)的。問簡單的問題,嘗試簡單的東西——這些對(duì)于改善最新的技術(shù)有很大的幫助。其實(shí)這一直都在發(fā)生,我們看到更多的想法及方法在深度學(xué)習(xí)領(lǐng)域中被發(fā)掘、被分享。例如 G. E. Hinton等的「透過預(yù)防特征檢測器的互相適應(yīng)改善神經(jīng)網(wǎng)絡(luò)」( Improving neural networks by preventing co-adaptation of feature detectors)。
其構(gòu)思很簡單:為了避免過度擬合,我們可以隨機(jī)假裝在訓(xùn)練當(dāng)中有些神經(jīng)元并不在那兒。想法雖然非常簡單——被稱為丟棄法(dropout)——但對(duì)于實(shí)施非常強(qiáng)大的集成學(xué)習(xí)方法又非常有效,這意味著我們可以在訓(xùn)練數(shù)據(jù)中實(shí)行多種不同的學(xué)習(xí)方法。隨機(jī)森林——一種在當(dāng)今機(jī)器學(xué)習(xí)領(lǐng)域中占主導(dǎo)地位的方法——主要就是得益于集成學(xué)習(xí)而非常有效。訓(xùn)練多個(gè)不同的神經(jīng)網(wǎng)絡(luò)是可能的,但它在計(jì)算上過于昂貴,而這個(gè)簡單的想法在本質(zhì)上也可取得相同的結(jié)果,而且性能也可有顯著提高。
然而,自2006年以來的所有這些研究發(fā)現(xiàn)都不是促使計(jì)算機(jī)視覺及其他研究機(jī)構(gòu)再次尊重神經(jīng)網(wǎng)絡(luò)的原因。這個(gè)原因遠(yuǎn)沒有看來的高尚:在現(xiàn)代競爭的基準(zhǔn)上完全摧毀其他非深度學(xué)習(xí)的方法。Geoffrey Hinton召集與他共同寫丟棄法的兩位作家,Alex Krizhevsky 與 Ilya Sutskever,將他們所發(fā)現(xiàn)的想法在ILSVRC-2012計(jì)算機(jī)視覺比賽中創(chuàng)建了一個(gè)條目。
對(duì)于我來說,了解他們的工作是非常驚人的,他們的「使用深度卷積神經(jīng)網(wǎng)絡(luò)在ImageNet上分類」(ImageNet Classification with deep convolutional neural networks)一文其實(shí)就是將一些很舊的概念(例如卷積神經(jīng)網(wǎng)絡(luò)的池化及卷積層,輸入數(shù)據(jù)的變化)與一些新的關(guān)鍵觀點(diǎn)(例如十分高性能的GPU、ReLU神經(jīng)元、丟棄法等)重新組合,而這點(diǎn),正是這一點(diǎn),就是現(xiàn)代深度網(wǎng)絡(luò)的所有深意了。但他們?nèi)绾巫龅降哪兀?/p>
遠(yuǎn)比下一個(gè)最近的條目好:它們的誤差率是15.3%,第二個(gè)最近的是26.2%。在這點(diǎn)上——第一個(gè)及唯一一個(gè)在比賽中的CNN條目——對(duì)于CNNs及深度學(xué)習(xí)整體來說是一個(gè)無可爭議的標(biāo)志,對(duì)于計(jì)算機(jī)視覺,它應(yīng)該被認(rèn)真對(duì)待。如今,幾乎所有的比賽條目都是CNNs——這就是Yann LeCun自1989年以來在上面花費(fèi)大量心血的神經(jīng)網(wǎng)絡(luò)模型。還記得上世紀(jì)90年代由Sepp Hochreiter 及 Jürgen Schmidhuber為了解決反向傳播問題而開發(fā)的LSTM循環(huán)神經(jīng)網(wǎng)絡(luò)嗎?這些在現(xiàn)在也是最新的連續(xù)任務(wù)比如語音處理的處理方法。
這就是轉(zhuǎn)折點(diǎn)。一波對(duì)于其可能發(fā)展的狂歡在其無可否認(rèn)的成績中達(dá)到了高潮,這遠(yuǎn)遠(yuǎn)超過了其他已知方法所能處理的。這就是我們?cè)诘谝徊糠珠_頭所描寫的山呼海應(yīng)比喻的起點(diǎn),而且它到如今還一直在增長,強(qiáng)化。深度學(xué)習(xí)就在這兒,我們看不到寒冬。
我們列舉了對(duì)深度學(xué)習(xí)的發(fā)展做出重要貢獻(xiàn)的人物。我相信我不需要再指出自從2012年以來其飛漲的趨勢了。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4781瀏覽量
101181 -
計(jì)算機(jī)
+關(guān)注
關(guān)注
19文章
7543瀏覽量
88652 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5516瀏覽量
121562
原文標(biāo)題:神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)簡史
文章出處:【微信號(hào):eetop-1,微信公眾號(hào):EETOP】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論