第五章 深度突破

2014年1月,英國的科技行業發生了一件前所未有的事情:穀歌在這兒收購了一家小公司。雖然以矽穀的標準來看,這次收購很不起眼,但是在相對平穩的英國計算機行業來說,這是非同尋常的。這家被收購的公司名叫“深度思維”(DeepMind),是一家新成立的公司,當時的員工不足25人,收購報價高達4億英鎊[62]。在外界看來,深度思維公司被收購時似乎沒有任何產品、技術或者商業計劃,它幾乎不為人所知。甚至在它的專業領域——人工智能,亦如此。

穀歌斥巨資收購這家小小的人工智能公司上了新聞頭條,全世界都想知道這家神秘的公司有些什麽人,以及為什麽穀歌認為一家名不見經傳的小公司有著如此高的價值。

人工智能突然成了新聞熱點——以及商業熱點。全球對人工智能的興趣激增,媒體也注意到了這股熱潮,關於人工智能的報道頻頻見諸報端。各國政府也注意到了,並開始詢問應該如何應對。一係列國家人工智能發展倡議很快接踵而至。科技公司都爭先恐後投入這個領域,生怕被曆史車輪甩落。隨之而來的還有投資浪潮,雖然深度思維是人工智能領域最引人注目的收購,但也不乏其他案例。2015年,優步公司從卡內基-梅隆大學機器學習實驗室攬獲了至少40名研究人員。

在不到10年的時間裏,人工智能突然從一潭計算機科學的死水變成最炙手可熱、被炒作得最厲害的領域之一。人們對人工智能的態度發生突如其來的巨大變化,是由一項核心人工智能技術——機器學習的快速發展所推動的。機器學習是人工智能的一個分支領域,但在過去60年的絕大部分時間裏,它一直在一條獨立的道路上發展,正如我們即將在本章看到的,人工智能和這個突然爆發出魅力的分支學科之間,有時候關係會變得挺微妙。

在本章中,我們將了解21世紀機器學習革命是如何發生的,我們會從簡要回顧機器學習開始,重點看一下機器學習的一種特殊方法——神經網絡是如何在該領域占據主導地位的。就像人工智能本身的故事一樣,神經網絡的故事也充滿了跌宕起伏:它曾經度過了兩次寒冬,就在世紀之交的時候,許多人工智能研究人員還把神經網絡視為一個毫無希望的研究領域。但是,神經網絡最終迎來了勝利,而推動其複興發展的新思想是一種被稱為深度學習的技術。深度學習正是深度思維公司的核心技術,我將告訴你深度思維的故事,以及深度思維構建的係統是如何引來全球讚譽的。但是,雖然深度學習是一門強大又重要的技術,但它並不是人工智能的終點。因此,正如對其他人工智能技術所做的那樣,我們也將討論它的局限性。

機器學習概述

機器學習的目標是讓程序能夠從給定的輸入中計算出期望的輸出,而不需要給出一個明確的方法。舉個例子,機器學習的一個經典應用是文本識別,即獲取手寫文本並將其轉錄成文字。在此,給定的輸入是手寫文本的圖片;期望的輸出是手寫文本表示的字符串。

任何一位郵政工作者都可以告訴你,文本識別挺難。每個人的字跡都不同,而且還有人筆跡潦草,有時候鋼筆墨水會漏在紙上,有些書寫的紙又髒又破。回顧一下第一章裏麵的圖1,解讀圖片是一個未曾解決的問題。這不像玩棋盤類遊戲,我們有理論上可以實現的步驟,隻是需要啟發式應用。我們並不知道圖像識別的步驟是什麽,所以需要一些特別的方式——這就讓機器學習有了用武之地。

對於文本識別的機器學習程序,我們通常需要給它提供許多手寫字符的範例來進行訓練,每個範例都標有對應的實際字符,如圖13所示。

圖13 程序訓練數據

識別手寫字符(本例中為數字)的機器學習程序訓練數據,訓練目標是這個程序能夠自動識別手寫數字。

