當前位置:
首頁 > 科技 > 解析深度學習的局限性與未來,谷歌Keras之父「連發兩文」發人深省

解析深度學習的局限性與未來,谷歌Keras之父「連發兩文」發人深省

深度學習:從幾何角度

深度學習最令人驚訝的是,它是多麼的簡單。十年前,沒有人敢預計,通過使用梯度下降訓練的簡單參數模型,我們能夠在機器感知問題上實現如此驚人的結果。現在,事實證明,我們需要的是足夠大的參數模型利用梯度下降訓練足夠多的樣本。

在深度學習中,一切都是一個向量,即一切都是幾何空間中的一個點。模型輸入(它可以是文本、圖像等)和目標首先被「向量化」,即變成一些初始輸入向量空間和目標向量空間。深度學習模型中的每個層都對通過它的數據進行一個簡單的幾何變換。同時,模型的層鏈形成一個非常複雜的幾何變換,分解成一系列簡單的幾何變換。這種複雜的轉換嘗試將輸入空間映射到目標空間,一次一個點。該變換由層的權重進行參數化,這些層根據模型當前執行的程度進行迭代更新。這種幾何變換的一個關鍵特徵是,它必須是可微分的,這是為了使我們能夠通過梯度下降,這是學習其參數所必需的。直觀地講,這意味著從輸入到輸出的幾何變形必須是平滑和連續的——這是一個重要的約束。

將這種複雜的幾何變換應用到輸入數據的整個過程,可以通過想像一個試圖弄平一張褶皺的紙球的人,在三維中的可視化進程:皺巴巴的紙是模型開始的輸入數據的多餘部分;由紙上的人操作的每個動作都與一層操作的簡單幾何變換相似;完整的手勢的序列是整個模型的複雜變換;深度學習模型是用於解決高維數據的複雜流形的數學機器。

這就是深度學習的魔力:將意圖轉化為向量,轉化為幾何空間,然後逐步學習將一個空間映射到另一個空間的複雜幾何變換。所有你需要的是,具有足夠高維度的空間,以便捕獲在原始數據中找到的關係的全部範圍。

深度學習的局限性

可以通過這種簡單的策略實現的應用空間幾乎是無限的。然而,深度學習技術還有更多的應用是目前完全無法實現的,即使有大量的人為注釋的數據。比方說,你可以組合一個數據,數十萬甚至數百萬的英文語言描述軟體產品的功能,該說明由產品經理編寫,同時由一個團隊開發的相應的源代碼工程師滿足這些要求。即使有這些數據,你也無法訓練一個深度學習模型,簡單地讀取產品描述,並生成相應的代碼庫。這只是其中的一個例子。一般來說,無論你投入多少數據,只要是任何需要推理的東西,比如編程,或應用科學方法,或是類似演算法的數據操作,都無法使用深度學習模型。即使學習一個具有深度神經網路的分類演算法也是非常困難的。

這是因為,一個深度學習模型是「簡單的」連續的幾何變換鏈,將一個向量空間映射到另一個空間。所有它會做的是,將一個數據流形X映射到另一個流形Y,假設存在從X到Y的可學習的連續變換,以及X:Y的密集採樣的可用性作為訓練數據。所以,即使一個深度學習模型可以被解釋為一種程序,相反的是,大多數程序不能表示為深度學習模型——對於大多數任務,要麼沒有相應的實際大小的深度神經網路來解決任務,要麼即使存在,它可能不可學習,即相應的幾何變換可能太複雜,或者可能沒有可用的數據來學習它。

通過堆疊更多層次、使用更多的訓練數據,以擴展當前的深度學習技術,只能表面緩解其中的一些問題。深度學習模型可以表述的東西非常有限,而且大多數希望學習的程序不能被表達為數據流的連續的幾何變形,這不能解決根本問題。

擬人機器學習模型的風險

