- 深度學習
- (美)伊恩·古德費洛 (加)約書亞·本吉奧
- 15091字
- 2019-03-05 17:20:36
第1章 引言
遠在古希臘時期,發明家就夢想著創造能自主思考的機器。神話人物皮格馬利翁(Pygmalion)、代達羅斯(Daedalus)和赫淮斯托斯(Hephaestus)可以被看作傳說中的發明家,而加拉蒂亞(Galatea)、塔洛斯(Talos)和潘多拉(Pandora)則可以被視為人造生命(Ovid and Martin,2004; Sparkes,1996; Tandy,1997)。
當人類第一次構思可編程計算機時,就已經在思考計算機能否變得智能(盡管這距造出第一臺計算機還有一百多年)(Lovelace,1842)。如今,人工智能(artificial intelligence, AI)已經成為一個具有眾多實際應用和活躍研究課題的領域,并且正在蓬勃發展。我們期望通過智能軟件自動地處理常規勞動、理解語音或圖像、幫助醫學診斷和支持基礎科學研究。
在人工智能的早期,那些對人類智力來說非常困難、但對計算機來說相對簡單的問題得到迅速解決,比如,那些可以通過一系列形式化的數學規則來描述的問題。人工智能的真正挑戰在于解決那些對人來說很容易執行、但很難形式化描述的任務,如識別人們所說的話或圖像中的臉。對于這些問題,我們人類往往可以憑借直覺輕易地解決。
針對這些比較直觀的問題,本書討論一種解決方案。該方案可以讓計算機從經驗中學習,并根據層次化的概念體系來理解世界,而每個概念則通過與某些相對簡單的概念之間的關系來定義。讓計算機從經驗獲取知識,可以避免由人類來給計算機形式化地指定它需要的所有知識。層次化的概念讓計算機構建較簡單的概念來學習復雜概念。如果繪制出表示這些概念如何建立在彼此之上的圖,我們將得到一張“深”(層次很多)的圖。基于這個原因,我們稱這種方法為AI深度學習(deep learning)。
AI許多早期的成功發生在相對樸素且形式化的環境中,而且不要求計算機具備很多關于世界的知識。例如,IBM的深藍(Deep Blue)國際象棋系統在1997年擊敗了世界冠軍Garry Kasparov(Hsu,2002)。顯然國際象棋是一個非常簡單的領域,因為它僅含有64個位置并只能以嚴格限制的方式移動32個棋子。設計一種成功的國際象棋策略是巨大的成就,但向計算機描述棋子及其允許的走法并不是這一挑戰的困難所在。國際象棋完全可以由一個非常簡短的、完全形式化的規則列表來描述,并可以容易地由程序員事先準備好。
具有諷刺意義的是,抽象和形式化的任務對人類而言是最困難的腦力任務之一,但對計算機而言卻屬于最容易的。計算機早就能夠打敗人類最好的國際象棋選手,但直到最近計算機才在識別對象或語音任務中達到人類平均水平。一個人的日常生活需要關于世界的巨量知識。很多這方面的知識是主觀的、直觀的,因此很難通過形式化的方式表達清楚。計算機需要獲取同樣的知識才能表現出智能。人工智能的一個關鍵挑戰就是如何將這些非形式化的知識傳達給計算機。
一些人工智能項目力求將關于世界的知識用形式化的語言進行硬編碼(hard-code)。計算機可以使用邏輯推理規則來自動地理解這些形式化語言中的聲明。這就是眾所周知的人工智能的知識庫(knowledge base)方法。然而,這些項目最終都沒有取得重大的成功。其中最著名的項目是Cyc(Lenat and Guha, 1989)。Cyc包括一個推斷引擎和一個使用CycL語言描述的聲明數據庫。這些聲明是由人類監督者輸入的。這是一個笨拙的過程。人們設法設計出足夠復雜的形式化規則來精確地描述世界。例如,Cyc不能理解一個關于名為Fred的人在早上剃須的故事(Linde, 1992)。它的推理引擎檢測到故事中的不一致性:它知道人體的構成不包含電氣零件,但由于Fred正拿著一個電動剃須刀,它認為實體——“正在剃須的Fred”(“FredWhileShaving”)含有電氣部件。因此,它產生了這樣的疑問——Fred在刮胡子的時候是否仍然是一個人。
依靠硬編碼的知識體系面臨的困難表明,AI系統需要具備自己獲取知識的能力,即從原始數據中提取模式的能力。這種能力稱為機器學習(machine learning)。引入機器學習使計算機能夠解決涉及現實世界知識的問題,并能做出看似主觀的決策。比如,一個稱為邏輯回歸(logistic regression)的簡單機器學習算法可以決定是否建議剖腹產(Mor-Yosef et al.,1990)。而同樣是簡單機器學習算法的樸素貝葉斯(naive Bayes)則可以區分垃圾電子郵件和合法電子郵件。
這些簡單的機器學習算法的性能在很大程度上依賴于給定數據的表示(representation)。例如,當邏輯回歸用于判斷產婦是否適合剖腹產時,AI系統不會直接檢查患者。相反,醫生需要告訴系統幾條相關的信息,諸如是否存在子宮疤痕。表示患者的每條信息稱為一個特征。邏輯回歸學習病人的這些特征如何與各種結果相關聯。然而,它絲毫不能影響該特征定義的方式。如果將病人的MRI(核磁共振)掃描而不是醫生正式的報告作為邏輯回歸的輸入,它將無法做出有用的預測。MRI掃描的單一像素與分娩過程中并發癥之間的相關性微乎其微。
在整個計算機科學乃至日常生活中,對表示的依賴都是一個普遍現象。在計算機科學中,如果數據集合被精巧地結構化并被智能地索引,那么諸如搜索之類的操作的處理速度就可以成指數級地加快。人們可以很容易地在阿拉伯數字的表示下進行算術運算,但在羅馬數字的表示下,運算會比較耗時。因此,毫不奇怪,表示的選擇會對機器學習算法的性能產生巨大的影響。圖1.1展示了一個簡單的可視化例子。

