[AI 理論学習] 言語モデル Performer: Transformer アーキテクチャに基づく一般的な注意フレームワーク


Performer は、セルフ アテンション メカニズム (Self-Attention) を効率的に処理するためのニューラル ネットワーク アーキテクチャです セルフアテンション メカニズムは、多くの自然言語処理やコンピューター ビジョン タスクで優れた結果を達成していますが、計算の複雑さがシーケンスの長さの 2 乗に比例するため、長いシーケンスを処理する場合には問題が発生します。これらの問題を解決するために、Google AI は 線形スケーラビリティを備えた Transformer アーキテクチャである Performer を導入しており、そのアテンション メカニズムは線形スケーラブルです このフレームワークは、(FAVOR+) アルゴリズムを通じて実装されており、確率的特徴マップ分解 (特に従来のソフトマックスアテンション Fast Attention Via Positive Orthogonal Random Features ) によって表されるアテンション メカニズムを表現できる、スケーラブルで分散が低く不偏な推定を提供します このマッピングは、線形空間と時間の複雑さを維持するのに役立ちます。

Softmax 直交ランダム固有分解
Performer の中心的なアイデアは、低ランク近似を使用して従来の完全に接続されたセルフアテンション マトリックスを置き換え、それによって計算の複雑さを軽減することです具体的には、Performer は次の主要なテクニックを使用します。

  1. 高速アテンション: 従来のセルフ アテンション メカニズムでは、すべての位置間のアテンションの重みを計算する必要があり、計算量がO ( n 2 ) O(n^2)になります。O ( n2 )、ここでnnnはシーケンスの長さです。Performer は、固定ランダム射影行列を導入するこの計算の複雑さをO ( n ) O(n)O ( n )この手法により、セルフアテンション計算の時間計算量が二次関数ではなくシーケンス長に線形に関係するようになります。
  2. 直交ランダム特徴: Performer は直交ランダム特徴を使用します。これにより、モデルのパフォーマンスを維持しながら計算効率をさらに向上させることができます。これらの機能により、射影行列の計算をより効率的に行うことができます。
  3. Memory Efficient : Performer は、メモリ制限に制限されることなく長いシーケンスを処理できるメモリ効率の高いバリアントも提案しています。このメソッドは、ブロック内のセルフ アテンション マトリックスを計算することによって実装されます。
  4. 有利な漸近性: 標準的な自己注意と比較して、Performer はシーケンスの長さが増加するにつれて漸近的な計算量が向上します。これは、長いシーケンスを処理する場合に明らかに有利であることを意味します。

全体として、Performer アルゴリズムは、ランダム特徴低ランク近似、およびその他のいくつかの技術を導入することにより、セルフ アテンション モデルの計算効率を大幅に向上させ、モデルのパフォーマンスを犠牲にすることなく、より長いシーケンスに適用できるようにしますこれにより、自然言語処理やその他の分野での応用に幅広い可能性が生まれます。

出演者の論文解釈

パフォーマーに対する注意力を再考する
論文概要: 通常の (ソフトマックス) フルランク アテンションで Transformer を正確に推定する Transformer アーキテクチャである Performer を紹介しますが、(二次計算量ではなく) 線形空間と時間計算量のみを使用し、スパース性や下位。ソフトマックス アテンション カーネルを近似するために、パフォーマーは、正の直交ランダム特徴法 ( ) による新しい高速アテンションを使用しますFAVOR+。これは、スケーラブルなカーネル法にとっては独立して重要である可能性があります。FAVOR+ は、ソフトマックスを超えてカーネル化可能なアテンション メカニズムを効率的にモデル化するために使用することもできます。この表現機能は、従来の Transformer では実現できなかった大規模タスクで初めてソフトマックスを他のカーネル関数と正確に比較するために重要であり、最適な注意を向けたカーネル関数の研究も可能にします。パフォーマーは、通常のトランスフォーマーと完全に互換性のある線形アーキテクチャであり、アテンション行列の不偏またはほぼ不偏推定、一様な収束、および低い推定分散といった強力な理論的保証を備えています。私たちは、ピクセル予測からテキストモデリング、タンパク質配列モデリングに至るまで、豊富なタスクセットでパフォーマーをテストし、他の実証済みの効率的なスパースおよびデンス注意手法を上回る競争力のある結果を達成し、新しい注意学習パラダイムのパフォーマーの有効性が利用されていることを実証しました。