剛才描述的這種機器學習類型被稱為監督式學習,它有一個至關重要的要點:機器學習需要數據,大量的數據。事實上,正如我們即將看到的,提供精心製作的訓練數據集合對機器學習的成功至關重要。

我們訓練程序進行機器學習時,必須仔細設計訓練數據集合。首先,我們通常隻會使用一小部分可能的輸入和輸出來訓練程序,在手寫數字識別示例中,我們不可能向程序展示所有可能存在的手寫字符,那根本不現實。再說了,如果我們可以向程序展示所有可能的輸入集,那麽就根本不需要機器來學習什麽了:機器隻需要記住每一個輸入對應的輸出就行了。無論何時對它進行輸入,它隻需要查找相應的輸出即可——這不算機器學習。因此,一個程序必須隻能使用可能存在的輸入輸出集合的一小部分進行訓練,但是如果訓練數據量太小,那麽程序沒有足夠的信息來學會人們所期望的輸入到輸出的映射。

訓練數據的另一個基本問題是特征提取。假設你在一家銀行工作,銀行需要一個機器學習程序來學習識別不良信貸風險。程序的訓練數據是過去許多客戶的記錄,每個客戶的記錄上會標注他信貸記錄是否良好。客戶記錄通常包括他們的姓名、出生日期、住址、年收入、交易記錄、貸款記錄和相應的還款信息等。這些信息在訓練數據中被稱為特征。不過,所有的特征在程序訓練中都有意義嗎?其中某些特征可能和該客戶的信貸風險毫無關係。如果你事先不知道哪些特征和機器要學習的目標有關係,那麽你可能試圖將所有特征都放入訓練數據中。但是,這樣就會產生一個很嚴重的問題,被稱為維度詛咒:訓練數據包含的特征越多,你需要給程序提供的訓練數據量就越大,程序學習的速度也就越慢。

最簡單的應對方式就是隻在訓練數據中包含少量的特征,但這也會引起一些問題。一方麵,你可能不小心忽略了程序正確學習所必需的特征,即確實標明客戶信貸記錄不良的特征,另一方麵,如果你沒有合理地選擇特征,可能會在程序中引入偏差。例如,假設你給不良信貸風險評估程序訓練數據裏麵導入的唯一特征是客戶地址,那麽很可能會導致程序在完成機器學習以後帶有地域歧視。人工智能程序或許會變得有偏見,這種可能,以及它所引發的問題,我們將在後麵詳細探討。

在另一種機器學習方式——強化學習中,我們不給程序任何明確的訓練數據:它通過決策來進行實驗,並且接收這些決策的反饋,以判斷它們是好是壞。例如,強化學習被廣泛應用於訓練遊戲程序。程序玩某個遊戲,如果它贏了,就會得到正反饋,如果它輸了,就會得到負反饋。不管正負,它得到的反饋都被稱為獎勵。程序將會在下一次玩遊戲的時候考慮獎勵的問題,如果它得到的是正麵的獎勵,那麽下一次玩的時候它更傾向使用同樣的玩法,如果是負麵的,那它就不太可能這樣做。

強化學習的關鍵困難在於,許多情況下,獎勵反饋可能需要很長的時間,這使得程序很難知道哪些行為是好的,哪些行為是壞的。假設強化學習的程序輸了一場遊戲,那麽,究竟是遊戲中的哪一步導致了失敗呢?如果認為遊戲中的每一步都是錯誤的,那肯定算總結過度。但我們怎麽分辨究竟哪一步是錯的?這就是信用分配問題[10]。我們在生活中也會遇見信用分配問題。如果你抽煙的話,很可能在未來收到與之有關的負麵反饋,但是這種負麵反饋通常會在你吸煙很久以後(通常是幾十年)才會收到。這種延遲的反饋很難讓你戒煙。如果吸煙者在吸煙以後立即就能收到負麵反饋(以危及生命和健康的方式),那麽我認為,煙民數量一定會銳減。