圖1.1 不同表示的例子:假設我們想在散點圖中畫一條線來分隔兩類數據。在圖中,我們使用笛卡兒坐標表示數據,這個任務是不可能的。在右圖中,我們用極坐標表示數據,可以用垂直線簡單地解決這個任務(與David Warde-Farley合作繪制此圖)
許多人工智能任務都可以通過以下方式解決:先提取一個合適的特征集,然后將這些特征提供給簡單的機器學習算法。例如,對于通過聲音鑒別說話者的任務來說,一個有用的特征是對其聲道大小的估計。這個特征為判斷說話者是男性、女性還是兒童提供了有力線索。
然而,對于許多任務來說,我們很難知道應該提取哪些特征。例如,假設我們想編寫一個程序來檢測照片中的車。我們知道,汽車有輪子,所以我們可能會想用車輪的存在與否作為特征。遺憾的是,我們難以準確地根據像素值來描述車輪看上去像什么。雖然車輪具有簡單的幾何形狀,但它的圖像可能會因場景而異,如落在車輪上的陰影、太陽照亮的車輪的金屬零件、汽車的擋泥板或者遮擋的車輪一部分的前景物體等。
解決這個問題的途徑之一是使用機器學習來發掘表示本身,而不僅僅把表示映射到輸出。這種方法我們稱之為表示學習(representation learning)。學習到的表示往往比手動設計的表示表現得更好。并且它們只需最少的人工干預,就能讓AI系統迅速適應新的任務。表示學習算法只需幾分鐘就可以為簡單的任務發現一個很好的特征集,對于復雜任務則需要幾小時到幾個月。手動為一個復雜的任務設計特征需要耗費大量的人工、時間和精力,甚至需要花費整個社群研究人員幾十年的時間。
表示學習算法的典型例子是自編碼器(autoencoder)。自編碼器由一個編碼器(encoder)函數和一個解碼器(decoder)函數組合而成。編碼器函數將輸入數據轉換為一種不同的表示,而解碼器函數則將這個新的表示轉換回原來的形式。我們期望當輸入數據經過編碼器和解碼器之后盡可能多地保留信息,同時希望新的表示有各種好的特性,這也是自編碼器的訓練目標。為了實現不同的特性,我們可以設計不同形式的自編碼器。
當設計特征或設計用于學習特征的算法時,我們的目標通常是分離出能解釋觀察數據的變差因素(factors of variation)。在此背景下,“因素”這個詞僅指代影響的不同來源;因素通常不是乘性組合。這些因素通常是不能被直接觀察到的量。相反,它們可能是現實世界中觀察不到的物體或者不可觀測的力,但會影響可觀測的量。為了對觀察到的數據提供有用的簡化解釋或推斷其原因,它們還可能以概念的形式存在于人類的思維中。它們可以被看作數據的概念或者抽象,幫助我們了解這些數據的豐富多樣性。當分析語音記錄時,變差因素包括說話者的年齡、性別、他們的口音和他們正在說的詞語。當分析汽車的圖像時,變差因素包括汽車的位置、它的顏色、太陽的角度和亮度。
在許多現實的人工智能應用中,困難主要源于多個變差因素同時影響著我們能夠觀察到的每一個數據。比如,在一張包含紅色汽車的圖片中,其單個像素在夜間可能會非常接近黑色。汽車輪廓的形狀取決于視角。大多數應用需要我們理清變差因素并忽略我們不關心的因素。
顯然,從原始數據中提取如此高層次、抽象的特征是非常困難的。許多諸如說話口音這樣的變差因素,只能通過對數據進行復雜的、接近人類水平的理解來辨識。這幾乎與獲得原問題的表示一樣困難,因此,乍一看,表示學習似乎并不能幫助我們。
深度學習(deep learning)通過其他較簡單的表示來表達復雜表示,解決了表示學習中的核心問題。
深度學習讓計算機通過較簡單的概念構建復雜的概念。圖1.2展示了深度學習系統如何通過組合較簡單的概念(例如角和輪廓,它們反過來由邊線定義)來表示圖像中人的概念。深度學習模型的典型例子是前饋深度網絡或或多層感知機(multilayer perceptron, MLP)。多層感知機僅僅是一個將一組輸入值映射到輸出值的數學函數。該函數由許多較簡單的函數復合而成。我們可以認為不同數學函數的每一次應用都為輸入提供了新的表示。
學習數據的正確表示的想法是解釋深度學習的一個視角。另一個視角是深度促使計算機學習一個多步驟的計算機程序。每一層表示都可以被認為是并行執行另一組指令之后計算機的存儲器狀態。更深的網絡可以按順序執行更多的指令。順序指令提供了極大的能力,因為后面的指令可以參考早期指令的結果。從這個角度上看,在某層激活函數里,并非所有信息都蘊涵著解釋輸入的變差因素。表示還存儲著狀態信息,用于幫助程序理解輸入。這里的狀態信息類似于傳統計算機程序中的計數器或指針。它與具體的輸入內容無關,但有助于模型組織其處理過程。

