変圧器に関する予備調査

ほとんどの QA 問題はseq2seq を使用して実装できます。つまり、ほとんどの NLP 問題は seq2seq モデルを使用して解決できます。

しかし、最良の方法は、特定の問題に対して特定のモデル トレーニングを作成することです。

概要

Transformer は seq2seq モデルです。

まず、seq2seq モデルの一般的なフレームワークを見てみましょう (実際には、これはエンコーダーとデコーダーです)。

画像-20211110011108154

エンコーダ

まずエンコーダ(およびトランスと組み合わされた)部分を見てみましょう

画像-20211110011238315

エンコードを調整して、内部がどのようになっているかを確認しましょう。下の図は、エンコードの内部です。

画像-20211110011445224

エンコードはいくつかのブロック モジュールで構成されており、このモジュールはトランスフォーマーで構成されていることがわかります。

**注意:** 上記のブロックのセルフアテンションの実装は、元のモデルではそれほど単純ではなく、より複雑であり、実装の結果は次の図に示されています。

画像-20211110012024616

次に、トランスフォーマーのエンコード部分を次のように再定義できます (上の図で言及されている加算部分とノルム部分について説明します)。

[外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-g0DVomf0-1686470176975)(null)]

進捗 1 このモデルのいくつかの小さな変更について学びます

画像-20211110012251512

デコーダ

デコーダには主に 2 つの形式があり、1 つは自己回帰形式です。

自己回帰

最初にアニメーションを置きます。

https://vdn3.vzuu.com/SD/cf255d34-ec82-11ea-acfd-5ab503a75443.mp4?disable_local_cache=1&auth_key=1636876035-0-0-1b8200d56431047742a6772de99b7384&f=mp4&bu=pico&有効期限=1636876035&v=tx

参考: https://www.zhihu.com/question/337886108/answer/893002189

簡単な紹介

ここでは、結果がどのようになるか、または encode の出力から結果を直接出力する方法を直接確認します。ここでは、翻訳を例として取り上げます。

画像-20211110215515474

Begin入力の開始を判断するために使用され、位置決めが容易になります。

次に、出力がどのようなものかを見てみましょう。

画像-20211111172332837

さまざまな言語に応じて、出力結果は単語点集合ベクトルになります (中国語の場合、2000 個の一般的な単語を出力できます。英語の場合、出力結果は 26 個の英字または一般的な単語になります。したがって、言語によって異なります)。シチュエーション)。


次に、次のステップの出力がどのように取得されるかを見てみましょう。前の出力は次のステップの入力として使用されます (つまり、現在の入力は前のステップの出力です)。

画像-20211111172612970

そういえば、この処理方法には問題があるのですが、前のステップの翻訳結果が間違っていると、後続のステップがすべて間違っている、つまり1ステップが間違っているということになりませんか?では、この状況を解決するにはどうすればよいでしょうか?

最初はこの問題を無視して、この問題については後で話しましょう。


内部構造

次に、この Decoder の内部がどのようになっているかを見てみましょう。

[外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-xhyXKXRL-1686470177458)(null)]

エンコードとの比較

画像-20211111175849366

上図によると、Decoder と Encoder の違いは、シャドウオクルージョン箇所が 1 つ増え、最初のマルチヘッド注目箇所に 1 つ追加されていることが分かりますMaskedそれで、これは何ですか?

マスクされた

次の図は、前に説明したセルフアテンション メカニズムの処理です。

画像-20211111180212444

いわゆるMasked Self-attention処理方法は次のとおりです。

[外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-fIp6fTKf-1686470176987)(null)]

図からわかるように、Self-attention との違いは、Masked Self-attention では、Self-attention のようにすべての入力をまとめて出力するのではなく、前のデータのみを考慮することです。

より具体的に、計算方法を見てみましょう。

これはオリジナルです。以下のボックスで囲まれた場所を削除する必要があります。

画像-20211111181027388

次のようになります。

画像-20211111181103063


そこで問題は、なぜこれを行うのかということです。なぜマスクをするのか?

この問題は、Decode の実装プロセスから考えることができ、分析することができます。

Decode の出力プロセスでは、前の出力を 1 つずつ次のステップの入力として考慮して考慮されるため、つまり、現在の出力は前の出力を考慮するだけでよく、考慮する必要はありません。それらすべてを考慮してください。

どうやって止めるか

ここで、出力がどのように停止するのかという質問について考えてみましょう。

Self-attention は入力としての以前の出力に基づいているため、つまり、出力が停止しない場合、入力も停止せず、最終的には常に出力されます。

[外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-8OCsVnFj-1686470176965)(null)]

解決策は、出力辞書に end フィールドを追加することです—"Stop Token"

画像-20211111181910958

このトークンにより、出力問題は非常にうまく解決され、出力を停止できるかどうかを一定の確率で判断することができます。

[外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-efOOqnv0-1686470176941)(null)]

非自己回帰

まず上の図に直接アクセスして、自己回帰と非自己回帰の違いを確認してください。

[外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-gx2m5eqV-1686470176954)(null)]

図からわかるように、自己回帰は次々に出力されますが、非自己回帰の出力は、最良の結果を得るために一緒に出力されたすべての入力に基づいています。

では、NAT は出力の長さをどのように決定するのでしょうか? 次の 2 つの方法があります。

  • Decoder の入力内容を予測子に入力し、この予測子を使用して最終的な出力の長さを判断します。
  • すべての入力を Decoder に送信し、出力結果に「ストップ トークン」があるかどうかに応じて、ある場合は後続の出力をすべて破棄します。

では、NAT にはどのような利点があるのでしょうか?

  • 並行して計算できます。
  • 出力の長さを制御できます。

さらに、NAT は現在人気の研究方向であるため、ここでは詳しく説明しません。

エンコーダとデコーダの接続

この時点で、接続方法を検討できます。まず、デコーダとエンコーダの間の接続をマクロの観点から見てみましょう。

画像-20211111191132605

上の図からわかるように、エンコーダーの出力は 2 段目のデコーダーの収入として使用されます。

次に、クロスアテンションがどのように機能するかを見てみましょう。

下図は初期処理です。まずBegin Tokenを受け取って最初の単語を出力します。

画像-20211111192539255

次に 2 番目の出力です。

画像-20211111193121693

ここに文を挿入します。クロス アテンションはセルフ アテンションよりずっと前に実際に存在し、実際に予測に適用されてきました。

拡張された質問

前述したように、デコーダーの出力は入力としての前の出力に基づいているため、ここで問題が発生します。1 つのステップが間違っており、ステップごとに間違っています: image- 20211111235516449

処理方法は、上の図で使用されている方法です。モデルに正しい入力を与えるだけでなく、間違った入力も与えることで、モデルがより適切に学習できるようにします。

以下は、この方法 (スケジュールされたサンプリング) の理論上の根拠です。

画像-20211111235906211

追加の材料

  • ここで、私がこれまで見た中で最も古典的で最高のブログについて言及しなければなりません、そのタイトルは「The Illustrated Transformer」です。これは誰にとっても明らかではないかもしれませんが、次の写真を載せると、彼がさまざまな場所にいることがわかるかもしれません。

私は個人的にこのブログを理解していると思っており、変圧器についてもほぼ理解しています。ここに [中国語の PPT](https://pan.baidu.com/s/1LovEFd4Fswwk0jr8wIKkvA?pwd=ajh9 抽出コード: ajh9 ) もあります。はブログのテクニックをよく表しています。

  • また、HuggingFace - how Transformers work.の内容も充実しており、非常に簡潔で、内容は中国語です。

おすすめ

転載: blog.csdn.net/c___c18/article/details/131154180