Skip to main content
QUICK REVIEW

[論文レビュー] Open Vocabulary Learning on Source Code with a Graph-Structured Cache

Milan Cvitkovic, Badal Singh|arXiv (Cornell University)|Oct 18, 2018
Machine Learning in Materials Science被引用数 20
ひとこと要約

本稿では、コード中の未知語を、それらの使用箇所に接続されたノードとしてエンコードすることで、オープンボキャブラリー問題に対処するためのグラフ構造キャッシュ(GSC)を提案する。抽象構文木(AST)上でグラフニューラルネットワーク(GNN)を組み合わせることで、コード補完と変数名付けの性能がそれぞれ100%以上向上し、トレーニング時間は30%程度増加するにとどまる。

ABSTRACT

Machine learning models that take computer program source code as input typically use Natural Language Processing (NLP) techniques. However, a major challenge is that code is written using an open, rapidly changing vocabulary due to, e.g., the coinage of new variable and method names. Reasoning over such a vocabulary is not something for which most NLP methods are designed. We introduce a Graph-Structured Cache to address this problem; this cache contains a node for each new word the model encounters with edges connecting each word to its occurrences in the code. We find that combining this graph-structured cache strategy with recent Graph-Neural-Network-based models for supervised learning on code improves the models' performance on a code completion task and a variable naming task --- with over $100\%$ relative improvement on the latter --- at the cost of a moderate increase in computation time.

研究の動機と目的

  • 新しい変数名やメソッド名が継続的に導入される中で、コードにおけるオープンボキャブラリー学習の課題に対処すること。
  • 動的で文脈に適応した語彙処理を組み込むことで、コード表現タスクにおけるグラフニューラルネットワークモデルの性能を向上させること。
  • 固定された閉じた語彙に依存せずに、未知語に対して推論できるようにすること。
  • グラフ構造キャッシュの有効性を、実世界のコード生成および補完タスクにおいて評価すること。

提案手法

  • グラフ構造キャッシュ(GSC)は、コード内で初めて出現する各新しい語に対してノードを導入し、その語の使用箇所すべてにエッジで接続する。
  • GSCは抽象構文木(AST)に統合され、拡張されたグラフを形成し、その後、下流タスク用にグラフニューラルネットワーク(GNN)で処理される。
  • ポインタセンチネル混合モデルアーキテクチャが使用され、デコーダーはGSCノードと閉じた語彙の両方に対するアテンションを組み合わせて単語を予測する。
  • GSCにより、モデルはコードの構造的文脈に加え、希少語や未観測語の意味的・文法的役割にも注目できるようになる。
  • モデルはGNNを用いてASTおよびGSC全体にわたる表現を伝搬させ、コード要素同士の関係的依存関係とその名前との関係を捉える。
  • GSCは推論およびトレーニング中に動的に構築され、各新しい語がその出現箇所にリンクされたノードとして追加される。

実験結果

リサーチクエスチョン

  • RQ1グラフ構造キャッシュは、未知語を含むコード表現タスクにおけるモデル性能を向上させることができるか?
  • RQ2GSCの関係的構造は、ポインタネットワークのような単純なOOV処理機構と比較して、どのように優れているか?
  • RQ3変数名付けタスクにおいて、GSCは既知および未知のコードリポジトリ間でどの程度一般化性能を向上させるか?
  • RQ4計算コストの増加にもかかわらず、GSCの導入がコード補完および変数名付けの性能向上に顕著な効果をもたらすか?
  • RQ5GSCアーキテクチャのどの構成要素が性能向上に不可欠であり、それぞれがどのように寄与しているか?

主な発見

  • グラフ構造キャッシュは、ベースラインと比較して、コード補完タスクにおけるモデル精度を最低7%向上させた。
  • 変数名付けタスクでは、GSCはベースラインモデルと比較して103%の相対的性能向上を達成した。
  • ポインタセンチネルモデルと比較してGSCが優れた性能を示したため、語の使用に関する関係的情報が性能に不可欠であることが示された。
  • モデルは、既知のリポジトリと未知のリポジトリの両方で強力な性能を維持しており、一般化性能の向上が示された。
  • GSCの導入により計算コストは約30%増加したが、主にグラフ内のエッジ数の増加に起因した。
  • アブレーションスタディの結果、グラフ構造とGSCノードに対するアテンションメカニズムの両方が、観察された性能向上に不可欠であることが確認された。

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

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

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

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