Skip to main content
QUICK REVIEW

[論文レビュー] Inferring Javascript types using Graph Neural Networks

Jessica Schrouff, Kai Wohlfahrt|arXiv (Cornell University)|May 16, 2019
Software Engineering Research参考文献 15被引用数 4
ひとこと要約

本稿では、構文的および意味的エッジを備えたグラフとしてソースコードを表現することで、JavaScriptのトークン型を推論するグラフニューラルネットワーク(GNN)モデルを提案する。このモデルは8種類のJavaScript型を90%を超える精度で予測し、先行研究を上回っており、コードエディターや静的解析ツールへの統合の可能性が非常に高い。

ABSTRACT

The recent use of `Big Code' with state-of-the-art deep learning methods offers promising avenues to ease program source code writing and correction. As a first step towards automatic code repair, we implemented a graph neural network model that predicts token types for Javascript programs. The predictions achieve an accuracy above $90\%$, which improves on previous similar work.

研究の動機と目的

  • 実行時に検出されないタイプエラーが生じる動的型付けのJavaScriptにおける型推論の課題に対処すること。
  • 静的型注釈に依存せずに、トークンレベルの型を予測するディープラーニングモデルの開発。
  • 抽象構文木(AST)上でグラフベースのニューラルネットワークを活用することで、既存の型推論手法を改善すること。
  • オンラインコードエディターやコードレビューツールなどのリアルタイム開発環境への統合に適した実装可能なシステムの構築。
  • GNNがJavaScriptにおける型予測のためのプログラム構造モデリングにどの程度有効であるかを評価すること。

提案手法

  • 各JavaScriptソースファイルは抽象構文木(AST)にパースされ、ノードがASTトークンを表し、エッジが構文的(例:'子')および意味的(例:'定義される')関係を符号化する。
  • ノード特徴量にはASTノードタイプ(144クラス)、プロパティ(107種類)、および文字列値(最大16文字まで)が含まれ、それぞれが専用の埋め込み層を経由する。
  • ノード埋め込みは統合され、バッチ正則化、ドロップアウト、ReLU活性化関数を備えた全結合ニューラルネットワークに渡される。
  • 2種類のGNNアーキテクチャが評価された:グラフ畳み込みネットワーク(GCN)とゲート付きグラフニューラルネットワーク(GGNN)、両者とも近隣情報のメッセージパッシングを用いて集約する。
  • GCNはエッジタイプごとに別々の線形層を使用し、メッセージを合算してReLUを適用する。GGNNは重みが共有された層間でGRUセルを用いて状態を更新する。
  • GGNNでは長距離依存性をモデル化するためのマスターノードを検討したが、最終設定では性能向上が見られず、導入を中止した。

実験結果

リサーチクエスチョン

  • RQ1静的型情報に依存せずに、ASTに基づくプログラム表現からGNNがJavaScriptトークン型を効果的に推論できるか?
  • RQ2実世界のコードに対して、GCNとGGNNという異なるGNNアーキテクチャの性能は、JavaScript型推論においてどのように比較されるか?
  • RQ3この文脈において、GNNの最適な型予測精度を得るためのハイパーパrameter設定は何か?
  • RQ4ASTグラフ上で学習するGNNにマスターノードを含めると、型予測性能が向上するか?
  • RQ5このモデルは、未観測のリポジトリにどの程度一般化可能であり、実世界の開発環境でも高い精度を達成できるか?

主な発見

  • 提案されたGNNモデルは、90%を超える型予測精度を達成し、同様のタスクにおける先行研究を著しく上回っている。
  • GCNモデルは、符号化用のフィードフォワードブロックなし、隠れ層サイズ64、ドロップアウト率0.1、7〜10層のメッセージパッシング層、1層のデコード層で最良の性能を示した。
  • GGNNモデルは、1層の符号化層、隠れ層サイズ128、ドロップアウトなし、5層のメッセージパッシング層、マスターノードなし、1層のデコード層で最良の性能を示した。
  • マスターノードの導入は性能向上をもたらさず、最終的なGGNN設定では除外された。これは、ASTグラフでは長距離接続が有益でないことを示唆している。
  • ハイパーパrameterサーチの結果、特にGCNにおいては、メッセージパッシング層およびデコード層の数が多いほど性能が向上する傾向が見られた。
  • トレーニングとテストをリポジトリ単位で分割したため、未観測のリポジトリに対してもモデルの一般化性能が高く、データ漏洩を回避できた。

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

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

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

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