必要なのは注意だけです (Transformer の紹介)

1 はじめに

2018年にGoogleチームが提案した単語ベクトルを生成するBERTアルゴリズムは、11のNLPタスクで優れた結果を達成しており、これは2018年のディープラーニング分野で最もエキサイティングなニュースと言えるでしょう。BERT アルゴリズムは Transformer に基づいており、Transformer はアテンション メカニズムに基づいています。

2 エンコーダ-デコーダ

2.1 エンコーダ/デコーダの概要

現在、注目モデルのほとんどは Encoder-Decoder フレームワークに付加されて実装されていますが、NLP では主に Encoder-Decoder フレームワークは系列-系列問題を扱うために使用されます。

  • テキスト要約、記事入力(シーケンスデータ)、記事の要約(シーケンスデータ)生成
  • テキスト翻訳、文章または英語(シーケンスデータ)を入力し、翻訳された中国語(シーケンスデータ)を生成します
  • 質問応答システム、質問(シーケンスデータ)を入力、回答(シーケンスデータ)を生成

2.2 エンコーダ-デコーダ構造の原理

ここに画像の説明を挿入
エンコーダ: 入力シーケンス <x1, x2, x3…xn> をエンコードして意味コードに変換するエンコーダ C, シーケンス <x1, x2, x3…xn> の情報を保存するエンコーダ コーディング方法、RNN/ LSTM/GRU/BiRNN/BiLSTM/BiGRU

デコーダ: デコーダは入力セマンティクスに従って C をエンコードし、それをシーケンス データにデコードします (デコード方法は RNN/LSTM/GRU/BiRNN/BiLSTM/BiGRU も使用できます)。

3 アテンションモデル

3.1 アテンション アテンション メカニズムの概要

同じ絵の中でも、違う人が違う場所を観察し、気づくことがありますが、これが人間の注意のメカニズムです。注意は人間の注意メカニズムを模倣するように設計されています。

3.2 注意の原則

ここに画像の説明を挿入
上の図は、アテンション メカニズムを導入した Encoder-Decoder フレームワークです。上の図には単一の意味コード C が存在せず、C1、C2、C3 などの複数のコードがあることが一目でわかります。Y1 を予測するとき、おそらく Y1 の注意は C1 にあり、C1 を意味コードとして使用します。Y2 を予測するとき、Y2 の注意は C2 に集中し、C2 を意味コードとして使用します。類推すると、人間の注意メカニズムは次のようになります。シミュレートした。

固定された中間意味表現 C は、現在の出力単語に従って注意モデルに変更を加えるように調整された Ci に置き換えられます。

g 関数は重み付けされた合計です。αi は重み分布を表します。
C i = ∑ j = 1 n α ijhj C_{i}=\sum_{j=1}^{n} \alpha_{ij} h_{j}C私は=j = 1あるイジhj

3.3 アテンションメカニズムの本質的な考え方

ここに画像の説明を挿入
上の図を参照すると、このようにアテンションを理解できます。Source の構成要素は、一連の <Key, Value> データ ペアで構成されていると考えてください (上記の例に対応し、キーと値は両方とも等しい)出力値 h) は、この時点で、Target の要素 Query (上記の例ではデコーダーの hi に対応) が与えられると、Query と各 Key の間の類似性または相関関係を計算することにより、各 Key の対応する Value重み係数が取得され、その後、値が重み付けされて合計されて、最終的なアテンション値が得られます。したがって、本質的に、アテンションのメカニズムは、ソース内の要素の値の値を重み付けして合計することであり、クエリとキーは、値に対応する重み係数を計算するために使用されます。つまり、その本質的な考え方は次の式のように書き直すことができます。

アテンション ⁡ ( クエリ, ソース ) = ∑ i = 1 L x 類似度 ⁡ ( クエリ , キー i ) ∗ 値 i \operatorname{アテンション}(\text { クエリ, ソース })=\sum_{i=1}^{L_ {x}} \operatorname{類似度}\left(\text { クエリ }, \text { キー }_{i}\right) * \text { 値 }_{i}注意( クエリ、ソース )=i = 1L×類似性( クエリ , 鍵 私は) 価値 私は

