[論文レビュー] A Hybrid Approach for Learning Program Representations
本稿では、Ligerと呼ばれるハイブリッドディープニューラルネットワークを提案する。Ligerは、記号的実行とコンcrete実行トレースを組み合わせることでプログラム表現を学習し、プログラム意味解析分類およびメソッド名予測において最先端の性能を達成する。Ligerは、Gated Graph Neural Network や code2vec といった構文ベースのモデルを上回り、DyPro といった動的モデルと比較して実行要件を10倍削減するが、74%少ないパスをカバーする。
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実行トレースを統合することで、ニューラルプログラム埋め込みの正確性と頑健性を向上させること。
- モデル性能を維持または向上させながら、トレーニングに必要なプログラム実行回数を削減すること。
- 統一された表現フレームワークを用いて、プログラムコード埋め込みから効果的なメソッド名予測を可能にすること。
提案手法
- Ligerは、記号的実行を用いて高レベルのプログラム意味を抽出し、コンcrete実行トレースを用いて動的動作を捉える。
- モデルは、記号的解析から得られる制御フローやデータ依存構造を符号化するためにグラフニューラルネットワークを用いる。
- コンcrete実行トレースは、シーケンスエンコーダーによって処理され、多様な入力におけるランタイム動作をモデル化する。
- 記号的および動的表現は、学習可能なアテンションメカニズムを介して統合され、統一されたプログラム埋め込みが生成される。
- 最終的な埋め込みは、プログラム意味とメソッド名予測タスクにおける対照学習を用いてエンドツーエンドで最適化される。
- モデルは、意味分類およびメソッド名予測の両方において17万件を超える関数からなる大規模データセットでトレーニングされる。
実験結果
リサーチクエスチョン
- RQ1記号的およびコンcrete実行トレースを組み合わせることで、純粋に構文ベースまたは動的アプローチに比べ、ニューラルプログラム埋め込みの正確性が向上するか?
- RQ2Ligerは、モデル性能を維持または向上させながら、必要なプログラム実行回数をどの程度削減できるか?
- RQ3Ligerは、既存の最先端モデルと比較して、メソッド名予測などの下流タスクにどの程度一般化できるか?
- RQ4記号的および動的プログラム表現の統合は、より頑健で意味的に正確な埋め込みをもたらすか?
主な発見
- Ligerは、CoSeTベンチマークにおいて、Gated Graph Neural Network や code2vec よりも顕著に高い正確性を達成し、プログラム意味分類を実行する。
- Ligerは、最先端の動的モデルDyProと同等の性能に到達するための平均で10倍少ないプログラム実行回数を要する。
- Ligerは、DyProと比較して74%少ない実行パスをカバーしながらも高い正確性を維持しており、より優れたサンプル効率性を示している。
- メソッド名予測において、Ligerは同様の17万件を超える関数データセットにおいて、前回の最先端モデルである code2seq より顕著に優れている。
- ハイブリッドアプローチにより、Ligerは構文のみのモデルよりも深い意味的情報を捉え、実行のみのモデルよりも一貫性のある動作を捉えられる。
- モデルの統一された表現フレームワークにより、多様なプログラム解析タスクにわたる強力なゼロショット一般化が可能になった。
より良い研究を、今すぐ始めましょう
論文設計から論文執筆まで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。