Skip to main content
QUICK REVIEW

[論文レビュー] A deep language model for software code

Hoa Khanh Dam, Truyen Tran|arXiv (Cornell University)|Aug 9, 2016
Software Engineering Research参考文献 12被引用数 69
ひとこと要約

この論文は、従来のn-gramモデルが対応できない長期依存関係を捉えるために、ソフトウェアコード向けのLSTMベースのディープラーニング言語モデルを提案する。Javaコーパス上で評価した結果、長期間のシーケンスにおいてRNNと比較して最大27.2%低いパープレキシティを達成し、長期的なコード依存関係のモデリングにおいて優れた性能を示した。

ABSTRACT

Existing language models such as n-grams for software code often fail to capture a long context where dependent code elements scatter far apart. In this paper, we propose a novel approach to build a language model for software code to address this particular issue. Our language model, partly inspired by human memory, is built upon the powerful deep learning-based Long Short Term Memory architecture that is capable of learning long-term dependencies which occur frequently in software code. Results from our intrinsic evaluation on a corpus of Java projects have demonstrated the effectiveness of our language model. This work contributes to realizing our vision for DeepSoft, an end-to-end, generic deep learning-based framework for modeling software and its development process.

研究の動機と目的

  • n-gramモデルが、離れた場所に位置する依存するトークンを捉えることができないという限界を解消すること。
  • ソースコード内の長期的文脈パターンを学習できるディープラーニングベースの言語モデルを開発すること。
  • 標準的なRNNと比較して、LSTMアーキテクチャがソフトウェアコードをモデリングする上で果たす効果を評価すること。
  • エンドツーエンドのソフトウェアモデリングおよび開発プロセス分析のための汎用的なディープラーニングフレームワーク「DeepSoft」の基盤を構築すること。

提案手法

  • モデルは、コードトークンを逐次処理し、セル状態を通じて長期的文脈を維持するため、長短記憶(LSTM)再帰ニューラルネットワークを用いる。
  • 言語モデルは自己回帰的モデリングを用いてコードシーケンスの確率を推定する:P(s) = P(w₁) × ∏ₜ₌₂ᵏ P(wₜ|w₁:ₜ₋₁)。
  • 各コードトークンに対して固定次元Dの単語埋め込みが学習され、まれなトークンは<unk>にマッピングされる。
  • 最適なコードシーケンス性能を達成するため、調整されたハイパーパrameter(η=0.02, ρ=0.99, ε=10⁻⁷)を用いてRMSpropでモデルを訓練する。
  • Javaコーパス全体の最も頻出するコードトークンから、固定サイズN=1,000の語彙が構築される。
  • パープレキシティは内挿的評価指標として用いられ、exp(−∑log P(s)/#words)として計算され、値が低いほど性能が優れていることを示す。

実験結果

リサーチクエスチョン

  • RQ1n-gramモデルがモデリングできないソフトウェアコード内の長期的依存関係を、LSTMベースの言語モデルが効果的に捉えることができるか?
  • RQ2さまざまな長さのコードシーケンスにおいて、LSTMモデルの性能は標準的なRNNと比べてどの程度異なるか?
  • RQ3モデル容量(例:埋め込み次元数やシーケンス長)が言語モデルの性能に及ぼす影響はどの程度か?
  • RQ4学習された表現が、下流のソフトウェア工学タスクに効果的に応用できるか?

主な発見

  • 長さ500のシーケンスにおいて、LSTMモデルは標準的なRNNと比較して27.2%のパープレキシティ低減を達成し、長期間シーケンスモデリングにおいて優れた性能を示した。
  • 短いシーケンス(長さ10)においても、LSTMモデルはパープレキシティを4.7%低減し、短い文脈でも一貫した改善を示した。
  • 長さ100のシーケンスにおいて、LSTMモデルはRNNと比較して11.1%のパープレキシティ低減を達成し、シーケンス長が延びるにつれて性能が向上した。
  • 固定シーケンス長で埋め込み次元数を変化させた場合、200次元でLSTMモデルは37.9%の改善を示し、大規模モデルにおけるより優れた学習ダイナミクスを示した。
  • モデルの性能向上は特に長期間シーケンスで顕著であり、長期的依存関係を効果的に処理できる能力を裏付けた。
  • 結果は、LSTMが意味的で文脈に富んだコードシーケンス表現を学習できることを検証し、DeepSoftのようなエンドツーエンドのソフトウェアモデリングフレームワークへの応用を支持するものである。

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

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

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

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