[NLP古典論文精読] 必要なのは注意だけです

序文

rnn や cnn と同等、あるいはそれ以上のモデル アーキテクチャとして、Transformer は新しい時代を築いたと言えます。attention を使用する理由、cnn と rnn の欠点、そして、attention が言語タスクで優れたパフォーマンスを発揮できる理由この記事は非常に詳細な答えを提供します、ギャップをチェックする友人にいくつかの新しいアイデアとインスピレーションを与えると思います~


論文: https://proceedings.neurips.cc/paper/2017/file/3f5ee243547dee91fbd053c1c4a845aa-Paper.pdf
コード: https://github.com/tensorflow/tensor2tensor

概要

この論文では、斬新でシンプルなネットワーク アーキテクチャである Transformer を提案します。これは完全にアテンション メカニズムに基づいており、再帰や畳み込みを必要としません。実験は機械翻訳タスクで行われ、このモデルは優れたパフォーマンスと高い並列性を備え、必要なトレーニング時間は短くなります。

1. はじめに

LSTM や GRU などのリカレント ニューラル ネットワークはシーケンス モデルの最も高度な手法ですが、このようなモデルは通常、入力位置と出力位置に沿って計算を実行して位置を揃えるため、この固有の逐次性がトレーニングの並列化を妨げます。
アテンション メカニズムは、長距離依存性問題 (エンコーダの知識がデコーダにどのように効果的に伝達されるか) を解決するために、多くのシーケンス モデルや転写モデルの重要なコンポーネントとなっていますが、少数のケースを除いて、アテンション メカニズムは依然として機能し続けています。サイクリックニューラルネットワークと組み合わせて使用​​されます。
この論文では、アテンション メカニズムに完全に依存し、並列処理を大幅に改善する Transformer アーキテクチャを提案します。

2. 背景

シーケンスの計算を減らすために、いくつかの方法では、畳み込みニューラル ネットワークのペアを基本的な構成要素として使用し、入力と出力の隠れベクトル表現を計算しますが、任意の 2 つの入力または出力トークンを関連付けるのに必要な時間は距離とともに増加するため、困難になります。長距離の位置関係を学びます。Transformer はアテンション メカニズムを通じて操作の数を修正し、マルチヘッド アテンション メカニズムを使用して効果的な解決の問題を相殺します。

コンボリューションでは、遠く離れた 2 つのトークンを接続するには多くのレイヤーを使用してコンボリューションする必要がありますが、セルフ アテンション メカニズムは直接接続できます。ここでの実効解像度はパターンとして理解できます。マルチチャネル畳み込みの概念は、画像の複数のパターンを学習できます。マルチヘッド アテンション メカニズムも同様の効果をもたらします。

自己注意メカニズムは、単一シーケンスの異なる位置を接続してシーケンスの表現を計算し、読解や要約などのタスクにうまく適用されています。
当時は、単純な言語の質問応答や言語モデリングのタスクでうまく機能する、リカレント アテンション メカニズムに基づくエンドツーエンドの記憶ネットワークもありました。
Transformer アーキテクチャは、セルフ アテンション メカニズムに完全に依存する最初の既知の転写モデルです。

3. モデルのアーキテクチャ

現在の競合モデルのほとんどはエンコーダ/デコーダ アーキテクチャであり、エンコーダは長さ n ( x 1 , ..., xn ) (x_1,...,x_n)のシーケンスを入力します。( ×1... バツ)、長さ n の表現を出力しますz = ( z 1 , . . . , zn ) \mathbf{z}=(z_1,...,z_n)z=( z1... z),其中 z i z_i z私はは固定長の隠れベクトルであり、エンコーダの出力をデコーダに入力して、最終長さ m (y 1 , ..., ym ) (y_1,...,y_m)のシーケンスを生成します。( y1... yメートル)の場合、デコーダのモデルは自己回帰的です。つまり、前の出力が次の瞬間の入力として使用されます。Transformer のアーキテクチャを次の図に示します。
画像.png

3.1 エンコーダとデコーダのスタック

エンコーダ

エンコーダはスタックされた 6 つの同一のブロックで構成され、各ブロックには 2 つのサブレイヤがあります。1 つ目はマルチヘッド セルフ アテンション メカニズム、2 つ目は MLP、両方のサブレイヤの出力は残差に接続され、レイヤは正規化されています統合、つまりLayer Norm ( x + Sublayer ( x ) ) \mathrm{LayerNorm}(x+\mathrm{Sublayer}(x))LayerNorms ( x+Sublayer ( x ))、ベクトルの次元はすべて 512 に設定されます。