到目前為止,我們還沒提到程序是怎樣進行學習的。機器學習作為一個學科領域,擁有同人工智能一樣長的曆史,也同樣龐大。在過去的60年裏,人們發展過各式各樣的機器學習技術。不過近年來機器學習的成功源自一種特殊的技術:神經網絡。其實,神經網絡是人工智能中最古老的技術之一:1956年,約翰·麥卡錫在人工智能暑期學校裏提出的最初建議就包括神經網絡。但直到本世紀,它才再度引起了人們的廣泛關注。

神經網絡,顧名思義,靈感來自大腦內組成神經係統的神經細胞——神經元的微觀結構。神經元是一種能夠以簡單的方式相互交流的細胞,自神經元發起的纖維突起,被稱為軸突,與其他神經元進行連接,連接的“交叉點”被稱為突觸。一般來說,神經元通過突觸連接來接收電化學信號,並且根據接收的信號,產生輸出信號,然後由其他神經元通過突觸連接接收。關鍵的是,神經元接收到的輸入有著不同的權重:有些輸入比其他的更重要,有些輸入甚至可能抑製神經元,阻止它產生輸出。在動物的神經係統中,神經元組成的網絡是相互聯係的:人腦大約有1000億個神經元,人腦中的神經元通常有數千個連接。

因此,神經網絡的構想,就是在機器學習的程序中引入類似的結構。畢竟,人類大腦已經充分證明了神經係統能夠有效地學習。

感知器(神經網絡1.0)

神經網絡的研究起源於20世紀40年代美國研究人員沃倫·麥卡洛克(Warren McCulloch)和沃爾特·皮茨(Walter Pitts),他們意識到神經元可以用電路建模,更具體地說,是用簡單的邏輯電路,他們用這個想法建立了一個簡單但非常通用的數學模型。到了50年代,弗蘭克·羅森布拉特(Frank Rosenblatt)對這個模型進行了改進,創造出了感知器模型。感知器模型意義重大,因為它是第一個實際出現的神經網絡模型,時至今日,它仍然有存在的意義。

圖14展示了羅森布拉特的感知器模型,中間的方塊代表神經元本身,左邊指向方塊的箭頭代表神經元的輸入(對應神經元的突觸連接),右邊的箭頭代表神經元的輸出(對應軸突)。在感知器模型中,每一個輸入都跟一個被稱為權重的數字關聯,在圖14中,與輸入1相關的權重為w1,與輸入2相關的權重為w2,與輸入3相關的權重為w3。神經元的每一個輸入都呈激活和未激活兩種狀態,如果一個輸入被激活,它就會通過相應的權重“刺激”神經元。最後,每一個神經元都有一個觸發閾值,由另一個數字表示(在圖14中,觸發閾值用T表示)。感知器的運作模式是神經元受到的刺激超過了觸發閾值T,那麽它就會“啟動”,這就意味著它的輸出被觸發。換句話說,我們把激活的輸入的權重加在一起,如果總權重超過閾值T,則神經元產生一個輸出。

圖14 羅森布拉特感知器模型中一個簡單的神經元結構

具體來說,假設圖14中神經元每個輸入的權重都為1,閾值T為2。如果其中任意兩個輸入被激活,神經元就會啟動輸出。換言之,在這種情況下,超過半數的輸入被激活,則神經元就會被觸發。

我們再假設輸入1的權重為2,而輸入2和3的權重都為1,閾值T為2。在這種情況下,如果輸入1激活,或者輸入2和3共同激活,或者三個輸入都激活,神經元就會被觸發。

當然,真實存在的神經網絡包括許多神經元,圖15展示了由三個人工神經元組成的感知器。注意每個神經元都是完全獨立運作的。此外,每個神經元能“看到”每一項輸入——然而,對於不同的神經元,輸入的權重可能不同。也就是說,輸入1對於三個神經元分別有各自的權重值,可能它們並不相同。另外,每個神經元的觸發閾值也可能並不相同(圖15中分別為T1, T2和T3)。所以,我們可以想象為三個神經元在各自計算不同的東西。

圖15 由三個人工神經元組成的單層感知器

