1. 程式人生 > >Yoshua Bengio首次中國演講:深度學習通往人類水平AI的挑戰

Yoshua Bengio首次中國演講:深度學習通往人類水平AI的挑戰

11 月 7 日,Yoshua Bengio 受邀來到北京參加第二十屆「二十一世紀的計算」國際學術研討會。會上以及隨後受邀前往清華時,他給出了題為「深度學習通往人類水平 AI 的挑戰」(Challenges for Deep Learning towards Human-Level AI)的演講。機器之心在 Yoshua Bengio 的授權下介紹了整篇演講,讀者可點選「閱讀原文」下載 PPT。

演講中,Bengio 以去年釋出在 arXiv 的研究計劃論文「有意識先驗」(The consciousness prior)為主旨,重申了他與 Yann Lecun 十年前提出的解糾纏(disentangle)觀念:我們應該以「關鍵要素需要彼此解糾纏」為約束,學習用於描述整個世界的高維表徵(unconscious state)、用於推理的低維特徵(conscious state),以及從高維到低維的注意力機制——這正是深度學習通往人類水平 AI 的挑戰。

雖然主題看起來比較廣大,但實際上,Bengio 討論了非常多的技術細節內容。

圖:Bengio在清華

Bengio 認為,直觀上而言,目前的深度神經網路非常擅長於從文字影象等原始資料抽取高層語義資訊,它們會直接在隱藏空間做預測,這就類似於在無意識空間做預測。但是實際上每一次預測所需要的具體資訊都非常精簡,因此實際上我們可以使用注意力機制挑選具體的資訊,並在這種有意識空間進行預測,這種模型和建模方法才能真正理解最初的輸入樣本。

演講

今天我將介紹我與合作者共同探討的一些問題,關於深度學習研究的下一步發展以及如何通向真正人工智慧。

在此之前,我想先糾正一個目前看來非常普遍的誤解,即「深度學習沒有理論依據,我們不知道深度學習是如何工作的。」

我的很多工作都圍繞深度學習理論展開。這也是為什麼我在大約 12 年前開始研究深度學習的原因。雖然深度學習仍然有諸多未解之謎,但現在我們已經對它的很多重要方面有了更好的理解。

我們更好地理解了為什麼優化問題並不像人們想象中那樣棘手,或者說區域性極小值問題並不像 90 年代的研究者認為的那樣是一個巨大障礙。我們更好地理解了為什麼像隨機梯度下降這樣看起來非常「腦殘」的方法實際上在優化和泛化方面都非常高效。

這只是我們在過去十年中學到的一小部分,而它們有助於我們理解為什麼深度學習真正好用。數學家和理論研究者仍然對此展現出了極大的興趣,因為深度學習開始在諸多領域變得極為重要。

從人類的兩種認知型別解釋經典 AI 與神經網路的失敗

我今天演講的主題是「通往人類水平的 AI」:我們試圖讓計算機能夠進行人與動物所擅長的「決策」,為此,計算機需要掌握知識——這是幾乎全體 AI 研究者都同意的觀點。他們持有不同意見的部分是,我們應當如何把知識傳授給計算機。

經典 AI(符號主義)試圖將我們能夠用語言表達的那部分知識放入計算機中。但是除此之外,我們還有大量直觀的(intuitive)、 無法用語言描述的、不能通過「意識」獲得的知識,它們很難應用於計算機中,而這就是機器學習的用武之地——我們可以訓練機器去獲取那些我們無法以程式設計形式給予它們的知識。

深度學習和 AI 領域有很大進步、大量行業應用。但是它們使用的都是監督學習,即計算機無需真正發掘底層概念、高階表徵和資料中的因果關係。事實上,如果你用不同的方式攻擊這些模型,就像很多對抗方法所做的那樣,僅僅微調輸入,也會使模型變得非常愚蠢。

舉例來說,我們在一篇論文中改變影象的傅立葉頻譜,變換後,影象的類別對於人類來說仍然很明顯,但是在自然影象上訓練的卷積網路的識別率則變得非常糟糕。