デコーダ

デコーダ層も 6 つの同一ブロックからスタックされ、エンコーダの 2 つのサブ層に加えて、デコーダはエンコーダの出力に対してマルチヘッド アテンション メカニズムを実行する 3 番目のサブ層を挿入します。エンコーダーと同様に、各サブレイヤーの出力は残差と連結され、レイヤーは正規化されます。さらに、作者は、後続の出力情報が漏洩しないように、デコーダの最下部のセルフ アテンション層も変更しました。

なぜBatchNormではなくLayerNormを使うのかというと説明が必要ですが、タイミングサンプルでは各サンプルの長さが異なるため最大サンプル長を設定し、足りない部分は0で埋めます。2 つの主な違いは平均と分散にあります。サンプルの長さが大きく変化すると、各 BatchNorm の平均と分散のジッターは非常に大きくなります。非常に長いまたは短いシーケンスの新規到着には適用できませんが、LayerNormは各サンプル自体です。平均と分散はより安定しています。詳細については、下の図を参照してください。

76EDC981CE1B448B94FF9C96EBEAA6A1.png

3.2 注意

アテンション関数は、クエリといくつかのキーと値のペアを出力にマップする関数です。出力は値の重み付けされた合計とみなすことができ、重みはクエリと値の類似度によって計算されたものとして理解できます。

3.2 スケーリングされた内積注意

画像.png
この記事のアテンションはスケーリング ドット積アテンション (スケーリング ドット積アテンション)と呼ばれ、入力にはクエリ、キー、値が含まれ、ディメンションはdk d_kです。ddk d_kdそしてdv d_vdvクエリとキーのドット積を計算した後、dk \sqrt{d_k}で割ります。d を入力して重みを取得するためにソフトマックス関数に入力すると、計算式は次のようになります
。 mathrm{softmax}(\ frac{QK^T}{\sqrt{d_k}})V注意( Q K V )=ソフトマックス(d Q KT) V
の 2 つの一般的な注意メカニズムは、加法的注意と点積注意です。この論文での注意は、ドット積の注意とスケーリングに基づいています。ドット積アテンションは、高度に最適化された行列乗算コードを使用するため、実際にはより高速でスペース効率が高くなります。ただし、より大きなdk d_kではさらに注意が必要ですdドット積アテンションよりもパフォーマンスが低い方が優れているため、この記事ではスケーリングを使用して、ソフトマックス結果の極性が極度に偏り、その結果勾配降下が遅くなるのを防ぎます。アテンションの計算プロセスを次の図に示します。
画像.png

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

画像.png
著者は、別のdmodel d_{\mathrm{model}}がdモデルディメンションのキー、値、クエリに対して h 個のプロジェクションを実行し、プロジェクションの各値に対してアテンション関数を並行して実行してdv d_vを生成すると、より効果的です。dv次元出力。これらの h 出力を連結して投影すると、dmodel d_{\mathrm{model}}を取得できます。dモデル上に示すように、寸法出力。マルチヘッド アテンション メカニズムの利点は、モデルが異なる位置で異なる表現を持つ部分空間情報に同時に注意を向けることができることです。プロセスは次のとおりです。
MultiHead ⁡ ( Q , K , V ) = Concat ⁡ ( head ⁡ 1 , … , head h ) WO where head = Attendance ⁡ ( QW i Q , KW i K , VW i V ) \begin{整列 } \operatorname{MultiHead}(Q, K, V) & =\operatorname{Concat}\left(\operatorname{head}_{1}, \ldots, \text { head }_{\mathrm{h}} \ right) W^{O} \\ \text { where head } & =\operatorname{tention}\left(Q W_{i}^{Q}, K W_{i}^{K}, V W_{i } ^{V}\right) \end{整列}マルチヘッド( Q K V )頭は どこ =連結(1 頭 )W=注意( QW _QKW _KVW _V)
ここで、射影行列W i Q ∈ R dmodel × dk W^Q_i \in \mathbb{R}^{d_{\mathrm{model}} \times d_k}WQRdモデル× dW i K ∈ R dmodel × dk W^K_i \in \mathbb{R}^{d_{\mathrm{model}} \times d_k}WKRdモデル× dW i V ∈ R dmodel × dv W^V_i \in \mathbb{R}^{d_{\mathrm{model}} \times d_v}WVRdモデル× dv, WO ∈ R hdv × dmodel W^O \in \mathbb{R}^{hd_v \times d_{\mathrm{model}}}WRhd _v× dモデルこの論文では、著者は h を 8 に設定しているため、dk = dv = dmodel / h = 64 d_k=d_v=d_{\mathrm{model}}/h=64d=dv=dモデル/ h=64