圖1.2 深度學習模型的示意圖。計算機難以理解原始感觀輸入數據的含義,如表示為像素值集合的圖像。將一組像素映射到對象標識的函數非常復雜。如果直接處理,學習或評估此映射似乎是不可能的。深度學習將所需的復雜映射分解為一系列嵌套的簡單映射(每個由模型的不同層描述)來解決這一難題。輸入展示在可見層(visible layer),這樣命名的原因是因為它包含我們能觀察到的變量。然后是一系列從圖像中提取越來越多抽象特征的隱藏層(hidden layer)。因為它們的值不在數據中給出,所以將這些層稱為“隱藏層”;模型必須確定哪些概念有利于解釋觀察數據中的關系。這里的圖像是每個隱藏單元表示的特征的可視化。給定像素,第1層可以輕易地通過比較相鄰像素的亮度來識別邊緣。有了第1隱藏層描述的邊緣,第2隱藏層可以容易地搜索可識別為角和擴展輪廓的邊集合。給定第2隱藏層中關于角和輪廓的圖像描述,第3隱藏層可以找到輪廓和角的特定集合來檢測特定對象的整個部分。最后,根據圖像描述中包含的對象部分,可以識別圖像中存在的對象(經Zeiler and Fergus(2014)許可引用此圖)
目前主要有兩種度量模型深度的方式。一種方式是基于評估架構所需執行的順序指令的數目。假設我們將模型表示為給定輸入后,計算對應輸出的流程圖,則可以將這張流程圖中的最長路徑視為模型的深度。正如兩個使用不同語言編寫的等價程序將具有不同的長度,相同的函數可以被繪制為具有不同深度的流程圖,其深度取決于我們可以用來作為一個步驟的函數。圖1.3說明了語言的選擇如何給相同的架構兩個不同的衡量。

圖1.3 將輸入映射到輸出的計算圖表的示意圖,其中每個節點執行一個操作。深度是從輸入到輸出的最長路徑的長度,但這取決于可能的計算步驟的定義。這些圖中所示的計算是邏輯回歸模型的輸出,σ(wTx),其中σ是logistic sigmoid函數。如果使用加法、乘法和logistic sigmoid作為計算機語言的元素,那么這個模型深度為3;如果將邏輯回歸視為元素本身,那么這個模型深度為1
另一種是在深度概率模型中使用的方法,它不是將計算圖的深度視為模型深度,而是將描述概念彼此如何關聯的圖的深度視為模型深度。在這種情況下,計算每個概念表示的計算流程圖的深度可能比概念本身的圖更深。這是因為系統對較簡單概念的理解在給出更復雜概念的信息后可以進一步精細化。例如,一個AI系統觀察其中一只眼睛在陰影中的臉部圖像時,它最初可能只看到一只眼睛。但當檢測到臉部的存在后,系統可以推斷第二只眼睛也可能是存在的。在這種情況下,概念的圖僅包括兩層(關于眼睛的層和關于臉的層),但如果我們細化每個概念的估計將需要額外的n次計算,那么計算的圖將包含2n層。
由于并不總是清楚計算圖的深度和概率模型圖的深度哪一個是最有意義的,并且由于不同的人選擇不同的最小元素集來構建相應的圖,所以就像計算機程序的長度不存在單一的正確值一樣,架構的深度也不存在單一的正確值。另外,也不存在模型多么深才能被修飾為“深”的共識。但相比傳統機器學習,深度學習研究的模型涉及更多學到功能或學到概念的組合,這點毋庸置疑。
總之,這本書的主題——深度學習是通向人工智能的途徑之一。具體來說,它是機器學習的一種,一種能夠使計算機系統從經驗和數據中得到提高的技術。我們堅信機器學習可以構建出在復雜實際環境下運行的AI系統,并且是唯一切實可行的方法。深度學習是一種特定類型的機器學習,具有強大的能力和靈活性,它將大千世界表示為嵌套的層次概念體系(由較簡單概念間的聯系定義復雜概念、從一般抽象概括到高級抽象表示)。圖1.4說明了這些不同的AI學科之間的關系。圖1.5展示了每個學科如何工作的高層次原理。

圖1.4 維恩圖展示了深度學習既是一種表示學習,也是一種機器學習,可以用于許多(但不是全部)AI方法。維恩圖的每個部分包括一個AI技術的實例

圖1.5 流程圖展示了AI系統的不同部分如何在不同的AI學科中彼此相關。陰影框表示能從數據中學習的組件
1.1 本書面向的讀者
本書對各類讀者都有一定的用處,但主要是為兩類受眾而寫的。其中,一類受眾是學習機器學習的大學生(本科或研究生),包括那些已經開始職業生涯的深度學習和人工智能研究者。另一類受眾是沒有機器學習或統計背景,但希望能快速地掌握這方面知識,并在他們的產品或平臺中使用深度學習的軟件工程師?,F已證明,深度學習在許多軟件領域都是有用的,包括計算機視覺、語音和音頻處理、自然語言處理、機器人技術、生物信息學和化學、電子游戲、搜索引擎、網絡廣告和金融。
為了更好地服務各類讀者,我們將本書組織為3個部分。第1部分介紹基本的數學工具和機器學習的概念。第2部分介紹最成熟的深度學習算法,這些技術基本上已經得到解決。第3部分討論某些具有展望性的想法,它們被廣泛地認為是深度學習未來的研究重點。
讀者可以隨意跳過不感興趣或與自己背景不相關的部分。熟悉線性代數、概率和基本機器學習概念的讀者可以跳過第1部分。若讀者只是想實現一個能工作的系統,則不需要閱讀超出第2部分的內容。為了幫助讀者選擇章節,圖1.6給出了本書高層組織結構的流程圖。

