Skip to main content
QUICK REVIEW

[論文レビュー] Exploring Software Naturalness through Neural Language Models

Luca Buratti, Saurabh Pujar|arXiv (Cornell University)|Jun 22, 2020
Software Engineering Research参考文献 37被引用数 54
ひとこと要約

本論文は、異なるトークナイザと事前学習戦略を用いて生のCコード上でトランスフォーマーLMを事前学習する(C-BERT)ことによりソフトウェアの自然さを調査し、ASTノード taggingと脆弱性識別を、コンパイラ由来の特徴に依存せずに評価する。

ABSTRACT

The Software Naturalness hypothesis argues that programming languages can be understood through the same techniques used in natural language processing. We explore this hypothesis through the use of a pre-trained transformer-based language model to perform code analysis tasks. Present approaches to code analysis depend heavily on features derived from the Abstract Syntax Tree (AST) while our transformer-based language models work on raw source code. This work is the first to investigate whether such language models can discover AST features automatically. To achieve this, we introduce a sequence labeling task that directly probes the language models understanding of AST. Our results show that transformer based language models achieve high accuracy in the AST tagging task. Furthermore, we evaluate our model on a software vulnerability identification task. Importantly, we show that our approach obtains vulnerability identification results comparable to graph based approaches that rely heavily on compilers for feature extraction.

研究の動機と目的

  • AST特徴を明示的な構造情報なしに、生のコードから学習できるかを検証する。
  • トークナイゼーション戦略がコードの構文的/意味的側面の学習と下流タスクの性能にどう影響するかを評価する。
  • グラフベースでコンパイラ依存の手法と比較して、脆弱性識別の性能を評価する。

提案手法

  • 100のオープンソースCリポジトリからC-BERTをゼロから事前学習する。
  • 三つのトークナイゼーション戦略を検討する:Char、KeyChar(Char + Cキーワード)、およびSentencePiece(SPE)。
  • 三つの事前学習目的を採用する:MLM、全語 masking(WWM)を用いた文字列の強化マスキング、そしてタスク特異的ファインチューニング目的。
  • Clang由来のラベルを用いてトークン_kindとカーソル_kindのモデル理解を探るASTノード taggingタスクを導入する。
  • Vulnerability Identification(VI)でファインチューニングし、GGNNなどのグラフベースのベースラインと比較する。
  • FFmpegとQEMUデータセットで、固定幅250トークンのウィンドウと長入力のスライディング窓集約で評価する。

実験結果

リサーチクエスチョン

  • RQ1生のCソースコードの上で直接学習したトランスフォーマーLMが、明示的な構造情報なしにASTライクな特徴を発見できるか。
  • RQ2トークナイゼーションの選択(Char、KeyChar、SPE)と事前学習目的が、コードの構文/意味的側面の学習にどう影響するか。
  • RQ3言語モデルベースのアプローチは、グラフベースでコンパイラ依存の方法と比較して、脆弱性識別でどの程度の性能を示すか。

主な発見

ModelTokenizerAcc_FFmpegF1_FFmpegAcc_QEMUF1_QEMU
Char MLMChar94.9695.7171.6880.53
BiLSTM SPESPE94.6995.5274.1281.58
KeyChar MLMKeyChar95.6896.5866.2076.19
Char MLM (C-BERT)Char97.1097.7281.0687.43
C-BERT SPE MLMSPE97.7298.2981.1187.79
KeyChar MLMKeyChar97.7398.3180.7887.49
  • 生のCコードと異なるトークナイザで訓練されたトランスフォーマーは、AST cursor_kind taggingにおいてデータセット間でBiLSTMベースラインを上回る。
  • C-BERT with SPEは概ね高精度を達成(97.72–97.73)、F1(98.29–98.31)を達成し、FFmpegでは強力な結果(81.11–87.79)を示し、QEMUでは強い結果(81.11–87.79)。
  • CharacterベースのトークナイゼーションとWWMは強力な結果をもたらし、WWMは一般にVI性能を向上させつつOOV懸念を低減する。
  • AST cursor_kind taggingでは、CharまたはSPEのトークナイゼーションを用いたC-BERTが最良のスコアを達成し、FFmpegはQEMUより一貫して容易だった。
  • VIでは、MLMベースの事前学習を用いたC-BERTモデルがNaive、BiLSTM、CNNベースラインおよびGGNNベースラインを全データセットおよび縮小データセットで上回り、WWMはChar/KeyChar変種を支援する。

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

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

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

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