人工智慧目前具有的一個非常真實的風險——人們誤解了深度學習模型,並高估了它們的能力。人類思想的一個根本特徵是我們的「思想理論」,我們傾向於對我們周圍的事物設計意向、信仰和知識。在岩石上畫一個笑臉,突然讓我們「開心」。應用於深度學習,這意味著,例如,當我們能夠成功地訓練一個模型以生成描述圖片的說明時,我們誤認為該模型「理解」了圖片的內容以及圖片它生成的內容。但是,當訓練數據中存在的圖像中輕微的偏離,使得模型開始生成完全荒謬的說明時,我們又非常驚訝。

案例:這個「男孩」正拿著一個「棒球棒」(正確說明應該是「這個女孩正拿著牙刷」)

特別需要說明的是,我們要強調一下「對抗樣本」,它是深度學習網路的輸入樣本,旨在欺騙模型進行錯誤分類。你已經意識到,可以在輸入空間中進行梯度上升,以生成最大限度地激活某些卷積網路過濾器的輸入。類似地,通過梯度上升,可以稍微修改圖像,以便最大化給定類的類預測。通過拍攝一隻熊貓,並添加一個「長臂猿」梯度,我們可以得到一個神經網路將這隻熊貓分類為長臂猿。這證明了這些模型的脆弱性,以及它們運行的輸入到輸出映射與我們自己的人類感知之間的深刻差異。

簡而言之,深度學習模型對他們的輸入沒有任何理解,至少在任何人類意識層面上沒有。我們對圖像、聲音和語言的理解基於我們的感覺運動經驗。機器學習模型是無法獲得這種經驗的,因此不能以任何人為本的方式「理解」他們的輸入。通過注釋大量的訓練示例,填充我們的模型,我們讓他們學習幾何變換,將數據映射到這個特定的一組示例上的人類概念,但是這個映射只是我們腦子中原始模型的簡單草圖,從我們的經驗中開發出來的具體智能體——就像一面鏡子中的一個昏暗的形象。

作為一名機器學習從業者,始終要注意這一點,而不要陷入陷阱,認為神經網路了解他們所執行的任務——他們不會的,至少不會對我們有什麼意義。他們接受了不同於我們教給他們的、不同的、更有限的任務訓練:僅將訓練輸入點對點地映射到訓練目標。如何向他們展示任何偏離訓練數據的東西,他們將以最荒謬的方式被打破。

局部泛化與極端泛化

在深度學習模型所做的輸入與輸出之間的簡單的幾何變形,以及人類思考和學習的方式之間似乎存在著根本的區別。人類不僅提供了具體的體驗感,而且還提供了明確的訓練實例。除了不同的學習過程之外,底層表徵的性質存在著根本的區別。

人類的能力可遠比應激反應,比如深度網路或者也許是昆蟲複雜多了。他們對自己目前的狀況,對自己的情況提取複雜、抽象的模型,並且可以使用這些模型預測未來不同的可能性,並執行長期規劃。他們有能力將已知概念融合在一起,以代表以前從未經歷過的事情——比如說想像穿牛仔褲的馬,或想像如果他們贏得彩票,他們會做什麼。這種處理假設的能力,擴展我們的心理模型空間遠遠超出了我們可以直接體驗到的一切,執行抽象和推理過程,這可以說是人類認知的特徵。我稱之為「極端泛化」:適應異常的、在情境之前從未經歷過、使用非常少的數據,甚至沒有新數據得能力。

這與深度網路形成了鮮明的對比,我稱之為「局部泛化」:如果新的輸入與訓練時間內的差異甚微,則從深度網路輸入到輸出的映射快速停止。例如,給定學習適當的發射參數,以使得火箭登陸月球的問題。如果你使用深度網路進行此項任務,無論是使用監督學習還是強化學習進行訓練,都需要數千,甚至數百萬次的啟動試驗樣本,即你需要將其暴露給輸入空間的密集採樣,以便學習從輸入空間到輸出空間的可靠映射。相比之下,人類可以利用他們的抽象力來提出物理模型,並得出一個精確的解決方案,只需一次或幾次試驗即可成功試射火箭。同樣,如果你開發出一個控制人體的深度網路,並希望它學會安全地通過一座城市,而不會受到汽車的撞擊,那麼該網路會導致該人體在多種情況下都要死亡數千次,直到可以推斷出這輛車和危險的,並制定適當的迴避行為。進入一個新城市,網路必須重新學習大部分的知識。另一方面,人類能夠學習安全行為,而不必再次死亡,這要歸功於假設情境的抽象建模。

