Skip to main content
QUICK REVIEW

[論文レビュー] Deep Reinforcement Learning for Programming Language Correction

Rahul Gupta, Aditya Kanade|arXiv (Cornell University)|Jan 31, 2018
Reinforcement Learning in Robotics参考文献 14被引用数 22
ひとこと要約

本論文では、構文エラーを人間の編集行動を模倣するナビゲーションとトークンレベルの編集を通じて補正する、深層強化学習フレームワークであるRLAssistを提案する。構文の前提知識なしに、生のプログラムテキストから直接学習するが、最先端のDeepFixを上回り、14%多くのプログラムと29%多くのコンパイラエラーメッセージを修正する。また、学習を加速するために、専門家による模倣データの10%のみを用いる。

ABSTRACT

Novice programmers often struggle with the formal syntax of programming languages. To assist them, we design a novel programming language correction framework amenable to reinforcement learning. The framework allows an agent to mimic human actions for text navigation and editing. We demonstrate that the agent can be trained through self-exploration directly from the raw input, that is, program text itself, without any knowledge of the formal syntax of the programming language. We leverage expert demonstrations for one tenth of the training data to accelerate training. The proposed technique is evaluated on 6975 erroneous C programs with typographic errors, written by students during an introductory programming course. Our technique fixes 14% more programs and 29% more compiler error messages relative to those fixed by a state-of-the-art tool, DeepFix, which uses a fully supervised neural machine translation approach.

研究の動機と目的

  • 初心者プログラマーが一般的に発生させるプログラミング言語の構文エラーを補助する課題に対処すること。
  • 形式的なプログラミング構文の知識なしに、プログラムテキストをナビゲートおよび編集できる強化学習ベースのエージェントを開発すること。
  • DeepFixのような既存ツールを改善し、より細かく、トークンレベルの編集と強力なエラー回復を可能にすること。
  • 自己探索による最小限の専門家監視でのみ、効果的なプログラム補正が達成可能であることを示すこと。

提案手法

  • エージェントは、プログラムテキストとカーソル位置を処理するLSTMベースのエンコーダーを用い、文脈的な埋め込みを生成する。
  • エージェントは離散的な行動を実行する:トークンをナビゲートする(左/右/上/下)およびトークンを編集する(挿入/削除/置換)。
  • 報酬関数は、コンパイルエラーメッセージの削減に基づいて設計され、正常なコンパイルに成功した時点で最大報酬が与えられる。
  • 非同期の優位性アクター・クリティック(A3C)アルゴリズムが、累積報酬を最大化するようにエージェントの方策を訓練する。
  • 専門家による模倣データは、学習を加速するために僅かに使用される(学習データの10%)、人間の介入なしに自動生成される。
  • エージェントは、プログラムを悪化させる編集を拒否する環境であり、生産的でない探索を pruning し、サンプル効率を向上させる。

実験結果

リサーチクエスチョン

  • RQ1構文の前提知識なしに、生のプログラムテキストとコンパイラフィードバックのみを用いて、強化学習エージェントがプログラミング言語の構文エラーを学習的に修正できるか?
  • RQ2自動的に生成された専門家模倣データであっても、プログラム補正の強化学習設定において、学習の加速に顕著な効果をもたらすか?
  • RQ3トークンレベルの編集は、一般的なプログラミングエラーの修正において、行レベルの編集を上回るか?
  • RQ4強化学習エージェントは、DeepFixのような完全に教師ありのニューラルマシン翻訳モデルを上回ることができるか?
  • RQ5自己探索のみで、専門家による模倣なしに、高性能なプログラム補正エージェントを訓練可能か?

主な発見

  • RLAssistは、完全に1,854のプログラムを修正し、部分的に1,426のプログラムを修正し、完全に修正されたプログラムにおいてDeepFixを14%上回った。
  • RLAssistは6,652件のコンパイルエラーメッセージを解消したが、これはDeepFixの5,156件を29%上回る。
  • 専門家による模倣データなしでも、Baseline2(編集ペナルティゼロ)は76%のエラーメッセージ解消率を達成し、DeepFixと同等の性能を示した。
  • エージェントが学習した埋め込みは、エラー局在状態に対して明確なクラスタを形成しており、エージェントがプログラム構造とエラー位置の両方を正しく捉えていることを確認した。
  • RLAssistのトークンレベルの編集により、DeepFixの行レベルの置換とは異なり、正確な修正が可能になった。
  • このフレームワークはプログラミング言語に依存せず、他の言語やエラー種別へも拡張可能である。

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

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

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

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