當前位置:
首頁 > 新聞 > 深度學習C語言修改器DeepFix:用人工智慧加「;」

深度學習C語言修改器DeepFix:用人工智慧加「;」

選自aaai.org

機器之心編譯

參與:吳攀

如果你是一個程序員,你一定體驗過編譯時報錯的痛苦,有時候一個小錯誤可能就需要你很多時間檢查許多代碼才能找到。近日,印度科學研究所的幾位研究者的一篇 AAAI-17 論文提出了一種用深度學習檢測 C 語言代碼中常見編程錯誤的方法 DeepFix,而且其不僅可以檢測,還可以幫助修復。機器之心對該研究論文進行了摘要介紹。

深度學習C語言修改器DeepFix:用人工智慧加「;」

論文原文請訪問:https://www.aaai.org/ocs/index.php/AAAI/AAAI17/paper/view/14603/13921

深度學習C語言修改器DeepFix:用人工智慧加「;」

自動修復編程錯誤的問題是軟體工程領域一個非常活躍的研究主題。這個問題難度很大,因為修復單個錯誤也許就需要分析整個程序。在實際操作中,許多錯誤都是因為程序員對編程語言不熟練或沒有注意細節所導致的。我們將這些錯誤稱為常見編程錯誤(common programming errors)。它們類似於自然語言中的語法錯誤。編譯器可以檢測這樣的錯誤,但它們得到的錯誤信息往往是不準確的。在這項成果中,我們提出了一種端到端的解決方案 DeepFix,其可以無需依賴任何外部工具來定位或修復,就可以修復一個程序中多個這樣的錯誤。DeepFix 的核心是一個多層的序列到序列神經網路,帶有注意(attention),其被訓練用於預測錯誤的程序位置以及所需的正確寫法。在一個由學生為 93 個編程任務編寫的 6971 個錯誤 C 語言程序的集合中,DeepFix 可以完整修復其中 1881(27%)個,並且可以部分修復其中 1338(19%)個。

深度學習C語言修改器DeepFix:用人工智慧加「;」

圖 1:DeepFix 方法的示意圖

深度學習C語言修改器DeepFix:用人工智慧加「;」

圖 2:DeepFix 的迭代式修復策略

深度學習C語言修改器DeepFix:用人工智慧加「;」

表 1:數據集和結果匯總

我們提出的修復策略有幾個優點:

  • 程序被完全呈現給該網路。識別和修復編程錯誤通常需要能夠推斷長期依賴(long term dependencies)的全局分析。該網路架構能夠有選擇地關注程序的任何部分,從而可以推理結構和語法約束來預測錯誤的位置和所需的修復。

  • 在輸入和輸出中包含行號,從而減小了粒度,並因此減小了預測任務的複雜度。

  • DeepFix 可以迭代式修復一個程序中的多個錯誤。

  • oracle 被用於跟蹤進展以及防止出現沒有幫助或任意的改變。

  • DeepFix 的修復策略是相當通用的。比如說,如果我們試圖修復邏輯錯誤,我們可以使用一個帶有測試套件(比如 oracle)的測試引擎。如果一個修復導致該程序能通過更多測試,那麼該修復就會被接受。

深度學習C語言修改器DeepFix:用人工智慧加「;」

圖 3:在原始數據集上,錯誤程序中任務的減少

深度學習C語言修改器DeepFix:用人工智慧加「;」

表 2:錯誤類型和對應原因的總結

深度學習C語言修改器DeepFix:用人工智慧加「;」

圖 4:排名前 4 的錯誤信息,以及在原始數據集上修復前後的錯誤信息的數量

深度學習C語言修改器DeepFix:用人工智慧加「;」

圖 5:在原始數據集上每次迭代之後的錯誤信息的數量

深度學習C語言修改器DeepFix:用人工智慧加「;」

圖 6:正確(圓圈)和不正確(三角形)程序的向量表示的 PCA 投影

深度學習C語言修改器DeepFix:用人工智慧加「;」

表 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設計語言