Skip to main content
QUICK REVIEW

[論文レビュー] Learning Blended, Precise Semantic Program Embeddings

Ke Wang, Zhendong Su|arXiv (Cornell University)|Jul 3, 2019
Software Engineering Research参考文献 26被引用数 17
ひとこと要約

本論文では、記号実行トレースとコンcrete実行トレースを統合することで、正確なプログラム埋め込みを学習する深層ニューラルネットワークLiGerを提案する。従来の静的・動的モデルと比較して、意味的分類の精度を著しく向上させるとともに、実行オーバーヘッドを低減する。LiGerは、プログラム意味論分類およびメソッド名予測において、最先端の性能を達成し、Gated Graph Neural Networks、code2vec、code2seqを上回る。また、DYPROに比べて実行回数を10倍も削減する。

ABSTRACT

Learning neural program embeddings is key to utilizing deep neural networks in program languages research --- precise and efficient program representations enable the application of deep models to a wide range of program analysis tasks. Existing approaches predominately learn to embed programs from their source code, and, as a result, they do not capture deep, precise program semantics. On the other hand, models learned from runtime information critically depend on the quality of program executions, thus leading to trained models with highly variant quality. This paper tackles these inherent weaknesses of prior approaches by introducing a new deep neural network, \liger, which learns program representations from a mixture of symbolic and concrete execution traces. We have evaluated \liger on \coset, a recently proposed benchmark suite for evaluating neural program embeddings. Results show \liger (1) is significantly more accurate than the state-of-the-art syntax-based models Gated Graph Neural Network and code2vec in classifying program semantics, and (2) requires on average 10x fewer executions covering 74\% fewer paths than the state-of-the-art dynamic model \dypro. Furthermore, we extend \liger to predict the name for a method from its body's vector representation. Learning on the same set of functions (more than 170K in total), \liger significantly outperforms code2seq, the previous state-of-the-art for method name prediction.

研究の動機と目的

  • 単一のソースコードに依存する静的モデルの限界を解決し、深い意味論を捉えること。
  • コンcreteプログラム実行に依存する動的モデルの高いばらつきと実行オーバーヘッドを克服すること。
  • より正確で効率的なプログラム埋め込みのため、記号的およびコンcrete実行トレースを統合したハイブリッドアプローチを開発すること。
  • 統一されたニューラルアーキテクチャを用いて、プログラム意味論分類およびメソッド名予測の精度を向上させること。

提案手法

  • LiGerは、記号的実行トレースとコンcrete実行トレースを別々に処理する二重ブランチのニューラルネットワークを採用する。
  • アテンション機構を用いて、両方のトレースからの特徴を動的に重み付け・統合し、統一されたプログラム埋め込みを生成する。
  • 対照的学習を用いてエンド・ツー・エンドに訓練し、意味的に同等のプログラムの埋め込みを一致させ、異なる意味論のものを分離する。
  • メソッド名予測のため、LiGerはブレンドされた埋め込みを条件として、逐次的に単語のシーケンスをデコードする自己回帰的デコーダを用いる。
  • 記号的トレースは制御フローおよびデータフロー情報の静的解析により生成され、コンcreteトレースは多様な入力を用いた実際のプログラム実行から収集される。
  • アーキテクチャは、関連性と文脈に基づき、表現を適応的に統合する学習可能な統合モジュールを通じて、両トレースタイプを統合する。

実験結果

リサーチクエスチョン

  • RQ1記号的およびコンcrete実行トレースを統合するアプローチは、純粋に静的または動的手法と比較して、プログラム埋め込みの精度を向上させることができるか?
  • RQ2記号的およびコンcreteトレースの統合は、プログラム意味論分類の正確性にどのように影響するか?
  • RQ3動的モデルと比較して、LiGerは必要なプログラム実行回数をどの程度削減できるか、かつ埋め込み品質を維持または向上させられるか?
  • RQ4ブレンドされた埋め込み表現は、メソッド名予測などの下流タスクにうまく一般化できるか?
  • RQ5code2vec、code2seq、Gated Graph Neural Networksといった最先端モデルと比較して、LiGerの意味論分類および名前予測における性能はどの程度か?

主な発見

  • COSETベンチマークにおいて、LiGerはGated Graph Neural Networksおよびcode2vecよりも顕著に高い精度でプログラム意味論分類を達成した。
  • LiGerは、最先端の動的モデルDYPROと比較して、平均して10倍少ないプログラム実行回数で、74%少ないパスをカバーした。
  • 記号的トレースを活用することで、学習の安定性が向上し、実行品質への依存が低減され、トレーニング品質のばらつきが軽減された。
  • メソッド名予測において、LiGerは17万件以上の関数からなる同じデータセットでcode2seqを上回った。
  • ブレンドされたアプローチにより、LiGerは静的モデルが見逃す深い意味論的類似性(例:バブルソートの異なる実装間)を捉えることができた。
  • アテンション機構により、記号的およびコンcreteトレース間の特徴統合が効果的に制御され、より強固で正確な埋め込みが得られた。

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

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

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

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