トランスフォーマー39~

変圧器の移動について詳しく教えていただきありがとうございます

Transformer を 18 の質問を通して要約したいのはなぜですか?

理由は 2 つあります。

まず、Transformer は MLP、RNN、CNN に次ぐ 4 番目に大きな特徴抽出器であり、4 番目に大きな基本モデルとしても知られており、最近人気の chatGPT の最下位原理も Transformer であり、Transformer の重要性がわかります。 。

次に、質問することで、皆さんが Transformer の内容と原則をよりよく理解できるようにしたいと考えています。

1. 2017 年のディープラーニング分野における大きな進歩は何ですか?

変成器。理由は 2 つあります。

1.1 一方で、Transformer は、深層学習の分野では MLP、RNN、CNN に次いで 4 番目に大きな特徴抽出器 (基本モデルとしても知られています) です。特徴抽出機能とは何ですか? 脳は、人間が外界 (画像、テキスト、音声など) と対話する方法であり、特徴抽出機能は、コンピューターが外部世界 (画像、テキスト、音声など) と対話して情報を模倣する方法です。図 1 に示すように、脳。例: Imagenet データセットには 1,000 のカテゴリの画像が含まれています。人々は自分の経験に基づいてこれら 100 万枚の画像を 1,000 のカテゴリに分類しており、画像の各カテゴリ (ジャガーなど) には独自の特徴があります。現時点では、ニューラル ネットワーク (ResNet18 など) も、この分類方法を通じて、各タイプの画像の固有の特徴を可能な限り抽出または識別したいと考えています。分類は最終的な目標ではありませんが、画像の特徴を抽出する手段であり、画像を補完するマスクも特徴を抽出する方法であり、画像ブロックの順序の破壊も特徴を抽出する方法です。

図1 脳の神経細胞を模倣するためのニューラルネットワーク

1.2 一方、ディープラーニング分野における Transformer の役割: 以下の図 2 に示すように、第 3 および第 4 の隆盛の基礎となります。

図 2 ディープラーニング開発の 4 つの段階

2. トランスフォーマーの背景は何ですか?

2.1 分野開発の背景レベル: 2017 年の時点で、深層学習は数年前からコンピューター ビジョンの分野で人気がありました。Alexnet、VGG、GoogLenet、ResNet、DenseNet から、画像分類、ターゲット検出からセマンティック セグメンテーションまで、しかし自然言語処理の分野ではあまり影響を及ぼしていません。

2.2 技術的背景レベル: (1) 当時の主流の配列転写タスク (機械翻訳など) のソリューションは下図 3 に示されており、Sequence to Sequence アーキテクチャ (Encoder-Decoder の一種) では RNN が使用されます。特徴の抽出とアテンション メカニズム Encoder によって抽出された特徴は Decoder に効率的に渡されます。(2) このアプローチには 2 つの欠点があります。1 つは、特徴を抽出する際に RNN の構造が本質的に前から後ろに渡されるため、並列処理ができないことです。2 つ目は、系列長が長すぎると、前の系列が処理されなくなることです。情報は忘れられる可能性があります。したがって、この枠組みの下では、RNN は比較的弱く、早急に改善する必要があることがわかります。

図 3 配列転写タスクの主流のソリューション

3. トランスフォーマーとは何ですか?

3.1  Transformer は Encoder と Decoder から構成されるアーキテクチャです。では、建築とは何でしょうか?最も単純な構造は A+B+C です。

3.2  Transformer は関数としても理解でき、入力は「勉強が大好き」、出力は「勉強が大好き」です。

3.3 図 4 に示すように、Transformer アーキテクチャが分割されている場合。

 図4 Transformerのアーキテクチャ図

4. トランスエンコーダとは何ですか?

4.1 機能の観点から見ると、Transformer Encoder の中心的な機能は特徴を抽出することであり、Transformer Decoder も特徴を抽出するために使用されます。たとえば、人がダンスを学ぶとき、エンコーダーは他の人がどのように踊るかを確認し、デコーダーは学習した経験と記憶を表示します。

4.2 構造的な観点から見ると、図 5 に示すように、トランスフォーマ エンコーダ = エンベディング + 位置エンベディング + N* (サブエンコーダ ブロック 1 + サブエンコーダ ブロック 2)。

子エンコーダ ブロック 1 = マルチヘッド アテンション + ADD + Norm;

子エンコーダ ブロック 2 = フィードフォワード + ADD + ノルム;

