アテンションとセルフアテンション [アテンションを10,000語で解体、ネットワーク全体におけるアテンションの仕組みを最も詳しく解説]

前の記事RNN からアテンションへ次の図に示すように、RNN モデルの勾配降下法とパフォーマンスのボトルネックの問題を解決するために、RNN のエンコーダー デコーダー フレームワークにアテンション メカニズムを導入しました。
RNN-注意

上の図は、アテンション メカニズムを導入した Encoder-Decoder フレームワークです。上の図には単一の意味コード C だけが含まれるのではなく、C1、C2、C3 などの複数のコードが含まれます。Y1 を予測する場合、Y1 の注意は C1 に集中し、C1 を意味コードとして使用します。Y2 を予測する場合、Y2 の注意は C2 に集中し、C2 を意味コードとして使用します。というように、人間のシミュレーションを行います。注意のメカニズム。

RNN におけるアテンションの原理について説明しましたが、これは Encoder-Decoder フレームワークに基づいて導入されており、アテンションのメカニズムは必ずしも Encoder-Decoder フレームワークに基づく必要はありません。


本文の始まり

一、Attention

アテンション メカニズムは最初にコンピューター ビジョンに適用され、その後 NLP 分野にも適用され始めました。2018 年に BERT と GPT が驚くほど優れたパフォーマンスを示し、その後普及したため、NLP 分野で本格的に普及しました。トランスフォーマーとアテンションの核心に誰もが注目し始めました。

アテンションの位置をグラフで表現すると、おおよそ次のようになります。

注意

注意は、その名前の付け方から見て、明らかに人間の注意メカニズムから借用したものであり、その中心となるロジックは次のとおりです。すべてへの集中から集中への集中へ

限られた注意を重要な情報に集中させることで、リソースを節約し、最も効果的な情報を迅速に入手できます。

赤ちゃん

アテンション メカニズムは、シーケンスの長距離依存の問題をより適切に解決でき、並列コンピューティング機能を備えています。

ただし、アテンションは Encoder-Decoder フレームワークの下で使用する必要はなく、Encoder-Decoder フレームワークから分離することもできます。

  • 下の図は、Encoder-Decoder フレームワークから離脱した後の原理を示す図です。

フレーム

  • 注意原則の 3 段階の分解:

ここに画像の説明を挿入
Query(クエリオブジェクト)の情報を利用して、 Values (クエリ対象オブジェクト)から重要な情報を絞り出す、簡単に言えば、QueryとValuesの各情報の相関度を計算することです。

上の図を通して、アテンションは通常次のように説明できます。クエリ (Q) とキーと値のペア (値はキーと値のペアに分割されます) を出力にマッピングすることで表現されます。ここで、クエリ、各キー、各値はすべてベクトルであり、出力はV (クエリされたオブジェクト) のすべての値の重みです。重みは Query と各キーによって計算され、計算方法は 3 つのステップに分かれています。

ステップ 1: クエリと各キーの間の類似性を計算して、類似性スコアを取得します。

2 番目のステップ: s スコアを [0,1] の間の確率分布にソフトマックスします。

ステップ 3: [a1、a2、a3...an] を重み行列として使用し、値を重み付けして合計し、最終的なアテンション値を取得します。

一般的な式は次のとおりです。

ここに画像の説明を挿入
具体的な手順は次のとおりです。ここに画像の説明を挿入

理解に役立つストーリーを話してください。

ストーリー1

  • 図書館管理(ソース)には多数の書籍(バリュー)が存在しますが、検索の便宜上、書籍(キー)に番号を付けています。マーベル(質問)について知りたいときは、アニメ、映画、さらには第二次世界大戦(キャプテン・アメリカ)に関する本を読むことができます。
  • 効率を上げるために、すべての本を精読するわけではなく、マーベルの場合はアニメや映画関連の本を精読します(比重が高くなります)が、第二次世界大戦についてはざっと目を通すだけで済みます(比重が低くなります)。
  • それらをすべて読むと、マーベルについて包括的に理解できるようになります。

二、Self - Attention

2.1 注意と自己注意の違い

1. 注意:

従来のアテンション メカニズムは、Target の要素Source のすべての要素の間で発生します。
一般的なタスクの Encoder-Decoder フレームワークでは、入力 Source と出力 Target の内容が異なります。たとえば、英語 - 中国語の機械翻訳の場合、Source は英語の文であり、Target は対応する翻訳済みの中国語文です。

2. 自己注意

セルフアテンションは、その名前が示すとおり、ターゲットとソース間のアテンション メカニズムではなく、ソースの内部要素間またはターゲットの内部要素間で発生するアテンション メカニズムを指します。具体的な計算プロセスは同じですが、計算対象が変更されました。これはQuery=Key=Valueに相当し、計算プロセスはattentionと同じです。
(たとえば、Transformer で重みパラメータを計算する場合、テキスト ベクトルを対応する QKV に変換するには、対応する行列演算のみをソースで実行する必要があり、ターゲットの情報は使用されません。 )

