目次
Transformer とは何ですか (Microsoft Research Institute のバカ)
トランスフォーマーとは何ですか?
古典的な seq2seq モデルと同様にEncoer-decoder アーキテクチャは Transformer モデルでも使用されます。上図の左半分はエンコーダの層を表すNXで囲まれており、論文中のエンコーダはこのような構造を合計6層持っています。上の図の右半分は、デコーダの層を表す NX で囲まれており、層も 6 つあります。
最初に単語埋め込みを行う入力シーケンスを定義し、それを位置エンコーディングに追加してから、エンコーダーに入力します。出力シーケンスは入力シーケンスと同じように処理され、デコーダに入力されます。
最後に、デコーダの出力は線形層を通過し、その後にソフトマックスが続きます。
以上がTransformerの全体的な枠組みですが、まずはエンコーダとデコーダについて紹介していきます。
エンコーダ
エンコーダーは 6 つの同一のレイヤーで構成され、各レイヤーは 2 つの部分で構成されます。
- 最初の部分は多頭自己注意です
- 2 番目の部分は、完全に接続された層である位置に関するフィードフォワード ネットワークです。
どちらの部分にも残留接続があり、その後にレイヤー正規化が行われます。
デコーダ
エンコーダーと同様に、デコーダーも 6 つの同一のレイヤーで構成され、各レイヤーには次の 3 つの部分が含まれます。
- 最初の部分はマルチヘッドセルフアテンションメカニズムです
- 2 番目の部分は、マルチヘッド コンテキスト アテンション メカニズムです。
- 3 番目の部分は、位置に関するフィードフォワード ネットワークです。
エンコーダと同様に、上記 3 つの部分のそれぞれには、 レイヤ正規化が後に続く残留接続があります。
デコーダとエンコーダの違いは、マルチヘッド コンテキスト アテンション メカニズムにあります。
注意
前回の記事で述べたように、attentionを一言で表すと、エンコーダ層の出力はデコーダ層に入力される前に重み付けと平均化が行われます。これは主に seq2seq モデルで使用され、この重み付けはアテンション行列とも呼ばれる行列で表すことができます。これは、ある瞬間における出力 y に対する入力 x のさまざまな部分の注意を表します。この注意が、先ほど述べた重み付けです。
注意は多くのタイプに分類され、そのうちの 2 つは典型的な加算的注意と乗算的注意です。加算的アテンションは、入力隠れ状態 ht と出力隠れ状態 st に対して連結演算を直接実行して [st;ht] を取得しますが、乗算的アテンションは入力と出力に対してドット演算を実行します。
Google の論文では、使用されるアテンション モデルは乗算的アテンションです。
ESIMモデルについては前回の記事でソフトアラインアテンションを書きました ので参考にしてください。
自己注意
上記の注意メカニズムについて話すとき、hi と st という 2 つの隠れた状態について話します。前者は入力系列の i 番目の位置に生成される隠れ状態、後者は出力系列の t 番目の位置に生成される隠れ状態です。いわゆる自己注意とは、実際には、出力シーケンスが入力シーケンスであることを意味します。したがって、自分自身の注意スコアを計算してください。
コンテキストアテンション
コンテキストアテンションは、エンコーダとデコーダの間のアテンション、および 2 つの異なるシーケンス間のアテンションであり、それ自体からのセルフ アテンションとは異なります。
どのような注意であっても、注意の重みを計算するときはさまざまな方法を選択できますが、一般的に使用される方法は次のとおりです。
- 追加の注意
- ローカルベース
- 一般的な
- ドット積
- スケーリングされたドット積
Transformer モデルは最後のモデルであるスケーリングされたドット積アテンションを使用します。
Transformer とは何ですか (Microsoft Research Institute のバカ)
Transformer はアテンション メカニズムに完全に基づいたコーデック モデルであり、アテンション メカニズムの導入後に他のモデルがまだ保持しているループと畳み込み構造を放棄し、セルフ アテンション (Self-attention) メカニズムを採用しています。大幅に改善されました。
Transformer が登場する前は、ほとんどのニューラル ネットワーク ベースの機械翻訳モデルは RNNモデル アーキテクチャを使用しており、ループ関数に依存して順序どおりのシーケンス操作を実行していました。RNN アーキテクチャには強力なシーケンス モデリング機能がありますが、トレーニング速度が遅い、トレーニング品質が低いなどの問題があります。
RNNとトランスフォーマー
RNN ベースの手法とは異なり、Transformer モデルにはループ構造はありませんが、シーケンス内のすべての単語または記号が並列処理され、文内のすべての単語間の関係が自己注意によって直接モデル化されます。それぞれの場所を考慮せずにメカニズムを構築します。
具体的には、特定の単語の次の表現を計算するために、Transformer はその単語を文内の他の単語と 1 対 1 で比較し、それらの単語の注意スコアを導き出します。注意スコアは、特定の語彙に対する他の単語の意味上の影響を決定します。その後、注意スコアがすべての単語表現の平均重みとして使用され、完全に接続されたネットワークに供給されて新しい表現が生成されます。
Transformer はすべての単語を並列処理し、各単語を複数の処理ステップで他の単語に関連付けることができるため、RNN モデルよりも高速にトレーニングでき、翻訳タスクでは RNN モデルよりも優れたパフォーマンスを発揮します。計算パフォーマンスと高い精度に加えて、Transformer のもう 1 つのハイライトは、特に特定の単語を処理または翻訳するときに、ネットワークが注目する文の部分を視覚化できることです。これにより、情報がネットワークを介してどのように送信されるかについて洞察を得ることができます。通信網。
その後、Google の研究者は標準の Transformer モデルを拡張し、効率を重視した新しいタイプの時並列ループ構造を採用し、汎用のコンピューティング機能を備え、より多くのタスクでより良い結果を達成できるようにしました。
改良されたモデル (Universal Transformer)は、Transformer モデルの元の並列構造を単一の時間並列ループ変換関数で構成される構造に保持することに基づいて、Transformer をいくつかの異なる固定変換関数のセットに置き換えます。
シーケンスを左から右に 1 つずつシンボルを処理する RNN と比較して、Universal Transformer と Transformer はすべてのシンボルを一度に処理できます。
ユニバーサルトランスとトランスの違い
ただし、Universal Transformer は、セルフ アテンション メカニズムに基づいて、各シンボルの解釈に対して複数の並列ループ処理の変更を実行します。Universal Transformer の時並列ループ メカニズムは、RNN で使用されるシリアル ループよりも高速であるだけでなく、Universal Transformer を標準のフィードフォワード Transformer よりも強力にします。