Skip to main content
QUICK REVIEW

[論文レビュー] Generative Code Modeling with Graphs

Marc Brockschmidt, Miltiadis Allamanis|arXiv (Cornell University)|May 22, 2018
Software Engineering Research参考文献 27被引用数 76
ひとこと要約

グラフベースの生成モデルを用いたコード生成は、文法駆動の展開とグラフ拡張およびニューラルメッセージ伝搬を組み合わせて意味的に意味のある式を生成し、強力なベースラインを上回る。

ABSTRACT

Generative models for source code are an interesting structured prediction problem, requiring to reason about both hard syntactic and semantic constraints as well as about natural, likely programs. We present a novel model for this problem that uses a graph to represent the intermediate state of the generated output. The generative procedure interleaves grammar-driven expansion steps with graph augmentation and neural message passing steps. An experimental evaluation shows that our new model can generate semantically meaningful expressions, outperforming a range of strong baselines.

研究の動機と目的

  • 文法構造と意味的制約の両方を尊重する生成コードモデルを動機づける。
  • ASTに属性のような関係を付与しニューラルメッセージ伝搬を用いるグラフベースのデコーダを提案する。
  • ExprGen、コードコンテキストに条件づけられた意味的に複雑な式を生成する CodeGen タスクを導入する。
  • 提案するグラフベースのアプローチを大規模 ExprGen データセット上で強力なベースラインと比較評価する。

提案手法

  • 既存のエンコーダでコード文脈をエンコードして文脈および各変数表現を取得する。
  • 属性エッジ(継承/生成)と関係エッジを追加して拡張された構文グラフを構築する。
  • 属性をニューラルノードとして表現し、エッ_TYPEごとの変換を持つグラフニューラルネットワークで h_v を計算する。
  • 学習済み分類器とポインタ機構を用いて、生成規則・変数・リテラルをデコード時に選択する。
  • 最大尤度でエンドツーエンドに訓練し、オプションでエッジメッセージにラベル付きエッジタイプと注意機構を付与する。
  • 必要に応じて注意とラベル付きエッジを用いたメッセージ伝搬を拡張して情報の流れを改善する。

実験結果

リサーチクエスチョン

  • RQ1文脈を条件としてグラフ拡張・文法駆動デコーダが意味的に妥当なコード表現を生成できるか。
  • RQ2属性文法とニューラルメッセージ伝搬を統合することで、ベースラインと比較して意味的正確性(型付けの正しさ)および ground truth との一致度が向上するか。
  • RQ3ExprGen タスクにおいて、グラフベースアプローチはツリー型・シーケンス型デコーダとどう比較されるか。特にクロスプロジェクト転送下でどうか。
  • RQ4ラベル付きエッジと強化された生成条件付けが生成品質にどのような影響を与えるか。

主な発見

モデルTest (from seen projects) perplexityTest (from seen projects) well-typedTest (from seen projects) Acc@1Test (from seen projects) Acc@5Test-only (from unseen projects) perplexityTest-only (from unseen projects) well-typedTest-only (from unseen projects) Acc@1Test-only (from unseen projects) Acc@5
PHOG †34.8%42.9%28.0%37.3%
Seq→Seq87.4832.4%21.8%28.1%130.4623.4%10.8%16.8%
Seq→NAG6.8153.2%17.7%33.7%8.3840.4%8.4%15.8%
G→Seq93.3140.9%27.1%34.8%28.4836.3%17.2%25.6%
G→Tree4.3749.3%26.8%48.9%5.3741.2%19.9%36.8%
G→ASN2.6278.7%45.7%62.0%3.0374.7%32.4%48.1%
G→Syn2.7184.9%50.5%66.8%3.4884.5%36.0%52.7%
G→NAG2.5686.4%52.3%69.2%3.0784.5%38.8%57.0%
  • グラフ拡張モデル(NAG)は、ベースラインよりも意味的指標と転送に対する頑健性が一般に向上する。
  • 見たプロジェクトのテストデータで、NAG は他のグラフ変種よりも高い適型性と Acc@5 のスコアを達成する。
  • 未知プロジェクトのテストデータでも、NAG は競争力を維持し、しばしばグラフを用いないベースラインを意味的正確性で上回る。
  • PHOG ベースラインは左側コンテキストのみに条件づけられており、意味指標でグラフベースデコーダよりも劣る。
  • 全体として、NAG はパープレックス、適型性、および ground-truth 表現の回収において最も強いパフォーマンスを示す。
  • 属性グラフを介した情報流の拡張が生成品質と転送性を高めることを示唆する。

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

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

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

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