Lx はソースの長さを表し、類似度 (Q, Ki) は次のように計算されます。
ここに画像の説明を挿入
内積: Query と Keyi の内積であり、Transformer で使用される方法です。
コサイン類似度-コサイン類似度:
分子は 2 つのベクトル Query と Key のドット積、
分母は 2 つのベクトルの L2 ノルムです (L2 ノルム: ベクトルの各要素の二乗和をポイントし、平方根)

Query と Keyi の類似度を計算した後、第 2 段階では SoftMax と同様の計算方法を導入し、第 1 段階での類似度スコアを合計 1 の確率分布に変換しますが、重要な要素の重みは次のようになります。 SoftMax の内部メカニズムにより、より顕著になります。つまり、一般的に次の計算式が計算に使用されます。
ここに画像の説明を挿入
第 2 ステージの計算結果 ai は、Valuei に対応する重み係数であり、重み付けされた合計を使用してアテンション値を取得できます。 ステージ 1: クエリと各キーが計算されます
ここに画像の説明を挿入
ここに画像の説明を挿入
。類似性を計算して類似性スコア s を取得します。
ステージ 2: s スコアを [0,1] の間の確率分布にソフトマックスします。
ステージ 3: [a1, a2, a3...an] を重み行列として使用して、値を重み付けして合計します。最終的なアテンション値を取得するには

3.4 注意点のメリットとデメリット

アドバンテージ:

  • 高速。アテンション メカニズムは RNN に依存しなくなり、RNN を並列計算できないという問題が解決されました。
  • 効果は良好です。良い効果は主に、局所的な重要な情報を取得し、重要なポイントを把握できる注意メカニズムによるものです。

欠点:

  • 並列計算は Decoder 段階でのみ実現可能であり、Encoder 部分では依然として RNN と LSTM モデルを順番にエンコードして使用しているため、Encoder 部分ではまだ並列計算を実現できず、完全ではありません。
  • これは、Encoder 部分がまだ RNN に依存しているため、中距離と長距離の間の 2 つの単語間の関係を取得する方法がありません。

4 自注意

一般的なタスクの Encoder-Decoder フレームワークでは、入力 Source と出力 Target の内容が異なります。たとえば、英語 - 中国語の機械翻訳の場合、Source は英語の文であり、Target は対応する翻訳済みの中国語文です。アテンション メカニズムは、ターゲットの要素とソースのすべての要素の間で発生します。その名のとおり、セルフ アテンションとは、Target と Source 間のアテンション メカニズムではなく、Source の内部要素間、または Target の内部要素間で発生するアテンション メカニズムを指し、特殊な場合のアテンションとしても理解できます。ターゲット = ソース コンピューティング メカニズム。具体的な計算処理は同じですが、計算対象が変わっており、Query=Key=Valueに相当し、計算処理はattentionと同じです。

ここに画像の説明を挿入
このようにセルフ アテンションを導入すると、RNN や LSTM の場合は逐次計算する必要があるため、文中の長距離相互依存特徴を捉えることが容易になります。情報を蓄積するにはいくつかのタイムステップが必要であり、それによってのみ 2 つを結び付けることができ、距離が遠いほど効果的に捕捉される可能性は低くなります。ただし、セルフ アテンションは計算プロセス中に、計算ステップを通じて文内の任意の 2 つの単語間の接続を直接接続するため、遠距離依存特徴間の距離が大幅に短縮され、これらの特徴の効果的な使用に役立ちます。さらに、セルフ アテンションは計算の並列性を高めるのにも直接役立ちます。これは、注意メカニズムの 2 つの欠点を補うものであり、これがセルフ アテンションが徐々に広く使用されるようになった主な理由です。

5 参考

https://blog.csdn.net/Tink1995/article/details/105012972

おすすめ

転載: blog.csdn.net/qq_54372122/article/details/131498114