人間の言葉で言えば、Performer は Transformer アーキテクチャであり、そのアテンション メカニズムは直線的に拡張できます。一方で、モデルのトレーニングを高速化できる一方で、モデルがより長い入力シーケンスを処理できるようになります。これは、特定の画像データ セット (ImageNet64 など) やテキスト データ セット (PG-19 など) にとっては確かに優れています。Performer は、効率的な (線形) 一般的なアテンション フレームワークを使用します。このフレームワークでは、さまざまな類似性尺度 (つまり、さまざまなカーネル メソッド) を使用してさまざまなアテンション メカニズムを実装できます。このフレームワークは、FAVOR+(正の直交ランダム特徴による高速アテンション、直交ランダム特徴による高速アテンション)アルゴリズムによって実装されており、ランダム特徴マップを通じて分解できるスケーラブルで低分散、不偏推定のアテンション メカニズムを提供します。この方法では、一方では線形空間と時間の複雑さが確保され、他方では精度が確保されます。さらに、このメソッドはソフトマックス操作に単独で使用でき、可逆レイヤーなどの他の技術と組み合わせて使用​​することもできます。


長距離の注意を必要とするアプリケーションに対して、一部の研究者はいくつかの高速でスペース効率の高い方法を提案していますが、その中でより一般的な方法は、まばらな注意です。
標準的なスパース化手法
図. 標準的なスパース化手法

ただし、スパース アテンションの方法にもいくつかの制限があります第一に、それらは効率的な疎行列乗算演算を必要としますが、これはすべてのアクセラレータで実行できるわけではありません;第二に、それらは通常、その表現能力に対して厳密な理論的保証を提供することができません;第三に、それらは主に Transformer モデルと生成された予測を対象としています。最適化するためのトレーニング; 最後に、通常、スパース表現を補うためにより多くのアテンション レイヤーを積み上げるため他の事前トレーニング済みモデルでの使用が困難になり、再トレーニングが必要になり、多くのエネルギーを消費します。

さらに、スパース アテンション メカニズムは、ポインター ネットワークなどの従来のアテンション方法を適用するときに直面するすべての問題を解決するには不十分であることがよくあります。一般的に使用されるソフトマックス演算など、スパース化できない演算もあります。


定期的な注意のメカニズム

従来のアテンションの仕組みでは、行列の行と列に対応するクエリとキーを乗算し、ソフトマックスを通じてアテンションスコア行列を計算します。式は次のとおりです。
アテンション ( Q , K , V ) = ソフトマックス ( QKT d ) V \text{アテンション}(Q,K,V)=\テキスト{ソフトマックス}(\frac{QK^T}{\sqrt {d} })V注意( Q K V )=ソフトマックス(d Q KT)V
其中 Q , K , V Q, K, V 質問K V (寸法はL × d L \times dL×d ) はそれぞれクエリ、キー、値の行列です。LLLは文の長さ、dddは、クエリ、キー、値ベクトルの (任意の) 次元です。Transformer の問題はソフトマックス関数に起因します。その理由を見てみましょう。

このメソッドは、クエリキーを非線形ソフトマックス演算に分解し、結果を元のキーとクエリに分解することはできませんが、アテンション行列を元のクエリとキーのランダムな非線形関数の積に分解することはできます。いわゆるランダム features ( ) を使用して、類似性情報をrandom featuresより効率的にエンコードできるようにします標準のアテンション マトリックスには、q と k で表される、クエリとキーのソフトマックス計算で構成されるエントリの各ペアの類似係数が含まれています。
アテンション行列の因数分解

通常のソフトマックス アテンションは、指数関数とガウス投影によって定義される非線形関数の特殊なケースとして見ることができますここでは、逆に推論することもできます。最初に、クエリ キーの結果で他のタイプの類似性尺度またはカーネル関数を暗黙的に定義する、より一般化された非線形関数を実装します研究者らは、初期のカーネル法に基づいて、それを普遍的な注意( )として定義しましたgeneralized attentionほとんどのカーネル関数には閉じた形式のソリューションは存在しませんが、このメカニズムは閉じた形式のソリューションに依存しないため、引き続き適用できます。