4.3 入出力の観点から見ると、N Transformer Encoder ブロックの最初の Encoder ブロックの入力はベクトル X = (Embedding + Positional Embedding) のセットであり、ベクトルの次元は通常 512*512 であり、他の N TransformerEncoder ブロックは上記です。 Transformer Encoder ブロックの出力、出力ベクトルの次元も 512*512 です (入力と出力は同じサイズです)。

4.4 なぜ 512*512 なのでしょうか? 前者はトークンの数を指します。たとえば、「I love learning」には 4 つのトークンがあります。ここでは、さまざまなシーケンス長をカバーするために 512 に設定されており、パディングでは十分ではありません。後者は、各トークンによって生成されたベクトル次元を指します。つまり、各トークンはシーケンス長 512 のベクトルで表されます。Transformer は 512 を超えることはできない、そうしないとハードウェアのサポートが困難になる、とよく言われます。実際、512 は前者、つまりトークンの数を指します。これは、各トークンに自己注意が必要であるためです。しかし、512 は前者、つまりトークンの数を指します。後者の値は大きすぎてはいけません。大きすぎると計算が非常に遅くなります。

図5 Transformer Encoderのアーキテクチャ図

5. トランスデコーダとは何ですか?

5.1 機能の観点から見ると、Transformer Decoder は、特に自然言語処理の問題において、Transformer Encoder よりも生成タスクの実行に優れています。

5.2 構造的な観点から見ると、図 6 に示すように、Transformer Decoder = Embedding + Positional Embedding + N* (sub-Decoder block1 + sub-Decoder block2 + sub-Decoder block3) + Linear + Softmax;

子デコーダ ブロック 1 = マスク マルチヘッド アテンション + ADD + Norm;

子デコーダ ブロック 2 = マルチヘッド アテンション + ADD + Norm;

子デコーダ ブロック 3 = フィードフォワード + ADD + ノルム;

 

図6 Transformer Decoderのアーキテクチャ図

5.3  (エンベディング + 位置エンベディング) (N デコーダー ブロック) (リニア + ソフトマックス) から、これら 3 つの個別のアクション アングルのそれぞれ:

埋め込み + 位置埋め込み : 機械翻訳を例に挙げると、「機械学習」を入力し、「機械学習」を出力します; ここでの埋め込みとは、「機械学習」をベクトル形式に変換することです。

N デコーダ ブロック: 特徴処理と転送プロセス。

Linear + Softmax : Softmax は、次の単語の出現を予測する確率です。図 7 に示すように、前の Linear 層は、分類ネットワーク (ResNet18) の最後の分類層の前の MLP 層に似ています。

図 7 Transformer Decoder におけるソフトマックスの役割

5.4  Transformer Decoder の入力と出力は何ですか? Train と Test では異なります。

図 8 に示すように、トレーニング フェーズで。この時点でラベルは既知であり、デコーダの最初の入力は開始文字であり、ラベルの最初のベクトルと最初の文字はクロスエントロピー損失を使用して出力されます。Decoder の 2 番目の入力は最初のベクトルのラベルであり、Decoder の N 番目の入力に対応する出力は End 文字であり、これが終わりです。ここでは、トレーニング フェーズで並行トレーニングが可能であることもわかります。

図 8 トレーニングフェーズにおける Transformer Decoder の入力と出力

テスト フェーズでは、図 9 に示すように、次の瞬間の入力は前の瞬間の出力になります。したがって、Train および Test 中に Decoder の入力に不一致が発生し、Test 中に 1 つのステップが間違っている可能性があります。解決策は 2 つあります。1 つはトレーニング中に時々エラーを発生させることであり、もう 1 つはスケジュールされたサンプリングです。

図 9 テストフェーズにおけるトランスデコーダの入出力

5.5  Transformer Decoder ブロック内の出力と出力は何ですか?

上で述べたのは、全体的なトレーニング フェーズとテスト フェーズにおける Decoder の出力と出力です。では、図 10 に示すように、Transformer Decoder 内の Transformer Decoder ブロックの入力と出力は何でしょうか?

図 10 Transformer Decoder ブロックのアーキテクチャ図

N=6 の最初のサイクル (N=1 の場合): サブデコーダー ブロック 1 の入力は + 位置埋め込みであり、サブデコーダー ブロック 2 の入力 Q はサブデコーダー ブロック 1 の出力から来て、KV はから来ます。 Transformer Encoder 出力の最後のレイヤー。

N=6 の 2 番目のサイクルの場合: サブデコーダー ブロック 1 の入力が N=1 の場合、サブデコーダー ブロック 3 の出力、KV もトランスフォーマー エンコーダーの最後の層の出力から来ます。