圖1.6 本書的高層組織結構的流程圖。從一章到另一章的箭頭表示前一章是理解后一章的必備內容
我們假設所有讀者都具備計算機科學背景。也假設讀者熟悉編程,并且對計算的性能問題、復雜性理論、入門級微積分和一些圖論術語有基本的了解。
《深度學習》英文版配套網站是www.deeplearningbook.org。網站上提供了各種補充材料,包括練習、講義幻燈片、錯誤更正以及其他應該對讀者和講師有用的資源。
《深度學習》中文版的讀者,可訪問人民郵電出版社異步社區網站www.epubit.com.cn,獲取更多圖書信息。
1.2 深度學習的歷史趨勢
通過歷史背景了解深度學習是最簡單的方式。這里我們僅指出深度學習的幾個關鍵趨勢,而不是提供其詳細的歷史:
? 深度學習有著悠久而豐富的歷史,但隨著許多不同哲學觀點的漸漸消逝,與之對應的名稱也漸漸塵封。
? 隨著可用的訓練數據量不斷增加,深度學習變得更加有用。
? 隨著時間的推移,針對深度學習的計算機軟硬件基礎設施都有所改善,深度學習模型的規模也隨之增長。
? 隨著時間的推移,深度學習已經解決日益復雜的應用,并且精度不斷提高。
1.2.1 神經網絡的眾多名稱和命運變遷
我們期待這本書的許多讀者都聽說過深度學習這一激動人心的新技術,并對一本書提及一個新興領域的“歷史”而感到驚訝。事實上,深度學習的歷史可以追溯到20世紀40年代。深度學習看似是一個全新的領域,只不過因為在目前流行的前幾年它還是相對冷門的,同時也因為它被賦予了許多不同的名稱(其中大部分已經不再使用),最近才成為眾所周知的“深度學習”。這個領域已經更換了很多名稱,它反映了不同的研究人員和不同觀點的影響。
全面地講述深度學習的歷史超出了本書的范圍。然而,一些基本的背景對理解深度學習是有用的。一般認為,迄今為止深度學習已經經歷了3次發展浪潮:20世紀40年代到60年代,深度學習的雛形出現在控制論(cybernetics)中;20世紀80年代到90年代,深度學習表現為聯結主義(connectionism);直到2006年,才真正以深度學習之名復興。圖1.7給出了定量的展示。
我們今天知道的一些最早的學習算法,旨在模擬生物學習的計算模型,即大腦怎樣學習或為什么能學習的模型。其結果是深度學習以人工神經網絡(artificial neural network, ANN)之名而淡去。彼時,深度學習模型被認為是受生物大腦(無論人類大腦或其他動物的大腦)所啟發而設計出來的系統。盡管有些機器學習的神經網絡有時被用來理解大腦功能(Hinton and Shallice, 1991),但它們一般都沒有設計成生物功能的真實模型。深度學習的神經觀點受兩個主要思想啟發:一個想法是,大腦作為例子證明智能行為是可能的,因此,概念上,建立智能的直接途徑是逆向大腦背后的計算原理,并復制其功能;另一種看法是,理解大腦和人類智能背后的原理也非常有趣,因此機器學習模型除了解決工程應用的能力,如果能讓人類對這些基本的科學問題有進一步的認識,也將會很有用。

