[論文レビュー] What does Transformer learn about source code?
本論文では、CodeBERT や GraphCodeBert などの事前学習済みトランスフォーマー モデルから、構文、制御フロー、データフローなどの構造的情報を自動で抽出するための集約されたアテンション スコアおよび集約されたアテンション グラフを導入する。この手法により、ルールに依存しない効果的なプログラム表現グラフの構築が可能となり、変数誤用タスクにおける手作業で設計されたグラフと同等またはそれ以上の性能を達成する。これは、トランスフォーマーがソースコード内で豊富で意味的に意味のある構造的パターンを学習していることを示している。
In the field of source code processing, the transformer-based representation models have shown great powerfulness and have achieved state-of-the-art (SOTA) performance in many tasks. Although the transformer models process the sequential source code, pieces of evidence show that they may capture the structural information (\eg, in the syntax tree, data flow, control flow, \etc) as well. We propose the aggregated attention score, a method to investigate the structural information learned by the transformer. We also put forward the aggregated attention graph, a new way to extract program graphs from the pre-trained models automatically. We measure our methods from multiple perspectives. Furthermore, based on our empirical findings, we use the automatically extracted graphs to replace those ingenious manual designed graphs in the Variable Misuse task. Experimental results show that the semantic graphs we extracted automatically are greatly meaningful and effective, which provide a new perspective for us to understand and use the information contained in the model.
研究の動機と目的
- トランスフォーマーがソースコードに関して学習する構造的情報を、特に線形シーケンスモデリングをはるかに超えるものについて調査すること。
- コード固有のトランスフォーマー モデルにおける構造的パターンの解釈手法の欠如に対処すること。
- 手作業で設計されたルールに依存せずに、アテンション メカニズムからプログラム表現グラフを自動的に、データ駆動で抽出する手法を開発すること。
- 自動抽出されたグラフが、下流のコードインテリジェンス タスクにおいて、手作業で設計されたグラフと同等またはそれ以上の性能を発揮するかどうかを評価すること。
提案手法
- すべてのヘッドとレイヤーにわたるアテンション重みを定量化および集約して、ソースコード内の構造的依存関係を明らかにするための集約アテンション スコアを提案する。
- Chu-Liu/Edmonds(CLE)アルゴリズムを用いて、集約アテンション スコアを有向無閉路グラフ(DAG)に変換し、集約アテンション グラフを構築する。
- CodeBERT や GraphCodeBert などの事前学習モデルにこの手法を適用し、アテンション パatters から意味的および構造的関係を抽出する。
- 依存性解析ベンチマークで精度、再現率、F1 などの定量的指標を用いてグラフの品質を測定する。
- 変数誤用タスクにおける手作業で設計されたグラフを、自動抽出された集約アテンション グラフに置き換え、標準指標を用いて性能を評価する。
実験結果
リサーチクエスチョン
- RQ1トランスフォーマー ベースのモデルは、ソースコードに関して、構文や制御/データフローなどのどのような構造的情報を学習しているか?
- RQ2CodeBERT や GraphCodeBert などの事前学習モデルにおけるアテンション メカニズムは、明示的な構造的事前学習がなくても、プログラム構造を暗黙的にエンコードできるか?
- RQ3手作業で設計されたプログラムグラフと比較して、集約アテンション グラフは意味的なプログラム関係をどれほど効果的に捉えられるか?
- RQ4アテンション スコアから自動抽出されたグラフは、下流のコードインテリジェンス タスクで競争力のある性能を達成できるか?
主な発見
- 集約アテンション スコアは、if-else や変数使用関係などの構文的および意味的依存関係を効果的に捉えている。
- CLE アルゴリズムを用いて抽出された集約アテンション グラフは、強い構造的忠実性を維持しており、変数誤用タスクにおいて手作業で設計されたグラフと同等の性能を発揮している。
- VarMisuse タスクにおいて、CodeBERT から抽出されたグラフは 77.33% の位置および表現の正確さを達成し、GraphCodeBert からは 77.81% を達成しており、ベースライン性能と同等またはそれを上回っている。
- この手法は、シーケンスベースおよびオリジナルベースのグラフベースラインを上回っており、アテンション メカニズムが豊富でタスク関連の構造的情報をエンコードしていることを示している。
- 結果は、トランスフォーマーが、それらの特徴を明示的に事前学習していない場合でも、複雑なプログラム構造を学習し、保持していることを検証している。
- 本手法は、外部ツールやルールベースのシステムに依存せずに、事前学習済みコードモデルから構造的知識を抽出・利用する、新たなスケーラブルで解釈可能な方法を提供する。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。