簡而言之,儘管我們在機器感知方面取得了進步,但我們仍然離類人AI非常遠:我們的模型只能執行局部泛化,適應與過去數據非常相似的新情況,而人類認知能夠極端泛化,迅速適應新奇的情況,或為長期未來的情況進行規劃。

這就是你應該記住的:迄今為止,深度學習唯一真正的成功是,使用連續的幾何變換將空間X映射到空間Y的能力,給出了大量的人為標註的數據。基本上,做好這一切,是改變每個行業的遊戲規則,但從類人AI的角度來看,仍然有很長的路要走。

為了解決這些限制,並開始與人類大腦進行競賽,我們需要簡單的輸入到輸出的映射,以及推理和抽象能力上的進步。對各種情況和概念進行抽象建模的基礎是計算機程序。我們以前說過,機器學習模型可以被定義為「可學習的程序」;目前,我們只能學習屬於所有可能程序的一個非常狹窄和特定子集的程序。但是,如果我們可以以模塊化和可重複使用的方式學習任何程序怎麼辦?讓我們在下一篇文章中看到未來可能是什麼樣子的。

7月19日,第二篇

鑒於我們已經了解深度網路的工作方式,局限性以及目前的研究情況,我們是不是就可以預測中期的發展方向嗎?這僅僅是些純粹的個人想法。請注意,我沒有水晶球,所以我預期的很多可能不會成為現實。這僅僅是一篇關於猜測的文章。我之所以分享這些預測,並不是因為我希望這些猜測在未來被證明是完全正確的,而是因為現如今的它們確實是非常有趣和可行的。

從一個高層次上來講,我看到那些具有前景的主要方向是:更接近於通用計算機程序的模型,建立在比目前可微層更豐富的原始數據層之上,這就是我們將推理和抽象的方式,而這也是當前模型的根本弱點。新形式的學習,從而使上述模型成為可能——允許模型從簡單可微轉換中脫離。幾乎不需要人力工程師參與的模型——無休止地調整旋鈕不應該是你的工作。更好地、更系統地重用以前學習的特徵和架構;基於可重用和模塊化程序子程序的元學習系統。

此外,請注意,這些考量不是特定於監督學習的,它是深度學習的基礎,而是適用於任何形式的機器學習,包括無監督學習、自監督學習和強化學習。你的標籤來自哪裡或你的訓練迴路看起來如何,這些都不是很重要,機器學習的這些不同的分支只是同一結構的不同方面罷了。

模型作為程序

正如我們在文章前一部分所指出的那樣,我們在機器學習領域所期望的必要的轉型發展,是從純模式識別的模型中脫離出來的,且它只能實現局部泛化,而對於那些能夠抽象和推理的模型,才能實現極端泛化。目前那些具有基本形式推理能力的AI程序都是由人類程序員通過硬編碼實現的:例如那些依賴於搜索演算法、圖形處理、形式邏輯的軟體。比如在DeepMind的AlphaGo中,顯示器上的大部分「智能」是由專家程序員(例如蒙特卡羅樹搜索)進行設計和硬編碼的;從數據中進行學習只發生在專門的子模塊(價值網路和策略網路)中。但是在未來,這樣的AI系統可能會被充分學習,而且沒有人為參與。

那麼,使這種情況發生的途徑是什麼呢?可以將眾所周知的網路類型:RNN。很重要的一點是,RNN的局限性要遠小於前饋網路。這是因為RNN不僅僅是幾何變換:它們是在for循環內重複應用的幾何變換。時間循環本身是由人類程序開發人員通過硬編碼實現的:它是網路的內置假設。當然,RNN在它們可以表徵的方面仍然具有一定的局限性,主要是因為它們執行的每個步驟仍然只是一個可微的幾何變換,並且它們從步驟到步驟中傳遞信息的方式是通過連續幾何空間(狀態向量)中的點實現的。現在,想像一下神經網路將以類似於編程基元的方式「增加」,諸如for循環,但不僅僅是一個帶有硬編碼幾何存儲器的硬編碼循環,而是一組大量的編程原語,該模型可以自由地操縱以擴展其處理函數,例如分支、語句、變數創建、長期內存的磁碟存儲、排序運算符、高級數據結構(如列表,圖形)等等。像這樣一個網路可以代表的程序空間將遠大於當前深度學習模式所能表達的範圍,且其中一些程序可以實現更高的泛化能力。

