Skip to main content
QUICK REVIEW

[論文レビュー] SPT-Code: Sequence-to-Sequence Pre-Training for Learning Source Code Representations

Changan Niu, Chuanyi Li|arXiv (Cornell University)|Jan 5, 2022
Software Engineering Research被引用数 11
ひとこと要約

SPT-Code は、翻訳対訳データを必要としない3つの新しい自己教師付きタスク(コード再構築、AST走査を用いたコード構造モデリング、自然言語記述予測)を用いて、エンコーダーとデコーダーを同時に事前学習するシーケンス・ツー・シーケンスの事前学習モデルを提案する。このモデルは、5つのダウンストリームコード関連タスク(コード要約、コード補完、バグ修正など)で最先端の性能を達成する。

ABSTRACT

Recent years have seen the successful application of large pre-trained models to code representation learning, resulting in substantial improvements on many code-related downstream tasks. But there are issues surrounding their application to SE tasks. First, the majority of the pre-trained models focus on pre-training only the encoder of the Transformer. For generation tasks that are addressed using models with the encoder-decoder architecture, however, there is no reason why the decoder should be left out during pre-training. Second, many existing pre-trained models, including state-of-the-art models such as T5-learning, simply reuse the pre-training tasks designed for natural languages. Moreover, to learn the natural language description of source code needed eventually for code-related tasks such as code summarization, existing pre-training tasks require a bilingual corpus composed of source code and the associated natural language description, which severely limits the amount of data for pre-training. To this end, we propose SPT-Code, a sequence-to-sequence pre-trained model for source code. In order to pre-train SPT-Code in a sequence-to-sequence manner and address the aforementioned weaknesses associated with existing pre-training tasks, we introduce three pre-training tasks that are specifically designed to enable SPT-Code to learn knowledge of source code, the corresponding code structure, as well as a natural language description of the code without relying on any bilingual corpus, and eventually exploit these three sources of information when it is applied to downstream tasks. Experimental results demonstrate that SPT-Code achieves state-of-the-art performance on five code-related downstream tasks after fine-tuning.

研究の動機と目的

  • エンコーダーのみを事前学習する既存のコード事前学習モデルの制限を解消し、デコーダーも最適化する。
  • 小規模な翻訳対訳コード-要約コーパスに依存するのを避け、事前学習中にラベル付き自然言語記述を必要としない事前学習タスクを設計する。
  • 外部の教師信号なしに、ASTを介したソースコード構造と自然言語意味の両方を共同で学習することで、コード表現を向上させる。
  • 完全にラベルなしのコードデータ上でエンコーダー・デコーダーのモデルをエンド・ツー・エンドで事前学習可能にし、ダウンストリームソフトウェア工学タスクの性能を向上させる。

提案手法

  • 3つの自己教師付き事前学習タスクを提案:(1) マスキングされたトークン予測によるコード再構築、(2) 改良されたAST走査法(X-SBT)を用いたコード構造モデリング、(3) コードトークンを入力として用いた自然言語記述予測。
  • ソースコードトークン、AST走査(X-SBT経由)、自然言語埋め込みを組み合わせたハイブリッド入力表現を設計し、構造的・意味的信号を強化する。
  • 大規模なラベルなしコードコーパス上で、シーケンス・ツー・シーケンスのTransformerアーキテクチャを用いて、エンコーダーとデコーダーをエンド・ツー・エンドで訓練する。
  • 事前学習データセットとして CodeSearchNet を使用し、ベースラインとの公平な比較を保つために重複データの除去を一切行わない。
  • 5つのダウンストリームタスク(コード要約、コード補完、バグ修正(BFP)、コード検索、Javaコード要約(JCSD))で、事前学習済みの SPT-Code モデルを微調整する。
  • コード構造を走査中に制御構造とデータフローの意味を保持するように最適化された、AST走査法 X-SBT を導入する。

実験結果

リサーチクエスチョン

  • RQ1エンコーダーとデコーダーを同時に学習するシーケンス・ツー・シーケンスの事前学習モデルは、エンコーダーのみのモデルを上回るコード表現学習性能を達成できるか?
  • RQ2翻訳対訳コード-要約ペアに依存しない事前学習タスクでも、コードの自然言語記述を効果的に学習できるか?
  • RQ3AST構造と自然言語信号を統合することで、ダウンストリームコードタスクの性能はどの程度向上するか?
  • RQ4提案された3つの事前学習タスクが、異なるダウンストリームタスクにおいてそれぞれどのようにモデル性能に寄与しているか?
  • RQ5改善されたAST走査法(X-SBT)を用いることで、標準的な走査手法に比べてコード構造のモデリングが向上するか?

主な発見

  • SPT-Code は、5つのダウンストリームコード関連タスクで最先端の性能を達成した:コード要約(BLEU +0.88)、コード補完(Acc@1 +0.03)、バグ修正(BFP medium +0.07の精度向上)。
  • アブレーションスタディの結果、3つの事前学習タスクすべてが肯定的な寄与を示し、ASTベースのタスクがコード構造理解に最も強い影響を与えた。
  • ASTと自然言語の入力コンponentsを併用することで、モデル性能が顕著に向上し、構造的信号と意味的信号の相補的利点が示された。
  • CodeSearchNet のテストセットからの重複データを除去しても、SPT-Code の性能はどの指標でも 0.07 未満に低下したにとどまり、データ漏洩の懸念に対して頑健であることが示された。
  • AST情報を組み込むモデル(例:SPT-Code、GraphCodeBERT)は、データフローまたはコードトークンのみに依存するモデルよりも、より正確で読みやすい要約を生成した。
  • X-SBT 走査法は、要約品質と構造的一致性の観点から、標準的なAST走査法を上回る性能を示し、コード構造の把握がより優れていることが裏付けられた。

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

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

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

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