自己注目とトランス説明
论文:注意が必要なのです。
参照
完全に参照1. このブログを、非常に良い話します!この要約は、単に改作されます。
2.リファレンスもほぼに知られている記事の補足として、
記事のディレクトリ
特に1自己注意
自己注目すなわちK = V = Q. 例えば、文、すべての単語を算出した文章の注目の内側その後、それぞれ、すべての単語を入力してください。目的は、文章用語依存性の内部の内部構造、撮影した文を研究することです。
1.1プロセス
- 各endoerための入力ベクトルから3つのベクトルを作成します。
- 各単語について、クエリ、キー、値を作成します。訓練由来*行列を埋め込む話すことにより、これらのベクター。
NLP、キーと値のほとんどは、多くの場合、すなわち、キー=値と同じです。
- embdding未満の新しいベクトルの次元、次元64。これは、我々は、マルチヘッドの注目が大きく変わらず計算することができ、建築の選択肢です。
- クエリ、キー、値と計算スコア
- スコアをクリックし、キーワードクエリベクトルとベクトルのスコアによって計算されます。
小数ビットワードがドット(Q1、K1)であり、第二のスコアがドット(Q1、K2)であります
-
分数/ 8(紙は、寸法(D鍵ベクトルであるK SQRTある平方根)、(64))
より安定した勾配を得るために。
-
ソフトマックスの転送操作結果。
標準化は、この位置である1の各ワードの表現を決定し、単語この場所は、最高スコアソフトマックスを有しているが、時には有用である現在のワードに関連付けられている別の単語を心配することは明らかです。
-
各値ベクトル*ソフトマックススコア
あなたが同じフォーカスを維持したい単語は、無関係な単語を削除します。
-
加重合計値ベクトル。
この位置出力層の結果として自己の注意
得られたベクターは、フィードフォワードネットワークのベクトルに送信されます。実際には行列形式で行われ、行列形式はそう自己の注意を参照してください。
行列の自己注意1.2
プロセス:
- クエリ、キー、値行列を算出。
埋め込みは、行列Xにパッケージ化、および訓練された重み行列(WQ、WK、WV)を乗じました。
入力へマトリクス相当文章中の単語の行ごとにX。
- 濃縮工程2-6
1.3スケーリングされたドット積注意
上記の手順:類似度計算注目のドット積であるスケールドット積注意として。ただSQRT(D以上に加えてK調節的な役割を再生する)、製品にはあまり価値がないであろう。
2トランス構造
要約:
- テキスト表現、特にQ = K = Vを学ぶために、エンコーダとデコーダ使用長い注目機構(マルチヘッド注意)は、自己注目機構(自己注目)です。
- 入力マルチヘッド注意として注目整列を変換するエンコーダとデコーダにより、KおよびV入力エンコーダとデコーダ出力Q
- 位置エンコーディングは、位置情報を用いて導入すること
- 仮面のマルチヘッドの注意現在の単語の右側にある単語の使用を排除0-1mask影響を与えます
- ネットワーク接続および標準化残差(追加&ノーム)より最適なネットワークの深さとなるよう
2.1エンコーダ与マルチ向かったアテンション
改善:
- モデルの焦点の異なる場所の能力を展開します。
- 付与層の複数の注目は「サブスペースを表します。」
①クエリ複数の\キー\値の重み行列セット(注8従って、最終的に各音符ヘッドエンコーダ/デコーダのための8セットを提供する、変圧器ヘッドを用いて)を
②各セットは、ランダムに初期化されます。
③(下エンコーダ/デコーダから又はベクター)各入力埋め込みのセットのために、訓練された、異なる部分空間上に投影される表現。
詳細2.1.1マルチヘッド
長い注目のケースでは、異なるQ / K / V行列が得られ、ヘッド毎に別々のQ / K / Vの重み行列を維持します。前と同じように、我々は、Q / K / V行列を得るX-WQ / WK / WV行列が乗算されます。
また上:クエリ、キー、値。
上記同様の計算を行うための自己注目した場合、唯一の8つの異なる重み行列は、8つの異なるZ行列を得ることができます。
彼は注意ヘッドは異なる行列Zが生成されると述べました。
8フィードフォワード行列層必要ではない - それは行列(各単語に対応するベクトル)を必要とします。だから我々は、マトリックスに圧縮8を配置する方法が必要です。
行列簡素化
- すべての注目ヘッドを連結
- 追加の重み行列W0を乗じました。
- すべての情報でのキャプチャの注目ヘッドを、ので、この文はFFNNを供給し、その結果のZ行列を取得します
これらは、多頭自己注目されています。
上記のプロセス:
マルチヘッドの視覚化した場合は、対象の単語表現のモデルを見ることができ、式は内の他のソースワードに反映されています。
配列のコード配列の2.1.2定位置エンコーディング使用位置
これまでのところ、我々が説明したモデルは、入力方法のシーケンスを説明するために一つのこと行方不明の言葉です。
各埋め込みにトランス--positionalコードするベクターの入力を追加します。これらのベクターは、学習の特定のパターンモデル追従役立ち、各単語の位置決定、または異なる単語の中の配列との間の距離を。
直感は、ここで、埋め込みにこれらの値を追加することである意味のある距離をその間に提供する、周期Q / K / Vベクトルと注目に埋め込みベクトル内積に投影されます。
私たちは次元を埋め込むの数が4であると仮定した場合、実際の位置コードは次のようになります。
接続された後に別の関数(余弦)を生成する右半分関数(正弦波)を生成することにより、位置コーディングベクトルの左半分は、コーディングベクトルは、各位置のために形成されます。
この方法の利点は、コーディングがあることであるシーケンスの長さに拡張することができます表示されていない任意の文に焦点を当て、我々はトレーニングモデルを変換するよう求められた場合など、トレーニングよりも長い文章です。
実際の位置エンコーダの例:サイズを埋め込むことは20 * 512です。これは、2つの真ん中にあります。各行は、位置コーディングベクトルに対応します。
2.1.3残留接続
エンコーダアーキテクチャの詳細を言及する必要性は、各エンコーダの周りに各サブ層(自己注意、ffnn)も残留接続、層正規化を有します。
図:
また、これは、サブレイヤデコーダに適用されます。我々はそれが必要として、二積み重ねられた変圧器のエンコーダとデコーダは、構成を検討している場合。
2.2デコーダ部
2.2.1詳細なデコーダ
エンコーダは、エンコーダがトップであろう変換出力注意のセットにKおよびVベクター:それぞれ各デコーダを使用して「エンコーダデコーダ注意」層、下可動図手順により、
まで、このプロセスを繰り返す工程デコーダを示す特殊記号は、トランス出力を完了しました。
次の時間ステップにおける各ステップの出力は、デコーダの底部に設けられており、ポップエンコーダのような結果を復号化するデコーダ。我々は、エンコーダ入力を扱うように、我々は埋め込み、各単語の位置を示すために、位置エンコーダデコーダ入力にそれらを追加します。
图2:HTTPS://jalammar.github.io/images/t/transformer_decoding_2.gif)
若干異なるエンコーダでの作業自己の注目レイヤデコーダ:
- デコーダにおいて、自己注目層のみプロセス出力シーケンス以前の位置自己注目することによって計算される、未来の位置のSoftMaxマスキング前に(私はkのスコアはすべてのキーではない推測)(それらの設定-inf)を達成するために!
- エンコーダ・デコーダの注意は、マトリックスを作成するために、下層からのクエリことを除いて、層と同様のマルチヘッド自己注目を動作し、スタック内のエンコーダマトリックスからキーと値出力を得ます。
リニアおよびソフトマックスの最後の層
ポイントデコーダフローティングスタック出力ベクトル。我々はそれの言葉にそれを回す方法を教えてください。そして、これは、線形層の最後の作品、レイヤーソフトマックスです。
単純な線形層が完全にニューラルネットワークを接続している、それはlogitsベクトルと呼ばれる大きなベクトルスタック上に生成されたベクトルを、デコードします。
ユニークワードスコアに各セルの対応-辞書の広い数のこの意志logitsベクター細胞。これは、我々は層の後に線形モデルの出力をどのように解釈するかです。
ソフトマックス層は、これらの確率スコア(すべての正は、すべて1.0まで追加)に変換しました。最も高い確率で細胞を選択し、このステップとして出力時間に関連した単語を生成します。