然而,圖15所展示的感知器並沒有反映出大腦高度互聯的結構,一個神經元的輸出會反饋給其他許多神經元。為了更清楚地反映人腦結構的複雜性,人工神經網絡通常是分層組織的,如圖16所示,即多層感知器結構。圖16的感知器由9個神經元組成,分為3層,每層3個神經元。每一層的每個神經元都接收上一層神經元的輸入。

圖16 由9個神經元組成的3層感知器

需要注意的是,即使在這個非常簡單的感知器中,事情也開始變得複雜了:我們的神經元之間已經有27個連接了,每個連接都有對應的權重,9個神經元都有自己的觸發閾值。雖然麥卡洛克和皮茨就在模型中設想了多層神經網絡結構,但在羅森布拉特的時代,人們主要關注單層網絡,原因很簡單:沒有人知道如何訓練具有多個層麵的神經網絡。

每個連接所對應的權重值對於神經網絡的運行至關重要,事實上,這就是神經網絡分解下來的全部內容:一堆數字列表。對於任何一個大小合理的神經網絡來說,這個數字列表的長度都相當可觀。因此,訓練一個神經網絡需要用某種方式找到適當的權重值。通常的尋找方式是在每次訓練以後調整權重值,試圖讓網絡產生正確的輸入到輸出的映射。羅森布拉特試驗了幾種不同的技術,並為一個簡單的感知器模型找到了一個被他稱為糾錯程序的技術。

現在我們知道羅森布拉特的方法肯定是有效的,它可以正確地訓練一個網絡。但是在當時,存在一個強烈的異議。1969年,馬文·明斯基和西摩·帕普特(Seymour Papert)出版了一本名叫《感知器》的書[63],書中指出單層感知器網絡有著非常大的局限性。事實上,如圖15所示的單層感知器確實如此,它們甚至連許多輸入和輸出之間的簡單關係都學不會。但當時吸引大多數讀者注意力的,是明斯基和帕普特的研究表明,感知器模型不能學習一個很簡單的邏輯概念——異或(XOR)[11]。舉一個例子,假設你的網絡隻有兩個輸出,當其中一個輸出被激活時,異或函數應該產生一個輸出(但當兩個輸入同時被激活的時候,則不會產生輸出)。要證明單層感知器無法表示異或狀態很容易,感興趣的讀者可以在附錄D中找到更多信息。

明斯基和帕普特的書似乎給出了相當全麵的結論,不過時至今日仍然存有爭議。該理論結果證明了某些類別的感知器在基礎結構層麵具有嚴重局限性,這似乎就意味著基於感知器的通用模型存在局限性。而如圖16所示的多層感知器並不受這些限製:從精準的數學定義來說,可以證明多層感知器完全能夠普遍適用。然而,在當時,沒人知道該如何訓練一個具有多層感知器的網絡:它隻是一個理論上可能出現的網絡結構,在現實中無法構造。20年後,隨著科學的發展,它才從理論走向實踐。

我很懷疑,當年對感知器太過激進的宣傳間接導致了對它的負麵結論下得如此武斷。比如,1958年《紐約時報》上某篇文章興奮地報道[64]:

美國海軍今天公布了一個電子計算機雛形,人們期望它能夠行走、說話、視物、書寫、自我複製,並且意識到自己的存在。

對於神經網絡研究衰落的確切原因,我們可以展開各種辯論,但不管是什麽,到了20世紀60年代末,神經網絡研究急劇衰落。人們轉而支持麥卡錫、明斯基和西蒙倡導的符號人工智能的方式(諷刺的是,神經網絡研究的衰落僅僅發生在人工智能寒冬——我們在第二章裏提到過——出現的前幾年)。1971年,羅森布拉特死於一次航海事故,使得神經網絡研究領域失去了一員主力大將。如果他能活下來,人工智能的曆史也許會有所不同。總之,在他死後,神經網絡的研究被擱置了十多年。

連接主義(神經網絡2.0)