セルフ アテンション メカニズムはアテンション メカニズムの変形であり、外部情報への依存を減らし、データや特徴の内部相関をより適切に捕捉します。

テキストにおける自己注意メカニズムの適用は、主に単語間の相互影響を計算することによって長距離依存の問題を解決します。
次の図は、セルフアテンションの例です。
ここに画像の説明を挿入

この文の中でそれが何を指しているのか、どの単語がそれに関連しているのかを知りたいので、それをクエリとして使用し、この文をキーと値として使用してアテンション値を計算します。この文の中でそれに最も関連のある単語。注意を払った結果、この文で最も関連性があるのは法律と応用であることがわかりました。

違いを要約すると、次のようになります。

  1. Self-attention の重要なポイントは、KQV の 3 つすべてが X から来たものであると規定することです。X x X のキーポイントを見つけます。QKV が等しいことがわかりますが、これらはすべて単語ベクトルの線形変換によって得られ、Q=V=K=X ではなく、W k 、W q 、W v線形変換によってX が得られます。
  2. アテンションはクエリ変数 Q を通じて V 内の重要な情報を見つけることです。K は V から変更されます。QK=A、AV = Z (アテンション値)、Z は実際には V の別の表現であり、ワード ベクトルとも呼ばれます、V構文的および意味的特徴を備えた
  3. 言い換えれば、自己注意には注意よりも 2 つの制約が増えます:
    (1) Q=K=V (同じソース)
    (2) Q、K、V は注意のアプローチに従う必要があります。

2.2 セルフアテンションメカニズム導入の目的

ニューラルネットワークが受け取る入力はサイズの異なる多数のベクトルであり、異なるベクトルとベクトルの間には一定の関係がありますが、これらの入力間の関係は実際のトレーニング中に十分に活用できず、モデルのトレーニング結果が非常に劣悪になります。
例えば:

机器翻译问题(序列到序列的问题,机器自己决定多少个标签)
词性标注问题(一个向量对应一个标签)
语义分析问题(多个向量对应一个标签)等文字处理问题

2.3 セルフアテンションの詳細説明

ここに画像の説明を挿入

各入力ベクトル a に対して、セルフ アテンションの青い部分の後にベクトル b が出力されます。このベクトル b は、a1 に対するすべての入力ベクトルの影響を考慮して取得されます。a に対応する単語ベクトルは 4 つあります。4 つのベクトル b を出力します。

以下に示すように:

ここに画像の説明を挿入

  • 上の図は複雑に見えますが、実際には a1 と [a1, a2, a3, a4] の類似度をそれぞれ計算し、最終的に b1 を取得しています。a1~a4 は、隠れ層の入力または出力になります。
  • a1~a4 はソース全体の情報に属します。このステップはソース全体の情報間の関係を計算します。

ここに画像の説明を挿入

  • a1 を例にとると、2 つのパラメータ行列 W qと W kの内積をそれぞれ取得し、q 1と k 1を取得します。(q = クエリ、k = キー)
  • a 1,1 はa 1と a 1の間の類似度または関係を表し、a 1,2 はa 1と a 2の間の類似度または関係を表し、同様に a 1,3と a 1,4も表します。
  • 各ベクトルと a1 の相関度を取得した後、softmax を使用して注目分布を計算すると、相関度が正規化され、値を通じてどのベクトルが a1 に最も関連しているかを確認できます。

ここに画像の説明を挿入

V は Q および K と同じです、V 1 = W V * a 1

a 1と a 2の間の相関が比較的高く、α 1,2が比較的大きい場合、取得された出力 b 1 はv 2に比較的近い可能性があります。つまり、注意スコアが結果内のベクトルの重みを決定します。 ;

マトリックス形式での分析

ここに画像の説明を挿入

4 つの入力 a を行列 I に結合すると、この行列には 4 つの列、つまり a 1から a 4があり、I に対応する重み行列 W を乗じて、クエリとキーを表す対応する行列 Q、K、V を取得します。それぞれと値。
3 つの W 行列 (W q、W k 、および W v ) は、学習する必要があるパラメーターです。

ここに画像の説明を挿入

  • 得られた Q と K を使用して、入力された 2 つのベクトル間の相関を計算します。
  • 行列 A の各値は、対応する 2 つの入力ベクトルのアテンションのサイズ α を記録します。A' は、softmax によって正規化された行列です。

ここに画像の説明を挿入

得られたA'とVを用いて、各入力ベクトルaに対応する自注目層の出力ベクトルbを計算します。

ここに画像の説明を挿入

自己注意の動作プロセスを要約すると、入力は I、出力は O です。


3、多頭自注意

セルフアテンションの進化版 マルチヘッドセルフアテンション、マルチヘッドセルフアテンション機構

相関にはさまざまな形式があり、さまざまな定義があるため、q が 1 つだけではなく、複数の q が存在する必要があり、さまざまな q がさまざまな種類の相関の原因となる場合があります。言語情報と同様に、文法的および意味論的な機能は非常に複雑であり、QKV の 1 層だけでは複雑なタスクを処理するには十分ではありません。

