Skip to main content
QUICK REVIEW

[論文レビュー] DOBF: A Deobfuscation Pre-Training Objective for Programming Languages

Baptiste Rozière, Marie-Anne Lachaux|arXiv (Cornell University)|Feb 15, 2021
Software Engineering Research参考文献 58被引用数 17
ひとこと要約

この論文は、変数名や関数名を難読化したバージョンから元の名前を回復することで、元のソースコードを難読化するようにモデルを訓練する、プログラミング言語向けの新しい事前学習目的であるDOBFを提案する。コードの構造的意味論を活用することで、DOBFは、コード検索、翻訳、要約などの下流タスクにおいて、BERT風のMLMおよび既存のコードモデルを上回り、最大12.2%の相対的改善を達成し、完全な難読化解除と意味のある名前提案を可能にする。

ABSTRACT

Recent advances in self-supervised learning have dramatically improved the state of the art on a wide variety of tasks. However, research in language model pre-training has mostly focused on natural languages, and it is unclear whether models like BERT and its variants provide the best pre-training when applied to other modalities, such as source code. In this paper, we introduce a new pre-training objective, DOBF, that leverages the structural aspect of programming languages and pre-trains a model to recover the original version of obfuscated source code. We show that models pre-trained with DOBF significantly outperform existing approaches on multiple downstream tasks, providing relative improvements of up to 13% in unsupervised code translation, and 24% in natural language code search. Incidentally, we found that our pre-trained model is able to de-obfuscate fully obfuscated source files, and to suggest descriptive variable names.

研究の動機と目的

  • 標準的なマスクド言語モデル(MLM)のプログラミング言語事前学習における限界、すなわちコード固有の構造的性質を活用できない点を是正する。
  • 難読化されたコードから意味のある識別子を回復する難読化目的を導入することで、コードのための事前学習を改善する。
  • ランダムマスキングよりも意味的により意味のあるノイズ関数を用いることで、モデルがコードのより深い意味的表現を学習できるようにする。
  • 自然言語対応データを必要とせず、複数のコード理解タスクで最先端の性能を達成する難読化事前学習が可能であることを実証する。
  • コード意味論に基づく構造的ノイズが、非構造的ノイズよりも自己教師付き事前学習で優れているかどうかを検討する。

提案手法

  • DOBF目的は、変数名や関数名がすべて 'VAR_1'、'VAR_2' などの汎用トークンに置き換えられた難読化されたバージョンから、元のソースコードを再構築するようにシーケンス・ツー・シーケンスモデルを訓練する。
  • 難読化は識別子ごとに確率0.5で適用され、同じ変数のすべての出現箇所が同じプレースホルダー・トークンに一様にマスキングされる。
  • モデルは、入力が難読化コードで出力が元のソースコードである、ノイズ除去オートエンコーダーの目的関数を用いて事前学習される。
  • DOBFは、トークンの削除やシャッフルを通じて破損したシーケンスを回復する目的関数である、ノイズ除去オートエンコーディング(DAE)目的と組み合わせられ、表現学習をさらに向上させる。
  • 初期化はランダム重みまたは事前学習済みMLMチェックポイント(例:RoBERTa)から行い、初期化の性能への影響を評価する。
  • アプローチは、教師なしコード翻訳、自然言語コード検索、コード要約、クローン検出を含む、複数のプログラミング言語とタスクで評価される。

実験結果

リサーチクエスチョン

  • RQ1難読化に基づく事前学習目的は、プログラミング言語表現学習において、標準的なマスクド言語モデル(MLM)を上回ることができるか?
  • RQ2DOBFで事前学習することで、コード検索や翻訳などの下流タスクのパフォーマンスが向上するか?
  • RQ3DOBFで事前学習されたモデルは、完全に難読化されたソースコードを復元し、意味のある変数名を提案できるか?
  • RQ4自然言語対応コードデータが使用できない状況で、DOBFはMLMや他の事前学習目的よりも効果的か?
  • RQ5DOBFとDAEなどの他の目的を組み合わせることで、コード関連タスクにおけるモデル性能がさらに向上するか?

主な発見

  • DOBF事前学習は、ベースラインモデルと比較して、教師なしコード翻訳の精度で12.2%の相対的改善を達成した。
  • 自然言語コード検索では、既存の手法と比較して5.3%の相対的改善を達成し、CodeBERTやGraphCodeBERTを上回った。
  • DOBF+DAEモデルは、ビームサイズ10でJavaからPythonへの教師なしコード翻訳の計算的精度で6.8%の改善を達成した。
  • 初期化をランダムにした場合でも、DOBFはクローン検出においてMLMを上回った。これは、難読化目的自体が強いインダクティブバイアスを提供していることを示している。
  • DOBFで事前学習されたモデルは、完全に難読化されたソースファイルを復元し、記述的な変数名を提案でき、事前学習をはるかに超える実用的価値を示している。
  • MLMで初期化し、DAEと組み合わせたDOBFは、すべての評価タスクでDOBF単体やMLMを上回る性能を示し、構造的ノイズと非構造的ノイズの相補的利点を示している。

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

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

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

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