[注意事項] トランスのアーキテクチャ (注意が必要です)

必要なのは注意力だけです


bilibili他の人のメモ

MLP-RNN-seq2seq/エンコーダ-デコーダ アーキテクチャ-アテンション メカニズム-セルフ アテンション-トランスフォーマー

MLP (多層パーセプトロン): MLP は、各層間に活性化関数を備えた完全に接続された複数の層で構成される基本的なフィードフォワード ニューラル ネットワーク アーキテクチャですこれは深層学習で重要な役割を果たし、画像分類や音声認識などのさまざまな問題を解決するために使用されます。

RNN (リカレント ニューラル ネットワーク): RNN はリカレント ニューラル ネットワークの一種で、自然言語テキストや時系列などのシーケンス データの処理に特に適しています。RNN のループ構造は、情報をシーケンス内に転送することを可能にしますが、勾配の消失や勾配の爆発などの問題もあります。

Seq2Seq (シーケンス to シーケンス):シーケンス to シーケンス モデルは、入力シーケンスを出力シーケンスにマッピングするニューラル ネットワーク アーキテクチャです。これは機械翻訳や自然言語生成などのタスクによく使用され、エンコーダーが入力シーケンスをコンテキスト ベクトルにエンコードし、デコーダーがコンテキスト ベクトルに基づいて出力シーケンスを生成します

エンコーダ/デコーダ アーキテクチャ:これは、シーケンス間のタスクに使用される一般的なニューラル ネットワーク アーキテクチャです。エンコーダは入力シーケンスを固定長のコンテキスト ベクトルにエンコードする役割を果たし、デコーダはコンテキスト ベクトルに基づいて出力シーケンスを生成します。このアーキテクチャは、機械翻訳や対話生成などのタスクにうまく適用されています。

アテンション メカニズム:アテンション メカニズムは、デコーダが出力シーケンスを生成する際に、入力シーケンスの特定の部分に焦点を当てるために使用されるメカニズムです。これにより、モデルは長いシーケンスをより適切に処理し、重要な情報を取得できるようになります。注意メカニズムは、翻訳と生成の品質を向上させる上で重要な役割を果たします。

セルフ アテンション (Transformer): Transformer は、セルフ アテンション メカニズムを導入した革新的なニューラル ネットワーク アーキテクチャです。従来の RNN 構造を放棄し、モデルがシーケンス データを並列処理できるようにします。Transformer は自然言語処理の標準アーキテクチャとなっており、BERT や GPT シリーズのモデルは Transformer に基づいています。

このプロセスにおける重要な開発は、MLP と RNN から Seq2Seq、そして最後に Transformer に至るまで、これらのコンポーネントを相互に統合することです。Transformer は、その優れたパフォーマンスと機能によって自然言語処理分野の開発を促進し、多くの自動テキスト処理タスクの新しい標準を作成してきました。セルフ アテンション メカニズムの導入により、モデルはシーケンス内の依存関係をよりよく理解できるようになり、多くの NLP タスクのパフォーマンスが向上します。


導入

  1. RNN (LSTM および GNN) は、依然としてシーケンス モデリング (言語モデリング) および変換問題 (機械翻訳) のパラダイムです。リカレント言語モデルとエンコーダ/デコーダ アーキテクチャの境界を押し広げる実質的な取り組みが続けられています。
  2. RNNの特徴(デメリット): 左から右へ段階的に計算し、t番目の状態htはht-1(履歴情報)と現在の単語tから計算します。この本質的に逐次的な性質により、トレーニング サンプル内での並列化が妨げられます。これは、メモリの制約によってサンプル間のバッチ処理が制限されるため、シーケンスの長さが長くなると重要になります。
  3. RNN でのアテンションの適用: アテンションは、エンコーダ情報をデコーダに効果的に送信するために使用され、距離に依存しない入力または出力シーケンスの依存関係のモデリングを可能にします。

背景

自分の論文と他の論文のつながりと違いを書き出す

CNN では、3*3 畳み込みが使用されると仮定すると、ほとんどの画像 (逐次計算) を非常に深い層で学習する必要があるため、離れた場所間の依存関係を学習することが困難になります。(2 つのピクセルが遠く離れている場合は、多くの 3 * 3 畳み込みレイヤーをレイヤーごとに使用して、遠く離れた 2 つのピクセルを接続する必要があります。)

Transformer のアテンション メカニズムは毎回すべてのピクセルを参照し、1 つのレイヤーでシーケンス全体を参照できます。