對我來說,現在的系統的失敗之處在於,它們無法捕捉我們真正想讓機器捕捉到的高階抽象(high level abstraction)。事實上,這是我和合作者希望設計出能夠發現高階表徵的學習機器的原因:這樣的表徵可以捕捉構成資料的根本因素。

我在大約十年前介紹過「解糾纏」(disentangle)這個概念,即在一個好的表徵空間中,不同要素的變化應該可以彼此分離。(而在畫素空間中,所有的變化都彼此糾纏著的。)十年之後,我們認為,除了解糾纏變數,我們還希望系統能解糾纏計算。解糾纏和因果的概念相關,而因果正是機器學習界需要重點關注的領域,我將在之後回到這個話題的討論。

五年前,我在一篇綜述論文提出,為了還原那些可以解釋資料的根本要素,我們需要引入知識。我們不能只是從零開始學習,還需要對世界作出一些可能比較溫和的假設。這對於解糾纏變數會有幫助。空間、時間以及邊際獨立性可能是一些過於強的假設,但也值得考慮。

一個先驗是某些要素對應於世界的某些「可控層面」(controllable aspect)。例如我手上這個翻頁器,它有一個三維座標,而我可以通過移動它改變座標。這種空間位置體系在我們的大腦中也明確存在,因為這是我們能控制的世界層面。

因此在世界的意圖、動作、策略和層面的表徵之間有著很強的聯絡。與其用最底層的畫素表徵關於世界的資訊,對於智慧體而言,用更高階的、可互動的、與控制相關的要素來表徵資訊會方便的多。

在談及具體的深度學習工作之前,讓我先介紹一下心理學家是如何劃分人類認知活動的,這有助於我們理解當前深度學習的優勢以及我們應該如何走向人類水平的 AI。

人類的認知任務可以分為系統 1 認知(System 1 cognition)和系統 2 認知(System 2 cognition)。系統 1 認知任務是那些你可以在不到 1 秒時間內無意識完成的任務。例如你可以很快認出手上拿著的物體是一個瓶子,但是無法向其他人解釋如何完成這項任務。這也是當前深度學習擅長的事情,「感知」。系統 2 認知任務與系統 1 任務的方式完全相反,它們很「慢」。例如我要求你計算「23+56」,大多數人需要遵循一定的規則、按照步驟完成計算。這是有意識的行為,你可以向別人解釋你的做法,而那個人可以重現你的做法——這就是演算法。電腦科學正是關於這項任務的學科。

而我對此的觀點是,AI 系統需要同時完成這兩類任務。經典 AI 試圖用符號的方法完成系統 2 任務,其失敗的原因很多,其中之一是我們擁有的很多知識並不在系統 2 層面,而是在系統 1 層面。所以當你只使用系統 2 知識,你的體系缺少了一部分重要的內容:那些自下而上的有根源知識(Grounded knowledge)。有根源自然語言學習(Ground language learning)是 NLP 的一個子領域,研究者試圖用除了文字之外的其他形式,例如影象、視訊,去將語言與感知層面的知識聯絡起來,構建一個世界模型。

意識先驗

我接下來將介紹意識先驗,意識領域的研究正逐漸變成主流。我在這裡將聚焦於意識的最重要問題:當你注意某些東西,或者在你的意識中浮現了某些東西的時候,你意識到了它的某些現實層面情景。

深度學習的表徵學習關注資訊如何被表徵,以及如何管理資訊。因此對於意識先驗很基本的一個觀察是,在特定時刻處於你意識中的想法(thought)是非常低維的。其資訊量可能不超過一句話、一張影象,並且處於一個你可以進行推理的空間內。

