詳細なエンコーダ/デコーダ モデル アーキテクチャ

概要

  • Encoder-Decoder は特定のモデルではなく、一般的なフレームワークです。
  • エンコーダー部分とデコーダー部分には、任意のテキスト、音声、画像、ビデオ データを使用できます
  • モデルには、CNN、RNN、LSTM、GRU、アテンションなどを使用できます。
  • いわゆる符号化は、入力シーケンスを固定長ベクトルに変換することであり、復号化は、以前に生成された固定ベクトルを出力シーケンスに変換することを意味します。

注意点:

  1. 入力シーケンスと出力シーケンスの長さに関係なく、中間の「ベクトル c」の長さは固定です。これはエンコーダ/デコーダ フレームワークの欠点です
  2. タスクごとに異なるエンコーダとデコーダ (RNN、CNN、LSTM、GRU) を選択できます。
  3. Encoder-Decoder は、機械翻訳を利用したエンドツーエンドの学習アルゴリズムで、フランス語を英語に翻訳できます。このようなモデルはSeq2Seqと呼ばれることもあります。

Seq2Seq(シーケンスツーシーケンス)

  • 入力シーケンスと出力シーケンスの長さは可変です
  • Seq2Seq は目的を強調しており、特定のメソッドには特に言及せず、入力シーケンスと出力シーケンスの目的を満たします。これらを総称して Seq2Seq モデルと呼ぶことができます。
  • Seq2Seq で使用される特定のメソッドは、基本的に Encoder-Decoder モデルのカテゴリに属します。

例えば
ここに画像の説明を挿入

  • トレーニング データ セットでは、シーケンスの終わりを示すために各文に特殊文字「" (シーケンスの終わり) を追加できます。
  • 特殊文字「」(シーケンスの始まり)は、シーケンスの始まりを示すために各文の前に使用されます。
  • 最終タイム ステップにおけるエンコーダの非表示状態は、入力文表現およびエンコード情報として使用されます。? ?
  • Decoder は、入力文のエンコードされた情報と、前のタイム ステップの出力および隠れ状態を各タイム ステップの入力として使用します。? ?

事例: 英語の it is a cat. を中国語に翻訳するプロセス。

  1. まず、原文全体を記号化し、翻訳の開始記号と終了記号として固定の特殊記号を使用します。この時点で、文は it is a cat になります。
  2. 最も高い確率で翻訳された単語を取得するシーケンスをモデル化します。たとえば、最初の単語は「this」です。生成された単語を翻訳シーケンスに追加し、上記の手順を繰り返し、継続的に繰り返します。
  3. モデルによって終了記号が選択されるまで、反復プロセスは停止され、翻訳を取得するために逆記号化プロセスが実行されます。

エンコーダ・デコーダの欠陥

真ん中の「ベクトルc」の長さは固定

  • RNN 構造の Encoder-Decoder モデルには長距離勾配消失の問題があります。
  • 長い文の場合、入力シーケンスを固定長ベクトルに変換して有効な情報をすべて保存することは困難です。
  • LSTM が選択的に忘れたり記憶したりするためのゲート機構を追加したとしても、翻訳される文の難易度が上がるにつれて、この構造の効果は依然として理想的ではありません。

アテンションメカニズムの導入

  • 長すぎる情報による情報損失の問題を解決することに注意してください
  • アテンション モデルでは、現在の単語を翻訳するときに、ソース文内で対応する単語を見つけて、以前に翻訳されたシーケンスと組み合わせて次の単語を翻訳します

ここに画像の説明を挿入

注意はどのようにして、関心のある場所に正確に集中するのでしょうか?

  • RNN の出力に対して注目度を計算し、最後の瞬間のベクトルと任意の i 時間ベクトルの重みを計算することで、ソフトマックスにより注意バイアススコアを計算します。計算されたバイアス スコアは比較的大きくなります。
  • エンコーダで各瞬間の隠れベクトルを計算しますか??
  • 各瞬間の最終出力の注意スコアに重みを付け、各瞬間で i ベクトルにどの程度の注意を払う必要があるかを計算します。
  • デコーダは、③部分のアテンション重みを各瞬間にデコーダに入力しますが、このとき、デコーダへの入力には、アテンション重み付けされた隠れ層ベクトル、エンコーダの出力ベクトル、エンコーダの隠れベクトルが含まれます。デコーダーの直前の瞬間
  • Decoder 継続的な反復を通じて、Decoder は最終的な翻訳されたシーケンスを出力できます。

アテンションのエンコーダー/デコーダー フレームワークでは、機械翻訳タスクを完了する一般的なプロセスは次のとおりです。

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

Transformer のエンコーダー/デコーダー

  • Transformer におけるアテンションは Self-Attention (セルフ アテンション メカニズム) であり、Multi-Head Attendance (マルチヘッド アテンション メカニズム) です。

ここに画像の説明を挿入