神經網絡研究領域一直處於休眠狀態,直到20世紀80年代才開始複蘇。一本分上下兩冊出版的書籍《並行分布式處理》[65],預示著神經網絡研究領域的複興。並行和分布式處理(簡稱PDP)是計算機科學研究的一個主流領域,它主要研究如何建立能夠並行運算的計算機係統。乍一看,這本書跟人工智能或者神經網絡毫無關聯,而且我想某些看了書名就買書的人,在發現本書的內容和神經網絡有關的時候,會感到無比困惑。或許作者選擇這個標題就是為了跟之前的神經網絡研究撇清關係吧。

從某種意義上來說,新興研究的最重要部分也沒那麽新穎:它主要研究多層神經網絡,可以輕易克服明斯基和帕普特所斷定的簡單感知器係統的局限性。不過跟之前的研究仍然有一點關鍵的區別。以前關於感知器的研究主要集中在單層網絡上,因為當時沒有人知道如何“訓練”多層神經網絡,也不知道如何找出神經元之間連接的權重值。PDP以一種被稱為反向傳播的算法為這個問題提供了解決方案,這或許是神經網絡領域中最重要的一門技術。

就如科學研究中經常發生的情況一樣,反向傳播似乎在過去的幾年裏被發明和重新發明過很多次,但是PDP研究人員引入的特定方法最終確定了它的地位[66]。

如果要完整地解釋反向傳播算法,我們必須引入本科水準的微積分知識,這遠遠超出了本書設定的範圍。不過反向傳播算法的基本思想很簡單,它的工作原理是收取神經網絡出錯的反饋,這裏的錯誤是在網絡的輸出層的輸出(比如網絡輸入了一張貓的圖片,而輸出層將其歸類為一條狗)。反向傳播算法將錯誤從輸出端向輸入端逐層逆向修正(算法也是因此而得名的)。它首先計算誤差值(即輸出的數據和期望得到數據之間的差值),在給定輸入和輸出的情況下,誤差是一個和權重有關的函數,需要通過修正權重值使得誤差值達到極小(即盡量減少誤差)。根據誤差值能夠得到等值線圖,在等值線圖上體現為最陡的下降路線,即為從當前的誤差到我們期望的最小誤差的方法。這個通過調整權重值來減少誤差值,最終接近極小誤差(即輸出結果盡量接近期望輸出)的過程被稱為梯度下降。然後,調整完最後一層權重以後,逐級往前調整,以此類推。

PDP還提供了比感知器更適用的神經元模型。感知器模型本質上還是二進製的計算單元(狀態為開或者關),而PDP的神經元模型更具備通用性。

反向傳播算法的發展和PDP研究界引入的其他創新,使得神經網絡具備廣泛應用的可行性,這遠遠超出了20年前感知器模型的簡單演示,人們對神經網絡的發展興趣倍增。但事實證明,PDP的泡沫也沒有持續太久。到了90年代中期,神經網絡研究再次失寵。事後看來,神經網絡車輪從PDP研究這輛馬車上脫落的原因,並非研究基礎有固有缺陷這類硬傷,而是源於一個平淡無奇的理由:當時的計算力不夠強大,無法承載新技術。並且,PDP的進步似乎十分緩慢,而機器學習的其他領域又在飛速發展,因此,機器學習的主流熱點,又一次從神經模型上轉移開了。

深度學習(神經網絡3.0)

我想起2000年前後參與的一個學術人工智能特派專家組的經曆。小組的一位成員試圖說服我們拒絕任何從事神經網絡研究的申請人。“這是一個富有影響力、充滿機會的領域,”他辯稱,“我們為什麽要雇用一個研究夕陽產業的人呢?”不過我們忽視了他的意見。但公正地說,在2000年,你必須具備非凡的遠見卓識才能預測到神經網絡即將再次複興。到了2006年前後,一場複蘇確實開始了,它引起了人工智能史上規模最大、宣傳最廣的爆發。