你可以將一個「想法」看做是經典 AI 中的一條「規則」。每個想法只涉及很少的概念,就像一句話中只有幾個單詞。從機器學習的角度來看,你可以利用很少的變數進行預測,準確度還很高。這種具有良好性質的低維表徵空間是非常罕見的,例如,嘗試通過給定的 3 到 4 個畫素來預測 1 個畫素是不可行的。但是人類可以通過自然語言做到這一點。例如,如果我說「下雨時,人們更可能會撐傘。」這裡僅有兩個二值隨機變數,是否下雨和是否撐傘。並且這種語句具備很強的預測能力。即使它僅使用了很少的變數,也能給出很高概率的預測結果。也就是說,根據很少的資訊來執行預測。

因此,我將「意識」稱作一個「先驗」,是因為意識是一個約束條件、一個正則化項、一個假設:我們可以用非常少的變數進行大量的預測。

滿足這些條件意味著我們需要好的空間表徵。好的表徵的一個特性是當把資料對映到該空間時,變數之間的依賴關係只需要用很少的概念表達(例如規則),且涉及很少的維度。

學習好的表徵意味著可以將知識用兩種方式表達:在編碼器中,將原始資料對映到高階空間;通過規則將變數關聯起來並執行預測。

因此我們有兩種形式的解糾纏。我以前的論文僅考慮瞭解糾纏變數,現在我們還考慮瞭解糾纏規則。如果我們將這些變數看成是代表因果變數的因子,這對應著一種因果機制。因果變數是指在因果陳述中使用的變數,例如「下雨導致人們撐傘」。這些變數需要處在一個好的表徵空間來作出因果陳述。畫素空間並非能夠進行因果陳述的合適表徵空間:我們無法說某些畫素的改變導致了其它畫素的改變,而在因果空間中推理是可行的。

那麼要如何實現這種表徵呢?對此,注意力機制是一種很重要的工具。注意力機制在過去幾年獲得了很大的成功,尤其是在機器翻譯中,它可以按順序選取重點關注的資訊。

更棒的是你可以使用軟注意力來實現整個系統的端到端訓練。我們不需要設計一個獨立的系統來做這種選擇。你可以將注意力機制作為在某些全域性目標下端到端訓練的更大系統的一部分。而這正是深度學習擅長的地方。

在架構方面,意識先驗在「原始輸入」和「某些更高階的表徵」之外,還引入了第三個層次:這也就是有意識狀態(conscious state)。

如上所示無意識狀態通常是深度學習所考慮的表徵,是模型將資料對映到的一些表示空間。這些隱藏表徵通常有非常高的維度與稀疏性,因為任何時候都只有少數變數與輸入相關。在此之外,我們還會使用注意力機制選擇無意識狀態(高維隱藏表徵)的幾個重要維度,並在有意識狀態下表示它們。進入有意識狀態的資訊就像短期記憶,我們可以使用注意力機制選擇一些重要的資訊,並通過某種互動表示它們。

這個理論框架還有非常多的細節需要完善,去年我們主要關注其中的一個方面:目標函式。機器學習和深度學習中的標準訓練目標函式都基於最大似然估計,而即使與最大似然無關的目標函式,例如 GAN 的一些目標函式,也是在畫素級別進行構建的。然而,我們實際上想要在隱藏空間中表現出可預測性。

這很難做到,但我們其實可以訓練一些不需要返回到畫素空間的機器學習演算法,例如主成分分析(PCA)。我們可以像自編碼器那樣用最小化重構誤差訓練 PCA:這是在畫素空間中構造目標函式,但同時我們也可以在隱藏空間中訓練它,例如我們希望降維後的表徵每一個都有非常大的方差,從而捕捉到足夠多的輸入資訊。

但我們不止想做 PCA,我們希望有更強大的模型。其中一個很好的擴充套件概念是互資訊(mutual information),它允許我們在編碼器輸出的隱藏空間中定義目標函式。這個想法很早就已經提出來了,在聯接主義的早期,Suzanna Becker 就認為我們應該「尋找資料變換的方法,使空間中的近鄰特徵擁有比較高的互資訊水平」,以此進行無監督影象學習。我認為這是一個被遺忘的重要方向。

