當前位置:
首頁 > 新聞 > 讓神經網路替你編程:如何用深度學習實現程序自動合成

讓神經網路替你編程:如何用深度學習實現程序自動合成

讓神經網路替你編程:如何用深度學習實現程序自動合成

新智元推薦

讓神經網路替你編程:如何用深度學習實現程序自動合成

● 作者:Rishabh Singh、Jacob Devlin、Abdelrahman Mohamed和Pushmeet Kohli

● 請點擊文末的閱讀原文或直接將網址複製至瀏覽器中打開即可查看原文。https://www.microsoft.com/en-us/research/blog/deep-learning-program-synthesis/

過去幾十年間計算科學領域取得了長足進展,但編寫計算機軟體的實操過程卻沒有根本性轉變——程序員必須使用專門的編程語言,以手工方式一步一步地精確編寫程序中各項演算法邏輯。儘管多年來編程語言變得越來越友好,但是學習如何編程仍然令大多數計算機用戶望而卻步。

在一篇新近發表的論文中,我們展示了將深度學慣用於程序合成的最新研究成果,試圖讓深層神經網路學習根據用戶意圖生成計算機程序。用戶只需提供幾個輸入/輸出(I/O)示例來指定所期望的程序行為,系統則據此生成相應的程序。

假設用戶希望以特定方式對名單進行格式整理(如下所示)。他只需提供幾個輸入/輸出示例,系統就會自動填充剩餘的輸出(以淺灰色顯示)。如果用戶需要處理成百上千個輸入字元串,這個程序可以節省大量時間。

讓神經網路替你編程:如何用深度學習實現程序自動合成

該系統採用領域專用語言(DSL)來生成程序。用戶無需了解DSL的細節——實際上他根本看不到程序的內容。在我們的DSL中,對應於上述示例的正確程序是:

程序合成中存在兩大關鍵性難點。首先,在我們的表達性DSL中存在數以萬計種可能的程序,而其中的正確程序可能是系統從未見過的。其次,由於I/O示例是由真人手工生成的,所以它們通常包含雜訊(例如拼寫錯誤等),如上例所示(在第二個輸出示例中,Useato被拼錯為Uesato)。

以前,解決這個問題的方法(其中最著名的要數微軟Excel的FlashFill系統)是依靠手工編寫的規則來引導啟發式搜索。然而,這種方法使得DSL的能力很難擴展,不僅需要數年積累的手動規則編寫,而且對I/O示例中的任何雜訊都非常敏感。

而我們的系統RobustFill則利用了深度學習的最新成果,以數據驅動的方式進行程序合成,無需任何手工編寫的規則。相反,它藉助最先用於語言翻譯的注意力型序列到序列神經網路 (attentionalsequence-to-sequence neural network),以I/O示例為依據生成程序。我們所用神經網路的草圖如下,圖中提供了詳細信息。

讓神經網路替你編程:如何用深度學習實現程序自動合成

我們用了數百萬個隨機生成的I/O+程序對來對系統加以訓練,而且由於能夠學習DSL語義,它在現實世界的數據上也有著良好表現。總體而言,我們的系統在一系列真實基準上實現了92%的準確性。特別令人鼓舞的是,即使I/O示例包含顯著的噪音,系統也能夠保持較高的精確度。

對編程的啟示

訓練神經網路學慣用複雜的函數式語言(FlashFill DSL)進行編程取得成功,這一突破也是朝著實現更為通用的人工智慧邁出了雖小卻值得關注的一步。它解決這不僅標誌著神經程序合成方面一個令人興奮了納入可解釋性這一關鍵挑戰,而且還觸及到將知識的分布式表達與符號式表達相關聯的重要課題。

我們目前正在擴展這些神經網路,學慣用包含狀態變數和控制流的DSL所編寫的程序,以期生成更豐富的程序類別。我們認為,沿著這個方向進一步研究,將要求我們去進一步了解和處理程序合成及歸納方面所涉及的最基礎的技術問題。