圖1.7 根據Google圖書中短語“控制論”“聯結主義”或“神經網絡”頻率衡量的人工神經網絡研究的歷史浪潮(圖中展示了3次浪潮的前兩次,第3次最近才出現)。第1次浪潮開始于20世紀40年代到20世紀60年代的控制論,隨著生物學習理論的發展(McCulloch and Pitts, 1943; Hebb, 1949)和第一個模型的實現(如感知機(Rosenblatt, 1958)),能實現單個神經元的訓練。第2次浪潮開始于1980—1995年間的聯結主義方法,可以使用反向傳播(Rumelhart et al.,1986a)訓練具有一兩個隱藏層的神經網絡。當前第3次浪潮,也就是深度學習,大約始于2006年(Hinton et al.,2006a; Bengio et al.,2007a; Ranzato et al.,2007a),并且于2016年以圖書的形式出現。另外,前兩次浪潮類似地出現在書中的時間比相應的科學活動晚得多
現代術語“深度學習”超越了目前機器學習模型的神經科學觀點。它訴諸于學習多層次組合這一更普遍的原理,這一原理也可以應用于那些并非受神經科學啟發的機器學習框架。
現代深度學習最早的前身是從神經科學的角度出發的簡單線性模型。這些模型設計為使用一組n個輸入x1,…,xn,并將它們與一個輸出y相關聯。這些模型希望學習一組權重w1,…,wn,并計算它們的輸出f(x,w)=x1w1+…+xnwn。如圖1.7所示,第一次神經網絡研究浪潮稱為控制論。
McCulloch-Pitts神經元(McCulloch and Pitts, 1943)是腦功能的早期模型。該線性模型通過檢驗函數f(x,w)的正負來識別兩種不同類別的輸入。顯然,模型的權重需要正確設置后才能使模型的輸出對應于期望的類別。這些權重可以由操作人員設定。20世紀50年代,感知機(Rosenblatt, 1956, 1958)成為第一個能根據每個類別的輸入樣本來學習權重的模型。大約在同一時期,自適應線性單元(adaptive linear element, ADALINE)簡單地返回函數f(x)本身的值來預測一個實數(Widrow and Hoff, 1960),并且它還可以學習從數據預測這些數。
這些簡單的學習算法大大影響了機器學習的現代景象。用于調節ADALINE權重的訓練算法是被稱為隨機梯度下降(stochastic gradient descent)的一種特例。稍加改進后的隨機梯度下降算法仍然是當今深度學習的主要訓練算法。
基于感知機和ADALINE中使用的函數f(x,w)的模型稱為線性模型(linear model)。盡管在許多情況下,這些模型以不同于原始模型的方式進行訓練,但仍是目前最廣泛使用的機器學習模型。
線性模型有很多局限性。最著名的是,它們無法學習異或(XOR)函數,即f([0,1],w)=1和f([1,0],w)=1,但f([1,1],w)=0和f([0,0],w)=0。觀察到線性模型這個缺陷的批評者對受生物學啟發的學習普遍地產生了抵觸(Minsky and Papert, 1969)。這導致了神經網絡熱潮的第一次大衰退。
現在,神經科學被視為深度學習研究的一個重要靈感來源,但它已不再是該領域的主要指導。
如今神經科學在深度學習研究中的作用被削弱,主要原因是我們根本沒有足夠的關于大腦的信息來作為指導去使用它。要獲得對被大腦實際使用算法的深刻理解,我們需要有能力同時監測(至少是)數千相連神經元的活動。我們不能夠做到這一點,所以我們甚至連大腦最簡單、最深入研究的部分都還遠遠沒有理解(Olshausen and Field,2005)。
神經科學已經給了我們依靠單一深度學習算法解決許多不同任務的理由。神經學家們發現,如果將雪貂的大腦重新連接,使視覺信號傳送到聽覺區域,它們可以學會用大腦的聽覺處理區域去“看”(Von Melchner et al.,2000)。這暗示著大多數哺乳動物的大腦使用單一的算法就可以解決其大腦可以解決的大部分不同任務。在這個假設之前,機器學習研究是比較分散的,研究人員在不同的社群研究自然語言處理、計算機視覺、運動規劃和語音識別。如今,這些應用社群仍然是獨立的,但是對于深度學習研究團體來說,同時研究許多甚至所有這些應用領域是很常見的。
我們能夠從神經科學得到一些粗略的指南。僅通過計算單元之間的相互作用而變得智能的基本思想是受大腦啟發的。新認知機(Fukushima, 1980)受哺乳動物視覺系統的結構啟發,引入了一個處理圖片的強大模型架構,它后來成為了現代卷積網絡的基礎(LeCun et al., 1998c)(參見第9.10節)。目前大多數神經網絡是基于一個稱為整流線性單元(rectified linear unit)的神經單元模型。原始認知機(Fukushima,1975)受我們關于大腦功能知識的啟發,引入了一個更復雜的版本。簡化的現代版通過吸收來自不同觀點的思想而形成,Nair and Hinton(2010b)和Glorot et al.(2011a)援引神經科學作為影響,Jarrett et al.(2009a)援引更多面向工程的影響。雖然神經科學是靈感的重要來源,但它不需要被視為剛性指導。我們知道,真實的神經元計算著與現代整流線性單元非常不同的函數,但更接近真實神經網絡的系統并沒有導致機器學習性能的提升。此外,雖然神經科學已經成功地啟發了一些神經網絡架構,但我們對用于神經科學的生物學習還沒有足夠多的了解,因此也就不能為訓練這些架構用的學習算法提供太多的借鑒。
媒體報道經常強調深度學習與大腦的相似性。的確,深度學習研究者比其他機器學習領域(如核方法或貝葉斯統計)的研究者更可能地引用大腦作為影響,但是大家不應該認為深度學習在嘗試模擬大腦?,F代深度學習從許多領域獲取靈感,特別是應用數學的基本內容,如線性代數、概率論、信息論和數值優化。盡管一些深度學習的研究人員引用神經科學作為靈感的重要來源,然而其他學者完全不關心神經科學。
值得注意的是,了解大腦是如何在算法層面上工作的嘗試確實存在且發展良好。這項嘗試主要被稱為“計算神經科學”,并且是獨立于深度學習的領域。研究人員在兩個領域之間來回研究是很常見的。深度學習領域主要關注如何構建計算機系統,從而成功解決需要智能才能解決的任務,而計算神經科學領域主要關注構建大腦如何真實工作的、比較精確的模型。
20世紀80年代,神經網絡研究的第二次浪潮在很大程度上是伴隨一個被稱為聯結主義(connectionism)或并行分布處理(parallel distributed processing)潮流而出現的(Rumelhart et al.,1986d; McClelland et al.,1995)。聯結主義是在認知科學的背景下出現的。認知科學是理解思維的跨學科途徑,即它融合多個不同的分析層次。20世紀80年代初期,大多數認知科學家研究符號推理模型。盡管這很流行,但符號模型很難解釋大腦如何真正使用神經元實現推理功能。聯結主義者開始研究真正基于神經系統實現的認知模型(Touretzky and Minton,1985),其中很多復蘇的想法可以追溯到心理學家Donald Hebb在20世紀40年代的工作(Hebb,1949)。
聯結主義的中心思想是,當網絡將大量簡單的計算單元連接在一起時可以實現智能行為。這種見解同樣適用于生物神經系統中的神經元,因為它和計算模型中隱藏單元起著類似的作用。
在20世紀80年代的聯結主義期間形成的幾個關鍵概念在今天的深度學習中仍然是非常重要的。
其中一個概念是分布式表示(distributed representation)(Hinton et al., 1986)。其思想是:系統的每一個輸入都應該由多個特征表示,并且每一個特征都應該參與到多個可能輸入的表示。例如,假設我們有一個能夠識別紅色、綠色或藍色的汽車、卡車和鳥類的視覺系統,表示這些輸入的其中一個方法是將9個可能的組合:紅卡車、紅汽車、紅鳥、綠卡車等使用單獨的神經元或隱藏單元激活。這需要9個不同的神經元,并且每個神經必須獨立地學習顏色和對象身份的概念。改善這種情況的方法之一是使用分布式表示,即用3個神經元描述顏色,3個神經元描述對象身份。這僅僅需要6個神經元而不是9個,并且描述紅色的神經元能夠從汽車、卡車和鳥類的圖像中學習紅色,而不僅僅是從一個特定類別的圖像中學習。分布式表示的概念是本書的核心,我們將在第15章中更加詳細地描述。
聯結主義潮流的另一個重要成就是反向傳播在訓練具有內部表示的深度神經網絡中的成功使用以及反向傳播算法的普及(Rumelhart et al., 1986c; LeCun, 1987)。這個算法雖然曾黯然失色且不再流行,但截至寫書之時,它仍是訓練深度模型的主導方法。
20世紀90年代,研究人員在使用神經網絡進行序列建模的方面取得了重要進展。Hochreiter(1991b)和Bengio et al.(1994b)指出了對長序列進行建模的一些根本性數學難題,這將在第10.7節中描述。Hochreiter和Schmidhuber(1997)引入長短期記憶(long short-term memory, LSTM)網絡來解決這些難題。如今,LSTM在許多序列建模任務中廣泛應用,包括Google的許多自然語言處理任務。
神經網絡研究的第二次浪潮一直持續到20世紀90年代中期。基于神經網絡和其他AI技術的創業公司開始尋求投資,其做法野心勃勃但不切實際。當AI研究不能實現這些不合理的期望時,投資者感到失望。同時,機器學習的其他領域取得了進步。比如,核方法(Boser et al., 1992; Cortes and Vapnik, 1995; et al., 1999)和圖模型(Jordan, 1998)都在很多重要任務上實現了很好的效果。這兩個因素導致了神經網絡熱潮的第二次衰退,并一直持續到2007年。
在此期間,神經網絡繼續在某些任務上獲得令人印象深刻的表現(LeCun et al., 1998c;Bengio et al.,2001a)。加拿大高級研究所(CIFAR)通過其神經計算和自適應感知(NCAP)研究計劃幫助維持神經網絡研究。該計劃聯合了分別由Geoffrey Hinton、Yoshua Bengio和Yann LeCun領導的多倫多大學、蒙特利爾大學和紐約大學的機器學習研究小組。這個多學科的CIFAR NCAP研究計劃還包括了神經科學家、人類和計算機視覺專家。
在那個時候,人們普遍認為深度網絡是難以訓練的?,F在我們知道,20世紀80年代就存在的算法能工作得非常好,但是直到2006年前后都沒有體現出來。這可能僅僅由于其計算代價太高,而以當時可用的硬件難以進行足夠的實驗。
神經網絡研究的第三次浪潮始于2006年的突破。Geoffrey Hinton表明名為“深度信念網絡”的神經網絡可以使用一種稱為“貪婪逐層預訓練”的策略來有效地訓練(Hinton et al., 2006a),我們將在第15.1節中更詳細地描述。其他CIFAR附屬研究小組很快表明,同樣的策略可以被用來訓練許多其他類型的深度網絡(Bengio and LeCun,2007a; Ranzato et al.,2007b),并能系統地幫助提高在測試樣例上的泛化能力。神經網絡研究的這一次浪潮普及了“深度學習”這一術語,強調研究者現在有能力訓練以前不可能訓練的比較深的神經網絡,并著力于深度的理論重要性上(Bengio and LeCun, 2007b; Delalleau and Bengio, 2011; Pascanu et al., 2014a; Montufar et al.,2014)。此時,深度神經網絡已經優于與之競爭的基于其他機器學習技術以及手工設計功能的AI系統。在寫這本書的時候,神經網絡的第三次發展浪潮仍在繼續,盡管深度學習的研究重點在這一段時間內發生了巨大變化。第三次浪潮已開始著眼于新的無監督學習技術和深度模型在小數據集的泛化能力,但目前更多的興趣點仍是比較傳統的監督學習算法和深度模型充分利用大型標注數據集的能力。
1.2.2 與日俱增的數據量
人們可能想問,既然人工神經網絡的第一個實驗在20世紀50年代就完成了,但為什么深度學習直到最近才被認為是關鍵技術?自20世紀90年代以來,深度學習就已經成功用于商業應用,但通常被視為一種只有專家才可以使用的藝術而不是一種技術,這種觀點一直持續到最近。確實,要從一個深度學習算法獲得良好的性能需要一些技巧。幸運的是,隨著訓練數據的增加,所需的技巧正在減少。目前在復雜的任務中達到人類水平的學習算法,與20世紀80年代努力解決玩具問題(toy problem)的學習算法幾乎是一樣的,盡管我們使用這些算法訓練的模型經歷了變革,即簡化了極深架構的訓練。最重要的新進展是,現在我們有了這些算法得以成功訓練所需的資源。圖1.8展示了基準數據集的大小如何隨著時間的推移而顯著增加。這種趨勢是由社會日益數字化驅動的。由于我們的活動越來越多地發生在計算機上,我們做什么也越來越多地被記錄。由于計算機越來越多地聯網在一起,這些記錄變得更容易集中管理,并更容易將它們整理成適于機器學習應用的數據集。因為統計估計的主要負擔(觀察少量數據以在新數據上泛化)已經減輕,“大數據”時代使機器學習更加容易。截至2016年,一個粗略的經驗法則是,監督深度學習算法在每類給定約5000個標注樣本情況下一般將達到可以接受的性能,當至少有1000萬個標注樣本的數據集用于訓練時,它將達到或超過人類表現。此外,在更小的數據集上獲得成功是一個重要的研究領域,為此我們應特別側重于如何通過無監督或半監督學習充分利用大量的未標注樣本。

