導讀:這是《神經網路和深度學習簡史》第一部分。這一部分,我們會介紹1958年感知機神經網路的誕生,70年代人工智慧寒冬以及1986年BP演算法讓神經網路再度流行起來。
序言:深度學習掀起海嘯
如今,深度學習浪潮拍打計算機語言的海岸已有好幾年,但是,2015年似乎才是這場海嘯全力衝擊自然語言處理(NLP)會議的一年。——Dr. Christopher D. Manning, Dec 2015
整個研究領域的成熟方法已經迅速被新發現超越,這句話聽起來有些誇大其詞,就像是說它被「海嘯」襲擊了一樣。但是,這種災難性的形容的確可以用來描述深度學習在過去幾年中的異軍突起——顯著改善人們對解決人工智慧最難問題方法的駕馭能力,吸引工業巨人(比如谷歌等)的大量投資,研究論文的指數式增長(以及機器學習的研究生生源上升)。在聽了數節機器學習課堂,甚至在本科研究中使用它以後,我不禁好奇:這個新的「深度學習」會不會是一個幻想,抑或上世紀80年代已經研發出來的「人工智慧神經網路」擴大版?讓我告訴你,說來話長——這不僅僅是一個有關神經網路的故事,也不僅僅是一個有關一系列研究突破的故事,這些突破讓深度學習變得比「大型神經網路」更加有趣,而是一個有關幾位不放棄的研究員如何熬過黑暗數十年,直至拯救神經網路,實現深度學習夢想的故事。
機器學習演算法的百年曆史
線性迴歸:首先簡單介紹一下機器學習是什麼。
從二維影象上取一些點,儘可能繪出一條擬合這些點的直線。你剛才做的就是從幾對輸入值(x)和輸出值(y)的例項中概括出一個一般函式,任何輸入值都會有一個對應的輸出值。這叫做線性迴歸,一個有著兩百年曆史從一些輸入輸出對組中推斷出一般函式的技巧。這就是它很棒的原因:很多函式難以給出明確的方程表達,但是,卻很容易在現實世界蒐集到輸入和輸出值例項——比如,將說出來的詞的音訊作為輸入,詞本身作為輸出的對映函式。
線性迴歸對於解決語音識別這個問題來說有點太無用,但是,它所做的基本上就是監督式機器學習:給定訓練樣本,「學習」一個函式,每一個樣本資料就是需要學習的函式的輸入輸出資料(無監督學習,稍後在再敘)。
尤其是,機器學習應該推匯出一個函式,它能夠很好地泛化到不在訓練集中的輸入值上,既然我們真的能將它運用到尚未有輸出的輸入中。例如,谷歌的語音識別技術由擁有大量訓練集的機器學習驅動,但是,它的訓練集也不可能大到包含你手機所有語音輸入。 泛化能力機制如此重要,以至於總會有一套測試資料組(更多的輸入值與輸出值樣本)這套資料組並不包括在訓練組當中。
通過觀察有多少個正確計算出輸入值所對應的輸出值的樣本,這套單獨資料組可以用來估測機器學習技術有效性。概括化的剋星是過度擬合——學習一個對於訓練集有效但是卻在測試資料組中表現很差的函式。既然機器學習研究者們需要用來比較方法有效性的手段,隨著時間的推移,標準訓練資料組以及測試組可被用來評估機器學習演算法。
好了,定義談得足夠多了。重點是——我們繪製線條的聯絡只是一個非常簡單的監督機器學習例子:要點在於訓練集(X為輸入,Y為輸出),線條是近似函式,用這條線來為任何沒有包含在訓練集資料裡的X值(輸入值)找到相應的Y值(輸出值)。別擔心,接下來的歷史就不會這麼幹巴巴了。讓我們繼續吧。
虛假承諾的荒唐
顯然這裡話題是神經網路,那我們前言裡為何要扯線性迴歸呢?呃, 事實上線性迴歸和機器學習一開始的方法構想,弗蘭克· 羅森布拉特(Frank Rosenblatt)的感知機, 有些許相似性。
心理學家羅森布拉特構想了感知機,它作為簡化的數學模型解釋大腦神經元如何工作:它取一組二進位制輸入值(附近的神經元),將每個輸入值乘以一個連續值權重(每個附近神經元的突觸強度),並設立一個閾值,如果這些加權輸入值的和超過這個閾值,就輸出1,否則輸出0(同理於神經元是否放電)。
對於感知機,絕大多數輸入值不是一些資料,就是別的感知機的輸出值。但有一個額外的細節:這些感知機有一個特殊的,輸入值為1的,「偏置」輸入,因為我們能補償加權和,它基本上確保了更多的函式在同樣的輸入值下是可計算的。
這一關於神經元的模型是建立在沃倫·麥卡洛克(Warren McCulloch)和沃爾特·皮茲(Walter Pitts)工作上的。他們曾表明,把二進位制輸入值加起來,並在和大於一個閾值時輸出1,否則輸出0的神經元模型,可以模擬基本的或/與/非邏輯函式。這在人工智慧的早期時代可不得了——當時的主流思想是,計算機能夠做正式的邏輯推理將本質上解決人工智慧問題。
另一個圖表,顯示出生物學上的靈感。啟用函式就是人們當前說的非線性函式,它作用於輸入值的加權和以產生人工神經元的輸出值——在羅森布拉特的感知機情況下,這個函式就是輸出一個閾值操作。
然而,麥卡洛克-皮茲模型缺乏一個對AI而言至關重要的學習機制。這就是感知機更出色的地方所在——羅森布拉特受到唐納德·赫布(Donald Hebb) 基礎性工作的啟發,想出一個讓這種人工神經元學習的辦法。赫布提出了一個出人意料並影響深遠的想法,稱知識和學習發生在大腦主要是通過神經元間突觸的形成與變化,簡要表述為赫布法則:
當細胞A的軸突足以接近以激發細胞B,並反覆持續地對細胞B放電,一些生長過程或代謝變化將發生在某一個或這兩個細胞內,以致A作為對B放電的細胞中的一個,效率增加。
感知機並沒有完全遵循這個想法,但通過調輸入值的權重,可以有一個非常簡單直觀的學習方案:給定一個有輸入輸出例項的訓練集,感知機應該「學習」一個函式:對每個例子,若感知機的輸出值比例項低太多,則增加它的權重,否則若設比例項高太多,則減少它的權重。更正式一點兒的該演算法如下:
從感知機有隨機的權重和一個訓練集開始。
對於訓練集中一個例項的輸入值,計算感知機的輸出值。
如若感知機的輸出值和例項中預設正確的輸出值不同:(1)若輸出值應該為0但實際為1,減少輸入值是1的例子的權重。(2)若輸出值應該為1但實際為0,增加輸入值是1的例子的權重。
對於訓練集中下一個例子做同樣的事,重複步驟2-4直到感知機不再出錯。
這個過程很簡單,產生了一個簡單的結果:一個輸入線性函式(加權和),正如線性迴歸被非線性啟用函式「壓扁」了一樣(對帶權重求和設定閾值的行為)。當函式的輸出值是一個有限集時(例如邏輯函式,它只有兩個輸出值True/1 和 False/0),給帶權重的和設定閾值是沒問題的,所以問題實際上不在於要對任何輸入資料集生成一個數值上連續的輸出(即迴歸類問題),而在於對輸入資料做好合適的標籤(分類問題)。
康奈爾航天實驗室的Mark I 感知機,第一臺感知機的硬體
羅森布拉特用定製硬體的方法實現了感知機的想法(在花哨的程式語言被廣泛使用之前),展示出它可以用來學習對20×20畫素輸入中的簡單形狀進行正確分類。
自此,機器學習問世了——建造了一臺可以從已知的輸入輸出對中得出近似函式的計算機。在這個例子中,它只學習了一個小玩具般的函式,但是從中不難想象出有用的應用,例如將人類亂糟糟的手寫字轉換為機機可讀的文字。
很重要的是,這種方法還可以用在多個輸出值的函式中,或具有多個類別的分類任務。這對一臺感知機來說是不可能完成的,因為它只有一個輸出,但是,多輸出函式能用位於同一層的多個感知機來學習,每個感知機接收到同一個輸入,但分別負責函式的不同輸出。
實際上,神經網路(準確的說應該是「人工神經網路(ANN,Artificial Neural Networks)」)就是多層感知機(今天感知機通常被稱為神經元)而已,只不過在這個階段,只有一層——輸出層。所以,神經網路的典型應用例子就是分辨手寫數字。
輸入是影象的畫素,有10個輸出神經元,每一個分別對應著10個可能的數字。在這個案例中,10個神經元中,只有1個輸出1,權值最高的和被看做是正確的輸出,而其他的則輸出0。
多層輸出的神經網路
也可以想象一個與感知機不同的人工神經網路。例如,閾值啟用函式並不是必要的; 1960年,Bernard Widrow和Tedd Hoff很快開始探索一種方法——採用適應性的「自適應(ADALINE)」神經元來輸出權值的輸入,這種神經元使用化學「 儲存電阻器」,並展示了這種「自適應線性神經元」能夠在電路中成為「 儲存電阻器」的一部分(儲存電阻器是帶有儲存的電阻)。
他們還展示了,不用閾值啟用函式,在數學上很美,因為神經元的學習機制是基於將錯誤最小化的微積分,而微積分我們都很熟悉了。
如果我們多思考一下 「自適應(ADALINE)」,就會有進一步的洞見:為大量輸入找到一組權重真的只是一種線性迴歸。再一次,就像用線性迴歸一樣,這也不足以解決諸如語音識別或計算機視覺這樣的人工智慧難題。
McCullough,Pitts和羅森布拉特真正感到興奮的是聯結主義(Connectionism)這個寬泛的想法:如此簡單計算機單元構成的網路,其功能會大很多而且可以解決人工智慧難題。而且羅森布拉特說的和(坦白說很可笑的)《紐約時報》這段引文的意思差不多:
海軍披露了一臺尚處初期的電子計算機,期待這臺電子計算機能行走,談話,看和寫,自己複製出自身存在意識...羅森布拉特博士,康奈爾航空實驗室的一位心理學家說,感知機能作為機械太空探險者被髮射到行星上。
這種談話無疑會惹惱人工領域的其他研究人員,其中有許多研究人員都在專注於這樣的研究方法,它們以帶有具體規則(這些規則遵循邏輯數學法則)的符號操作為基礎。
MIT人工智慧實驗室創始人Marvin Minsky和Seymour Paper就是對這一炒作持懷疑態度研究人員中的兩位,1969年,他們在一本開創性著作中表達了這種質疑,書中嚴謹分析了感知機的侷限性,書名很貼切,叫《感知機》。
他們分析中,最被廣為討論的內容就是對感知機限制的說明,例如,他們不能學習簡單的布林函式XOR,因為它不能進行線性分離。雖然此處歷史模糊,但是,人們普遍認為這本書對人工智慧步入第一個冬天起到了推波助瀾的作用——大肆炒作之後,人工智慧進入泡沫幻滅期,相關資助和出版都遭凍結。
感知機侷限性的視覺化。找到一個線性函式,輸入X,Y時可以正確地輸出+或-,就是在2D圖表上畫一條從+中分離出-的線;很顯然,就第三幅圖顯示的情況來看,這不可能
人工智慧冬天的復甦
因此,情況對神經網路不利。但是,為什麼?他們的想法畢竟是想將一連串簡單的數學神經元結合在一起,完成一些複雜任務,而不是使用單個神經元。換句話說,並不是只有一個輸出層,將一個輸入任意傳輸到多個神經元(所謂的隱藏層,因為他們的輸出會作為另一隱藏層或神經元輸出層的輸入)。只有輸出層的輸出是「可見」的——亦即神經網路的答案——但是,所有依靠隱藏層完成的間接計算可以處理複雜得多的問題,這是單層結構望塵莫及的。
有兩個隱藏層的神經網路
言簡意賅地說,多個隱藏層是件好事,原因在於隱藏層可以找到資料內在特點,後續層可以在這些特點(而不是嘈雜龐大的原始資料)基礎上進行操作。以圖片中的面部識別這一非常常見的神經網路任務為例,第一個隱藏層可以獲得圖片的原始畫素值,以及線、圓和橢圓等資訊。
接下來的層可以獲得這些線、圓和橢圓等的位置資訊,並且通過這些來定位人臉的位置——處理起來簡單多了!而且人們基本上也都明白這一點。
事實上,直到最近,機器學習技術都沒有普遍直接用於原始資料輸入,比如影象和音訊。相反,機器學習被用於經過特徵提取後的資料——也就是說,為了讓學習更簡單,機器學習被用在預處理的資料上,一些更加有用的特徵,比如角度,形狀早已被從中提取出來。
傳統的特徵的手工提取過程的視覺化
因此,注意到這一點很重要:Minsky和Paper關於感知機的分析不僅僅表明不可能用單個感知機來計算XOR,而且特別指出需要多層感知機——亦即現在所謂的多層神經網路——才可以完成這一任務,而且羅森布拉特的學習演算法對多層並不管用。那是一個真正的問題:之前針對感知機概括出的簡單學習規則並不是適用於多層結構。想知道原因?讓我們再來回顧一下單層結構感知機如何學習計算一些函式:
和函式輸出數量相等的感知機會以小的初始權值開始(僅為輸入函式的倍數)
選取訓練集中的一個例子作為輸入,計算感知機的輸出
對於每一個感知機,如果其計算結果和該例子的結果不匹配,調整初始權值
繼續採用訓練集中的下一個例子,重複過程2到4次,直到感知機不再犯錯。
這一規則並不適用多層結構的原因應該很直觀清楚了:選取訓練集中的例子進行訓練時,我們只能對最終的輸出層的輸出結果進行校正,但是,對於多層結構來說,我們該如何調整最終輸出層之前的層結構權值呢?
答案(儘管需要花時間來推導)又一次需要依賴古老的微積分:鏈式法則。這裡有一個重要現實:神經網路的神經元和感知機並不完全相同,但是,可用一個啟用函式來計算輸出,該函式仍然是非線性的,但是可微分,和Adaline神經元一樣;該導數不僅可以用於調整權值,減少誤差,鏈式法則也可用於計算前一層所有神經元導數,因此,調整它們權重的方式也是可知的。
說得更簡單些:我們可以利用微積分將一些導致輸出層任何訓練集誤差的原因分配給前一隱藏層的每個神經元,如果還有另外一層隱藏層,我們可以將這些原因再做分配,以此類推——我們在反向傳播這些誤差。而且,如果修改了神經網路(包括那些隱藏層)任一權重值,我們還可以找出誤差會有多大變化,通過優化技巧(時間長,典型的隨機梯度下降)找出最小化誤差的最佳權值。
反向傳播的基本思想
反向傳播由上世紀60年代早期多位研究人員提出,70年代,由Seppo Linnainmaa引入電腦執行,但是,Paul Werbos在1974年的博士畢業論文中深刻分析了將之用於神經網路方面的可能性,成為美國第一位提出可以將其用於神經網路的研究人員。有趣的是,他從模擬人類思維的研究工作中並沒有獲得多少啟發,在這個案例中,弗洛伊德心理學理論啟發了他,正如他自己敘述:
1968年,我提出我們可以多少模仿弗洛伊德的概念——信度指派的反向流動( a backwards flow of credit assignment,),指代從神經元到神經元的反向流動...我解釋過結合使用了直覺、例項和普通鏈式法則的反向計算,雖然它正是將弗洛伊德以前在心理動力學理論中提出的概念運用到數學領域中!
儘管解決了如何訓練多層神經網路的問題,在寫作自己的博士學位論文時也意識到了這一點,但是,Werbos沒有發表將BP演算法用於神經網路這方面的研究,直到1982年人工智慧冬天引發了寒蟬效應。實際上,Werbos認為,這種研究進路對解決感知機問題是有意義的,但是,這個圈子大體已經失去解決那些問題的信念。
Minsky的書最著名的觀點有幾個:
(1)我們需要用MLPs[多層感知機,多層神經網路的另一種說法)來代表簡單的非線性函式,比如XOR 對映;
(2)世界上沒人發現可以將MLPs訓練得夠好,以至於可以學會這麼簡單的函式的方法。
Minsky的書讓世上絕大多數人相信,神經網路是最糟糕的異端,死路一條。Widrow已經強調,這種壓垮早期『感知機』人工智慧學派的悲觀主義不應怪在Minsky的頭上。他只是總結了幾百位謹慎研究人員的經驗而已,他們嘗試找出訓練MLPs的辦法,卻徒勞無功。
也曾有過希望,比如Rosenblatt所謂的backpropagation(這和我們現在說的 backpropagation並不完全相同!),而且Amari也簡短表示,我們應該考慮將最小二乘(也是簡單線性迴歸的基礎)作為訓練神經網路的一種方式(但沒有討論如何求導,還警告說他對這個方法不抱太大期望)。但是,當時的悲觀主義開始變得致命。
上世紀七十年代早期,我確實在MIT採訪過Minsky。我建議我們合著一篇文章,證明MLPs實際上能夠克服早期出現的問題...但是,Minsky並無興趣(14)。事實上,當時的MIT,哈佛以及任何我能找到的研究機構,沒人對此有興趣。
我肯定不能打保票,但是,直到十年後,也就是1986年,這一研究進路才開始在David Rumelhart, Geoffrey Hinton和Ronald Williams合著的《Learning representations by back-propagating errors》中流行開來,原因似乎就是缺少學術興趣。
儘管研究方法的發現不計其數(論文甚至清楚提道,David Parker 和 Yann LeCun是事先發現這一研究進路的兩人),1986年的這篇文章卻因其精確清晰的觀點陳述而顯得很突出。實際上,學機器學習的人很容易發現自己論文中的描述與教科書和課堂上解釋概念方式本質上相同。
不幸的是,科學圈裡幾乎無人知道Werbo的研究。1982年,Parker重新發現了這個研究辦法[39]並於1985年在M.I.T[40]上發表了一篇相關報導。就在Parker報導後不久,Rumelhart, Hinton和Williams [41], [42]也重新發現了這個方法, 他們最終成功地讓這個方法家喻戶曉,也主要歸功於陳述觀點的框架非常清晰。
但是,這三位作者沒有止步於介紹新學習演算法,而是走得更遠。同年,他們發表了更有深度的文章《Learning internal representations by error propagation》。 文章特別談到了Minsky在《感知機》中討論過的問題。儘管這是過去學者的構想,但是,正是這個1986年提出的構想讓人們廣泛理解了應該如何訓練多層神經網路解決複雜學習問題。而且神經網路也因此回來了!第二部分,我們將會看到幾年後,《Learning internal representations by error propagation》探討過的BP演算法和其他一些技巧如何被用來解決一個非常重要的問題:讓計算機識別人類書寫。(待續)
Christopher D. Manning. (2015). Computational Linguistics and Deep Learning Computational Linguistics, 41(4), 701–707.↩
F. Rosenblatt. The perceptron, a perceiving and recognizing automaton Project Para. Cornell Aeronautical Laboratory, 1957. ↩
W. S. McCulloch and W. Pitts. A logical calculus of the ideas immanent in nervous activity. The bulletin of mathematical biophysics, 5(4):115–133, 1943. ↩
The organization of behavior: A neuropsychological theory. D. O. Hebb. John Wiley And Sons, Inc., New York, 1949 ↩
B. Widrow et al. Adaptive ”Adaline” neuron using chemical ”memistors”. Number Technical Report 1553-2. Stanford Electron. Labs., Stanford, CA, October 1960. ↩
“New Navy Device Learns By Doing”, New York Times, July 8, 1958. ↩
Perceptrons. An Introduction to Computational Geometry. MARVIN MINSKY and SEYMOUR PAPERT. M.I.T. Press, Cambridge, Mass., 1969. ↩
Linnainmaa, S. (1970). The representation of the cumulative rounding error of an algorithm as a Taylor expansion of the local rounding errors. Master’s thesis, Univ. Helsinki. ↩
P. Werbos. Beyond Regression: New Tools for Prediction and Analysis in the Behavioral Sciences. PhD thesis, Harvard University, Cambridge, MA, 1974. ↩
Werbos, P.J. (2006). Backwards differentiation in AD and neural nets: Past links and new opportunities. In Automatic Differentiation: Applications, Theory, and Implementations, pages 15-34. Springer. ↩
Rumelhart, D. E., Hinton, G. E., and Williams, R. J. (1986). Learning representations by back-propagating errors. Nature, 323, 533–536. ↩
Widrow, B., & Lehr, M. (1990). 30 years of adaptive neural networks: perceptron, madaline, and backpropagation. Proceedings of the IEEE, 78(9), 1415-1442. ↩
D. E. Rumelhart, G. E. Hinton, and R. J. Williams. 1986. Learning internal representations by error propagation. In Parallel distributed processing: explorations in the microstructure of cognition, vol. 1, David E. Rumelhart, James L. McClelland, and CORPORATE PDP Research Group (Eds.). MIT Press, Cambridge, MA, USA 318-362