Skip to main content
QUICK REVIEW

[論文レビュー] Automated Correction for Syntax Errors in Programming Assignments using Recurrent Neural Networks

Sahil Bhatia, Rishabh Singh|arXiv (Cornell University)|Mar 19, 2016
Software Engineering Research参考文献 19被引用数 71
ひとこと要約

本論文は、正しい学生の提出物から有効なトークン列を学習することで、学生のプログラミング課題における構文エラーの修復提案を自動的に生成するRNNベースの手法を提案する。この手法は、edXのMOOCで得られた14,000件を超える誤りのある提出物に対して、完全修復率31.69%、部分的修復率6.39%を達成し、自動フィードバックシステムでこれまで無視されてきたエラーの種類に対して深層学習を用いることの妥当性を示している。

ABSTRACT

We present a method for automatically generating repair feedback for syntax errors for introductory programming problems. Syntax errors constitute one of the largest classes of errors (34%) in our dataset of student submissions obtained from a MOOC course on edX. The previous techniques for generating automated feed- back on programming assignments have focused on functional correctness and style considerations of student programs. These techniques analyze the program AST of the program and then perform some dynamic and symbolic analyses to compute repair feedback. Unfortunately, it is not possible to generate ASTs for student pro- grams with syntax errors and therefore the previous feedback techniques are not applicable in repairing syntax errors. We present a technique for providing feedback on syntax errors that uses Recurrent neural networks (RNNs) to model syntactically valid token sequences. Our approach is inspired from the recent work on learning language models from Big Code (large code corpus). For a given programming assignment, we first learn an RNN to model all valid token sequences using the set of syntactically correct student submissions. Then, for a student submission with syntax errors, we query the learnt RNN model with the prefix to- ken sequence to predict token sequences that can fix the error by either replacing or inserting the predicted token sequence at the error location. We evaluate our technique on over 14, 000 student submissions with syntax errors. Our technique can completely re- pair 31.69% (4501/14203) of submissions with syntax errors and in addition partially correct 6.39% (908/14203) of the submissions.

研究の動機と目的

  • 大規模オンラインプログラミングコースにおいて、提出物の34%を占める構文エラーに対する自動フィードバックの不足を解消すること。
  • AST(抽象構文木)に依存せずに、構文エラーの修復提案を生成する技術を開発すること。ASTは不正なプログラムでは利用できないため。
  • 大規模な正しい学生の提出物を活用して、エラーを修正するための文法的に正しいトークン列を予測するシーケンスモデルを学習すること。
  • 構文エラーに関する自動でリアルタイムのフィードバックを可能にすることで、プログラミング教育のアクセシビリティとスケーラビリティを向上させること。
  • RNNが機能的正しさを超えた教育的フィードバックのためのコード構造モデリングに果たす可能性を検討すること。

提案手法

  • 特定のプログラミング課題の構文的に正しいすべての学生提出物を用いて、RNNをトレーニングし、有効なトークン列の言語モデルを学習する。
  • 構文エラーを含む学生の提出物に対しては、エラー発生位置までのトークン列のプレフィックスをRNNの入力として使用し、修正用のトークン列を予測する。
  • 予測されたトークン列をエラー発生位置に置き換えたり挿入したりすることで候補となる修復を生成し、コンパイラを用いて文法的正しさを検証する。
  • コンパイル可能であることが保証された修復のみを、学生へのフィードバックとして返す。
  • より高い修復カバレッジを得るために、複数の高確率トークン列予測を探索するビームサーチ戦略を採用する。
  • オンライン教育プラットフォームで数千件の学生提出物にスケーラブルに対応できるフィードバックパイプラインにモデルを統合する。

実験結果

リサーチクエスチョン

  • RQ1正しい学生コードから学習したシーケンスモデルが、誤った提出物における構文エラーの文法的に正しい修復を効果的に予測できるか。
  • RQ2RNNベースの言語モデルは、実際の学生実装から、有効なコード列の文法的パターンをどの程度学習できるか。
  • RQ3従来のコンパイラのエラーメッセージやASTベースのフィードバックシステムと比較して、提案手法は構文エラーの修復においてどの程度効果的か。
  • RQ4このモデルは、入門プログラミング課題における多様な学生のコーディングスタイルやエラーのパターンに一般化できるか。
  • RQ5修復予測に未来のコンテキスト(後続トークン)を考慮しないプレフィックスのみのコンテキスト依存性が、性能に与える制限は何か。今後のモデルは、より高い正確性を得るためにどのように未来のコンテキストを統合できるか。

主な発見

  • 提案されたRNNベースの手法は、構文エラーを含む学生提出物のうち31.69%(14,203件中4,501件)を正常に修復し、実用的な有効性を示した。
  • さらに6.39%(14,203件中908件)の提出物が部分的に修正可能であり、複雑または複数の部分からなるエラーに対しても対応可能であることを示した。
  • モデルの性能は、将来的なトークンを考慮しないプレフィックスのみのコンテキスト依存性に強く制限されており、修正の正確性を向上させるために未来のコンテキストを考慮する必要がある。
  • 1つの提出物に複数の構文エラーが存在する場合、1つのエラーを修正しても他のエラーが残るため、現在のシステムは同時に複数のエラーを処理できない。再帰的適用が必要となる。
  • 構文的に正しい場合でも、意味的に誤った修正を生成するリスクがあるため、今後の拡張において追加の意味的検証の導入が不可欠である。
  • 本手法は、edX、Coursera、UdacityなどのMOOCプラットフォームへの統合の可能性を示しており、入門プログラミングコースにおける自動フィードバックのスケーリングに強く期待できる。

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

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

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

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