總而言之,我們將從具有「硬編碼演算法智能」(手動軟體)且具有「學習幾何智能」(深度學習)中脫離出來。而我們將會擁有一個提供推理和抽象能力的正式演算法模塊,以及一個提供非正式直覺和模式識別功能的幾何模塊。而整個系統將很少甚至沒有人為參與。

在AI的相關子領域內,我認為可能要大規模騰飛的是程序合成,特別是神經程序合成。程序合成在於通過使用搜索演算法(如遺傳編程中的遺傳搜索)自動生成簡單的程序來探索可能程序的大空間。當找到符合所需規格的程序時,搜索便會停止,且通常作為一組輸入—輸出對的形式進行。正如你看到的那樣,它是否高度讓人聯想到機器學習:它是否高度讓人聯想到機器學習:給出作為輸入—輸出對的「訓練數據」,我們找到一個可以將輸入與輸出進行匹配的「程序」,並將其推廣到新的輸入。不同之處在於,我們不用在硬編碼程序(神經網路)中學習參數值,而是通過離散搜索過程來生成源代碼。

在未來幾年內,我特別期望在這個子領域能夠再次出現一些非常有趣的事情。特別是,我期望在深度學習和程序合成之間出現一個交叉子域,在這裡我們不會以通用語言生成程序,而是生成神經網路(幾何數據處理流)增加一組豐富的演算法基元,如for循環等等。這應該比直接生成源代碼要容易得多,而且它會大大擴展機器學習可以解決的問題的範圍——我們可以自動生成給定適當訓練數據的程序空間,符號AI和幾何AI的混合。而當代RNN可以看作是這種混合演算法—幾何模型的史前祖先。

圖:依賴於幾何圖元(圖案識別、直覺)和演算法原語(推理、搜索、存儲)的學習程序。

超越反向傳播和可微層

如果機器學習模型變得更像程序,那麼它們將幾乎不再是可區分的——當然,這些程序仍然會將連續的幾何圖層用作子程序,而這將是可以區分的,但是整個模型不會是這樣。因此,使用反向傳播來調整固定、硬編碼網路中的權重值不能成為未來訓練模型的首選方法——至少不能是全部。我們需要找出能夠有效地訓練不可微系統的方法。目前的方法包括遺傳演算法、「進化策略」、某些強化學習方法和ADMM(交替方向乘子演算法)。當然,梯度下降不會在任何地方進行——梯度信息對於優化可微分參數函數將永遠是有用的。但是,我們的模型肯定會變得越來越有野心,而不僅僅是可分辨的參數函數,因此它們的自動開發(「機器學習」中的「學習」)將不僅僅需要反向傳播。

此外,反向傳播是端到端的,這對於學習良好的鏈接變換來說是一件好事,但是計算效率較低,因為它不能充分利用深度網路的模塊化。為了提高效率,可以考慮一個通用的配方:引入模塊化和層次結構。因此,我們可以通過引入具有一些同步機制的解耦訓練模塊,以分級方式組織,從而使反向傳播本身更具有效率。DeepMind最近在「合成梯度」方面的一些進展反映了這一策略。我希望在不久的將來在這方面將會有更多的進展。

人們可以想像,在未來,將有一個全局不可區分(但具有可差異性部分)的模型會被訓練——使用的是無法利用梯度的有效搜索過程,而且可以更快地訓練可微分部分,這一點可以通過通過使用一些更有效的反向傳播版本的梯度來實現。

自動機器學習

未來,模型架構將被學習,而不是由工程師設計開發。學習架構自動與使用更豐富的原始圖形和類似程序的機器學習模型配合使用。