複数の出力チャンネル、各チャンネルは異なるパターンを認識できます。

Transformer のマルチヘッド セルフ アテンションは、CNN のマルチチャネル出力の効果をシミュレートします。

異なる点: Transformer は、シーケンスアライメントされた RNN や畳み込みを使用せずに入力と出力の表現を計算する自己注意に完全に依存する最初の変換モデルです。

モデルアーキテクチャ

bilibili他の人のメモ
ここに画像の説明を挿入します

各ステップでモデルは自動回帰的であり、次のステップを生成するときに追加の入力として以前に生成されたシンボルを消費します。

ここに画像の説明を挿入します
入力 ---- 入力 埋め込み入力は
埋め込み層を通過します。つまり、単語が入力され、ベクトルとして表されます。結果として得られるベクトル値は位置エンコーディング (3.5) に追加されます。

Transformer のブロック
マルチヘッド アテンション
Add & Norm: 残留接続 + Layernorm

エンコーダのコアアーキテクチャ

N 個の変圧器のブロックが積み重ねられます。
各レイヤーには 2 つのサブレイヤーがあります。
最初のサブレイヤーはマルチヘッド セルフ アテンションで、
2 番目のサブレイヤーは単純な、位置的に完全に接続されたフィードフォワード ネットワーク (略して MLP) です。

各サブレイヤーの出力は残留接続とLayerNorm
の式です: LayerNorm( x + Sublayer(x) )
Sublayer(x) はセルフアテンションまたは MLP を指します。

残りの接続では、入力と出力の次元が一致している必要があり、一致していない場合は投影が必要です。簡単にするために、各層の出力次元は dmodel = 512 に固定されています。

シンプルな設計: 2 つのパラメータ dmodel を調整するだけで済みます。つまり、各層のサイズと N 層の数です。これは、BERT や GPT などの後続の一連のネットワークの設計に影響します。

注: CNN や MLP とは異なります。MLP は通常、空間次元を下方に縮小し、CNN は空間次元を下方に縮小し、チャネル次元を上方に引き上げます。

ここに画像の説明を挿入します
ここに画像の説明を挿入します
2 次元データの場合: BN は各特徴の正規化に相当し、LN は各サンプルの正規化に相当します。
ここに画像の説明を挿入します
ここに画像の説明を挿入します

デコーダのコアアーキテクチャ

エンコーダの出力はデコーダの入力として機能します。
マスクされたマルチヘッド アテンションがもう 1 つあります。

ここに画像の説明を挿入します

マスクってどうやってやるの???

デコーダの出力は線形層に入り、ソフトマックスを実行して出力を取得します。
線形 + ソフトマックス: 標準的なニューラル ネットワーク アプローチ

注意

アテンション関数は、クエリと一連のキーと値のペアを出力にマッピングするものとして説明できます。

出力は値の加重合計--> 出力の次元 == 値の次元。出力の値の重み = クエリと対応するキーまたは互換性関数の間の類似度. 重みはクエリと対応するキーの間の類似度に相当します. キーと値は変化しませんが、クエリとして変化すると重みの配分が異なり、同じ結果でも出力が異なります。これが注意のメカニズムです
著者:ユニットイヤー
https://www.bilibili.com/read/cv13759416/?jump_opus=1 出典:bilibili

ここに画像の説明を挿入します
ここに画像の説明を挿入します

ここに画像の説明を挿入します

ここに画像の説明を挿入します
ここに画像の説明を挿入します

概要: Transformer は、比較的標準的なエンコーダ/デコーダ アーキテクチャです。
違い: エンコーダとデコーダの内部構造が異なり、エンコーダの出力がデコーダの入力として使用される方法にいくつかの違いがあります。

マルチヘッドアテンション

ここに画像の説明を挿入します
dmodel ディメンションのキー、値、クエリを使用して 1 つのアテンション関数を実行する代わりに、クエリ、キー、値を dk、dk、および dv ディメンションに h 回線形投影する方がよいことがわかりました。それぞれ異なる、学習された線形投影を使用することは有益です。次に、クエリ、キー、および値の投影されたバージョンごとに、attention 関数を並行して実行し、dv 次元の出力値を生成します。それらを連結し、再度投影して最終値を取得します。
ここに画像の説明を挿入します
マルチヘッド アテンションにより、モデルは、異なる場所にある異なる表現サブスペースからの情報に共同で注意を払うことができます。単一のアテンション ヘッドの場合、平均化によりこれが抑制されます。これにより、モデルは、異なる位置にある異なる表現部分空間からの情報を共同で処理できるようになります。
ここに画像の説明を挿入します