この記事は、ダウンストリームの Transformer のアプリケーションにおいて、任意のアテンション マトリックスがランダムな特徴を通じて効果的に近似できることを初めて証明しましたこれを実現する新しいメカニズムではpositive random features、元のクエリとキーの正の非線形関数である (順方向ランダム特徴) を使用します。これにより、トレーニング中の不安定性が回避され、通常のソフトマックス アテンションへのより正確な近似が実現されます。

FAVOR+: マトリックス相関による素早い注意喚起

上記の分解を通じて、(二次ではなく) 線形空間複雑さの暗黙的アテンション行列を取得できます。同様に、線形時間注意メカニズムは分解によって取得できます。元の方法は、アテンション行列と入力値を乗算して最終結果を取得することですが、アテンション行列を分解した後、二次サイズのアテンション行列を明示的に構築せずに、行列の乗算を再配置して従来のアテンション メカニズムの結果に近似することができます。最終的に、新しいアルゴリズムが生成されましたFAVOR+
特徴マップによる定期的な注意メカニズム AV の近似
図: (ランダム) 特徴マップによる定期的な注意メカニズム AV の近似 ( D − 1 D^{−1}D正規化前は- 1 )。破線のブロックは、計算の順序と、対応する時間計算量を表します。左: 標準的なアテンション モジュールの計算。最終的な期待結果は、行列 A と値テンソル V の行列乗算を実行することによって計算されます。右: Aの低ランク分解で使用される行列 Q ' を分離することによって計算されます。Q 'K'K'K 'を計算し、点線のボックスに示された順序で行列の乗算を実行すると、研究者らは明示的にAAを構築することなく線形アテンション行列を取得しました。Aまたはその近似値。

上記の分析は双方向の注意(つまり、非因果的注意)に関連しており、過去と未来を区別しません。では、入力シーケンスの一部のみ、つまり一方向の因果的注意を実現するにはどうすればよいでしょうか? プレフィックスの合計計算( )を使用し、完全な下三角の通常の注意行列を保存するのではなく、prefix-sum computation計算プロセス中の行列計算の実行の合計数のみを保存します図:一方向の注意のためのプレフィックス合計アルゴリズムを視覚的に表現したものを示します。わかりやすくするために、この視覚化では注意の正規化を省略しています。このアルゴリズムは、キーに対応するランダムな特徴と値ベクトルの外積を加算することによって得られる行列であるプレフィックス合計を保存します。プレフィックス合計アルゴリズムの所定の反復ごとに、クエリに対応するランダムな特徴ベクトルが最も近いプレフィックス合計 (以前のすべてのトークンに対応する外積を加算することで得られる) と乗算され、アテンション メカニズムによる出力が得られます。 AV
一方向の注意のためのプレフィックスサムアルゴリズムの視覚的表現
AV新しい行 (新しい行)。つまり、キー ベクトルと値ベクトルのランダムな特徴マッピングを外積してプレフィックスの合計を取得し、このプロセスは動的に構築されます。最後に、ランダムな特徴ベクトルにクエリを乗算して、最終的な行列の新しい行を取得します左のAAA は、標準の一方向アテンションが下三角部分を取得するためにマスク アテンション マトリックスを必要とすることを意味します。

アテンションの時間計算量

復習すると、次元はn × mn\times mです。n×mm × pm\times pメートル×pの 2 つの行列を乗算する時間計算量はO (nmp) O(nmp)O ( nmp ) _ アテンション方程式を見ると、Q (寸法はL × d L\time dL×d )、KTK^TKT (寸法はd × L d\times Ld×L ) とVVV (寸法L × d L\time dL×d )。乗算する順序に応じて、異なる複雑さが得られます。最初にソフトマックスと分母d \sqrt{d}d (これは単なるスカラーです)、以下がわかります: まずQKT QK^TによってQ KTの積により、O ( L 2 d ) O(L^2d) が得られます。O ( L2d )KTVK^TVにするとK最初にTV乗算すると、O ( d 2 L ) O(d^2L)O ( d2 L)の複雑さ。
時間計算量の比較
明らかに、O ( d 2 L ) O(d^2L)O ( d2 L)ddなのでd は選択できるパラメータであり、d < L d<Ld<L._ _ ただし、 QKT QK^Tであるため、実際にはこの順序で乗算を行うことはできません。Q KTはソフトマックスの中に「詰まって」おり、それを取り出す簡単な方法はありません。これは、O ( L 2 d ) O(L^2d)を処理する必要があることを意味します。O ( L2 d)、シーケンスの長さは 2 次です (したがって、より長いシーケンスを処理すると、計算コストがますます高くなります)。したがって、ソフトマックスが変圧器のボトルネックとなっており、この問題を解決する方法を見つけたいと考えています。