目前,深入學習工程師的大部分工作就是用Python腳本發送數據,然後對深層網路的體系結構和超參數進行長時間的調優,以獲得一個工作模型——甚至是獲得最先進的模型,如果工程師如此雄心勃勃。不用說,這不是一個最佳的選擇。但AI也可以幫助實現。不幸的是,數據修改部分很難自動化,因為它通常需要領域知識,以及對工程師想要實現的工作有明確的高層理解。然而,超參數調優是一個簡單的搜索過程,我們已經知道工程師在這種情況下需要實現什麼:它由被調諧的網路的損失函數定義。設置基本的「AutoML」系統已經是常見的做法,該系統將會照顧大部分的模型旋鈕調諧。我甚至在幾年前就建成了,甚至贏得Kaggle的比賽。

在最基本的層次上,這樣的系統將簡單地調整堆棧中的層的數量,包括它們的順序以及每一層中的單元或過濾器的數量。這通常是使用諸如Hyperopt的庫。但是我們也可以更加雄心勃勃,嘗試從頭開始學習一個適當的架構,儘可能少的約束。這可以通過加強學習,例如遺傳演算法。

另一個重要的AutoML方向是與模型權重一起學習模型架構。因為每次嘗試一個稍微不同的架構時,都會從頭開始訓練一個新的模型,所以一個真正強大的AutoML系統將通過對訓練數據的反饋來調整模型的特徵,同時管理體系結構。消除所有計算冗餘。這些方法已經開始出現,因為我正在寫這些內容。

當這種情況開始發生時,機器學習工程師的工作不會消失,而是工程師將在價值創造鏈上走高。他們將開始更多地努力制定真正反映業務目標的複雜損失函數,並深入了解他們的模型如何影響其部署的數字生態系統(例如,消費模型預測並生成模型的培訓數據的用戶)——目前只有最大的公司才能考慮的問題。

終身學習和模塊化子程序重用

如果模型變得更加複雜,並且建立在更豐富的演算法原語之上,那麼這種增加的複雜性將需要更高的任務之間的重用,而不是每當我們有一個新的任務或一個新的數據集從頭開始訓練一個新的模型。實際上,很多數據集不會包含足夠的信息來從頭開發新的複雜模型,而且有必要利用來自先前遇到的數據集的信息。就像你每次打開新書時都不會從頭開始學習英語——這是不可能的。此外,由於當前任務與以前遇到的任務之間的重疊很大,每個新任務的訓練模型都是非常低效的。

此外,近年來重複出現的一個明顯的現象是,同一個模型同時進行多個鬆散連接的任務,結果是模型更好地執行每組任務。例如,訓練相同的神經機器翻譯模型來涵蓋英語到德語的翻譯,和法語到義大利語的翻譯,將導致模型更好的翻譯每組語言。與圖像分割模型聯合訓練圖像分類模型,共享相同的卷積基,形成兩個任務更好的模型,等等。這是相當直觀的:在這些看似斷開連接的任務之間總是存在一些信息重疊,因此,聯合模型可以訪問比僅針對該特定任務訓練的模型更多的關於每個單獨任務的信息。

我們目前沿著跨任務的模型重用方式做的是將預先訓練的權重用於執行常見功能的模型,如視覺特徵提取。在將來,我期望這樣的一般版本是常見的:我們不僅將利用以前學習的功能(子模型權重),還可以利用模型架構和培訓程序。隨著模型越來越像程序,我們將開始重用程序子程序,如人類編程語言中的功能和類。

想想今天的軟體開發過程:一旦工程師解決了一個特定的問題(例如Python中的HTTP查詢),他們將把它打包成一個抽象的和可重用的庫。未來面臨類似問題的工程師可以簡單地搜索現有的庫,下載並在自己的項目中使用它們。以類似的方式,將來,元學習系統將能夠通過篩選高級可重用塊的全局庫來組裝新程序。當系統發現自己為幾個不同的任務開發類似的程序子程序時,如果會出現一個「抽象的」可重用的子程序版本,並將它存儲在全局庫中。這樣的過程將實現抽象的能力,這是實現「極端泛化」的必要組件:被發現在不同任務和域中有用的子程序可以說是「抽象化」問題解決的一些方面。「抽象」的定義與軟體工程中抽象的概念相似。這些子程序可以是幾何的(具有預先訓練的表示的深度學習模塊)或演算法(更靠近當代軟體工程師操作的庫)。