圖1.8與日俱增的數據量。20世紀初,統計學家使用數百或數千的手動制作的度量來研究數據集(Garson, 1900; Gosset,1908; Anderson,1935; Fisher,1936)。20世紀50年代到80年代,受生物啟發的機器學習開拓者通常使用小的合成數據集,如低分辨率的字母位圖,設計為在低計算成本下表明神經網絡能夠學習特定功能(Widrow and Hoff,1960; Rumelhart et al.,1986b)。20世紀80年代和90年代,機器學習變得更偏統計,并開始利用包含成千上萬個樣本的更大數據集,如手寫掃描數字的MNIST數據集(如圖1.9所示)(LeCun et al.,1998c)。在21世紀的第一個10年里,相同大小更復雜的數據集持續出現,如CIFAR-10數據集(Krizhevsky and Hinton,2009)。在這10年結束和接下來的5年,明顯更大的數據集(包含數萬到數千萬的樣例)完全改變了深度學習可能實現的事。這些數據集包括公共Street View House Numbers數據集(Netzer et al., 2011)、各種版本的ImageNet數據集(Deng et al., 2009, 2010a; Russakovsky et al., 2014a)以及Sports-1M數據集(Karpathy et al.,2014)。在圖頂部,我們看到翻譯句子的數據集通常遠大于其他數據集,如根據Canadian Hansard制作的IBM數據集(Brown et al.,1990)和WMT 2014英法數據集(Schwenk,2014)

