當前位置:
首頁 > 新聞 > 微軟RobustFill:無需編程語言,神經網路自動生成程序

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

選自Microsoft Research blog

作者:Rishabh Singh等

參與:李澤南

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


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

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

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

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

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

該系統通過域特定語言(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:無需編程語言,神經網路自動生成程序

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

編程新啟示

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

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

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

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

摘要

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

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

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


請您繼續閱讀更多來自 機器之心 的精彩文章:

三張圖讀懂機器學習:基本概念、五大流派與九種常見演算法
採訪完Jessica,我們重新認識了《降臨》里語言學家的世界
Caffe2在CPU上的性能檢測:將實現最優的推理性能
賈揚清撰文詳解Caffe2:從強大的新能力到入門上手教程
Hinton「神經網路與機器學習」課程經驗與簡評

TAG:機器之心 |

您可能感興趣

Juggernaut:由Rust語言實現的試驗性神經網路
在Linux安裝GoogleTensorFlow神經網路軟體
瀏覽器使用synaptic.js訓練簡單的神經網路推薦系統
Michael Nielsen《神經網路和深度學習》:智能可以用簡單的演算法表示嗎?
「深度神經網路 One-shot Learning」孿生網路少樣本精準分類
Remedy和Nvidia合作,使用神經網路處理遊戲面部製作
谷歌發布TensorFlow神經網路機器翻譯教程
微血管減壓術治療三叉神經痛-The Neurosurgical Atlas 系列
DeepMind發布Sonnet 幫你用TensorFlow快速搭建神經網路
孫劍團隊提出移動端神經網路ShuffleNet,優於谷歌MobileNet
圖解機器學習:神經網路和 TensorFlow 的文本分類
手把手教你用 TensorFlow 實現卷積神經網路
MIT Nature Photonics新突破:實現光學深度神經網路系統
【Nucleus Medical Media】周圍神經病【中文字幕】
深度學習之父Geoffrey Hinton的神經網路合集
谷歌全新神經網路架構Transformer:基於自注意力機制,擅長自然語言理解
谷歌移動端神經網路架構MobileNet的CoreML實現
提高網路模型的泛化能力!深度學習之父Geoffrey Hinton的神經網路第九課
微軟//oneweek Hackathon參賽團隊利用HoloLens克服神經障礙