AI 自動研發機器學習系統,DeepMind 讓算法學習強化學習


編者按:本文來自微信公眾號“新智元”(ID:AI_era),作者李靜怡、劉小芹,36氪經授權發佈。

眼下,人工智能研發的一個大方向是用AI系統來自動化開發AI系統。雖然這一目標尚未實現,但目前的進展讓已足夠令人人震驚。本文介紹了最新的一些進展,包括伯克利讓算法自我優化、MIT自動生成神經網絡架構,以及在這方面走得最遠的 DeepMind 讓算法“學習強化學習”。

2011年矽谷最有影響的技術投資人 Marc Andreessen 一篇“Why Software Is Eating The World”震撼業界。6 年後,移動、雲計算和大數據三大技術浪潮已經強烈地改變了很多行業。

新的技術浪潮已經襲來,那就是人工智能。近年來,人工智能的人才大戰已經愈演愈烈,機器學習專家的薪酬也水漲船高,到了驚人的水平。

然而,頂尖的人工智能專家們最近發現,他們最困難的工作之一——設計機器學習系統本身,也有可能通過AI系統自動完成。

用 Google 技術大神 Jeff Dean 最近在 AI Frontiers 會議上的話説,目前人工智能領域解決問題所需的就是機器學習技術、計算和數據,我們能否減少對這種技術本身的需求呢?他認為是可能的。“自動機器學習”這個方向正是他來到的 Google Brain 團隊正在積極探索的最有希望的領域之一。

而 DeepMind 的研究發現,這方面的進展還可以減少深度學習系統對數據量的要求。這在無人駕駛汽車等場景非常有用。

Yoshua Bengio 則指出,目前的研究對計算能力的要求太高(Google Brain 的實驗用了800個高配置GPU),所以還不太實用。但這確實是一個令人興奮的方向。

1月18日,Tom Simonite 在《MIT Technology Review》發表的文章 “AI Software Learns to Make AI Software”,收集了 Google Brain、OpenAI、MIT、Berkeley 和 DeepMind 等在 learning to learn 領域的最新的研究成果。

TechCrunch 接着發表的文章則總結説,在不少場景下,AI系統自己開發的AI系統,已經趕上甚至超過了人類專家。這將大大加快 AI 技術民主化的進程。而稀缺的人類研究資源也可以釋放出來,轉而去研究更重要的問題。
接下來,我們一起深入地分析相關論文,看一看這方面的進展已經到了什麼程度。

讓算法自己寫代碼

伯克利的 Ke Li 和 Jitendra Malik 在他們日前提交的論文《Learning to Optimize》中提出了讓算法自我優化的方法。他們在論文摘要中寫道,“算法設計是一個費力的過程,通常需要許多迭代的思想和驗證。 在本文中,我們探討自動化算法設計,並提出了一種方法學習自動優化算法”。從強化學習的角度入手,Ke Li 和 Jitendra Malik 使用指導性策略搜索來讓 AI 學習優化算法,並且證明了他們所設計的算法在收斂速度和/或最終目標值方面優於現有的手工編程開發的算法。

讓算法自己寫代碼的努力並不止於學術界。國外著名科技記者 Steven Levy 去年 6 月在他刊於 BackChannel 的文章《Google如何將自己重塑為一家“AI 為先”的公司》(How Google Is Remaking Itself As A "Machine Learning First" Company)中提到,Google大腦負責人 Jeff Dean 表示,如果現在讓他改寫Google的基礎設施,大部分代碼都不會由人編碼,而將由機器學習自動生成。

“以前,我們可能在系統的幾個子組件中使用機器學習,”Jeff Dean 説:“現在我們實際上使用機器學習來替換整套系統,而不是試圖為每個部分製作一個更好的機器學習模型。”

Google的代碼bug預測系統,使用一個得分算法,隨着commits變得越來越舊,它們的價值越來越小。

Google已經開發了一個 bug 預測程序,使用機器學習和統計分析,來判斷某一行代碼是否存在瑕疵。

Google工程師、W3C的聯合主席 Ilya Grigorik 也開發了一個開源版本的 bug 預測工具,目前已被下載近 3 萬次。開源地址

讓代理自己設計神經網絡

差不多同一時間,MIT 媒體實驗室的研究人員則提出了自動生成神經網絡架構的方法。在論文《Designing Neural Network Architectures using Reinforcement Learning》當中,Bowen Baker 等人提出,目前設計卷積神經網絡(CNN)架構需要人的專業知識和勞動,設計新的架構需要經過大量實驗手工編碼,或者從個別現有的網絡架構修改得到。