マルチヘッドの注意により、さまざまな投影法を学習する機会が与えられ、さまざまなパターンで必要とされるいくつかの同様の機能を投影された計量空間で一致させることができます。その後、h 個のヘッドが結合され、最後に投影が再度実行されます。

ここに画像の説明を挿入します
CNN では、畳み込み層には通常、複数のフィルターまたは畳み込みカーネルが含まれており、各フィルターは入力データのさまざまな特徴またはパターンの検出を担当します。各フィルターは入力データに対して畳み込み演算を実行し、入力データのさまざまな側面をキャプチャする特徴マップ (チャネル) を生成します。

同様に、アテンション メカニズムでは、クエリ、キー、値がさまざまな次元に複数回線形に投影されます。これは、さまざまな「チャネル」でさまざまな特徴を学習するのと似ています。各線形投影は、入力データを、入力データのさまざまな側面や関係をキャプチャするさまざまな表現サブスペースにマッピングします。各サブスペースは、CNN のさまざまな出力チャネルと同様に、アテンション ヘッドとして見ることができます。

CNN の複数の出力チャネルがさまざまな画像特徴をキャプチャできるのと同様に、アテンション メカニズムのマルチヘッド アテンションは入力シーケンス内の情報のさまざまな側面をキャプチャできるため、入力を理解するモデルの能力が向上します。異なる部分空間を並行して処理するこの方法は、異なるヘッドが異なる特徴を学習できるため、モデルの汎化能力の向上にも役立ちます。

モデルにおける注目のアプリケーション

ここに画像の説明を挿入します
ここに画像の説明を挿入します

位置エンコーディング

ここに画像の説明を挿入します

1.Transformer はなぜマルチヘッド アテンション メカニズムを使用するのですか? (ヘッダーを使用しない理由)
2. Transformer が Q と K を生成するために異なる重み行列を使用するのはなぜですか。また、独自のドット乗算に同じ値を使用できないのはなぜですか? (最初の質問との違いに注意してください)
3. Transformer がアテンションを計算するときに加算ではなくドット乗算を選択するのはなぜですか? この 2 つの計算の複雑さと効果の違いは何ですか?
4. ソフトマックスを実行する前になぜアテンションをスケーリングする必要があるのか​​ (なぜ dk の平方根で割るのか)、式の導出を使用して説明します 5. アテンション
スコアを計算するときにパディングをマスクする方法は?
6. マルチヘッド アテンションを実行するときに各ヘッドの次元を削減する必要があるのはなぜですか? (上記の質問を参照してください)
7. Transformer の Encoder モジュールについて簡単に話してもらえますか?
8. 入力単語ベクトルを取得した後、行列に埋め込みサイズの平方根を掛ける必要があるのはなぜですか? どういう意味ですか?
9. Transformer の位置エンコーディングを簡単に紹介しますか? 意義やメリット・デメリットは何でしょうか?
10. 位置エンコーディング技術について他に何を知っていますか?また、それぞれの長所と短所は何ですか?
11. Transformer の残差構造と意味について簡単に説明しましょう。
12. Transformer ブロックが BatchNorm ではなく LayerNorm を使用するのはなぜですか? LayerNorm は Transformer のどこにありますか?
13. BatchNorm テクノロジーとその利点と欠点について簡単に説明します。
14. Transformer のフィードフォワード ニューラル ネットワークについて簡単に説明しますか? どのような活性化関数が使用されていますか? 関連する長所と短所は何ですか?
15.エンコーダー側とデコーダー側はどのように連携しますか? (seq2seq アテンションの知識についてはここで質問できます)
16. デコーダ段階でのマルチヘッド セルフアテンションとエンコーダ段階でのマルチヘッド セルフアテンションの違いは何ですか? (なぜデコーダのセルフアテンションにはシーケンスマスクが必要なのでしょうか)
17. Transformer の並列化はどこにありますか? Decoder側を並列化することはできますか?
19.Transformer トレーニング中の学習率はどのように設定されますか? Dropout はどのように設定され、どこにありますか? Dropout をテストするときに注意する必要があることはありますか?
20. 復号側の残差構造により、その後に見られなかったマスク情報が追加され、情報漏洩が発生することはありませんか?

志胡の答え

おすすめ

転載: blog.csdn.net/weixin_45751396/article/details/132740929