ソフトマックスのボトルネックを回避する

この記事で提案するアプローチは、大まかに言えば非常にシンプルです。行列を計算する順序を選択できるソフトマックスを近似する方法を見つけることはできますか? 本質的に、行列Q ' Q'を見つけたいのです。QK」「K」K'、Q ' K ' ≈ ソフトマックス ( QKT / d ) Q'K'\about \text{softmax}(QK^T/\sqrt{d}) を満たすQ K」ソフトマックス( Q K/d 目標はシンプルですが、それを達成するための詳細は少し複雑です。

まず、softmax はnnの長さを与えられた関数であることを思い出してください。nのベクトルz \mathbf{z}z、すべての要素zi \mathbf{z}_iz私は归一化:σ ( z ) i = ezi ∑ j = 1 nezj \sigma (\mathbf{z} )_i=\frac{e^{z_i}}{\sum j=\mathbf{1}^ne^ {z_j} }σ ( z )私は=j=1つまり_zjez私はこれを考慮すると、アテンション方程式のソフトマックスを次のように書き換えることができることに注意してください-1}Aソフトマックス(d Q KT)=D1 Aここで、A = exp ( QKT / d ) A=exp(QK^T/\sqrt{d})=e x p ( Q K/d )D = diag ( A 1 L ) D=\text{diag}(A\mathbf{1}_L)D=診断( A1 _L)、 diag は入力ベクトルを対角行列1 L \mathbf{1}_L1LそうするとLLの長さになりますL はすべて 1 のベクトルです。それが記事の式 (1) です。AA
公式1
の指数関数はAは要素ごとに適用されます (DD)Dは要素A 1 LA\mathbf{1}_Lを持つ対角行列ですA1 _L対角線( A 1 L ) \text{diagonal}(A\mathbf{1}_L)診断( A1 _L)は合計、D − 1 D^{-1}D1 はこれらの合計を逆数に変換するため、D − 1 AD^{-1}AD1 Aの後にソフトマックス ( QKT / dk ) \text{softmax}(QK^T/\sqrt{d_k})ソフトマックス( Q K/d )は同等です。実際、A 1 LA\mathbf{1}_LA1 _LちょうどLL丈ですペアAAを介して渡されるLのベクトルAの列を合計することで得られます。