圖1.9 MNIST數據集的輸入樣例?!癗IST”代表國家標準和技術研究所(National Institute of Standards and Technology),是最初收集這些數據的機構?!癕”代表“修改的(Modified)”,為更容易地與機器學習算法一起使用,數據已經過預處理。MNIST數據集包括手寫數字的掃描和相關標簽(描述每個圖像中包含0~9中哪個數字)。這個簡單的分類問題是深度學習研究中最簡單和最廣泛使用的測試之一。盡管現代技術很容易解決這個問題,它仍然很受歡迎。Geoffrey Hinton將其描述為“機器學習的果蠅”,這意味著機器學習研究人員可以在受控的實驗室條件下研究他們的算法,就像生物學家經常研究果蠅一樣
1.2.3 與日俱增的模型規模
20世紀80年代,神經網絡只能取得相對較小的成功,而現在神經網絡非常成功的另一個重要原因是我們現在擁有的計算資源可以運行更大的模型。聯結主義的主要見解之一是,當動物的許多神經元一起工作時會變得聰明。單獨神經元或小集合的神經元不是特別有用。
生物神經元不是特別稠密地連接在一起。如圖1.10所示,幾十年來,我們的機器學習模型中每個神經元的連接數量已經與哺乳動物的大腦在同一數量級上。

圖1.10與日俱增的每個神經元的連接數。最初,人工神經網絡中神經元之間的連接數受限于硬件能力。而現在,神經元之間的連接數大多是出于設計考慮。一些人工神經網絡中每個神經元的連接數與貓一樣多,并且對于其他神經網絡來說,每個神經元的連接數與較小哺乳動物(如小鼠)一樣多,這種情況是非常普遍的。甚至人類大腦每個神經元的連接數也沒有過高的數量。生物神經網絡規模來自Wikipedia(2015)
1.自適應線性單元(Widrow and Hoff,1960);2.神經認知機(Fukushima,1980);3. GPU-加速卷積網絡(Chellapilla et al.,2006);4.深度玻爾茲曼機(Salakhutdinov and Hinton,2009a);5.無監督卷積網絡(Jarrett et al.,2009b);6. GPU-加速多層感知機(Ciresan et al., 2010);7.分布式自編碼器(Le et al., 2012);8. Multi-GPU卷積網絡(Krizhevsky et al., 2012a);9. COTS HPC無監督卷積網絡(Coates et al., 2013);10. GoogLeNet(Szegedy et al., 2014a)
如圖1.11所示,就神經元的總數目而言,直到最近神經網絡都是驚人的小。自從隱藏單元引入以來,人工神經網絡的規模大約每2.4年擴大一倍。這種增長是由更大內存、更快的計算機和更大的可用數據集驅動的。更大的網絡能夠在更復雜的任務中實現更高的精度。這種趨勢看起來將持續數十年。除非有能力迅速擴展新技術,否則至少要到21世紀50年代,人工神經網絡才能具備與人腦相同數量級的神經元。生物神經元表示的功能可能比目前的人工神經元所表示的更復雜,因此生物神經網絡可能比圖中描繪的甚至要更大。

圖1.11與日俱增的神經網絡規模。自從引入隱藏單元,人工神經網絡的規模大約每2.4年翻一倍。生物神經網絡規模來自Wikipedia(2015)
1.感知機(Rosenblatt, 1958, 1962);2.自適應線性單元(Widrow and Hoff, 1960);3.神經認知機(Fukushima, 1980);4.早期后向傳播網絡(Rumelhart et al., 1986b);5.用于語音識別的循環神經網絡(Robinson and Fallside, 1991);6.用于語音識別的多層感知機(Bengio et al.,1991);7.均勻場sigmoid信念網絡(Saul et al.,1996);8. LeNet-5(LeCun et al., 1998c);9.回聲狀態網絡(Jaeger and Haas, 2004);10.深度信念網絡(Hinton et al., 2006a);11. GPU-加速卷積網絡(Chellapilla et al.,2006);12.深度玻爾茲曼機(Salakhutdinov and Hinton,2009a);13. GPU-加速深度信念網絡(Raina et al., 2009a);14.無監督卷積網絡(Jarrett et al., 2009b);15. GPU-加速多層感知機(Ciresan et al., 2010);16. OMP-1網絡(Coates and Ng, 2011);17.分布式自編碼器(Le et al., 2012);18. Multi-GPU卷積網絡(Krizhevsky et al.,2012a);19. COTS HPC無監督卷積網絡(Coates et al.,2013);20. GoogLeNet(Szegedy et al., 2014a)
現在看來,神經元數量比一個水蛭還少的神經網絡不能解決復雜的人工智能問題,這是不足為奇的。即使現在的網絡,從計算系統角度來看它可能相當大,但實際上它比相對原始的脊椎動物(如青蛙)的神經系統還要小。
由于更快的CPU、通用GPU的出現(在第12.1.2節中討論)、更快的網絡連接和更好的分布式計算的軟件基礎設施,模型規模隨著時間的推移不斷增加是深度學習歷史中最重要的趨勢之一。人們普遍預計這種趨勢將很好地持續到未來。
1.2.4 與日俱增的精度、復雜度和對現實世界的沖擊
20世紀80年代以來,深度學習提供精確識別和預測的能力一直在提高。而且,深度學習持續成功地應用于越來越廣泛的實際問題中。
最早的深度模型被用來識別裁剪緊湊且非常小的圖像中的單個對象(Rumelhart et al., 1986d)。此后,神經網絡可以處理的圖像尺寸逐漸增加?,F代對象識別網絡能處理豐富的高分辨率照片,并且不需要在被識別的對象附近進行裁剪(Krizhevsky et al., 2012b)。類似地,最早的網絡只能識別兩種對象(或在某些情況下,單類對象的存在與否),而這些現代網絡通常能夠識別至少1000個不同類別的對象。對象識別中最大的比賽是每年舉行的ImageNet大型視覺識別挑戰(ILSVRC)。深度學習迅速崛起的激動人心的一幕是卷積網絡第一次大幅贏得這一挑戰,它將最高水準的前5錯誤率從26.1%降到15.3%(Krizhevsky et al.,2012b),這意味著該卷積網絡針對每個圖像的可能類別生成一個順序列表,除了15.3%的測試樣本,其他測試樣本的正確類標都出現在此列表中的前5項里。此后,深度卷積網絡連續地贏得這些比賽,截至寫作本書時,深度學習的最新結果將這個比賽中的前5錯誤率降到了3.6%,如圖1.12所示。