了解更多相關信息:

「RobustFill: Neural Program Learning under Noisy I/O」 by Jacob Devlin, Jonathan Uesato, Surya Bhupatiraju, Rishabh Singh, Abdelrahman Mohamed, and Pushmeet Kohli, in arXiv:1703.07469

「Neuro-Symbolic Program Synthesis」 by Emilio Parisotto, Abdelrahman Mohamed, Rishabh Singh, Lihong Li, Denny Zhou, and Pushmeet Kohli, in 5th International Conference on Learning Representations (ICLR 2017)

為本文做出貢獻的實習生有:Emilio Parisotto(卡內基梅隆大學)、Jonathan Uesato(麻省理工學院)、Surya Bhuptairaju(麻省理工學院)

新智元招聘

職位:客戶經理

職位年薪:12 - 25萬(工資+獎金)

工作地點:北京-海淀區

所屬部門:客戶部

彙報對象:客戶總監

工作年限:3 年

語 言:英語 + 普通話

學歷要求:全日制統招本科

職位描述:

  1. 精準把握客戶需求和公司品牌定位,策劃撰寫合作方案;

  2. 思維活躍、富有創意,文字駕馭能力強,熟練使用PPT,具有良好的視覺欣賞及表現能力,PS 能力優秀者最佳;

  3. 熱情開朗,擅長人際交往,良好的溝通和協作能力,具有團隊精神;

  4. 優秀的活動籌備與執行能力,較強的抗壓能力和應變能力,適應高強度工作;

  5. 有4A、公關公司工作經歷優先

  6. 對高科技尤其是人工智慧領域有強烈興趣者加分。

崗位職責:

參與、管理、跟進上級指派的項目進展,確保計劃落實。制定、參與或協助上層執行相關的政策和制度。定期向公司提供準確的市場資訊及所屬客戶信息,分析客戶需求,維護與指定公司關鍵顧客的關係,積極尋求機會發展新的業務。建立並管理客戶資料庫,跟蹤分析相關信息。

應聘郵箱:jobs@aiera.com.cn

HR微信:13552313024

新智元歡迎有志之士前來面試,更多招聘崗位請點擊【新智元招聘】查看。

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

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


請您繼續閱讀更多來自 新智元 的精彩文章:

量產在即:特斯拉Model3細節曝光,ModelS和X評價降級
「一圖看懂」計算機視覺識別簡史:從 AlexNet、ResNet 到 Mask RCNN
「Nature」人工「迷你大腦」,首次揭示人腦神經網路建模機制
麥肯錫萬字報告對比中美AI競爭力:學術、產業生態、演算法、數據、計算力(下載)
AI 怎麼硬起來?硬蛋與雲知聲發布智能家居「新聲態」,角逐智能語音百億市場

TAG:新智元 |

您可能感興趣

深度神經網路實戰技巧,來自一名演算法工程師的經驗!
一文讀懂如何用深度學習實現網路安全
自己動手寫深度學習模型之全連接神經網路
如何利用深度神經網路預防惡意軟體
一言不合就想斗圖?快用深度學習幫你生成表情包
基亞首席科學家范力欣:用模糊邏輯實現可解釋的深度神經網路
深度學習系統可實現常規視頻「慢動作」轉制
諾基亞首席科學家范力欣:用模糊邏輯實現可解釋的深度神經網路
應用於實時視頻通信的深度學習演算法研究
程成深度解讀時尚,「形象力理論課程」即將開聊
深度神經網路是如何成為圖像大師的?
人工智慧使用深度學習訓練通用的對抗修補程序攻擊RCNN網路
優秀的演算法工程師都用深度學習嗎?
3D列印深度學習神經網路用光子而不是電子進行計算
深度學習與神經網路概述
教程|用深度學習DIY自動化監控系統
不思考體系結構的深度學習研究者不是好工程師
深度學習神經網路方法獲改進
如何讓你的深度神經網路跑得更快
學習率及其如何改善深度學習演算法