Skip to main content
QUICK REVIEW

[論文レビュー] Retrieval-Based Neural Code Generation

Shirley Anugrah Hayati, Raphaël Olivier|arXiv (Cornell University)|Aug 29, 2018
Software Engineering Research参考文献 19被引用数 8
ひとこと要約

この論文では、類似したトレーニング例からアクション部分木テンプレートを検索して再利用することで構文的に正しいコード生成を向上させる、リトリーブベースのニューラルコード生成モデルReCodeを提案する。動的計画法に基づく文書アラインメントとn-gram部分木リトリーブを活用することで、2つのコード生成タスクにおいて最大+2.6 BLEUの性能向上を達成し、珍しいまたは複雑なコードパターンの一般化を向上させる。

ABSTRACT

In models to generate program source code from natural language, representing this code in a tree structure has been a common approach. However, existing methods often fail to generate complex code correctly due to a lack of ability to memorize large and complex structures. We introduce ReCode, a method based on subtree retrieval that makes it possible to explicitly reference existing code examples within a neural code generation model. First, we retrieve sentences that are similar to input sentences using a dynamic-programming-based sentence similarity scoring method. Next, we extract n-grams of action sequences that build the associated abstract syntax tree. Finally, we increase the probability of actions that cause the retrieved n-gram action subtree to be in the predicted code. We show that our approach improves the performance on two code generation tasks by up to +2.6 BLEU.

研究の動機と目的

  • ニューラルコード生成において、珍しいまたは低頻度の自然言語記述に対する複雑で構文的に正しいコードを生成する課題に対処すること。
  • 大規模または複雑なコード構造を記憶しにくく、性能を発揮できない既存の木ベースのモデルの限界を克服すること。
  • 抽象構文木(AST)における構造的類似性を活用して、ニューラル機械翻訳からリトリーブベースの手法をコード生成に適応すること。
  • 類似したコードテンプレートの明示的再利用を通じて、珍しいまたは複雑なコードパターンの一般化と正確性を向上させること。

提案手法

  • 入力の自然言語記述と最も類似したトレーニング例上位M件を、編集距離に基づく文書類似度スコアリングによって検索する。
  • 検索されたコード例のASTからn-gramアクション部分木を抽出し、コード生成における再利用可能な構造的パターンを表現する。
  • 動的計画法に基づくアラインメント手法を適用して、検索されたアクションシーケンスの単語を入力NL記述の対応語に置き換えることで、部分一致の処理を可能にする。
  • 予測ASTに検索されたn-gramアクション部分木が含まれるよう、デコードプロセスを修正してそのアクションの発生確率を高める。
  • 順序走査によるpreorder走査でASTを生成するため、アクション埋め込み、コンテキストベクトル、親ノード入力、コピーメカニズムを備えたseq2seqモデルを用いる。
  • リトリーブされた部分木と整合するアクションの確率を向上させることで、アテンションメカニズムにリトリーブガイダンスを統合し、構文的正しさと構造的関連性を保証する。

実験結果

リサーチクエスチョン

  • RQ1構造的コードパターンのリトリーブは、珍しいまたは複雑な自然言語記述に対するニューラルコード生成を改善できるか?
  • RQ2木構造に線形構造がないため、ASTベースのコード生成に部分木レベルのリトリーブを効果的に適用できるか?
  • RQ3動的計画法に基づく文書アラインメントは、コード生成における不完全または部分的な一致のリトリーブ性能を向上させられるか?
  • RQ4検索されたアクション部分木の統合は、BLEUスコアと構文的正しさの両面でどの程度向上をもたらすか?
  • RQ5珍しいまたは複雑なコードパターンの処理において、リトリーブベースの生成は最先端モデルと比較してどのように優れるか?

主な発見

  • ReCodeは2つのベンチマークコード生成タスクにおいて最大+2.6 BLEUポイントの性能向上を達成し、先行する最先端モデルと比較して顕著な向上を示した。
  • 以前のモデルが処理できなかった複雑なフレーズに対しても、正しくコードを生成することができ、たとえば1つの例で正確に action timesince(d, now, reversed) を予測した。
  • 参照コードに珍しいまたは複雑な構文が含まれる状況では、ReCodeは参照と完全に一致しなくても、より正確で構造的に正しいコードを生成し、ベースラインモデル(YN17)を上回った。
  • リトリーブ機構により、HSデータセットの例で示されるように、複雑なコード構造の処理がより良く行われた。ReCodeは正しくオーバーロード属性を推論したが、ベースラインモデルはその処理に失敗した。
  • 改善は見られたが、変数の正しくコピーできない場合や、型の正しくキャストできない場合もあり、コピーメカニズムの一般化に限界があることが示された。
  • 類似したトレーニング例からの構造的パターンの再利用により、珍しい語彙外の語や構文に対しても効果的に一般化され、珍しいシーケンスの記憶に依存する必要が減った。

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

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

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

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