注意メカニズム

  • Source は系列で構成されており、Target に Query という要素が与えられたとき、Query と各 Key の類似度を計算することで各 Key to Value の重み係数を求め、Value に重みを付けて合計することで、最終的なアテンション値。
    ここに画像の説明を挿入

自己注意

  • Target と Source 間のアテンション機構ではなく、Source 内部要素間、または Target 内部要素間で発生するアテンション機構を指し、Target = Source という特殊な場合のアテンション機構としても理解できます。
  • ソース = ターゲット、つまりキー = 値 = クエリ
  • Self-Attention は、同じ文内の単語間のいくつかの構文的特徴 (図 1: 一定の距離を持つ句構造) または意味論的特徴 (図 2: 参照する対象の法則) をキャプチャできます。
    ここに画像の説明を挿入
  • Self-Attention の導入後は、計算プロセス中に Self-Attend が文内の任意の 2 つの単語を直接接続するため、文内の長距離相互依存の特徴を捉えることが容易になります。
  • Self-Attention は時系列に依存しないため、計算の並列性が向上します。

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

  • モデルを複数のヘッドに分割して複数の部分空間を形成し、モデルがさまざまな方向の情報に焦点を当てることができるようにします。
  • Transformer または Bert の特定の層には独自の機能があり、最下層は構文に重点を置く傾向があり、最上層はセマンティクスに重点を置く傾向があります。
  • 同じレイヤーには、他のヘッダーが焦点を当てているトークンとは異なる固有のヘッダーが常に 1 つまたは 2 つ存在します。
  • 以下は、2 つのセルフ アテンションが同じ文を実行するときに示される異なる注意です。マルチヘッド メカニズムを使用すると、異なるタスクの下で異なる注意を取る方法を学習することは明らかです。

ここに画像の説明を挿入

Transformer のエンコーダーは 6 つの同一のレイヤーで構成されており、各レイヤーには 2 つの部分が含まれています。

  • マルチヘッドセルフアテンション
  • 位置ワイズフィードフォワードネットワーク (完全接続層)

デコーダーも 6 つの同一のレイヤーで構成されており、各レイヤーには 3 つの部分が含まれています。

  • マルチヘッドセルフアテンション
  • マルチヘッドコンテキストアテンション
  • 位置に応じたフィードフォワード ネットワーク

上記の各部分には残りの接続 (冗長接続) があり、その後レイヤー正規化が行われます。
ここに画像の説明を挿入

エンコーダとデコーダの制限:
エンコードとデコードの間の唯一のリンクは、固定長のセマンティック ベクトル C です。エンコーダはシーケンス全体の情報を固定長ベクトルに圧縮します。

  • セマンティック ベクトルはシーケンス全体の情報を完全に表すことはできません
  • 最初に入力した内容によってもたらされる情報は、後で入力した情報によって薄められます

注意モデル:
モデルは出力を生成するときに、次に出力するときに入力シーケンスのどの部分に注目するかを示す「注目範囲」も生成し、注目の領域に応じて次の出力を生成します。の上。

ここに画像の説明を挿入

アテンション モデルの最大の違いは、エンコーダがすべての入力情報を固定長ベクトルにエンコードする必要がなくなったことです。

  • エンコーダーは入力をベクトルのシーケンスにエンコードする必要があり、デコードする際、各ステップはさらなる処理のためにベクトル シーケンスからサブセットを選択的に選択します。
  • このようにして、各出力が生成されるときに、入力シーケンスによって運ばれる情報を最大限に利用することができます。

コーデックの表現:
ここに画像の説明を挿入

いくつかのメモ

  • 中央の「ベクトル c」は、入力と出力の長さに関係なく、固定長です (これが欠点です)。
  • さまざまなタスク (CNN、RNN、LSTM、GRU など) に応じて、さまざまなエンコーダとデコーダを選択できます。
  • Encoder-Decoder の特徴は、エンドツーエンドの学習アルゴリズムであることです。
  • モデルがこのフレームワーク構造に準拠している限り、それを総称して Encoder-Decoder モデルと呼ぶことができます。

Seq2Seq と Encoder-Decoder の関係
ここに画像の説明を挿入Encoder-Decoder はモデル設計 (エンコードとデコードのプロセス) を強調し、Seq2Seq はタスク タイプ (シーケンス間の問題) を強調します。

Encoder-Decoder の 4 つのモードのうち
最も単純なデコード モード:
ここに画像の説明を挿入

出力フィードバック付きのデコードモード

ここに画像の説明を挿入

エンコードされたベクトルを使用したデコード モード

ここに画像の説明を挿入

アテンションデコードモード

ここに画像の説明を挿入
参考リンク:

  1. https://zhuanlan.zhihu.com/p/109585084
  2. https://blog.csdn.net/u014595019/article/details/52826423
  3. https://blog.csdn.net/u010626937/article/details/104819570

おすすめ

転載: blog.csdn.net/NGUever15/article/details/123198978