推動第三次神經網絡研究浪潮的關鍵技術被稱為深度學習[67]。我倒是很樂意告訴你深度學習可以用某個單一的關鍵理念描述出來,可惜,事實上,這個術語指代的是一係列相關思想的合集。深度學習至少可以從三個不同的方麵解讀。

其中最重要的,顧名思義,就是網絡要具備“深度”,即多層結構。每一層可以在不同的抽象層麵上處理一個問題——靠近輸入層的層麵處理數據中比較低級的概念(例如圖片的邊緣之類),而越是到了深層網絡,就處理越為抽象的概念。

深度學習不僅僅體現在“深度”上,還能夠享受神經元數量劇增的益處。一個典型的1990年的神經網絡可能隻有大約100個神經元(如果你沒忘的話,人類的大腦大約有1000億個神經元)。這樣的網絡在處理具體問題上顯然十分具有局限性。到了2016年,先進的神經網絡已經擁有大約100萬個神經元了(這個數量和蜜蜂的大腦大致相同)[68]。

最後,深度學習使用的深層次網絡中,神經元本身的連接數量也十分可觀。在20世紀80年代出現的高度連接神經網絡中,每個神經元可能與其他神經元產生150個連接。到了撰寫本書的時候,最先進的神經網絡中的神經元,已經和貓的大腦神經元連接數相當了。而人類的神經元平均擁有10 000個連接。

現在,深度神經網絡擁有更多的網絡層次結構、更多的神經元以及每個神經元擁有更多的連接,為了訓練這樣的網絡學習,就需要比反向傳播算法更先進的技術。傑夫·辛頓(Geoff Hinton)於2006年提出了這一觀點,他是一位英國出生的加拿大研究員,比任何人都認同深度學習的改革。不管怎麽說,辛頓是個了不起的人,他也是20世紀80年代PDP運動的領導人之一,同樣也是反向傳播算法的創始人之一。我個人認為他最了不起的一點在於,當PDP研究失寵後,辛頓並沒有灰心喪氣,而是堅持下來,並以深度學習的形式將神經網絡帶入另一個輝煌,他也因此受到了國際社會的讚譽。(很湊巧,辛頓正好是喬治·布爾的曾孫,我們在第三章裏提到過布爾,他是現代邏輯的奠基人之一。不過,辛頓聲稱,或許這是他和邏輯派傳統人工智能唯一的關聯。)

更深的網絡層級、更龐大的神經元結構、更廣泛的神經元連接,是神經網絡深度學習模式成功的一個關鍵因素。而辛頓和其他人在關於訓練神經網絡方麵提供的新技術是另一個關鍵因素。但深度學習真正獲得成功,還需要另外兩個因素:數據和計算能力。

數據對機器學習的重要性可以用ImageNet項目的故事來說明[69]。ImageNet來自華裔研究員李飛飛的創意。1976年她出生於北京,80年代隨父母移居美國,學習物理和電氣工程。2009年,她進入了斯坦福大學,並在2013年至2018年間帶領斯坦福大學人工智能實驗室。李飛飛認為,機器學習需要大型的、維護良好的數據集,這可以為新係統的訓練、測試和比較提供一個通用的基線,也將使整個深度學習研究界受益匪淺。因此,她啟動了ImageNet項目。

ImageNet是一個大型的在線圖像檔案庫,在撰寫本書時,已經擁有大約1400萬張圖片。ImageNet的圖片僅僅是照片而已,你可以下載為普通的數碼格式,比如JPEG。不過,最重要的是,這些圖片被詳細分為22 000種不同的類別,使用一個名為“詞匯網”[70]的在線語義詞庫標注。詞匯網的單詞被仔細分類過,例如可以識別具有相同或者相反含義的詞匯等等。現在查看ImageNet的圖片,我們可以看到它包含1032張標記為“火山口”的圖片,122張標記為“飛盤”的圖片,諸如此類。我們需要了解的一個重點是,數據庫中特定類別的圖像並非人工分類的,也不是因為看上去很相似所以列入分類——恰恰相反,舉個例子,飛盤類的圖片唯一的共同點是它包含飛盤。其中某些圖像是一個人朝另一個人扔飛盤,也有圖像是靜止在桌麵上的飛盤,沒有任何人影。每張圖片都不一樣——除了它們都包含飛盤這個要素。