注:接下來 Bengio 沿著互資訊這個方向介紹了很多研究論文,包括它們的基本過程、核心思想和技術等,這裡只給出了研究論文列表,感興趣的讀者可以檢視原論文。
  • Learning Independent Features with Adversarial Nets for Non-linear ICA,ArXiv:1710.05050
  • MINE: Mutual Information Neural Estimation,ArXiv:1801.04062

意識先驗的現實意義:世界模型實現人類水平的語言模型

回到系統 1 和系統 2 認知任務,以及意識先驗。這些概念的實際意義是什麼?

首先,為了真正理解語言,我們要構建同時具有系統 1 和系統 2 能力的系統。當下的 NLP 演算法與 NLP 產品,無論是機器翻譯、語音識別、問答系統,還是根本不能理解任何東西的閱讀理解,所有這些系統都僅僅是在大型文字語料庫和標籤上做訓練而已。

我認為這樣是不夠的,你可以從它們犯的錯誤中發現這一點。舉個例子,你可以對系統做個測試,看他們能否消除這些 Winograd 模式歧義句:「The women stopped taking pills because they were pregnant(懷孕).」這裡的「they」指什麼?是 women 還是 pills?「The women stopped taking pills because they were carcinogenic(致癌)」這句中的「they」又指代什麼?事實證明,機器僅僅通過研究樣本的使用模式是不足以回答這個問題的,機器需要真正理解「女性」和「藥」是什麼,因為如果我把「懷孕」換成「致癌」,答案就從「女性」變成了「藥」。在人類看來這個問題非常簡單,但是現有的機器系統回答起來比隨機猜測好不了多少。

當我們想要構建能理解語言的系統時,我們必須問問自己,對於機器而言理解問題或文件意味著什麼。如果它們需要相關知識,那麼從哪裡獲取這些知識呢?我們又該如何訓練那些具備特定知識的系統?

有一個個思想實驗可以幫助我們看清僅在文字上訓練模型的侷限。想象一下你乘坐宇宙飛船到達另一個星球。外星人說著你聽不懂的語言,這時如果你能夠捕捉到他們在交流中傳達的資訊,或許你可以訓練語言模型以理解外星語言。而那個星球與地球有一個區別:那裡的通訊通道不帶噪聲(地球上的通訊通道是有噪聲的,因此,人類語音為了在噪聲中保持魯棒性,包含了大量資訊冗餘。)

由於外星的通訊通道沒有噪聲,因此傳輸資訊的最佳方式是壓縮資訊。而資訊被壓縮後,看起來和噪聲沒什麼區別:在你看來,它們交換的都是一些獨立同分布的位元資訊,語言建模和 NLP 工具也無法幫到你。

這個時候我們該怎麼辦呢?我們需要做更多工作。僅觀察資訊本身是不夠的,你必須找出它們的意圖,理解它們的語境和行為的原因。因此,在語言建模之外,你必須建模環境並理解原因,這意味著大量額外工作。AI 領域研究者「懶惰」又「貪婪」,他們不想進行額外工作,因此他們嘗試僅通過觀察文字來解決語言理解問題。然而很不幸,這並不會給出有效解決方案。

一種可行方法是先學習一個不錯的世界模型,然後基於該模型解決語言問題,就像根據語言模型弄清楚某個單詞的意義一樣。我認為嬰兒在一定程度上就是這麼做的,因為嬰兒並非一開始就使用語言進行學習,最初它們只是嘗試理解環境。但是在某個時間點,將「學習語言模型」和「學習世界模型」兩種學習模式結合起來是有益的。

語言可以提供良好表徵。因為如果想弄懂這些語義變數,深度學習應該從感知器中提取出語義。比如你媽媽說「狗」,恰好這時你看到了一隻狗,這就很有幫助,因為當你在不同語境中使用這個詞時你的感官感知是不同的。這就是監督學習效能好的原因。

事實上,以監督學習方式訓練出的深層網路的表徵比無監督模型好很多,最起碼對於目前的無監督學習來說。我認為應該將二者結合起來,不過你必須理解世界的執行方式。世界執行方式的一個方面是因果關係,機器學習目前對此缺乏關注。