一般に、Train であっても Test であっても、Transformer Decoder の入力は (グラウンド トゥルースまたは直前の Decoder の出力) だけでなく、Transformer Encoder の最後の層からも来ていることがわかります。

トレーニング中: i 番目のデコーダーの入力 = エンコーダーの出力 + グラウンド トゥルースの埋め込み。

予測時: i 番目のデコーダの入力 = エンコーダの出力 + (i-1) 番目のデコーダの出力。

6. Transformer Encoder と Transformer Decoder の違いは何ですか?

6.1 機能的には、Transformer Encoder は特徴の抽出によく使用され、Transformer Decoder は生成タスクによく使用されます。Transformer Encoder と Transformer Decoder は 2 つの異なる技術的ルートであり、Bert は前者を使用し、GPT シリーズ モデルは後者を使用します。

6.2 構造的に、Transformer Decoder ブロックには 3 つの SubDecoder ブロックが含まれ、Transformer Encoder ブロックには 2 つの SubEncoder ブロックが含まれ、Transformer Decoder ではマスク マルチヘッド アテンションが使用されます。

6.3 両者の入力と出力の観点から見ると、N 回のトランス エンコーダの動作が完了した後、その出力は正式にトランス デコーダに入力され、トランス デコーダの QKV の K と V として使用されます。では、TransformerEncoder の最後の層の出力はどのように Decoder に送信されるのでしょうか? 図 11 に示すように。

図 11 Transformer Encoder と Transformer Decoder がどのように相互作用するか

では、なぜエンコーダとデコーダはこのような対話方法を使用する必要があるのでしょうか? 実際には必ずしもそうではなく、図 12 に示すように、将来的にはさまざまなインタラクション方法が提案されるでしょう。

図 12 トランスエンコーダとデコーダの間の相互作用

7. 埋め込みとは何ですか?

7.1  Transformer アーキテクチャにおける組み込みの位置を図 13 に示します。

7.2 背景: コンピュータは単語や漢字を直接処理することはできません。トークンをコンピュータが認識できるベクトルに変換する必要があります。これが埋め込みプロセスです。

7.3 実装方法: 最も単純な埋め込み操作は 1 つのホット ベクトルですが、1 つのホット ベクトルでは前後の単語の関係が考慮されないという欠点があり、図 13 に示すように WordEmbedding が後に生まれました。

図 13 埋め込みの説明。左から右へ: Transformer での埋め込みの位置、1 つのホット ベクトル、Word 埋め込み。

8. 位置埋め込みとは何ですか?

8.1  Transformer アーキテクチャにおける位置埋め込みの位置を図 14 に示します。

8.2 提案された背景:  RNN は特徴抽出器として独自の単語のシーケンス情報を持ちますが、アテンション メカニズムはシーケンス情報を考慮しませんが、シーケンス情報はセマンティクスに大きな影響を与えるため、Positional Embedding を使用する必要があります。入力されたEmbeddingに位置情報が追加されます。

8.3 実装方法: 従来の位置コーディングとニューラル ネットワークの自動トレーニング。

図 14 位置埋め込みの説明。左から右へ: Transformer での位置埋め込みの位置、従来の位置エンコーディングの実装、従来の位置エンコーディング ei によって取得されたイメージ、各列はトークンの位置エンコーディングです。

9. 注意とは何ですか?

9.1  Transformer の紹介、なぜ Attendance を導入するのですか? Transformer における最も多くのマルチヘッド アテンションとマスク マルチヘッド アテンションはスケーリングされたドット積のアテンションから来ており、スケーリングされたドット積のアテンションはセルフ アテンションから来ており、セルフ アテンションはアテンションの一種であるため、最初にアテンションを理解する必要があります。図15。

図 15 アテンションとトランスフォーマーの関係

9.2 注意とは正確には何を意味しますか?

図 16 に示すように、画像の場合、注目は人々が画像内で見る中心的な領域であり、画像の焦点となります。シーケンスの場合、アテンション メカニズムは基本的に、入力内の異なるトークン間の関係を見つけ、重み行列を通じて単語間の関係を自発的に見つけます。

図 16 画像内の注意

9.3 アテンションはどのように実装されますか?

それはQKVによって実現されます。

では、QKVとは何でしょうか?Q はクエリ、K はキー、V は値です。図 17 に示すように、たとえば、Q は脳から送られる信号、「喉が渇いた」、K は環境情報、目で見える世界、V は環境内のさまざまなアイテムに異なる比重を割り当てること、水の比重は大きく増加します。