2012年是技術圖像分類發展的最佳時機,當時傑夫·辛頓和他的兩位同事亞曆克斯·克裏澤夫斯基(Alex Krizhevsky)、伊利亞·蘇茨科弗(Ilya Sutskever)一起展示了名為AlexNet的神經網絡係統,它在國際圖像識別比賽中有著亮眼的表現[71]。

使深度學習發揮作用的最後一個要素是計算機的處理能力。訓練一個深度神經網絡需要大量的計算機處理時間,訓練本身要做的工作並不太複雜,但是數量龐大。21世紀初開始流行的一種新型計算機處理器被證明是計算繁重任務的理想選擇。圖形處理單元(GPU)最初是為了處理計算機圖形問題而開發的,例如為電腦遊戲中提供高質量的動畫。但這些芯片被證明是訓練深度神經網絡的完美工具。現在,每一個名副其實的深度學習實驗室裏都有GPU群——然而,不管它們擁有多少GPU,實驗室的工作人員都會抱怨還不夠。

毋庸置疑,深度學習和神經網絡取得了成功,但它們也存在一些眾所周知的缺點。

首先,它們所體現的智慧是不透明的。神經網絡所獲取的知識體現在神經元之間相互連接的權重值上,到目前為止,我們還沒有辦法解析這些知識。一個深度學習的程序可以告訴你在X光掃描圖片中哪裏有腫瘤,但它無法證明它的診斷是正確無誤的。一個拒絕為客戶提供銀行貸款的深度學習程序無法告訴你它拒絕客戶的原因。在第三章中,我們看到類似MYCIN這樣的專家係統能夠對係統結論做出粗略解釋——專家係統得出結論的推理依據是可以追溯的,但神經網絡無法做到這一點。目前有許多研究人員正在致力於解決這個問題,但是,到現在為止,我們還不知道如何解釋和表達神經網絡所包含的知識。

另一個關鍵問題是神經網絡的穩定性,這是個不易察覺但非常重要的問題。例如,如果對圖像進行細微的修正,對人類而言,這種修正完全不會影響圖像識別,但會導致神經網絡錯誤地將其分類,如圖17所示[72]。圖a是熊貓的原始圖像,圖b是經過修改的。我想你會認為這兩張圖沒什麽差別,而且你肯定會認同它們都是熊貓圖片這個結論。可是神經網絡能夠正確地將圖a分類為熊貓,但對圖b,它則錯誤地將其分類為長臂猿。為了解決這類問題而進行的研究被稱為對抗性機器學習——這個術語源自一個觀點,即有對手故意通過修改圖片參數的方式來試圖蒙騙程序。

圖17 熊貓還是長臂猿?

神經網絡可以正確地將圖像a分類為熊貓。然而,以人類無法察覺的方式調整過圖像以後,同一個神經網絡會錯誤地將圖像b分類為長臂猿。

圖像分類程序認錯了動物,倒不是什麽要緊的事情,但對抗性機器學習已經昭示了一些令人惶恐的案例。例如,事實證明,同樣的改圖方式可以影響程序對路標的識別,雖然人類肉眼看來沒什麽區別,但是在無人駕駛汽車中,神經網絡就可能誤讀路標。所以,我們要在敏感的應用程序中使用深度學習算法,就需要詳細了解這方麵的問題。

深度思維

在本章最開始提到的深度思維公司的故事完美地代表了深度學習的興起,這家公司由人工智能研究人員兼電腦遊戲愛好者德米斯·哈薩比斯(Demis Hassabis)和他的校友,企業家穆斯塔法·蘇萊曼(Mustafa Suleyman)於2010年創立,公司還有哈薩比斯在倫敦大學學院工作時認識的計算神經科學家謝恩·萊格(Shane Legg)加盟。