具體而言,我們的學習理論在這方面仍然很匱乏。目前的學習理論假設測試分佈與訓練分佈相同,但是該假設並不成立。你在訓練集上構建的系統在現實世界中可能效果並不好,因為測試分佈與訓練分佈不同。

因此我認為我們應該建立新的學習理論,它應該不會基於「測試分佈與訓練分佈相同」這樣生硬的假設。我們可以採用物理學家的方式,假設訓練分佈和測試分佈的底層因果機制相同。這樣即使動態系統的初始條件不同,底層物理機制仍然不會改變。

那麼如何去做呢?事實上,構建好的世界模型令人望而生畏,我沒有足夠的計算能力對真實世界建模,因此我認為更合理的方法是利用機器學習,機器學習研究不是關於 AI 應該具備哪些知識的研究,而是提出優秀的學習演算法的研究。優秀的機器學習演算法理應在任何分佈中都可以良好執行。

近年來深度學習社群湧現了大量關於搭建虛擬環境的研究,如在深度強化學習體系下,人們構建虛擬環境並在其中測試不同的智慧體學習步驟。深度強化學習最酷的一點是便於做科學實驗,我們可以藉助虛擬環境測試理論,更快速地獲取反饋。

在我實驗室開始的一個專案,是 1971 年 Winograd 用 SHRDLU 系統進行 blocks world 實驗的延伸。他們當初試圖建立一個能夠用自然語言執行任務的系統,比如「拿起一個紅色的木塊」,但他們試圖用基於規則的經典 AI 來實現目標。這在某種程度上起作用了,但它和大多數規則系統一樣非常脆弱。它無法擴充套件,因為你需要手動設計大量知識,像當前大多數脆弱且無法擴充套件的對話系統一樣。我認為,除非我們真正做更多的基礎研究,否則這種情況不會改善。


BabyAI 平臺:模擬世界模型

所以我們構建了一個叫做 BabyAI(或 BabyAI game)的平臺,其中設定了有一個「學習者」和一個「人類」的遊戲或場景。

學習者就是「baby AI」,我們要為學習者設計學習演算法,而其中的人類與學習者互動,並使用自然語言幫助它理解周圍的環境。人類可以通過課程學習(curriculum learning)、為學習者設計正確的問題以及考慮學習者知道什麼和不知道什麼等等來幫助它。當然了,課程學習本身就是一個有趣的研究領域,因為如果我們能夠構建出計算機與人類互動的更好系統,那也會非常有用。

所以我們在 2D 網格世界中構建了一個非常簡單的環境,並能在其中使用類似「把藍色鑰匙放在綠色的球旁邊」這種簡單的自然語言表述。

在這個階段,我們有 19 個學習者應該能夠學習的難度級別和任務型別。我們還設計和訓練了一個知道如何解決任務的啟發式專家。當然,這個專家扮演的是人類的角色,因為在這個階段,我們實際上還不想讓人類參與進來。所以我們希望能夠模擬人類,然後檢視和測試不同的學習者表現如何。

我們有更大的版本,不同級別有不同的房間數量和不同類別的任務。我們定義了一系列的概念,比如房間和迷宮,也定義了一系列動作,如去某個地方、開啟、撿、放等等,以及使用這些概念的不同任務。當你進階學習更加複雜的任務,需要的概念也越來越多。

但是,我們目前嘗試過的機器學習方法還做不到這一點。如果我們有真正的人類來教 baby,他們就不需要給 baby 提供成百上千的軌跡示例。

我們嘗試了模仿學習和強化學習。在強化學習中,人類會提供獎勵。在學習者收斂之前,他需要在數百萬軌跡上提供數百萬條獎勵。但即使是效率更高的模仿學習(類似監督學習),如果要從模仿示例中學習,對於一個人來說,花時間訓練這些系統還是遠遠超出了我們認為的合理範圍。

我們還發現當前的系統可以非常快速地學習來做這樣的工作,但要達到 99% 的正確回答率還需要大量訓練。因此我們認為可以用這些基準來研究簡單效率資料、不同學習程式效率。