Skip to main content
QUICK REVIEW

[論文レビュー] What Do They Capture? -- A Structural Analysis of Pre-Trained Language Models for Source Code

Yao Wan, Wei Zhao|arXiv (Cornell University)|Feb 14, 2022
Software Engineering Research被引用数 16
ひとこと要約

この論文は、アテンションの整合性、語彙埋め込みのプローブ、構文木の誘導を通じて、事前学習済みコード言語モデル(CodeBERTおよびGraphCodeBERT)の構造的分析を実施し、それらがコード構造をどのように捉えているかを明らかにする。アテンション機構がコード構文と強く一致し、中間表現が構文構造を保持しており、モデルが有効なASTを誘導できることを示している。これは、事前学習段階で構文を組み込むことで、コード表現学習が向上することを示唆している。

ABSTRACT

Recently, many pre-trained language models for source code have been proposed to model the context of code and serve as a basis for downstream code intelligence tasks such as code completion, code search, and code summarization. These models leverage masked pre-training and Transformer and have achieved promising results. However, currently there is still little progress regarding interpretability of existing pre-trained code models. It is not clear why these models work and what feature correlations they can capture. In this paper, we conduct a thorough structural analysis aiming to provide an interpretation of pre-trained language models for source code (e.g., CodeBERT, and GraphCodeBERT) from three distinctive perspectives: (1) attention analysis, (2) probing on the word embedding, and (3) syntax tree induction. Through comprehensive analysis, this paper reveals several insightful findings that may inspire future studies: (1) Attention aligns strongly with the syntax structure of code. (2) Pre-training language models of code can preserve the syntax structure of code in the intermediate representations of each Transformer layer. (3) The pre-trained models of code have the ability of inducing syntax trees of code. Theses findings suggest that it may be helpful to incorporate the syntax structure of code into the process of pre-training for better code representations.

研究の動機と目的

  • 事前学習済みコード言語モデルがコードインテリジェンスタスクで優れたパフォーマンスを達成する理由を理解すること。
  • これらのモデルが捉えている構造的特徴、特に構文構造の特徴を調査すること。
  • アテンション、語彙埋め込み、モデル表現がコード構文を保持しているか、あるいは誘導しているかを分析すること。
  • 事前学習段階で明示的な学習なしに、抽象構文木(AST)を再構築できるかを評価すること。
  • 今後のコード表現モデルの設計を支援する解釈可能性の知見を提供すること。

提案手法

  • アテンションの可視化とAST構造との整合性を実施し、アテンションが構文的要素にどの程度集中しているかを評価する。
  • 各Transformer層の中間表現が構文構造をエンコードしているかどうかをテストするための構造的プローブ手法を設計する。
  • モデル表現からASTを回復するためのトップダウン的再帰的二分木誘導アルゴリズムを適用する。
  • 自然言語解析から適応した右に偏った構造のバイアスを木の構築に組み込み、ASTとの整合性を向上させる。
  • 標準的な木類似度メトリクスを用いて、誘導された木と真値ASTを比較して評価する。
  • 大規模なコードリポジトリからのコードスニペットを用いてモデルを分析し、一般化性を確保する。

実験結果

リサーチクエスチョン

  • RQ1事前学習済みコードモデルのアテンションヘッドは、ソースコードの構文構造とどの程度整合しているか?
  • RQ2各Transformer層の内部表現は、どの程度構文構造を保持しているか?
  • RQ3事前学習済みコードモデルは、明示的な学習なしに、コード表現から妥当な抽象構文木(AST)を誘導できるか?
  • RQ4データフローグラフを事前学習に組み込む(例:GraphCodeBERT)ことで、表現における構造的保存性にどのような影響を与えるか?
  • RQ5アテンションパターン、語彙埋め込み、構文構造の間にはどのような関係があるか?

主な発見

  • 事前学習済みコードモデルのアテンションヘッドは、関数呼び出し、制御構造、変数宣言などの構文的コンstitュートに強く一致している。
  • すべてのTransformer層における中間表現が構文構造を保持しており、特に深層の層ほどより洗練された構文認識を示している。
  • 事前学習済みコードモデルは、コード埋め込みから妥当な抽象構文木を誘導でき、木類似度のF1スコアが意味的な構造的回復を示している。
  • 事前学習段階でデータフローグラフを組み込むことで、構文構造の保存性が向上する、CodeBERTとは異なったGraphCodeBERTのようなモデルは、より優れた構文構造の保存性を示している。
  • 誘導された構文木は構造的に整合性があり、コードの階層的性質を反映しており、構文構造が表現に暗黙的にエンコードされていることが示唆される。
  • 本研究は、構文構造が事前学習済みコードモデルが捉える主要なインダクティブバイアスであることを明らかにした。これは、将来の事前学習目的における構文の統合を支持する。

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

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

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

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