3.2.3 モデルにおけるアテンションの適用

このペーパーでは、マルチヘッド アテンション メカニズムを次の 3 つの場所に適用します。

  • エンコーダとデコーダの間の接続に注目し、クエリは前のデコーダ層から取得され、キーと値はエン​​コーダの出力から取得されます。これにより、デコーダ内のすべての位置が入力シーケンスに関する情報を持つことができます。
  • セルフ アテンション層はエンコーダに保持されます。セルフ アテンション、つまり、すべてのキー、値、およびクエリは、前のエンコーダ層からの出力である同じ入力から取得されます。
  • 偶然にも、デコーダの自己注意メカニズムにより、デコーダの各位置がデコーダ内のすべての位置に注意を払うことができますが、自己回帰特性を満たすために、左側の位置が右側の位置の情報を参照できないようにするマスク設定が必要です。

3.3 位置ごとのフィードフォワード ネットワーク

エンコーダとデコーダの各層には、各トークンで独立して動作する完全接続層が含まれています。これには、次のような 2 つの線形変換と 1 つの relu が含まれています: FFN ( x ) = max ( 0 , x W 1 + b 1 ) W
2 + b 2 \mathrm{FFN}(x)=\mathrm{max}(0,xW_1+b_1)W_2+b2FFN ( × )=最大( 0 ,× W1+b1) W2+b 2 は、
カーネル サイズが 1 の畳み込み層として理解することもできます。
1A2B7589D93EAFA61B372380DA46F1B1.png

MLP の理解は、上図の上部、つまり各トークンの出力を高次元にマッピングし、再度マッピングすることを示しており、次の部分は、attention と RNN 全体の比較です。それらのうち、実際にはシーケンス情報を最初に処理してから処理します。マッピングの次のステップでは、Transformer はシーケンス全体の情報を並列に計算できますが、RNN は前のシーケンス情報をシリアルに計算することしかできないため、効率と効果が大幅に低下します。

3.4 エンベディングとソフトマックス

入力シーケンス内のトークンは、学習可能な埋め込みを通じて次元dmodel d_{\mathrm{model}}に変換されますdモデルさらに、デコーダの出力は、線形変換 (語彙にマッピング) とソフトマックス関数を通じて次のトークンを予測する確率に変換されます。埋め込み層にはdmodel \sqrt{d_{\mathrm{model}}} を乗算する必要があることに注意してください。dモデル 、その後の位置情報があまり変動しないようにするためです。

3.5 位置エンコーディング

注意は類似度による重み付け値のみを計算するため、タイミング情報が含まれていない、つまりシーケンストークンの順序が崩れ、計算結果が変わらないため、位置情報を注入する必要があります。著者らは、さまざまな周波数でサイン関数とコサイン関数を使用します。
PE ( pos , 2 i ) = sin ⁡ ( pos / 1000 0 2 i / d モデル ) PE ( pos , 2 i + 1 ) = cos ⁡ ( pos / 1000 0 2 i / d モデル ) \begin{aligned} P E_{(pos, 2 i)} & =\sin \left(pos / 10000^{2 i / d_{\text {モデル }}}\right) \\ P E_ {(pos, 2 i+1)} & =\cos \left(pos / 10000^{2 i / d_{\text {モデル }}}\right) \end{aligned}PE _( pos , 2 i ) _PE _( pos , 2 i + 1 ) _=( pos / 1000 02i / d _モデル )=コス( pos / 1000 02i / d _モデル )
pos は位置、i は次元です。位置エンコーディングと埋め込みは同じ次元であり、この 2 つは加算できます。サイン関数が選択されたのは、モデルがトレーニング中に発生したシーケンスよりも長いシーケンス長を推測できるためです。

4. なぜ自意識に注意を払うのか

従来のループ層と畳み込み層は通常、変数シーケンスを同じ長さのシーケンスにマッピングしますが、セルフアテンションを使用すると、次の 3 つの利点があります。

  1. 計算の複雑さ。
  2. 並列コンピューティングの量。
  3. ネットワーク内の長距離依存関係のパスの長さ (短いほど学習が容易です)。

