深度學習C語言修改器DeepFix:用人工智慧加「;」
選自aaai.org
機器之心編譯
參與:吳攀
如果你是一個程序員,你一定體驗過編譯時報錯的痛苦,有時候一個小錯誤可能就需要你很多時間檢查許多代碼才能找到。近日,印度科學研究所的幾位研究者的一篇 AAAI-17 論文提出了一種用深度學習檢測 C 語言代碼中常見編程錯誤的方法 DeepFix,而且其不僅可以檢測,還可以幫助修復。機器之心對該研究論文進行了摘要介紹。
論文原文請訪問:https://www.aaai.org/ocs/index.php/AAAI/AAAI17/paper/view/14603/13921
自動修復編程錯誤的問題是軟體工程領域一個非常活躍的研究主題。這個問題難度很大,因為修復單個錯誤也許就需要分析整個程序。在實際操作中,許多錯誤都是因為程序員對編程語言不熟練或沒有注意細節所導致的。我們將這些錯誤稱為常見編程錯誤(common programming errors)。它們類似於自然語言中的語法錯誤。編譯器可以檢測這樣的錯誤,但它們得到的錯誤信息往往是不準確的。在這項成果中,我們提出了一種端到端的解決方案 DeepFix,其可以無需依賴任何外部工具來定位或修復,就可以修復一個程序中多個這樣的錯誤。DeepFix 的核心是一個多層的序列到序列神經網路,帶有注意(attention),其被訓練用於預測錯誤的程序位置以及所需的正確寫法。在一個由學生為 93 個編程任務編寫的 6971 個錯誤 C 語言程序的集合中,DeepFix 可以完整修復其中 1881(27%)個,並且可以部分修復其中 1338(19%)個。
圖 1:DeepFix 方法的示意圖
圖 2:DeepFix 的迭代式修復策略
表 1:數據集和結果匯總
我們提出的修復策略有幾個優點:
程序被完全呈現給該網路。識別和修復編程錯誤通常需要能夠推斷長期依賴(long term dependencies)的全局分析。該網路架構能夠有選擇地關注程序的任何部分,從而可以推理結構和語法約束來預測錯誤的位置和所需的修復。
在輸入和輸出中包含行號,從而減小了粒度,並因此減小了預測任務的複雜度。
DeepFix 可以迭代式修復一個程序中的多個錯誤。
oracle 被用於跟蹤進展以及防止出現沒有幫助或任意的改變。
DeepFix 的修復策略是相當通用的。比如說,如果我們試圖修復邏輯錯誤,我們可以使用一個帶有測試套件(比如 oracle)的測試引擎。如果一個修復導致該程序能通過更多測試,那麼該修復就會被接受。
圖 3:在原始數據集上,錯誤程序中任務的減少
表 2:錯誤類型和對應原因的總結
圖 4:排名前 4 的錯誤信息,以及在原始數據集上修復前後的錯誤信息的數量
圖 5:在原始數據集上每次迭代之後的錯誤信息的數量
圖 6:正確(圓圈)和不正確(三角形)程序的向量表示的 PCA 投影
表 3:種子數據集的固定長度和固定準確度 。
※關係推理超越人類:DeepMind全新神經網路推理預測技術
※基於Metal的框架Bender:可在iOS上運行TF模型
※深度學習C語言修改器DeepFix:用人工智慧加「符號」
※蘋果開發者大會WWDC 2017:全面展示蘋果的人工智慧實力
※大漠孤煙,長河落日:面向景深結構的風景照生成技術
TAG:機器之心 |
※R語言攜手TensorFlow進軍深度學習
※iOS版本的Rosetta Stone添加AR+AI語言學習功能
※Facebook開源視覺、語言多任務深度學習框架——Pythia
※Chips 2.0:基於python語言的高級FPGA設計工具
※Facebook 開源 PyText:用於構建自然語言系統的框架
※CEVA和mPerpetuo合作為CEVA視覺處理器提供Halide語言支持
※C語言/C加加編程嵌入式基礎學習之volatile關鍵字
※Facebook新研究:一個編碼器hold住93種語言!跨語言遷移無需修改
※Pythia:Facebook最新開源的視覺、語言多任務學習框架
※攝影|Bruno Barbey:世界通用語言
※進一步改進GPT和BERT:使用Transformer的語言模型
※【AI蝙蝠俠vs超人】LeCun論戰Manning:語言是通用智能的鑰匙?
※使用PaddleFluid和TensorFlow訓練RNN語言模型
※Firefox Reality VR瀏覽器支持7種新語言,書籤等
※Facebook開源NLP遷移學習工具包,支持93種語言,性能最優
※Julia:集Python、C+、R等語言為一體的全新語言
※Semantic Experiences網站:用自然語言同AI交流
※蘋果HomePod增加支持更多新功能和Siri語言
※VSCode 引入 Python 語言伺服器;Canonical 請求幫助測試 Ubuntu 伺服器安裝程序
※Win32應用即將擁抱Fluent Design設計語言