Skip to main content
QUICK REVIEW

[論文レビュー] LambdaNet: Probabilistic Type Inference using Graph Neural Networks

Jiayi Wei, Maruth Goyal|arXiv (Cornell University)|Apr 29, 2020
Software Engineering Research参考文献 24被引用数 46
ひとこと要約

LambdaNet は型依存グラフとグラフニューラルネットワークを用いて TypeScript の型を推論し、ユーザー定義型を含む、ライブラリ型の高精度を実現し、オープン語彙予測を可能にする。

ABSTRACT

As gradual typing becomes increasingly popular in languages like Python and TypeScript, there is a growing need to infer type annotations automatically. While type annotations help with tasks like code completion and static error catching, these annotations cannot be fully determined by compilers and are tedious to annotate by hand. This paper proposes a probabilistic type inference scheme for TypeScript based on a graph neural network. Our approach first uses lightweight source code analysis to generate a program abstraction called a type dependency graph, which links type variables with logical constraints as well as name and usage information. Given this program abstraction, we then use a graph neural network to propagate information between related type variables and eventually make type predictions. Our neural architecture can predict both standard types, like number or string, as well as user-defined types that have not been encountered during training. Our experimental results show that our approach outperforms prior work in this space by $14\%$ (absolute) on library types, while having the ability to make type predictions that are out of scope for existing techniques.

研究の動機と目的

  • Gradually-typed 言語 like TypeScript の自動型注釈推定を促進し、手動注釈の負担を軽減する。
  • 型制約と文脈ヒントをエンコードする新規プログラム抽象化としての type dependency graph を導入する。
  • グラフ上の情報伝搬を行う GNN ベースのアーキテクチャを開発し、型を予測する。
  • 訓練中に見られなかったユーザー定義型の予測を、ポインターネット風の予測層を介して実現する。
  • 実世界の TypeScript プロジェクトで評価し、従来手法と比較してライブラリ型の正確さとオープン語彙機能の改善を示す。

提案手法

  • TypeScript プログラムの静的解析からノードを型変数、ハイパーエッジを論理的制約と文脈ヒントとしてエンコードする型依存グラフを構築する。
  • Fixed、NAry、NPairs のハイパーエッジを扱うマルチエッジ型グラフニューラルネットワークのメッセージ伝搬によってノード埋め込みを算出する。
  • 長距離推論を可能にするため、メッセージを組み合わせるアテンションベースの集約を用いる。
  • 候補型を型変数の埋め込みと比較してスコアリングするポインター-ネットワーク風の予測層を採用し、ユーザー定義型を含むオープン語彙を可能にする。
  • ライブラリ型とユーザー定義型の両方を表現し、ライブラリ型の埋め込みを変数ノードまたは固定ライブラリ型ベクトルにリンクする。
  • Adam を用いたエンドツーエンドの訓練、検証セットでハイパーパラメータを調整;出現ごとに一貫性を確保するため各変数を予測する。

実験結果

リサーチクエスチョン

  • RQ1LambdaNet は TypeScript のライブラリ型推定において従来研究を上回ることができるか?
  • RQ2訓練時に見られないユーザー定義型をモデルが正確に予測できるか?
  • RQ3論理エッジと文脈エッジは予測精度にどう寄与するか?
  • RQ4GNN の長距離メッセージ伝搬は推論品質を改善するか?
  • RQ5オープン語彙でのポインター-ネットワークベース予測は従来の固定語彙アプローチと比較してどうなるか?

主な発見

  • LambdaNet はライブラリ型のトップ1 精度が 75.6%(K=6)で、DeepTyper(ライブラリ型のみ)の 61.5% を上回る。
  • ユーザー定義型を含む総合トップ1 精度は約 64.2% で、TypeScript コンパイラのベースラインよりも大幅に高い。
  • オープン語彙を用いた LambdaNet はユーザー定義型を予測し、トップ1 およびトップ5 指標で TypeScript コンパイラや SimilarName などのベースラインを上回る。
  • アブレーションにより文脈的・論理的エッジの双方が重要で、長いメッセージ伝搬(K が最大 6 まで)の方が精度を改善することが示された。
  • アテンションベースの集約と NPairs アテンションは性能を大幅に向上させ、特にユーザー定義型に対して効果的である。
  • LambdaNet は top-level 関数注釈のサブセットで JSNice を上回る。

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

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

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

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