Skip to main content
QUICK REVIEW

[論文レビュー] Graph-based, Self-Supervised Program Repair from Diagnostic Feedback

Michihiro Yasunaga, Percy Liang|arXiv (Cornell University)|May 20, 2020
Software Testing and Debugging Techniques参考文献 40被引用数 48
ひとこと要約

DrRepair は診断フィードバックからプログラムを修復するためのプログラム-フィードバックグラフと自己教師付き事前学習を用い、DeepFix と SPoC で最先端の修復率を達成します。

ABSTRACT

We consider the problem of learning to repair programs from diagnostic feedback (e.g., compiler error messages). Program repair is challenging for two reasons: First, it requires reasoning and tracking symbols across source code and diagnostic feedback. Second, labeled datasets available for program repair are relatively small. In this work, we propose novel solutions to these two challenges. First, we introduce a program-feedback graph, which connects symbols relevant to program repair in source code and diagnostic feedback, and then apply a graph neural network on top to model the reasoning process. Second, we present a self-supervised learning paradigm for program repair that leverages unlabeled programs available online to create a large amount of extra program repair examples, which we use to pre-train our models. We evaluate our proposed approach on two applications: correcting introductory programming assignments (DeepFix dataset) and correcting the outputs of program synthesis (SPoC dataset). Our final system, DrRepair, significantly outperforms prior work, achieving 68.2% full repair rate on DeepFix (+22.9% over the prior best), and 48.4% synthesis success rate on SPoC (+3.7% over the prior best).

研究の動機と目的

  • コンパイラ/診断フィードバックから壊れたプログラムを修復する学習を動機づける。
  • コードとフィードバックを横断する記号間推論、および限られたラベル付き修復データ。
  • 修復精度を向上させるためのグラフベースの表現と自己教師付き学習パラダイムを提案する。

提案手法

  • コードとメッセージ全体で識別子と診断トークンを結ぶプログラム-フィードバックグラフを導入する。
  • プログラム-フィードバックグラフ上でグラフ注意ネットワークを適用して記号情報を伝播させる。
  • 大量のラベルなし動作プログラムを破損させてから修正/修正済みペアを作成する自己教師付き事前学習制度を使用する。
  • エンコーダ-デコーダ構造を持つ修復モデル(DrRepair)を訓練し、誤っている行を局在化して修正版の行を生成する。
  • DeepFix(全修復率)と SPoC(合成修復率)で評価し、複数エラーのプログラムには反復修復を使用する。

実験結果

リサーチクエスチョン

  • RQ1プログラム-フィードバックグラフは、シーケンス/ASTベースの方法を超えて情報フローと記号追跡を改善できるか。
  • RQ2自己教師付き事前学習を用いたラベルなしコードは、データが不足している設定で修復性能を向上させるか。
  • RQ3グラフ推論と事前学習の組み合わせは、初心者プログラミング課題およびプログラム合成出力での修復精度にどのように影響するか。
  • RQ4複数の同時エラーや跨行推論を要するエラーに対して方法は頑健か。

主な発見

  • DrRepair は DeepFix で全修復率 68.2% を達成し、従来の最高を 22.9 ポイント改善した。
  • DrRepair は SPoC で合成成功率 48.4% を達成し、従来の最高を 3.7 ポイント改善した。
  • 自己教師付き事前学習とプログラム-フィードバックグラフは、強力なベースラインに対して相補的な利得を提供する。
  • コードのみのトークンとコード–フィードバックトークンを結ぶグラフエッジの双方が有益で、最終的なプログラム-フィードバックグラフが最良の結果を生む。
  • コンパイラメッセージは修復性能にとって重要であり、それを除去すると実データの精度が大幅に低下する。
  • グラフベースの推論は特に跨行分析と記号追跡を要するエラーに有効である。

より良い研究を、今すぐ始めましょう

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。