Skip to main content
QUICK REVIEW

[論文レビュー] ENCORE: Ensemble Learning using Convolution Neural Machine Translation for Automatic Program Repair

Thibaud Lutellier, Lawrence Pang|arXiv (Cornell University)|Jun 20, 2019
Software Testing and Debugging Techniques参考文献 69被引用数 10
ひとこと要約

ENCOREは、複数の多様なNMTモデルを活用することで、複数のプログラミング言語にわたるバグを修正するためのアンサンブル畳み込みニューラル機械翻訳(NMT)アプローチを提案する。この手法は、先行手法を上回り、Java、C++、Python、JavaScriptの5つのベンチマークで合計67件のバグを修正した。そのうち16件は以前に修正されていなかった。

ABSTRACT

Automated generate-and-validate (G&V) program repair techniques typically rely on hard-coded rules, only fix bugs following specific patterns, and are hard to adapt to different programming languages. We propose ENCORE, a new G&V technique, which uses ensemble learning on convolutional neural machine translation (NMT) models to automatically fix bugs in multiple programming languages. We take advantage of the randomness in hyper-parameter tuning to build multiple models that fix different bugs and combine them using ensemble learning. This new convolutional NMT approach outperforms the standard long short-term memory (LSTM) approach used in previous work, as it better captures both local and long-distance connections between tokens. Our evaluation on two popular benchmarks, Defects4J and QuixBugs, shows that ENCORE fixed 42 bugs, including 16 that have not been fixed by existing techniques. In addition, ENCORE is the first G&V repair technique to be applied to four popular programming languages (Java, C++, Python, and JavaScript), fixing a total of 67 bugs across five benchmarks.

研究の動機と目的

  • ハードコードされたルールに依存する既存の自動プログラム修復(APR)手法の限界を解決すること。特に、プログラミング言語間での一般化に困難を抱えること。
  • 従来のニューラル機械翻訳(NMT)ベースのAPR手法が、一般化性能が低く、探索空間が限定的である問題を克服すること。これは、複雑なバグやパターンに依存しないバグを修正できない原因となる。
  • 言語固有のルールに依存することを減らし、データから直接修復パターンを学習することで、複数のプログラミング言語にわたる効果的なプログラム修復を可能にすること。
  • 異なるハイパーパrameterを有する畳み込みNMTモデルをアンサンブル学習することで、多様な修復戦略を捉え、修復効果を向上させること。
  • バグの文脈に依存するのを減らし、短く固定長のバグあり→修正ありの行ペアで学習することで、スケーラビリティを向上させ、より大きなメソッドにおいても高いパフォーマンスを発揮すること。

提案手法

  • ランダムサーチを用いて、異なるハイパーパrameterを持つ複数の畳み込みNMTモデルを学習し、モデルの多様性を確保することで、多様な修復パターンを捉える能力を高める。
  • 複数のNMTモデルの予測をアンサンブル学習で統合することで、さまざまなバグタイプにわたるロバスト性と一般化性能を向上させる。
  • LSTMベースのモデルではなく、畳み込みエンコーダ・デコーダアーキテクチャを採用することで、コードトークンにおける局所的および長距離の依存関係をよりよく捉える。
  • 最大数百万件のバグあり→修正ありの行ペアを用いてモデルを学習し、入力シーケンスを固定長にすることで、文脈長の問題を回避し、学習効率を向上させる。
  • 生成されたパッチをプログラムのテストスイートで検証し、コンパイル可能でかつすべての故障を引き起こすテストケースを通過する最高ランクの修正を返す。
  • マルチステップアテンションメカニズムを適用することで、モデルの予測を説明可能とし、開発者およびモデル開発者の解釈性を向上させる。

実験結果

リサーチクエスチョン

  • RQ1畳み込みNMTモデルのアンサンブルは、標準のLSTMベースのNMTおよびルールベースのG&V手法を上回る性能を示せるか?
  • RQ2言語固有のルール工学なしに、データ駆動型のニューラルNMTアプローチが複数のプログラミング言語にわたって一般化できる程度はどの程度か?
  • RQ3入力シーケンスから明示的なバグ文脈を排除することで、モデルのパフォーマンスとスケーラビリティが向上するか。特に、より大きなメソッドにおいて顕著か?
  • RQ4多様なNMTモデルをアンサンブル学習することで、従来の手法が見逃していた未修復のバグを修正できるか?
  • RQ5本手法は、単純な構文エラーやコンパイルエラーを超えた複雑なバグに対しても、どの程度効果的か?

主な発見

  • ENCOREは、4つのプログラミング言語(Java、C++、Python、JavaScript)の5つのベンチマークで合計67件のバグを修正し、先行のNMTベースおよびルールベースのG&V手法を著しく上回った。
  • ENCOREは、既存のあらゆる手法が修正できなかった16件のバグを正常に修復した。これは、新規の修復パターンを発見できる能力を示している。
  • 畳み込みNMTアーキテクチャは、コード内のトークンの局所的および長距離の依存関係をよりよく捉えることができ、標準のLSTMベースのモデルを上回った。
  • 数百万件の固定長のバグあり→修正ありの行ペアを用いて学習し、明示的な文脈を排除することで、文脈依存型のアプローチよりもスケーラビリティとパフォーマンスに優れた。
  • ENCOREのアンサンブル学習アプローチにより、ハイパーパrameterのランダムネスへの感受性が低下し、多様なバグタイプにわたるロバスト性が向上した。
  • モデルは過学習したパッチを生成し、java.util.Arrays.asListに潜在的なライブラリレベルのバグを特定した。これは、ミューテント生成やより深いバグ検出の可能性を示唆している。

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

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

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

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