Skip to main content
QUICK REVIEW

[論文レビュー] CodeT5: Identifier-aware Unified Pre-trained Encoder-Decoder Models for Code Understanding and Generation

Yue Wang, Weishi Wang|arXiv (Cornell University)|Sep 2, 2021
Software Engineering Research参考文献 27被引用数 23
ひとこと要約

CodeT5は、コードと自然言語のペairを事前学習した統合的エンコーダデコーダTransformerモデルを提案し、識別子に配慮したマスキングと二モードデュアルジェネレーションを導入することで、コード理解および生成の性能を向上させた。14のCodeXGLUEタスクにおいて最先端の性能を達成し、コード欠陥検出およびコード要約タスクにおいて、先行手法を顕著に上回った。

ABSTRACT

Pre-trained models for Natural Languages (NL) like BERT and GPT have been recently shown to transfer well to Programming Languages (PL) and largely benefit a broad set of code-related tasks. Despite their success, most current methods either rely on an encoder-only (or decoder-only) pre-training that is suboptimal for generation (resp. understanding) tasks or process the code snippet in the same way as NL, neglecting the special characteristics of PL such as token types. We present CodeT5, a unified pre-trained encoder-decoder Transformer model that better leverages the code semantics conveyed from the developer-assigned identifiers. Our model employs a unified framework to seamlessly support both code understanding and generation tasks and allows for multi-task learning. Besides, we propose a novel identifier-aware pre-training task that enables the model to distinguish which code tokens are identifiers and to recover them when they are masked. Furthermore, we propose to exploit the user-written code comments with a bimodal dual generation task for better NL-PL alignment. Comprehensive experiments show that CodeT5 significantly outperforms prior methods on understanding tasks such as code defect detection and clone detection, and generation tasks across various directions including PL-NL, NL-PL, and PL-PL. Further analysis reveals that our model can better capture semantic information from code. Our code and pre-trained models are released at https: //github.com/salesforce/CodeT5 .

研究の動機と目的

  • コード関連タスクにおけるエンコーダオンリーまたはデコーダオンリーモデルの限界を解決するため、統合的エンコーダデコーダフレームワークを提案すること。
  • 開発者が割り当てた識別子を重要な意味的信号として明示的にモデル化することで、コード表現を向上させること。
  • 二重生成事前学習目的を通じて、自然言語コメントとコードの間のクロスモーダルアライメントを強化すること。
  • 単一の統合的モデルアーキテクチャ内でコード理解とコード生成タスクの両方をサポートすること。
  • タスク固有のプロンプトを用いたマルチタスク微調整により、多様なコードインテリジェンスタスクにおける汎化性能を向上させること。

提案手法

  • コード理解と生成の両方を統合的に処理できるT5アーキテクチャを、統合的エンコーダデコーダフレームワークとして活用する。
  • 他のトークンタイプとは別に識別子をマスク・再構築する、新しい識別子に配慮した事前学習目的を導入する。
  • コードコメントペアを用いてNL→PLおよびPL→NL生成の両方を同時に事前学習する二モードデュアルジェネレーションタスクを採用する。
  • CodeSearchNetおよびGitHubから取得した追加のC/C#コードを用いて、単モードおよび二モードのデータを統合して事前学習する。
  • タスク制御コードを入力プロンプトとして用いて、複数のCodeXGLUEタスクで微調整し、マルチタスク学習を可能にする。
  • 事前学習段階で統一されたシーケンス・ツー・シーケンスのノイズ除去目的関数を用いることで、下流タスクへの一般化性能を向上させる。

実験結果

リサーチクエスチョン

  • RQ1統合的エンコーダデコーダモデルは、コード理解および生成タスクにおいて、専用のエンコーダオンリーまたはデコーダオンリーモデルを上回ることができるか?
  • RQ2事前学習段階で識別子のみをマスクすることで、標準的なマスキングと比較してコード表現学習が向上するか?
  • RQ3NL→PLおよびPL→NL生成の両方を同時に事前学習することで、クロスモーダルアライメントおよびコード要約・翻訳タスクの性能が向上するか?
  • RQ4タスク固有のプロンプトを用いたマルチタスク微調整は、多様なコードインテリジェンスタスクにおけるモデルの汎化性能にどのように影響するか?
  • RQ5識別子に配慮した事前学習は、複数のプログラミング言語にまたがるコード意味論の理解をどの程度向上させるか?

主な発見

  • CodeT5はCodeXGLUEベンチマークの14のサブタスクのうち14個すべてで最先端の性能を達成し、コード理解および生成タスクの両方で先行手法を上回った。
  • 識別子に配慮した事前学習目的は、コード欠陥検出およびクローン検出タスクで顕著な性能向上をもたらし、より良い意味的理解を示した。
  • 二モードデュアルジェネレーション事前学習タスクにより、NL-PLおよびPL-NLタスク(例:コード要約、コード翻訳)で顕著な性能向上が得られた。
  • タスク制御コードを用いたマルチタスク微調整により、ゼロショットの汎化性能と多様なコードインテリジェンスタスクにおける性能が向上した。
  • パラメータ数220MのCodeT5-baseは、120億パラメータのCodexと同等の性能を達成しており、高い効率性と有効性を示した。

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

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

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

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