正如我們所知的,穀歌在2014年收購了深度思維公司,我還記得在媒體上看到這則新聞時,驚訝於深度思維是一家人工智能公司。顯然,在收購的時候人工智能成為新的熱點,這不足為奇,我驚訝的是在英國竟然有一家我沒有聽說過的人工智能公司,價值4億英鎊,這真的讓我困惑不已。和別人一樣,我立馬訪問了深度思維的網站,但坦白地說,這並沒有為我解惑。公司的技術、產品和服務都沒有任何詳細的說明。然而,它倒是提供了一個有趣的話題:深度思維公司公開宣稱其任務是解決智能問題。我已經提到過,人工智能在過去60年裏命運多舛,這讓我對任何雄心勃勃預測人工智能進步的消息保持警惕:你可以想象,看到一家剛剛被科技巨頭收購的小公司竟然發表如此大膽的聲明,讓我多麽吃驚。

不過網站上沒有提供更多細節,我當時也沒能找到更了解它的人。人工智能界的同行大多對這個聲明持懷疑態度,可能也帶有一點職業嫉妒的色彩。直到2014年末,我碰巧遇見了一位同事南多·德·雷弗斯塔(Nando de Freitas),才打聽到更多關於深度思維的消息。南多是深度學習領域世界級先驅之一,當時他是牛津大學的教授,是我的同事(後來他離開學校,去了深度思維工作)。他正好和學生們參加一個研討會,腋下夾著一堆科學論文。顯然他在為某件事情興奮著,他告訴我:“倫敦有人訓練出了一個程序,可以從頭開始玩雅達利遊戲。”

我不得不說,這有什麽好興奮的?可以玩電子遊戲的程序又不是什麽新鮮事。這種程度的挑戰我們可能會布置給本科生作為畢業項目——我就是這麽輕蔑地告訴南多的。他很耐心地給我詳細解釋,我們確實已經進入了人工智能的新時代。

南多提到的雅達利遊戲係統基於早期的雅達利2600係列遊戲機,那是1980年前後的產品,是最早獲得成功的視頻電子遊戲平台之一:它支持210×160像素網格的大分辨率視頻,支持128位顏色。用戶通過一個帶單獨按鈕的操作杆進行操作,遊戲機使用插卡式遊戲卡帶,深度思維用的遊戲卡帶一共有49個遊戲。他們對人工智能的描述如下[73]:

我們的目標是構建一個單一的神經網絡遊戲智能體,它能夠學習玩盡可能多的遊戲。神經網絡沒有提供任何特定遊戲的信息或者額外加入的視覺要素,也不了解遊戲機的內部狀態。它隻能從顯示屏所反饋的東西進行學習(即遊戲分數),以及弄清楚到底該怎麽操作遊戲——就像人類玩家一樣。

為了理解深度思維成就的意義,了解他們的程序到底做了什麽以及沒做什麽,這一點非常重要。或許最重要的一點是,程序對自己正在玩的遊戲一無所知。如果我們試圖用第三章中提到的基於知識的人工智能來構建一個雅達利遊戲程序,首先會考慮從雅達利遊戲機中提取的專家係統知識,並嚐試使用規則或其他一些表示知識的方案對其進行編碼(如果你想試試的話,祝你好運)。但是深度思維的程序根本沒有任何關於遊戲的知識,程序得到的唯一信息是出現在遊戲機屏幕上的圖像(以210×160彩色像素網格的形式)和遊戲的當前分數。僅僅如此,這個程序壓根沒有其他的信息可以參考。這裏要特別提出來講一下,程序沒有得到諸如“對象A在位置(x, y)上”之類的信息——任何類似的信息都需要程序從原始的視頻數據中自己提取。

程序運行的結果簡直令人驚訝[74],程序通過強化學習自學玩遊戲:反複玩同一個遊戲,在每個遊戲中進行實驗並獲得反饋,並學習哪些行為會得到獎勵,而哪些不會。雅達利遊戲程序學會了遊戲卡帶中的29個遊戲,表現出高於人類玩家平均水準的能力。在某些遊戲裏麵,它甚至達到了超人的水準。