圖1.12 日益降低的錯誤率。由于深度網絡達到了在ImageNet大規模視覺識別挑戰中競爭所必需的規模,它們每年都能贏得勝利,并且產生越來越低的錯誤率。數據來源于Russakovsky et al.(2014b)和He et al.(2015)
深度學習也對語音識別產生了巨大影響。語音識別在20世紀90年代得到提高后,直到約2000年都停滯不前。深度學習的引入(Dahl et al., 2010; Deng et al., 2010b; Seide et al., 2011; Hinton et al.,2012a)使得語音識別錯誤率陡然下降,有些錯誤率甚至降低了一半。我們將在第12.3節更詳細地探討這個歷史。
深度網絡在行人檢測和圖像分割中也取得了引人注目的成功(Sermanet et al.,2013; Fara-bet et al.,2013; Couprie et al.,2013),并且在交通標志分類上取得了超越人類的表現(Ciresan et al.,2012)。
在深度網絡的規模和精度有所提高的同時,它們可以解決的任務也日益復雜。Goodfellow et al.(2014d)表明,神經網絡可以學習輸出描述圖像的整個字符序列,而不是僅僅識別單個對象。此前,人們普遍認為,這種學習需要對序列中的單個元素進行標注(Gulcehre and Bengio, 2013)。循環神經網絡,如之前提到的LSTM序列模型,現在用于對序列和其他序列之間的關系進行建模,而不是僅僅固定輸入之間的關系。這種序列到序列的學習似乎引領著另一個應用的顛覆性發展,即機器翻譯(Sutskever et al.,2014; Bahdanau et al.,2015)。
這種復雜性日益增加的趨勢已將其推向邏輯結論,即神經圖靈機(Graves et al.,2014)的引入,它能學習讀取存儲單元和向存儲單元寫入任意內容。這樣的神經網絡可以從期望行為的樣本中學習簡單的程序。例如,從雜亂和排好序的樣本中學習對一系列數進行排序。這種自我編程技術正處于起步階段,但原則上未來可以適用于幾乎所有的任務。
深度學習的另一個最大的成就是其在強化學習(reinforcement learning)領域的擴展。在強化學習中,一個自主的智能體必須在沒有人類操作者指導的情況下,通過試錯來學習執行任務。DeepMind表明,基于深度學習的強化學習系統能夠學會玩Atari視頻游戲,并在多種任務中可與人類匹敵(Mnih et al., 2015)。深度學習也顯著改善了機器人強化學習的性能(Finn et al.,2015)。
許多深度學習應用都是高利潤的?,F在深度學習被許多頂級的技術公司使用,包括Google、Microsoft、Facebook、IBM、Baidu、Apple、Adobe、Netflix、NVIDIA和NEC等。
深度學習的進步也嚴重依賴于軟件基礎架構的進展。軟件庫如Theano(Bergstra et al., 2010a; Bastien et al., 2012a)、PyLearn2(Goodfellow et al., 2013e)、Torch(Collobert et al., 2011b)、DistBelief(Dean et al.,2012)、Caffe(Jia,2013)、MXNet(Chen et al.,2015)和Tensor-Flow(Abadi et al.,2015)都能支持重要的研究項目或商業產品。
深度學習也為其他科學做出了貢獻。用于對象識別的現代卷積網絡為神經科學家們提供了可以研究的視覺處理模型(DiCarlo, 2013)。深度學習也為處理海量數據以及在科學領域做出有效的預測提供了非常有用的工具。它已成功地用于預測分子如何相互作用、從而幫助制藥公司設計新的藥物(Dahl et al.,2014),搜索亞原子粒子(Baldi et al.,2014),以及自動解析用于構建人腦三維圖的顯微鏡圖像(Knowles-Barley et al., 2014)等多個場合。我們期待深度學習未來能夠出現在越來越多的科學領域中。
總之,深度學習是機器學習的一種方法。在過去幾十年的發展中,它大量借鑒了我們關于人腦、統計學和應用數學的知識。近年來,得益于更強大的計算機、更大的數據集和能夠訓練更深網絡的技術,深度學習的普及性和實用性都有了極大的發展。未來幾年,深度學習更是充滿了進一步提高并應用到新領域的挑戰和機遇。