圖:一個能夠使用可重用原語(包括演算法和幾何)快速開發任務特定模型的元學習者,從而實現「極端泛化」。

總結:長遠願景

簡而言之,這是我對機器學習的長遠願景:模型將更像是程序,並且具有遠遠超出我們目前使用的輸入數據的連續幾何變換的能力。這些程序可以說是更接近於人類對周圍環境和自身的抽象思維模式,而且由於其豐富的演算法性質,它們將具有更強的泛化能力。

特別是,模型將混合提供正式推理、搜索和抽象能力的演算法模塊,幾何模塊提供非正式的直覺和模式識別功能。 AlphaGo(一個需要大量手動軟體工程和人工設計決策的系統)提供了一個早期的例子,說明象徵和幾何AI之間的混合可能是什麼樣的。

它們將自行生長,而不是由人類工程師手動製作,使用存儲在可重複使用子程序的全局庫中的模塊化部件,這是通過在數千個以前的任務和數據集上學習高性能模型而演變的庫。由於常見的問題解決模式是通過元學習系統來識別的,它們將變成可重用的子程序,非常像當代軟體工程中的功能和類,並被添加到全局庫中。如此就實現了抽象的能力。

這個全局庫和相關的模式增長系統將能夠實現某種形式的人類「極端泛化」:給定一個新的任務,一個新的情況,該系統將使用非常少的數據組裝適合於任務的新的工作模型,由於1)豐富的程序樣的原語泛化很好,2)豐富的類似任務的經驗。以同樣的方式,人類可以學習使用很少的播放時間播放一個複雜的新視頻遊戲,因為他們有許多以前的遊戲的經驗,並且因為從以前的經驗得出的模型是抽象和程序的,而不是促進和行動之間的一個基本映射。

因此,這種永久學習的模式增長系統可以被解釋為AGI—通用人工智慧。但不要指望任何奇異的機器人啟示錄即將發生:這是一個純粹的幻想,來自長期的一系列對智力和技術的深刻誤解。但是,這篇評論文章並不屬於它。

來源:全球人工智慧

微波段量身定製培養計劃 9.10?上海站

如何量身定製交易系統

兼顧炒單的高勝率和波段的盈虧比

真正學會看盤、解盤、做盤

實戰高手全面講解為你全面講解……

2017年9月10日-9月22日上海

點擊展開全文

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 大數據實驗室 的精彩文章:

清華大學教授朱小燕:人機協同最重要 避免冬天就要快速落地
一分鐘教你用Excel從統計局抓數據!
17考研報考人數最多的10所院校及10大專業
商業公司應該如何配備數據分析團隊?
深度神經網路中的數學,對你來說會不會太難?

TAG:大數據實驗室 |

您可能感興趣

深度學習,人的解析
深度解析AIoT背後的發展邏輯
城市的Runway:中國CBD時尚產業發展深度解析
流量紅利時代已結束,解析Martech在中國的發展前景與痛點
深度解析華為matebook X Pro為何能如此出色
Ansible 深度解析
深度解析LoRa和LoRaWAN的區別
NVIDIA深度學習Tensor Core全面解析
東芝在線研討會來襲,深度解析 TT_M3HQ 開發板
GoPro發布固件更新提升Fusion VR拍攝解析度
Tomaso Poggio解析下個「AlphaGo」線索,再談「深度學習鍊金術」
在雲計算時代中,深度解析桌面雲aDesk
RedmiK20最新大招曝光,盧偉冰深度解析,另曝殺手鐧!
Varjo與Socionext合作開發世界首款人眼解析度VR/XR頭顯
VRHero透露下一代高解析度頭顯正在開發中
Varjo聯手Socionext開發人眼解析度XR頭顯
解析榮耀Magic2首發革命性技術:5G前夜,Link Turbo帶來超速網路
Google和LG DIsplay 做出了目前解析度最高的 VR 屏幕
蘋果三星都沒做到的事,vivo居然做出來了?深度解析APEX
Burberry和Vivienne Westwood 的合作系列已經開售,我們為你帶來完整解析