注:AAここでの本当の問題はAの要素ごとの指数であるため、私たちの目標はそれを何らかの方法で因数分解することです。スカラー分母d \sqrt{d} はd これは正規化にのみ使用されますが、クエリとキーを同等に正規化できるためです。これは、私たちの目標は、いくつかのQ' Q'を見つけることであることを意味します。QK」「K」K'',满足:Q '' K '' ≈ exp ( QKT ) Q'K'\about \text{exp}(QK^T)Q K」exp ( Q K

ガウス カーネルを通じて Softmax カーネルを見つける

上の式では、AAAは 2 つの行列の積を定数で割ったもので、指数演算を行って注目行列を求めますが、この注目行列 A を近似するためにカーネル法を導入します。ここで核によるアプローチが登場します。

具体的な方法は次のとおりです。
カーネルは、ある特徴マップ (特徴マップ) φ \varphiに相当することがわかっています。φの内積の関数QQの場合QKKKの任意のベクトルqi q_iq私はそしてkj k_jkj、正規化を考慮しない元の類似度の結果はexp (qiq) exp(q_ik_j)です。e x p ( q私はkjカーネル法の導入後の計算方法は次のようになります。 K ( x , y ) = E [ ϕ ( x ) T , ϕ ( y ) T ] K(x, y)=\mathbb{E}[\phi(x) ) ^T、\phi(y)^T]K ( x ,y =E [ ϕ ( x )ϕ ( y )T ]通常、特定の高次元特徴マップφ \varphiφ、等価関数KKK 、これによりφ \varphiを回避できるようになります。計算はφの高次元空間で実行されますただし、私たちの場合、実際には逆の方向に進みます。AA を仮定するとA は、 A ( i , j ) = K ( qi , kj ) = exp ( qiq T ) A(i,j)=K(q_i,k_j)=exp(q_ik_j^T) を含む要素ですA (j )=K ( q私はkj)=e x p ( q私はkjT)(其中 q i q_i q私はそしてkj k_jkj彼らはQQですQKKK行ベクトル) カーネル行列、特徴マップφ \varphiφ はAAの分解に役立ちますA吗? A ( i , j ) = K ( qi , kj ) = exp ( qjkj T ) = ϕ ( qi ) T ϕ ( kj ) \mathbf{A}(i,j)=K(q_i,k_j)= \text{exp}(q_jk_j^T)=\phi(q_i)^T\phi(k_j)A (j )=K ( q私はkj)=exp ( qjkjT)=ϕ ( q私は)T ϕ(kj)

現在、ほとんどのカーネルはφ \varphiの形式の特徴マップで表現できます。φを近似する:
核技術の概算経験値
ここで、hhhおよびf 1 、...、fl f_1、...、f_lf1... f異なる決定論的マッピング関数、w 1 、...、wm w_1、...、w_mw1... wメートル次にディストリビューションDDからDからサンプリングされますしたがって、φ ( x ) \varphi(x)φ ( x )はl × ml\times mの関数です×m要素のベクトル。

  • h ( x ) = 1の場合h(x)=1h ( x )=1l = 1 l=1=1 ,D = N ( 0 , I_d ) D=N(0, I_d)D=N ( 0 ,d、このコアはいわゆるコアですPNG-kernel
  • h ( x ) = 1の場合h(x)=1h ( x )=1l = 2 l=2=2 ,f 1 = sin f_1=sinf1=s inf 2 = cos f_2=cosf2=cosに関して言えば、それはshift-invariantコアです。このとき、D = N ( 0 , I d ) D=N(0, \mathbf{I}_d) とD=N ( 0 ,d)の場合、それはガウス カーネル

つまり、平均 0 と単位分散の正規分布から w を引くと、次の特性マップを使用してガウス カーネルを取得できます。
ϕ ( x ) gauss = 1 m ( sin ( w 1 T x ) , . . , sin ( wm T x ) , cos ( w 1 T x ) , . . , cos ( wm T x ) ) \phi(\mathbf{x})_{gauss}=\frac{1}{\ sqrt{ m}}(\text{sin}(w_1^T\mathbf{x}),...,\text{sin}(w_m^T\mathbf{x}),\text{cos}(w_1^ T\ mathbf{x}),...,\text{cos}(w_m^T\mathbf{x}))ϕ ( x )ガウス_ _ _=メートル 1(( w1Tx ) ... wメートルTx ) cos ( w1Tx ) ... cos ( wメートルTx ))単位分散を持つガウス カーネルは次の式で与えられることに注意してください。
K gauss = exp ( − ∣ ∣ x − y ∣ ∣ 2 2 ) \mathbf{K}_{gauss}=\text{exp}(- \frac {||\mathbf{x}-\mathbf{y}||^2}{2} )Kガウス_ _ _=exp ( 2∣∣ xy 2)ここで、ソフトマックス カーネルを見つけたいことを思い出してください:
KSM ( x , y ) = exp ( x T y ) \mathbf{K}_{SM}(\mathbf{x},\mathbf{y})= \text {exp}(\mathbf{x}^T\mathbf{y})KSM( x ,y =exp ( xTy )Softmax カーネルの構造がガウス カーネルからそれほど遠くないことわかりますこの類似性を利用してソフトマックス カーネルを見つけることができることがわかりました。実際、ソフトマックス カーネルを次のように書き換える
この類似性を利用してソフトマックス カーネルを見つけます
ことができることを意味していることそして、hh
ソフトマックスカーネルを書き直す
h ( x ) = 1 からのh関数h(x)=1h ( x )=1は、ガウス カーネルにつながる特徴マップを再利用して、次の形式に変更されます。
h ( x ) = exp ( ∣ ∣ x ∣ ∣ 2 2 ) h(x)=\text{exp}(\frac{||x||^2}{2})h ( x )=経験値(2∣∣ × 2)
これは良好な近似値ですが、いくつか問題があります。Softmax 関数は常に正の値を出力するため、A \mathbf{A}Aのすべての要素はただし、このカーネルを使用してソフトマックスを近似すると、負の値が得られる可能性があります。実際、平均 0 の正規分布から w を引いているため、その値の一部は負になります。つまり、A \mathbf{A}Aの一部の値は負になります。これにより、問題や予期しない動作が発生する可能性があります。

より安定した Softmax カーネルを探しています

研究者らは、ソフトマックス カーネルは次のように書き換えることもできることを発見しました (
Softmax カーネルを書き換える
これが実際にソフトマックス カーネルであることの証明は、論文の付録に記載されています)。したがって、単純に前の特徴マップ形式を取得して、h ( x )を設定することができます。 = exp ( − ∣ ∣ x ∣ ∣ 2 2 ) 、 l = 1 、 f 1 = exp 、 D = N ( 0 , I d ) h(\mathbf{x})=\text{exp}(-\frac{ ||x ||^2}{2}),l=1,f_1=\text{exp},\mathcal{D}=\mathcal{N}(0,\mathbf{I}_d)h ( x )=exp ( 2∣∣ × 2=1 f1=経験値D=N ( 0 ,d) ϕ ( x ) SM = 1 m exp ( − ∣ ∣ x ∣ ∣ 2 2 ) ( exp ( w 1 T x ) , . . , exp ( wm T x ) ) \phi(\mathbf{x} を得る)_{SM}=\frac{1}{\sqrt{m}}\text{exp}(-\frac{||\mathbf{x}||^2}{2})(\text{exp} (w_1^T\mathbf{x}),...,\text{exp}(w_m^T\mathbf{x}))ϕ ( x )SM=メートル 1exp ( 2∣∣ × 2) ( exp ( w1Tx ) ... 経験値( wメートルTx ))これを行うと、 exp \text{exp}を使用しているため、すべての値が正である
ことがわかります。exp、これで前の問題が解決されました。著者らは、同じカーネルにつながる代替機能マップも提案しました。興味があれば元の論文を読むことができます。

論文中の上記内容の説明:
Softmax の正のランダム機能

Softmax カーネル関数を使用して Q' と V' を求める

確認してみましょう。アテンションの式から始めます。Attendance ( Q , K , V ) = Softmax ( QKT d ) V \text{Attending}(\mathbf{Q},\mathbf{K},\mathbf{V})=\text{softmax }(\frac{\mathbf{Q}\mathbf{K}^T}{\sqrt{d}})\mathbf{V}注意( Q K V )=ソフトマックス(d Q KT) V は、次のように書き換えることができることを発見しました。
アテンション関数の書き換え次に、行列A \mathbf{A} をA :
ϕ ( x ) SM = 1 m exp ( − ∣ ∣ x ∣ ∣ 2 2 ) ( exp ( w 1 T x ) , . . . , exp ( wm T x ) ) \phi(\mathbf{x}) _{SM}=\frac{1}{\sqrt{m}}\text{exp}(-\frac{||\mathbf{x}||^2}{2})(\text{exp}( w_1^T\mathbf{x}),...,\text{exp}(w_m^T\mathbf{x}))ϕ ( x )SM=メートル 1exp ( 2∣∣ × 2) ( exp ( w1Tx ) ... 経験値( wメートルTx ))したがって、 A \mathbf{A} を
特徴マップにAの要素
: A ( i , j ) = K ( qi , kj ) = exp ( qiq T ) = ϕ SM ( qi T ) ϕ SM ( kj ) \mathbf{A}(i,j)=\mathbf{ K }(\mathbf{q}_i,\mathbf{k}_j)=\text{exp}(\mathbf{q}_i\mathbf{k}_j^T)=\phi_{SM}(\mathbf{q } _i^T)\phi_{SM}(\mathbf{k}_j)A (j )=K ( q私はkj)=exp ( q私はkjT)=ϕSM( qT) ϕSM( kj)長さLL
から始めることに注意してください。L \mathbf{q}_iのベクトル qiq私はkj \mathbf{k}_jkj長さmmに移動m \phi_{SM}(\mathbf{q}_i) のベクトルϕ SM ( qi )ϕSM( q私は)ϕ SM ( kj ) \phi_{SM}(\mathbf{k}_j)ϕSM( kj

これでA \mathbf{A}を変換できるようになりましたA はQ ' Q'に分解されますQK」「K」K'、ここでQ ' Q'QK」「K」K'の要素は ϕ SM ( qi ) \phi_{SM}(\mathbf{q}_i)ですϕSM( q私は)ϕ SM ( kj ) \phi_{SM}(\mathbf{k}_j)ϕSM( kj

最後に、行列の乗算の順序を自由に変更し、時間計算量をO ( L 2 d ) O(L^2d)から変更できます。O ( L2 d)O ( L md ) O(Lmd)に減少します。O ( L m d )なので、シーケンスの長さ全体にわたって 2 次ではなく 1 次の複雑さが実現されます。
時間の複雑さが軽減される

要約する

基本的に、この論文では、著者らは特徴マップの内積を使用してソフトマックス関数を近似する方法を見つけることができました。このため、トランスフォーマーでアテンションを計算する時間の複雑さは、シーケンスの長さに対して 2 次から線形に削減できます。つまり、指数演算が分割されて近似されます。これにより、長いシーケンスを処理する際のトランスフォーマーの速度が大幅に向上します。同時に、近似が保証される範囲で、カーネル法、正の値、直交性などの技術が使用されます。

さらに、次の点にも注意してください。

  • この方法はトランスを念頭に置いて開発されましたが、ソフトマックスを必要とする事実上すべてのモデルに適用できます
  • 著者らは、このアプローチは高速であるだけでなく、メモリ効率も高いことに注目しています。これは、保存する必要がある行列の次元を見ることでわかります。

コードの利用可能性

Performer: の PyTorch 実装。https://libraries.io/pypi/performer-pytorchインストール方法は次のとおりです。

pip install performer-pytorch==1.1.4

使用例:

import torch
from performer_pytorch import PerformerLM

model = PerformerLM(
    num_tokens = 20000,
    max_seq_len = 2048,             # max sequence length
    dim = 512,                      # dimension
    depth = 12,                     # layers
    heads = 8,                      # heads
    causal = False,                 # auto-regressive or not
    nb_features = 256,              # number of random features, if not set, will default to (d * log(d)), where d is the dimension of each head
    feature_redraw_interval = 1000, # how frequently to redraw the projection matrix, the more frequent, the slower the training
    generalized_attention = False,  # defaults to softmax approximation, but can be set to True for generalized attention
    kernel_fn = torch.nn.ReLU(),    # the kernel function to be used, if generalized attention is turned on, defaults to Relu
    reversible = True,              # reversible layers, from Reformer paper
    ff_chunks = 10,                 # chunk feedforward layer, from Reformer paper
    use_scalenorm = False,          # use scale norm, from 'Transformers without Tears' paper
    use_rezero = False,             # use rezero, from 'Rezero is all you need' paper
    ff_glu = True,                  # use GLU variant for feedforward
    emb_dropout = 0.1,              # embedding dropout
    ff_dropout = 0.1,               # feedforward dropout
    attn_dropout = 0.1,             # post-attn dropout
    local_attn_heads = 4,           # 4 heads are local attention, 4 others are global performers
    local_window_size = 256,        # window size of local attention
    rotary_position_emb = True,     # use rotary positional embedding, which endows linear attention with relative positional encoding with no learned parameters. should always be turned on unless if you want to go back to old absolute positional encoding
    shift_tokens = True             # shift tokens by 1 along sequence dimension before each block, for better convergence
)

x = torch.randint(0, 20000, (1, 2048))
mask = torch.ones_like(x).bool()

model(x, mask = mask) # (1, 2048, 20000)

参考リンク

  1. Google AI が Performer を導入: Transformer アーキテクチャに基づく汎用アテンション フレームワーク
  2. 出演者 - ピトーチ
  3. トランスフォーマーからパフォーマーへ: おおよその注目
  4. パフォーマーに対する注意力を再考する
  5. 大規模カーネル マシン向けのランダム機能
  6. パフォーマーに関する注意事項

おすすめ

転載: blog.csdn.net/ARPOSPF/article/details/132710212