時間:2017-04-24 來源:互聯網 瀏覽量:
最近,微軟發布了自己的深度學習程序生成研究。在該研究中,深度神經網絡學會了遵從用戶的意圖來生成計算機程序。用戶隻需要提供一些簡單的輸入/輸出(I/O)範例以表示自己希望獲得的程序是什麼形式的。係統就可以使用這些信息生成相應的程序。
例如:假設用戶有一個名單,他/她希望將這個名單整理成特定格式,如下圖所示。這名用戶僅需要向係統提供一些輸入-輸出的例子,隨後係統就會自動填充剩下的輸出(在圖中以灰色顯示)。在一些數據量很大的工作中,這種方法可以為用戶節約大量時間。
自動生成程序麵臨著兩個重大挑戰。第一、DSL 表達程序有數以億計的可能性,而用戶真正需要的程序可能完全未曾在係統中出現過;第二、因為 I/O 例子是由人類手動輸入的,這意味著其中可能經常會出現噪音(例如錯字)。如上例所示,第二個輸出例子中的 Uesato 被錯寫為 Useato 了。
在此之前解決這些問題的方法——最為人所知的就是 Excel 中的快速填充(FlashFill)功能——是依靠程序員手動編寫的規則和啟發方式來引導和搜索用戶所需的程序。
微軟提出的新係統 RobustFill 采用了最近發展迅猛的深度學習方式,通過數據驅動方法進行程序生成,不需要任何手工編寫的規則。與快速填充相反,它使用曾被用於機器翻譯的「attentional sequence-to-sequence 神經網絡」來通過 I/O 範例生成所需的程序。
這個係統經過了數百萬隨機生成的 I/O 程序配對的訓練,學會了 DSL 中的語義學規則,目前已經可以在真實情況下的數據中展示良好的性能。總體而言,該係統在一個真實世界任務基準測試中達到了 92% 的準確率。其中最令人興奮的是,在測試中,I/O 範例包含了一些明顯的噪音,而係統仍然保持了高精度。
訓練神經網絡架構來學習一種帶有豐富功能的程序語言(FlashFill DSL)不僅是神經語言生成的重大突破,也是走向通用人工智能的堅實一步。它解決了可解釋性的關鍵挑戰,也將我們引向了分布式鏈接形式的知識符號表示問題。
微軟正致力於擴展這些 DSL 程序學習架構,試圖加入狀態變量和控製流程以生成更多種類的程序。研究人員相信他們正走在正確的道路上,未來的研究將指向有關程序生成和歸納的一係列基礎技術問題。
可見在不遠的未來,機器人可不僅僅是在圍棋上戰勝人類這麼簡單了。可能人類各項工作都會被機器人取代,甚至包括程序員的工作。不知道應該是期待,還是畏懼呢?