Alibaba Cloud Machine Learning Platform PAI は、華東師範大学の Gao Ming 教授のチームと協力して、構造を認識したスパース アテンション トランスフォーマー モデル SASA を SIGIR2022 で公開しました。これは、長いコード シーケンスに対するトランスフォーマー モデルの最適化手法であり、長いコードのシナリオの効果とパフォーマンスを改善します。セルフ アテンション モジュールの複雑さはシーケンスの長さに応じて指数関数的に増加するため、ほとんどのプログラミング ベースの事前トレーニング済み言語モデル (PPLM) はシーケンスの切り捨てを使用してコード シーケンスを処理します。 SASA メソッドはセルフ アテンションの計算を分散し、コードの構造的特徴を組み合わせることで、長いシーケンスのタスクのパフォーマンスを向上させ、メモリと計算の複雑さを軽減します。
論文: Tingting Liu、Chengyu Wang、Cen Chen、Ming Gao、および Aoying Zhou. 構造を意識した疎な注意による長いプログラミング言語の理解. SIGIR 2022
次の図は、SASA の全体的な枠組みを示しています。
このうち、SASA は主に、前処理段階と Sparse Transformer トレーニング段階の 2 つの段階で構成されます。前処理段階では、2 つのトークン間の相互作用行列が取得されます。1 つは上位 k 周波数行列、もう 1 つは AST パターン行列です。 Top-k 頻度行列は、事前にトレーニングされたコード言語モデルを使用して、CodeSearchNet コーパス上のトークン間の注意相互作用頻度を学習します。AST パターン行列は、コードを解析する抽象構文ツリー (AST) に基づいて取得されます。構文ツリーの接続関係に関する情報 トークン間の対話情報Sparse Transformer のトレーニング フェーズでは、Transformer Encoder を基本フレームワークとして使用し、完全なセルフ アテンションを構造認識のスパース セルフ アテンションに置き換え、特定のパターンに準拠するトークン ペア間でアテンションの計算を実行することで、計算の複雑さを軽減します。
SASA スパース アテンションには、次の 4 つのモジュールが含まれています:
#現代のハードウェアの並列計算特性に適応するために、シーケンスをトークン単位で計算するのではなく、いくつかのブロックに分割します。各クエリ ブロックは
## に関連付けられています。
# スライディング ウィンドウ ブロックと グローバル ブロックと top-k および AST ブロック注意を計算し、全体の計算複雑さは b であり、ブロック サイズです。 各スパース アテンション パターンはアテンション マトリックスに対応します。スライディング ウィンドウ アテンションを例にとると、アテンション マトリックスの計算は次のようになります: ASA 疑似コード:#
評価には、CodeXGLUE[1] によって提供される 4 つのタスク データ セット (コード クローン検出、欠陥検出、コード検索、コード要約) を使用します。配列長が 512 を超えるデータを抽出して長い配列データセットを作成すると、次のような実験結果が得られます。 SASA は 3 つのデータセットで最高のパフォーマンスを示し、パフォーマンスはすべてのベースラインを大幅に上回っています。このうち、Roberta-base[2]、CodeBERT[3]、および GraphCodeBERT[4] は、長いシーケンスを処理するためにトランケーションを使用するため、コンテキスト情報の一部が失われます。 Longformer[5] や BigBird[6] は、自然言語処理において長いシーケンスを処理するために使用されるメソッドですが、コードの構造的特徴が考慮されておらず、コード タスクへの直接転送は効果的ではありません。
top-k スパース アテンション モジュールと AST 対応スパース アテンション モジュールの効果を検証するために、BigCloneBench と欠陥検出データ セットでアブレーション実験を実施しました。結果は次のとおりです:
スパース アテンション モジュールは、長いコード タスクのパフォーマンスを向上させるだけでなく、ビデオ メモリの使用量も大幅に削減します。同じデバイスの下で、SASA はより大きなバッチ サイズを設定できますが、完全な自己-attention モデルはメモリ不足の問題に直面しています。具体的なビデオ メモリの使用量は次のとおりです:
SASA は、スパース アテンション モジュールとして、他の事前トレーニング モデル ベースに移行できます。長いシーケンスの自然言語処理タスクを処理するための Transformer は、オープン ソース フレームワーク EasyNLP (https://github.com/alibaba/EasyNLP) に統合され、オープン ソース コミュニティに貢献されます。
紙のリンク: https://arxiv.org/abs/2205.13730
以上が長いコード シナリオでのパフォーマンスを向上させるための、長いコード シーケンスのトランスフォーマー モデル最適化手法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。