Skip to main content
QUICK REVIEW

[論文レビュー] InferCode: Self-Supervised Learning of Code Representations by Predicting Subtrees

Nghi D. Q. Bui, Yijun Yu|arXiv (Cornell University)|Dec 13, 2020
Software Engineering Research参考文献 65被引用数 9
ひとこと要約

InferCode は、コードの抽象構文木(AST)内の部分木を予測するようにトレーニングされた木構造ベースの畳み込みニューラルネットワーク(TBCNN)を用いて、自己教師あり学習によるコード表現を提案する。この手法により、タスクに依存しない、転移可能な埋め込み表現が得られる。大規模なラベルなし Java コードでトレーニングされたモデルは、コードクラスタリング、コピーコード検出、クロスランゲージ検索といった多様な下流タスクで、従来の手法(code2vec や ASTNN など)を大きく上回る最先端の性能を達成する。

ABSTRACT

Building deep learning models on source code has found many successful software engineering applications, such as code search, code comment generation, bug detection, code migration, and so on. Current learning techniques, however, have a major drawback that these models are mostly trained on datasets labeled for particular downstream tasks, and code representations may not be suitable for other tasks. While some techniques produce representations from unlabeled code, they are far from satisfactory when applied to downstream tasks. Although certain techniques generate representations from unlabeled code when applied to downstream tasks they are far from satisfactory. This paper proposes InferCode to overcome the limitation by adapting the self-supervised learning mechanism to build source code model. The key novelty lies in training code representations by predicting automatically identified subtrees from the context of the ASTs. Subtrees in ASTs are treated with InferCode as the labels for training code representations without any human labeling effort or the overhead of expensive graph construction, and the trained representations are no longer tied to any specific downstream tasks or code units. We trained an InferCode model instance using the Tree-based CNN as the encoder of a large set of Java code and applied it to downstream unsupervised tasks such as code clustering, code clone detection, cross-language code search or reused under a transfer learning scheme to continue training the model weights for supervised tasks such as code classification and method name prediction. Compared to previous code learning techniques applied to the same downstream tasks, such as Code2Vec, Code2Seq, ASTNN, higher performance results are achieved using our pre-trained InferCode model with a significant margin for most tasks including those involving different programming languages.

研究の動機と目的

  • 手動でのラベル付けを必要とし、ソフトウェア工学タスク全体に一般化できないタスク特化型のコード表現の限界を解消すること。
  • 人為的ラベルや複雑なグラフ構築を必要とせず、ラベルなしソースコードからコード表現を学習する自己教師あり手法の開発。
  • AST にパース可能な任意のコード単位に対して柔軟かつ再利用可能なコード埋め込みを可能にし、多様な下流タスクをサポートすること。
  • 従来の教師ありまたは弱教師ありアプローチと比較して、プログラミング言語やタスクに跨るコード表現の転送性と性能を向上させること。
  • AST 内の部分木予測が、強力で汎用的なコード埋め込みを学習する有効な事前学習タスクとして機能するかを検証すること。

提案手法

  • モデルは、抽象構文木(AST)を密なコードベクトルにマップするエンコーダーとして、木構造ベースの畳み込みニューラルネットワーク(TBCNN)を用いる。
  • 事前学習タスクは、AST コンテキストからランダムに抽出された部分木を予測することであり、コードベクトルをコンテキスト表現として用いて部分木を再構築する。
  • 部分木は人為的ラベルなしに AST から自動的に特定され、事前学習のための自己生成ラベルとして機能する。
  • モデルは、ラベルなし Java コードの大規模データセット上で事前学習され、AST からの構造的・意味的パターンを学習する。
  • 事前学習後、エンコーダーは教師ありタスクの微調整や、コードクラスタリングや検索などの教師なしタスクへの直接適用が可能になる。
  • 高価なグラフ構築を回避し、AST の普遍的なパース可能特性に起因して、プログラミング言語に跨る一般化が可能である。

実験結果

リサーチクエスチョン

  • RQ1AST 内の部分木予測は、汎用的なコード表現を学習する有効な自己教師あり事前学習タスクとして機能するか?
  • RQ2提案手法の自己教師ありアプローチは、タスク特化型または弱教師あり手法と比較して、多様な下流タスクに一般化するコード埋め込みを生成するか?
  • RQ3InferCode の性能は、コードクラスタリング、コピーコード検出、クロスランゲージ検索において、code2vec や code2seq、ASTNN といった最先端モデルと比較してどうか?
  • RQ4事前学習済みの InferCode モデルは、コード分類やメソッド名予測といった教師ありタスクに効果的に微調整可能か?
  • RQ5モデルの性能は、特にクロスランゲージコード検索において、異なるプログラミング言語に跨って頑健か?

主な発見

  • コードクラスタリングにおいて、InferCode は code2vec や code2seq よりも優れており、ARI 0.70(code2vec:0.58)を達成し、相対的に 17% の改善を示した。
  • コピーコード検出(BigCloneBench)において、InferCode は精度 0.90 を達成し、code2vec(0.81)や code2seq(0.45)を大きく上回った。
  • クロスランゲージコード検索(Rosetta Stone)において、InferCode は MRR 0.57 を達成し、code2vec(0.41)や code2seq(0.32)を上回った。
  • 事前学習済みの InferCode モデルを教師ありタスクに微調整することで、初期化から学習を開始する場合よりも高い性能が得られ、優れた転送性を示した。
  • モデルの性能は、異なるプログラミング言語に跨っても頑健であり、単一言語に限定されない一般化能力を示した。
  • 部分木予測を事前学習タスクとすることで、メソッド名予測よりも優れた表現が得られた。後者は、同じ名前でも異なる実装を持つ場合に誤った相関関係を学習してしまうためである。

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

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

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

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