ここに画像の説明を挿入

上の図には2 つのヘッドがあり、この問題の 2 つの異なる相関関係を表しています

  • 同様に、k と v は複数存在する必要があり、2 つの k と v の計算方法は q と同じで、最初に ki と vi が計算され、次に 2 つの異なる重み行列が乗算されます。

  • それでは、q、k、v を計算した後、どのように自己注意を行うのでしょうか?

  • これは、最初のタイプが一緒に実行されること、2 番目のタイプが一緒に実行されること、2 つの独立したプロセス、および 2 つの b ( bi1、bi2 )が計算されることを除いて、上記のプロセスと同じです。

  • これは 2 つのヘッドの例であり、複数のヘッドの場合も処理は同様であり、b は個別に計算されます。

  • 最後に、下図に示すように、b i1と b i2 を行列に連結し、重み行列 W を乗算して b^i を取得します。これは、
    セルフ アテンション ベクトル ai の出力です。

ここに画像の説明を挿入


四、位置エンコーディング

自己注意を訓練する場合、実際には位置に関する情報が欠落しており、前後の違いはありません。上記の a1、a2、a3 は入力の順序を表すのではなく、入力ベクトルの数だけを表します。 Obvious シーケンスを持つ RNN とは異なります。自己注意入力と同時に出力されます

Self-Attentionに位置情報を反映するにはどうすればよいですか?

アテンションによって失われるシーケンス順序情報を解決するために、Transformer の提案者はPosition Embeddingを提案しました。つまり、入力 X に対してアテンション計算を実行する前に、X のワード ベクトル、つまりワード ベクトルに位置情報を追加します。 X の式は次のとおりです:
X Final_embedding = 埋め込み + 位置埋め込みの
ここに画像の説明を挿入
別の表現:
ここに画像の説明を挿入


5. 自己注意の拡大

5.1 セルフアテンション vs RNN

ここに画像の説明を挿入
セルフ アテンションを導入した後は、長距離相互依存の特徴を文章内で捉えることが容易になります。

RNN や LSTM ではシーケンス計算を順番に行う必要があり、長距離の相互依存特徴量の場合、両者を結び付けるには数タイムステップの情報の蓄積が必要となり、距離が遠くなるほど効果的に捕捉できる可能性は低くなります。

  • Self-Attention は、計算プロセス中の 1 つの計算ステップで文中の任意の 2 つの単語間の接続を直接接続するため、遠距離依存特徴間の距離が大幅に短縮され、これらの特徴の効果的な使用に役立ちます。

  • さらに、セルフ アテンションは計算の並列性を高めるのにも直接役立ちます。これは、注意メカニズムの 2 つの欠点を補うものであり、これがセルフ注意が徐々に広く使用されるようになった主な理由です。

5.2 セルフアテンション vs CNN

ここに画像の説明を挿入

Self-Attention は、実際にはグローバル情報に基づく CNN とみなすことができます。

  • 従来のCNNのコンボリューションカーネルは規制されているとされており、画像の特徴抽出にはコンボリューションカーネル内の情報しか抽出できませんでしたが、Self-Attentionはソースの内部特徴情報に注目し、最も適切なものを「学習」することができます。グローバルな視点で画像の特徴情報を最大限に抽出する「コンボリューションカーネル」。
  • データ量が少ない場合、セルフアテンションのトレーニング効果は低く、CNN ほど良くありません。
  • 大量のデータの場合、セルフアテンションのトレーニング効果は CNN よりも優れています。

ここに画像の説明を挿入

ここに画像の説明を挿入

5.3 自己注意の利点

  1. パラメータが少ない: CNN や RNN と比較して、パラメータが少なく、複雑さも軽減されています。したがって、必要な計算能力も小さくなります。
  2. 高速: RNN とそのバリアント モデルを並列計算できない問題を解決します。アテンション機構の各ステップの計算は前ステップの計算結果に依存しないため、CNNと同様に並列処理が可能です。
  3. 良い効果: アテンションメカニズムが導入される前は、誰もが非常に悩んでいた問題がありました。それは、記憶力の弱い人が過去の出来事を思い出せないのと同じように、遠距離の情報が弱まってしまうということです。

六、仮面をかぶった自己注意

Transformer は、Masked Self Attendee モデルを使用します。これについては、Transformer の動的プロセスと併せて説明する必要があるため、次の Transformer の記事で説明します。

ここに画像の説明を挿入

マスクは、次の図に示すように、モデルが将来の情報を見ることができないように、対角に沿って灰色の領域を 0 でカバーするものであり、ソフトマックスが完了した後の横軸の結果は 1 になります。

簡単に言うと、Decoder はトレーニング フェーズとテスト フェーズの動作を一貫させるためにマスクを作成します。ギャップはなくなり、モデルは過剰適合を避けるために将来の情報を認識しなくなります。

おすすめ

転載: blog.csdn.net/weixin_68191319/article/details/129218551