画像.png
上の表に示すように、セルフアテンション層は順次操作を同時に実行できますが、リカレント層はO ( n ) O(n)を必要とします。O ( n )の順次操作。計算量の観点から見ると、n が次元 d より小さい場合、セルフ アテンション層はリカレント層より高速です。長いシーケンス タスクの計算パフォーマンスを向上させるために、制限されたセルフ アテンションにより入力のみが許可されます。中心サイズが r の近傍を考慮し、最大パス長をO ( n / r ) O(n/r)O ( n / r )
畳み込み層の場合、カーネル幅k < n k<nk<n、単純な層では入力位置と出力位置のすべてのペアを接続できないため、O ( n / k ) O(n/k) がO ( n / k )畳み込み層を使用して、ネットワーク内の任意の 2 つの場所間の最長パスの長さを増やします。計算の複雑さの観点から見ると、畳み込み層はkkK回、分離可能な畳み込みを使用した場合でも、複雑さは少なくとも アテンション層と MLP 層の組み合わせと同等になります。
最後に、アテンション メカニズムには、より解釈可能なモデルを生成するという追加の利点があり、文の構文的および意味的構造に関連する動作を示すことができます。

実際には、n と d のサイズは実際には類似しているため、3 つのアルゴリズムの計算の複雑さは同じか、同じ桁であると考えることができますが、計算の並列性と長距離依存性においては明らかな利点があることに注意してください。

5. 電車

5.1 トレーニングデータとバッチ処理

著者らは、450 万のデータペアからなる英語-ドイツ語のデータセットと 3,600 万のデータペアからなる英語-フランス語のデータセットで実験を行っています。

5.2 ハードウェアとスケジュール

実験パートは8枚のカードP100で実行されます。

5.3 オプティマイザー

オプティマイザー部分にはAdamを使用し、学習率には動的学習率を使用します。

5.4 正則化

著者は 3 つの正則化手法を採用しています。

  • Residual Dropout: add&Norm モジュールに入力する前に、各サブレイヤーの出力と入力の埋め込み部分に適用されます。
  • ラベルのスムージング: モデルの複雑さを軽減し、モデルの不確実性を高めることで、精度と BLEU 値を向上させることができます。

6. 結果

6.1 機械翻訳

実験では英語-ドイツ語翻訳タスクと英語-フランス語翻訳タスクの両方で良好な結果が得られ、トレーニング コストが大幅に削減されました。以下の表は実験結果をまとめたものです。
画像.png

6.2 モデルバリエーション

Transformer のさまざまなコンポーネントの重要性を評価するために、作成者はハイパーパラメーターを変更することでモデルのパフォーマンスの変化をテストしました。結果を以下の表に示します。上の表の B によれば、縮小されたアテンション キーの次元dk d_k
画像.png
が次のようになります。dC と D でさらに観察すると、モデルは大きいほど優れており、ドロップアウトは過学習を回避するのに非常に役立つことがわかります。正弦波位置エンコーディングを E に埋め込まれた学習位置で置き換えると、ほぼ同じ結果が得られます。

7. 結論

本稿では、アテンション機構のみを用いた転写モデルであり、従来のエンコーダ・デコーダアーキテクチャにおけるリカレント層をマルチヘッドアテンション機構に置き換えたTransformerモデルを提案する。機械翻訳タスクでは、Transformer のトレーニング速度が速く、効果も良好です。したがって、著者は、Transformer を他のタスクに適用し、局所的かつ限定的な自己注意メカニズムを研究することで、画像、音声、ビデオなどの入出力タスクを効果的に処理したいと考えています。

概要を読む

NLP 分野の古典、LLM の基礎、そして新時代の創造者である Transformer を振り返ると、私は多くのことを得ることができました。この記事は記事の長さの制限があるため、多くの詳細が説明されておらず、モデル設計のインスピレーションやアイデアさえも完全なストーリーの形で提示することはできませんが、NLP や学習に役立つことを妨げるものではありません。 AI分野全体においても顕著な貢献を果たしています。この記事を Mushen の説明ビデオと組み合わせることで、Transformer アーキテクチャについてより深く理解できるようになりました。LayerNorm を使用する理由、Q、K、V の使い方と意味、アテンション レイヤーの役割など、記事内の多くの不明点や不明瞭な点を Mushen 氏がわかりやすく解説しており、これらの内容はすべて私の頭の中にありました。この年、私はトランスフォーマーの構成要素自体の謎を無視して、トランスフォーマーの構成要素を習得しようとしてきましたが、この精読を通じて、その後の科学研究にさらに多くの情報を提供できると信じています。まったく新しい理解と考え方です。

おすすめ

転載: blog.csdn.net/HERODING23/article/details/131838939