為此,他們提出一種基於強化學習的元建模方法,以針對給定的學習任務自動生成高性能 CNN 體系結構。代理(agent)遍歷可能存在的架構,並且迭代發現在學習任務上具有改進性能的設計。在圖像分類基準上,代理所設計的網絡(僅由標準卷積層、池化層和完全連接層組成)比使用相同層類型設計的現有網絡表現更好,與使用更多複雜層類型的結構相比,結果也不相上下。

將學習算法表示為遞歸神經網絡

再説一下 OpenAI 在這方面的努力。

在前不久提交的論文《RL2: Reinforcement Learning via Slow Reinforcement Learning》中,OpenAI 的 Yan Duan 等人提出,將學習算法表示為一個遞歸神經網絡(RNN),並從數據中學習。這種方法稱為 RL2,研究人員讓算法被編碼在 RNN 的權重中,通過通用的“慢”(“slow”)RL 算法慢慢學習(而沒有從開始就設計一個“快的” RL 算法)。

RNN 接收典型的RL算法所能接收的所有信息,包括觀察、動作、獎勵和終止標誌,RNN在給定的馬爾科夫決策過程(MDP)中保持其狀態。RNN的激活存儲“快”RL算法的狀態於當前的MDP中。OpenAI 的研究負責人 Ilya Sutskever 和伯克利的 Pieter Abbeel 也是論文作者。

深度增強學習(deep RL)已經在自動學習複雜行為方面取得成功。然而,該學習過程需要大量的試驗。相比之下,得益於對世界的先有知識,動物僅僅需要幾個試驗就能學會新的任務。本論文試圖彌合這一差距。

研究人員用實驗評估了RL2在小規模和大規模問題上的表現。“在小規模問題上,我們訓練它來解決隨機生成的多臂賭博機問題(multi-armed bandit problems)和有限MDP。RL2被訓練好後,它在新的MDP問題上的表現接近人類設計的最優算法。在大規模問題上,我們用基於視覺的導航任務測試RL2,並擴展到高維問題。”

DeepMind 一直在努力:利用強化學習,打造能學習和推理的機器

神經程序解釋器(NPI)

2015 年,DeepMind 團隊開發了一個“神經編程解釋器”(NPI),能自己學習並且編輯簡單的程序,排序的泛化能力也比序列到序列的 LSTM 更高。描述這項研究的論文《神經程序解釋器》(Neural Programmer-Interpreters),被評選為 ICLR'16 最佳論文。

NPI 是一種遞歸性的合成神經網絡,能學習對程序進行表徵和執行。NPI 的核心模塊是一個基於 LSTM 的序列模型,這個模型的輸入包括一個可學習的程序嵌入、由調用程序傳遞的程序參數和對環境的特徵表徵。這個核心模塊的輸出包括,一個能指示接下來將調用哪個程序的鍵、一個經典算法程序的參數,以及一個能指示該程序是否該停止的標記。除了遞歸性內核外,NPI 構架還包括一個內嵌的可學習程序的鍵值內存。這種程序-內存的結構對於程序的持續學習和重用是極其重要的。

NPI 與 序列到序列 LSTM 對不同長度的序列進行排序的準確率對比,最長序列含有20個數組。

NPI 有三個擁有學習能力的部件:一是任務未知的遞歸內核,二是持續鍵值程序內存,三是基於特定領域的編碼器,這個編碼器能在多個感知上有差異的環境中讓單一的 NPI 提供截然不同的功能。通過合成低層程序表達高層程序,NPI 減少了樣本複雜性,同時比序列到序列的 LSTM 更容易泛化。通過在既有程序的基礎上進行建構,程序內存能高效學習額外的任務。NPI 也可以利用環境緩存計算的中間結果,從而減輕遞歸隱藏單元的長期存儲負擔。

當時,DeepMind 團隊並未使用無監督學習的方法的訓練 NPI,其模型也只能學習合成若干種簡單的程序,包括加法、排序和對 3D 模型進行正則化轉換。不過,單一 NPI 能學會執行這些程序以及所有 21 個關聯子程序。

可微分計算機(DNC)

2016 年 10 月,Google DeepMind 團隊在 Nature 發表論文,描述了他們設計的可微分神經計算機(DNC)神經網絡模型。DNC 結合神經網絡與可讀寫的外部存儲器,能夠像神經網絡那樣通過試錯或樣本訓練進行學習,又能像傳統計算機一樣處理數據。

在實驗中,DNC 能理解家譜、在沒有先驗知識的情況下計算出倫敦地鐵兩站之間的最快路線,還能解決拼圖迷宮。德國研究者 Herbert Jaeger 評論稱,這是目前最接近數字計算機的神經計算系統,該成果有望解決神經系統符號處理難題。

