當前位置:係統粉 >   IT資訊 >   微軟資訊 >  微軟RobustFill:無需編程語言,神經網絡自動生成程序

微軟RobustFill:無需編程語言,神經網絡自動生成程序

時間:2017-04-22 來源:互聯網 瀏覽量:

選自Microsoft Research blog

作者:Rishabh Singh等

參與:李澤南

微軟RobustFill:無需編程語言,神經網絡自動生成程序(1)

長久以來,擺脫編程語言的束縛,讓計算機自我生成程序一直是開發者們的夢想,最近微軟研究者推出的RobustFill讓夢想更近了一步,他們的研究成果即將在 ICLR 2017 大會上出現。

在過去幾十年中,計算機科學有了長足的發展,但人們編寫計算機軟件的過程卻沒有發生根本的改變——程序員必須使用特定的程序語言一步步手工編寫程序的精確算法邏輯。盡管編程語言近年來正在變得越來越友好,但這項工作仍然是絕大多數計算機用戶未曾接觸的事物。

在最近的一項研究中,微軟發布了自己的深度學習程序生成研究。在該研究中,深度神經網絡學會了遵從用戶的意圖來生成計算機程序。用戶隻需要提供一些簡單的輸入/輸出(I/O)範例以表示自己希望獲得的程序是什麼形式的。係統就可以使用這些信息生成相應的程序。

例如:假設用戶有一個名單,他/她希望將這個名單整理成特定格式,如下圖所示。這名用戶僅需要向係統提供一些輸入-輸出的例子,隨後係統就會自動填充剩下的輸出(在圖中以灰色顯示)。在一些數據量很大的工作中,這種方法可以為用戶節約大量時間。

微軟RobustFill:無需編程語言,神經網絡自動生成程序(2)

該係統通過域特定語言(domain specific language,DSL)生成用於執行任務的程序,用戶不需要理解 DSL 的所有細節。事實上,在使用過程中,用戶完全不會看到編程的過程。在微軟的 DSL 中,對應於上個例子的正確程序是:

Concat(

自動生成程序麵臨著兩個重大挑戰。第一、DSL 表達程序有數以億計的可能性,而用戶真正需要的程序可能完全未曾在係統中出現過;第二、因為 I/O 例子是由人類手動輸入的,這意味著其中可能經常會出現噪音(例如錯字)。如上例所示,第二個輸出例子中的 Uesato 被錯寫為 Useato 了。

在此之前解決這些問題的方法——最為人所知的就是 Excel 中的快速填充(FlashFill)功能——是依靠程序員手動編寫的規則和啟發方式來引導和搜索用戶所需的程序。這種方式顯然不能滿足 DSL——這意味著數年的手動規則編寫,而且最終的結果仍然對 I/O 例子的噪音非常敏感。

微軟提出的新係統 RobustFill 采用了最近發展迅猛的深度學習方式,通過數據驅動方法進行程序生成,不需要任何手工編寫的規則。與快速填充相反,它使用曾被用於機器翻譯的「attentional sequence-to-sequence 神經網絡」來通過 I/O 範例生成所需的程序。下圖展示了微軟的神經網絡架構:

微軟RobustFill:無需編程語言,神經網絡自動生成程序(3)

這個係統經過了數百萬隨機生成的 I/O 程序配對的訓練,學會了 DSL 中的語義學規則,目前已經可以在真實情況下的數據中展示良好的性能。總體而言,該係統在一個真實世界任務基準測試中達到了 92% 的準確率。其中最令人興奮的是,在測試中,I/O 範例包含了一些明顯的噪音,而係統仍然保持了高精度。

編程新啟示

訓練神經網絡架構來學習一種帶有豐富功能的程序語言(FlashFill DSL)不僅是神經語言生成的重大突破,也是走向通用人工智能的堅實一步。它解決了可解釋性的關鍵挑戰,也將我們引向了分布式鏈接形式的知識符號表示問題。

微軟正致力於擴展這些 DSL 程序學習架構,試圖加入狀態變量和控製流程以生成更多種類的程序。研究人員相信他們正走在正確的道路上,未來的研究將指向有關程序生成和歸納的一係列基礎技術問題。

論文:RobustFill: Neural Program Learning under Noisy I/O

微軟RobustFill:無需編程語言,神經網絡自動生成程序(4)

摘要

在人工智能發展的初期,有關自動生成計算機程序用於一些特定任務的嚐試就已開始了。最近有兩個自動學習程序的方式受到了人們的關注:1)神經程序生成,其中神經網絡基於輸入/輸出(I/O)範例進行學習,並生成程序;2)神經程序歸納,其中神經網絡通過隱藏的程序表示直接生成輸出。

在本文中,我們第一次在大體量真實世界學習任務中比較了兩種方式,同時也將這些方法與基於給定規則的程序生成方法進行了對比。我們的神經網絡模型使用特定的 attention RNN 來處理不同大小的 I/O 配對集。我們的生成模型在真實世界數據的測試中達到了 92% 的準確率,而此前最好的神經網絡生成方法隻有 34% 準確率。生成模型的性能在這一測試中也優於歸納模型,但更重要的是我們證明了每種方法的性能高度依賴於評價標準和客戶端形式。最後,我們的研究證明了人們可以訓練神經網絡模型在充滿噪音的真實世界數據(如包含錯字)中具有魯棒性,而手動編寫規則的係統完全無法與之相比。

擴展閱讀

論文《RobustFill: Neural Program Learning under Noisy I/O》,作者 Jacob Devlin,Jonathan Uesato,Surya Bhupatiraju,Rishabh Singh,Abdelrahman Mohamed 和 Pushmeet Kohli:https://www.microsoft.com/en-us/research/publication/robustfill-neural-program-learning-noisy-io/

論文《Neuro-Symbolic Program Synthesis》,作者 Emilio Parisotto,Abdelrahman Mohamed,Rishabh Singh,Lihong Li,Denny Zhou 和 Pushmeet Kohli。該論文將出現在 ICLR 2017 上:https://www.microsoft.com/en-us/research/publication/neuro-symbolic-program-synthesis-2/

我要分享:

最新熱門遊戲

版權信息

Copyright @ 2011 係統粉 版權聲明 最新發布內容 網站導航