Skip to main content
QUICK REVIEW

[論文レビュー] Structured Generative Models of Natural Source Code

Chris J. Maddison, Daniel Tarlow|arXiv (Cornell University)|Jan 2, 2014
Software Engineering Research参考文献 28被引用数 93
ひとこと要約

本稿では、コンパイラにインspiredされた推論と階層的構造モデリングを統合することで、確率的文脈自由文法(PCFG)とニューラル確率的言語モデルを拡張し、自然なソースコード(NSC)の構造的生成モデルを提案する。得られた対数線形木走査(LTT)モデルは、保留コードにおける予測対数尤度においてベースラインを著しく上回り、スコープ規則、ブロック構造、変数使用パターンを捉えることで、より現実的で意味的に整合性のあるコードサンプルを生成する。

ABSTRACT

We study the problem of building generative models of natural source code (NSC); that is, source code written and understood by humans. Our primary contribution is to describe a family of generative models for NSC that have three key properties: First, they incorporate both sequential and hierarchical structure. Second, we learn a distributed representation of source code elements. Finally, they integrate closely with a compiler, which allows leveraging compiler logic and abstractions when building structure into the model. We also develop an extension that includes more complex structure, refining how the model generates identifier tokens based on what variables are currently in scope. Our models can be learned efficiently, and we show empirically that including appropriate structure greatly improves the models, measured by the probability of generating test programs.

研究の動機と目的

  • 人間が書いた、階層的で意味的に構造化された自然なソースコード(NSC)に特化した生成モデルの開発。
  • ソースコードの統一された確率的モデルを学習することで、コード補完、バグ検出、コード要約の改善。
  • 神経的および確率的モデルにコンパイラに似た推論を統合し、言語固有の制約とスコープ規則をよりよく捉える。
  • 構造的生成モデリングが、標準的なNLPやn-gramベースラインと比較して、より優れた性能とより現実的なコードサンプルをもたらすことを示すこと。
  • 生成モデルが、プログラム誘導、API提案、コード表現学習などの下流タスクの基盤としての可能性を検討すること。

提案手法

  • 確率的文脈自由文法(PCFG)に対数線形パラメータライゼーションを拡張し、ソースコード内の階層的木構造をモデリング。
  • 木構造的生成とニューラルパラメータライゼーションを組み合わせた、対数線形木走査(LTT)モデルを導入し、効率的な推論と学習を実現。
  • 局所的・グローバルな変数スコープをモデリングすることで、コンパイラに似た推論を実装し、構文的・意味的に整合性のあるコード生成を保証。
  • 階層的シーケンスモデル(Hi&Seq)を用いてブロック文やメソッド本体をモデリングし、平坦なシーケンスベースラインよりも優れた構造モデリングを実現。
  • ローカルとグローバルな識別子トークンを区別するスコープ対応モデルを採用し、生成コストを低減するとともに精度を向上。
  • Roslynコンパイラが提供する豊富なASTおよびシンボル情報を利用し、公開リポジトリからのC#ソースコードコーパスを用いて効率的にモデルを学習。

実験結果

リサーチクエスチョン

  • RQ1PCFGとニューラルパラメータライゼーションを統合した構造的生成モデルは、標準的なNLPやn-gramモデルと比較して、自然なソースコードのモデリングにおいて優れた性能を示すか?
  • RQ2スコープ追跡や型制約といったコンパイラに似た推論を組み込むことで、生成コードの品質はどのように変化するか?
  • RQ3階層的・構造的モデリング要素(例:forループ、ブロック、メソッド宣言)は、対数尤度と現実性の向上にどの程度寄与するか?
  • RQ4明示的教師信号なしで、変数の再利用やスコープ規則といった微妙な文法的パターンをモデルが学習できるか?
  • RQ5異なるアーキテクチャ的要素(例:スコープモデリング、ブロックモデリング)は、全体の予測性能にどの程度寄与するか?

主な発見

  • LTT-HiSeq-Scopeモデルは、ベースラインのLBL n-gramモデル(-4.23)と比較して、最高のテスト対数尤度(-2.33)を達成した。
  • モデルはHi&Seqベースラインと比較して、木構造の生成に高いコストを要するが、トークン生成コストを著しく低く抑え、構造的効率性が優れていることが示された。
  • グローバルスコープからの識別子トークンが、合計対数尤度の30.1%を占め、次にローカルスコープの識別子(10.9%)、ブロック文(10.6%)が続く。これは主なモデリングの課題を示している。
  • 定性的なサンプルでは、適切なスコープ、変数の再利用、および「int」変数が角括弧内に現れるような文法的パターンを備えた現実的なforループが生成されている。
  • モデルはメソッド宣言やブロックネスティングといった高レベルのコード構造を捉えており、ネストされたループにおける「Math.Max」の使用といった微妙なパターンも学習している。
  • スコープモデルにより、ベースラインと比較してトークン生成コストが1.68低下し、平坦なシーケンス生成と比較して構造的モデリングの利点が明確に示された。

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

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

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

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