つまり、Attendance は QK の類似度を計算し、それに V を乗じて Attention 値を求めることです。

図 17 アテンションの実装

9.4  QKV が 3 つ必要なのはなぜですか?

なぜQだけではないのでしょうか?Q1 と Q2 の間の関係の重みにより、a12 だけでなく、a21 も必要になります。聞いてもいいですか?a12=a21にできないでしょうか?試すこともできますが、原則として、効果は a12 や a21 ほど良くないはずです。

なぜQKだけではないのでしょうか?取得した重み係数を入力に入力する必要があり、Q または K で乗算できます。なぜ再度 V を乗算する必要があるのでしょうか。追加のトレーニング可能なパラメータ WV のセットがあり、ネットワークの学習能力が強化されるのではないかと思います。

10. 自己注意とは何ですか?

10.1  Transformer の紹介、なぜ self Attendance を導入するのですか? 図 15 に示すように、Transformer における最も多くのマルチヘッド アテンションとマスク マルチヘッド アテンションはスケーリングされたドット積のアテンションから来ており、スケーリングされたドット積のアテンションは自己のアテンションから来ているためです。

10.2 自己注意とは何ですか? セルフ アテンション、ローカル アテンション、ストライド アテンションはすべてのタイプの注意です。セルフ アテンションは、図 18 に示すように、各 Q と各 K の注意係数を順番に計算します。ローカル アテンションと同様に、Q は隣接する K アテンション係数のみを計算します。ストライドアテンションとは、QがKとスキップしてアテンション係数を計算することです。

図 18 左から右へ: 自己注意、局所注意、歩幅注意

10.3 なぜセルフアテンションを使用して、機械翻訳のようにシーケンスデータを処理できるのですか?

入力シーケンス内の各位置のデータは、特徴を抽出したり、注目スコアを通じて入力シーケンスの各トークン間の関係をキャプチャしたりするために、他の位置の情報に注意を払うことができます。

10.4 セルフアテンションはどのように実装されますか? 図 19 に示すように、合計 4 つのステップがあります。

図 19 セルフアテンションの実装プロセス

11. スケーリングドット積アテンションとは何ですか?

11.1 自己注意には 2 つの最も一般的なタイプがあり、1 つはドット積注意、もう 1 つは加法的注意です。図 20 に示すように、前者の方が計算効率が高くなります。

図 20 内積注意と加法的注意の違い

11.2 スケーリングとは何ですか?

図 21 に、scaled の具体的な実装を示します。この操作の目的は、内積が大きくなりすぎるのを防ぐことです。勾配の観点から、訓練が容易な 1 に近づくことは避けるべきです。バッチ正規化と同様の機能。

図 21 アテンション内のスケール操作の位置

12. マルチヘッドアテンションとは何ですか?

12.1  Transformer アーキテクチャにおけるマルチヘッド アテンションの位置を図 15 に示します。

12.2 提案された背景: CNN には複数のチャネルがあり、画像のさまざまな次元の特徴情報を抽出できるため、セルフ アテンションでも同様の操作ができ、さまざまな距離のトークンの多次元情報を抽出できますか?

12.3 グループ畳み込みとは何ですか? 図 22 に示すように、入力特徴の複数のチャネルは個別の畳み込みのためにいくつかのグループに分割され、最後に con c 演算が実行されます。

 図 22 グループ畳み込み

12.4 マルチヘッドアテンションを実装するにはどうすればよいですか? 自己注意とは根本的に何が違うのでしょうか?

図 23 に示すように、2 つのヘッドを例として、入力 Q、K、V を 2 つの部分に分割し、Q の各小さな部分を対応する K と V から個別に演算し、最終的に計算されたベクトルを計算します。 conc 操作. を見ると、マルチヘッド アテンションとグループ畳み込みが同様の実装になっていることがわかります。

図 23 マルチヘッドアテンションとセルフアテンションの違い

12.5 入力次元と出力次元の観点からマルチヘッドの注意を理解するにはどうすればよいですか? 図 24 に示すように。

図24 マルチヘッドアテンションの入出力寸法

13. マスクマルチヘッドアテンションとは何ですか?

13.1 変圧器アーキテクチャにおけるマスク マルチ ヘッド アテンションの位置を図 15 に示します。

13.2 なぜマスクなどの操作があるのですか?

Transformer は、トレーニングと予測の一貫性を確保するために、T 番目の瞬間に出力を予測しますが、T 番目の瞬間以降の入力は確認できません。

