Skip to main content
QUICK REVIEW

[論文レビュー] Unified Pre-training for Program Understanding and Generation

Wasi Uddin Ahmad, Saikat Chakraborty|arXiv (Cornell University)|Mar 10, 2021
Software Engineering Research参考文献 46被引用数 40
ひとこと要約

PLBARTはJava、Python、および自然言語データに対する統一されたシーケンス対シーケンスの事前学習モデルで、コード要約、生成、翻訳、およびいくつかの識別的なプログラム理解タスクで最先端または競合的な結果を達成します。

ABSTRACT

Code summarization and generation empower conversion between programming language (PL) and natural language (NL), while code translation avails the migration of legacy code from one PL to another. This paper introduces PLBART, a sequence-to-sequence model capable of performing a broad spectrum of program and language understanding and generation tasks. PLBART is pre-trained on an extensive collection of Java and Python functions and associated NL text via denoising autoencoding. Experiments on code summarization in the English language, code generation, and code translation in seven programming languages show that PLBART outperforms or rivals state-of-the-art models. Moreover, experiments on discriminative tasks, e.g., program repair, clone detection, and vulnerable code detection, demonstrate PLBART's effectiveness in program understanding. Furthermore, analysis reveals that PLBART learns program syntax, style (e.g., identifier naming convention), logical flow (e.g., if block inside an else block is equivalent to else if block) that are crucial to program semantics and thus excels even with limited annotations.

研究の動機と目的

  • ソフトウェア工学のための汎用PL-NL理解・生成モデルを動機づけ、実現する(PLUGタスク)。
  • ラベルなしのPLおよびNLデータを活用して、ノイズ除去型のシーケンス対シーケンス事前学習を通じて転移可能な表現を学習する。
  • Java、Python、およびNLデータで多言語対応のエンコーダ-デコーダモデルを事前学習させ、さまざまなダウンストリームタスクをサポートする。
  • 事前学習済みモデルが生成、翻訳、識別タスクにおいて、タスク固有のベースラインより優れているか、あるいは対等であることを示す。

提案手法

  • 6つのエンコーダ層と6つのデコーダ層を備えたBART風のエンコーダ-デコーダ変換器を採用する(768の隠れ層ユニット、12のアテンションヘッド)。
  • Java、Pythonの関数とStackOverflowのNLテキストを対象にノイズ付与三手法:トークンマスキング、トークン削除、トークン埋め込み補充を用いたノイズ除去自己符号化で事前学習を行う。
  • SentencePiece(5万サブワード単位)によるトークン化と言語IDトークンを用いて多言語の受容を可能にする。
  • 前処理中にPLとNLデータのバランスをとるため、モダリティ間でデータのアップサンプリング/ダウンサンプリングを行う。
  • 不均衡データに対処するため混合言語サンプリング方式と多項分布サンプリングを用いて訓練し、マルチGPU環境で合計100Kの前訓練ステップを実施する。
  • タスク固有の入力と付加言語IDを用いて、シーケンス生成(要約、生成、翻訳)およびシーケンス分類タスクに微調整し、評価指標としてBLEU、CodeBLEU、EM、正解率を用いる。

実験結果

リサーチクエスチョン

  • RQ1統一されたPL-NL事前学習モデルは、プログラミング言語と自然言語の両方に対して堅牢な表現を学習できるか。
  • RQ2ノイズ除去事前学習は、コード理解に不可欠なプログラム構文、命名規則、データフローの意味論をモデルが捉えることを可能にするか。
  • RQ3特にラベル付きデータが限られている言語で、統一モデルは生成、翻訳、識別タスクでどの程度性能を発揮するか。
  • RQ4PLUGタスクにおいて、大規模なラベルなしPL/NLデータでの事前学習は、エンコーダのみまたはデコーダのみのベースラインより改善をもたらすか。

主な発見

  • PLBARTは複数言語に跨るコード要約、コード生成、コード翻訳において最先端基準を上回るか、競合する。
  • PLBARTはプログラム修復や脆弱性/クローン検出などの識別タスクで強力な性能を示し、堅牢なプログラム理解を示唆する。
  • アブレーション研究は、PLBARTが事前学習中に構文とデータフローの意味論を学習できることを示しており、限られたラベルデータでも効果的なファインチューニングを可能にする。
  • 定性的分析は、PLBARTがプログラミング構造、命名規則、およびデータフローパターンを捉え、プログラムの意味論にとって重要であることを示唆する。
  • セット内で最も学習例が少ないRuby言語では、PLBARTが最も相対的なゲインを示し、統一前処理アプローチからの強い一般化を示唆する。

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

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

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

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