DNC 架構

作者在論文摘要中寫道,就像傳統計算機一樣,DNC 能使用外存對複雜的數據結構進行表徵及操縱,但同時又像神經網絡一樣,能夠從數據中學會這樣做。“使用監督學習訓練後,DNC 能夠成功回答人工合成的問題……能夠學會找到特定的點之間距離最短的路線、從隨機生成的圖當中推斷缺少的連接等任務,之後再將這種能力泛化,用於交通線路圖、家譜等特定的圖。使用強化學習訓練後,DNC 能夠完成移動拼圖的益智遊戲,其中符號序列會給出不停變化的遊戲目標。綜上,我們的成果展示了 DNC 擁有解決複雜、結構化任務的能力,這些任務是沒有外部可讀寫的存儲器的神經網絡難以勝任的”。

深度元強化學習(deep meta-reinforcement learning)

最近,DeepMind 的研究人員還與 UCL 的神經科學家合作,提出讓算法《學習強化學習》(Learning to reinforcement learn)。近年來,深加強學習(RL)系統已經在許多富有挑戰性的任務領域中獲得了超人的性能。然而,這種應用的主要限制是它們對大量訓練數據的需求。因此,關鍵的目前的目標是開發可以快速適應新任務的深度 DL 方法。

“在目前的工作中,我們引入了一種新的方法來應對這種挑戰,我們稱之為深度元強化學習。以前的工作表明,遞歸網絡(RNN)可以在完全監督的上下文中支持元學習。我們將這種方法擴展到 RL 設置。由此出現的是一個使用一種 RL 算法訓練的系統,但是其遞歸的動力卻來自另一個完全獨立的 RL 過程。這個獨立的、習得的 RL 算法可以以任意方式與原始算法不同。重要的是,因為它是經過訓練習得的,這個算法在配置上(configured)利用訓練領域中的結構。”

論文描述了研究人員在一系列共計 7 個概念驗證實驗中證明了上述觀點,每個實驗都檢查深度元 RL 的一個關鍵方面。具體可以閲讀 https://arxiv.org/pdf/1611.05763v2.pdf(文末有下載)

開發機器學習程序員都面臨失業的風險?

隨着越來越多的這類技術變得成熟,機器將會在各種各樣的任務上超越人類。那麼,機器為什麼不能理解自己呢?更重要的是,一旦機器做到這一步,在軟件能夠發揮作用的所有領域,都將會經歷一場顛覆性的變革。

人工智能的核心挑戰之一便是教會機器學習新的程序、從既有程序中快速地編寫新程序,並自動在一定條件下執行這些程序以解決廣泛種類的任務。

這是否意味着就連開發機器學習的程序員都面臨失業的危險?

答案是否定的,至少目前為止——創造出性能等同或超越人類設計的機器學習程序,需要大量的計算力,比如 Google Brain 使用 AI 開發的圖像識別系統,雖然擊敗了人類,但卻需要超大的 GPU 集羣,這從多種意義上而言都是相當大的一筆開銷。

但儘管如此,使用 AI 開發 AI 軟件的優點十分明顯,而且大量的資源開銷也可以通過種種辦法減少。將開發機器學習系統的重任交給機器,有助於解決該領域擁有專業知識的人才嚴重短缺。AI 產業專家指出,開發機器學習軟件需要在一開始就投入巨大的人力,但將其中一些工作交給其他機器學習系統可以大大減少開始和整個過程中所需的人力。

目前,從學術界和初創公司大力收割機器學習人才的爭奪戰正在加劇。此外,讓機器自己設計機器可以解放人類研究員,讓他們把時間用於解決更重要的問題,而不是僅僅使用大量數據集反覆訓練 AI 系統。

讓 AI 不斷優化 AI 還有另外一個潛在的好處,那就是改善 AI 系統的學習曲線,這樣就能減少產生有意義結果所需的數據量。這一方面有助於極大地促進像自動駕駛汽車系統這樣的產業發展——對於開發自動駕駛技術而言,數百萬英里的行駛里程只能算收集真實世界數據的開始——另一方面則會大大縮短 AI 產品上市的時間。

但是,所有這些都不能消除機器學習技術被算法取代的可能。

更何況,在被算法取代前,程序員就有可能因為物理學家而更早消失了。

參考資料:

鏈接一鏈接二,鏈接三,鏈接四,鏈接五,鏈接


資料來源:36Kr

如果喜歡我們的文章,請即分享到︰