您的位置:首頁>科技>正文

微軟RobustFill:無需程式設計語言,神經網路自動生成程式

選自Microsoft Research blog

作者:Rishabh Singh等

參與:李澤南

長久以來, 擺脫程式設計語言的束縛, 讓電腦自我生成程式一直是開發者們的夢想, 最近微軟研究者推出的RobustFill讓夢想更近了一步,

他們的研究成果即將在 ICLR 2017 大會上出現。

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

在最近的一項研究中, 微軟發佈了自己的深度學習程式生成研究。 在該研究中, 深度神經網路學會了遵從使用者的意圖來生成電腦程式。 用戶只需要提供一些簡單的輸入/輸出(I/O)範例以表示自己希望獲得的程式是什麼形式的。 系統就可以使用這些資訊生成相應的程式。

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

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

Concat(

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

在此之前解決這些問題的方法——最為人所知的就是 Excel 中的快速填充(FlashFill)功能——是依靠程式師手動編寫的規則和啟發方式來引導和搜索使用者所需的程式。

這種方式顯然不能滿足 DSL——這意味著數年的手動規則編寫, 而且最終的結果仍然對 I/O 例子的噪音非常敏感。

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

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

程式設計新啟示

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

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

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

摘要

在人工智慧發展的初期,有關自動生成電腦程式用於一些特定任務的嘗試就已開始了。最近有兩個自動學習程式的方式受到了人們的關注: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/

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

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

摘要

在人工智慧發展的初期,有關自動生成電腦程式用於一些特定任務的嘗試就已開始了。最近有兩個自動學習程式的方式受到了人們的關注: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/

Next Article
喜欢就按个赞吧!!!
点击关闭提示