Skip to main content
QUICK REVIEW

[論文レビュー] Deep Learning for Bug-Localization in Student Programs

Rahul Gupta, Aditya Kanade|arXiv (Cornell University)|May 28, 2019
Software Testing and Debugging Techniques参考文献 27被引用数 4
ひとこと要約

本論文では、ツリー畳み込みニューラルネットワークを用いてテスト結果を予測し、ニューラルアトリビューション技術を用いてバグのあるコード行を同定する、学生のプログラムにおける意味的バグローカライゼーションのための新しい深層学習アプローチを提示する。この手法は、プログラムの実行やヒューリスティクスを必要とせず、プログラミング言語に依存しない。また、最先端の動的および静的ベースラインを上回る性能を発揮する。

ABSTRACT

Providing feedback is an integral part of teaching. Most open online courses on programming make use of automated grading systems to support programming assignments and give real-time feedback. These systems usually rely on test results to quantify the programs' functional correctness. They return failing tests to the students as feedback. However, students may find it difficult to debug their programs if they receive no hints about where the bug is and how to fix it. In this work, we present the first deep learning based technique that can localize bugs in a faulty program w.r.t. a failing test, without even running the program. At the heart of our technique is a novel tree convolutional neural network which is trained to predict whether a program passes or fails a given test. To localize the bugs, we analyze the trained network using a state-of-the-art neural prediction attribution technique and see which lines of the programs make it predict the test outcomes. Our experiments show that the proposed technique is generally more accurate than two state-of-the-art program-spectrum based and one syntactic difference based bug-localization baselines.

研究の動機と目的

  • 自動採点が失敗テストを報告するのみである大規模オンラインプログラミングコースにおいて、実行可能なフィードバックを提供する課題に対処すること。
  • コードの実行やリファレンス実装に依存せずに、学生のプログラムにおけるバグのあるコード行の自動ローカライゼーションを可能にすること。
  • ヒューリスティクスに基づく静的解析や動的スペクトラム解析を避ける、プログラミング言語に依存しない技術の開発。
  • 高い精度で不審なコード行を特定することでフィードバックの質を向上させ、学生および教員の両方に支援を提供すること。

提案手法

  • プログラムのASTとテストIDのペアを用いて、新しいツリー畳み込みニューラルネットワーク(Tree-CNN)を訓練し、与えられたテストでプログラムが合格するか否かを予測する。
  • 最先端のニューラル予測アトリビューション技術を用いて、ネットワークの予測がソースコードの特定の行にどのように関連しているかを追跡する。
  • ベースライン比較時の検索コストを低減するために、プログラム埋め込みにK-meansクラスタリングを適用し、精度を損なわず効率性を向上させる。
  • ASTからのプログラム埋め込みを活用することで、構文的・構造的ヒューリスティクスに依存しない、言語に依存しない分析を可能にする。
  • 同じクラスタに属する正しいプログラムのセットと比較して、バグのあるプログラムのアトリビューションスコアをランキング付けし、不審な行を特定する。
  • 明示的なバグアノテーションを訓練時に必要としない判別モデルを用いることで、バグローカライゼーションを実現する。

実験結果

リサーチクエスチョン

  • RQ1プログラムのASTとテストIDのペアを学習データとして用いた深層学習モデルは、プログラムを実行せずに機能的正しさを正確に予測できるか?
  • RQ2ニューラルアトリビューション技術は、不正なプログラムにおける最も不審なコード行を特定することで、意味的バグを効果的にローカライズできるか?
  • RQ3提案手法は、既存のスペクトラムベースおよび文法的差分ベースのバグローカライゼーション手法と比較して、精度で優れているか?
  • RQ4プログラム埋め込みのクラスタリングは、ローカライゼーション精度を低下させることなく、どの程度効率性を向上させられるか?
  • RQ5提案手法は、言語固有のチューニングなしに、さまざまなプログラミング言語に一般化可能か?

主な発見

  • 提案された深層学習ベースのバグローカライゼーション手法は、2つの最先端の動的スぺクトラムベース手法および1つの静的文法的差分ベース手法を、ほとんどの評価指標で上回った。
  • プログラム埋め込みにK-meansクラスタリングを適用することで、ベースラインの検索コストが5倍に削減され、すべての指標で精度の低下が0.5%未満に抑えられた。
  • バグのある行の特定において高い精度を達成し、例題ケース(行9および10)ではトップ5の不審な行に実際にバグのある行が正しく含まれていた。
  • この手法はプログラミング言語に依存しない。ASTベースの埋め込みに依存しており、構文的・構造的ヒューリスティクスに依存しない。
  • 訓練時に手動アノテーション、リファレンス実装、またはプログラム実行を一切必要としないため、大規模オンラインコースにスケーラブルに適用可能である。
  • ニューラルアトリビューション機構は、実行トレースにアクセスできない状況下でも、失敗予測に最も寄与する行を強調することで、意味的バグを効果的にローカライズした。

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

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

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

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