図 25 に示すように、マスク操作により、i 番目のワードが i+1 ワード以降の情報を知ることを防ぐことができます。

 

図 25 Transformer におけるマスク操作の位置

13.3 マスク操作はどのように実装されますか?

Q1 は K1 のみ、Q2 は K1 と K2 のみで計算され、K3、K4 などはソフトマックスの前に非常に大きな負の数が与えられるため、ソフトマックス以降は 0 になります。行列上の計算原理は次のとおりです。図26に示すように実現されます。

図 26 マスク演算の行列計算の実装

14. ADDとは何ですか?

14.1  Add は、2015 年の ResNet 記事から引き継がれた残りの接続 (現在、引用数は 160,000 を超えています)。Skip 接続との違いは、サイズと次元がすべて同じである必要があることです。

14.2 シンプルさの究極のアイデアとして、ほぼすべての深層学習モデルがこのテクノロジーを使用します。これにより、ネットワークの劣化を防ぐことができ、多層ネットワークの困難なトレーニングの問題を解決するためによく使用されます。

 

図 27 Transformer アーキテクチャにおける ADD の位置 (左) と残留接続原理の概略図 (右)

15. ノルムとは何ですか?

15.1  Norm はレイヤーの正規化です。

15.2 コア機能: トレーニングをより安定させるために、バッチ正規化と同じ機能があり、入力サンプルの平均値を 0 にし、分散を 1 にします。

15.3 レイヤー正規化の代わりにバッチ正規化を使用しないのはなぜですか? 時系列データのため、入力文の長さが長くなったり短くなったりする可能性があり、バッチ正規化を使用する場合、サンプルの長さの違いによる「学習の不安定性」が発生しやすくなります。BN は同じバッチ内のすべてのデータの同じ特徴データを操作しますが、LN は同じサンプルを操作します。

図 28 Transformer アーキテクチャにおけるレイヤー正規化の位置 (左) とバッチ正規化 (右) の違い

16.FFNとは何ですか?

16.1  FFN はフィードフォワード ネットワークです。

16.2 なぜセルフ アテンション レイヤーと FFN があるのですか? アテンションはすでに必要なシーケンス情報機能を備えており、MLP の役割は情報を特定の空間に投影し、非線形マッピングを行うことであり、セルフ アテンションと交互に使用されます。

16.3 構造: 図 29 に示すように、MLP の 2 つの層が含まれており、最初の層の寸法は 512*2048、2 番目の層の寸法は 2048*512 であり、MLP の 2 番目の層はアクティベーション関数を使用しません。 。ワオソフト アイオット http://143ai.com

17. Transformer はどのようにトレーニングされますか?

17.1 の データでは、450 万と 3600 万の翻訳文のペアが使用されていることが Transformer の論文に記載されています。

17.2 ハードウェアでは、基本モデルは 8 つの P100 GPU で 12 時間トレーニングされ、大規模モデルは 3.5 日間トレーニングされました。

17.3 モデルパラメータとチューニングレベル:

まず、トレーニング可能なパラメータには、WQ、WK、WV、WO、および FFN 層のパラメータが含まれます。

次に、調整可能なパラメータには、各トークン ベクトルによって表される次元 (d_model)、ヘッドの数、エンコーダとデコーダのブロック繰り返し数 N、FFN 中間層ベクトルの次元、ラベル スムージング (信頼度 0.1) が含まれます。そしてドロップアウト(0.1)。

18. Transformer はなぜこれほどうまく機能するのですか?

18.1 必要なのはアテンションだけですというトピックですが、いくつかの追跡研究では、アテンション、残差接続、層正規化、FFN、これらの要素が一緒になって Transformer を構成していることが示されています。

18.2 変圧器の利点は次のとおりです。

まず、深層学習である MLP、CNN、RNN に次ぐ 4 番目に大きな特徴抽出器を提案します。

第 2 に、最初は機械翻訳で使用され、GPT や Bert は完全に輪から外れましたが、これが転換点となり、この時点から NLP 分野は急速に発展し、マルチモダリティ、大規模モデル、ビジュアル Transformers が登場し始めました。 。

第三に、元の CNN と RNN の後には、より優れた特徴抽出器が存在する可能性があるという確信を人々に与えることです。

18.3  Transformer の欠点は何ですか?

まず、計算量が多く、ハードウェア要件も高い。

第 2 に、誘導バイアスがないため、良い結果を得るには大量のデータが必要になります。

 

おすすめ

転載: blog.csdn.net/qq_29788741/article/details/131354392