
ディープラーニングにおいて、トランスフォーマーはマルチヘッドアテンションメカニズムに基づく人工ニューラルネットワークアーキテクチャのファミリーであり、テキストはトークンと呼ばれる数値表現に変換され、各トークンは単語埋め込みテーブルからのルックアップによってベクトルに変換されます。[ 1 ]各レイヤーでは、各トークンは並列マルチヘッドアテンションメカニズムを介してコンテキストウィンドウの範囲内で他の(マスクされていない)トークンとともに文脈化され、重要なトークンの信号が増幅され、重要度の低いトークンが減少するようになります。自己アテンションだけでは順列不変であるため、トランスフォーマーは通常、位置エンコーディングまたは学習された位置埋め込みを介して位置情報を注入し、トークンの順序が出力に影響を与える可能性があります。[ 1 ]
Transformer にはリカレント ユニットがないという利点があり、そのため、長短期記憶(LSTM)などの以前のリカレント ニューラル アーキテクチャ(RNN) よりもトレーニング時間が短くて済みます。[ 2 ]後期のバリエーションは、大規模な (言語)データセットで大規模言語モデル(LLM)をトレーニングするために広く採用されています。[ 3 ]最新の Transformer 設計は、表現学習、自己回帰生成、条件付きシーケンス ツー シーケンス タスクに最適化されているかどうかに応じて、エンコーダのみ、デコーダのみ、エンコーダとデコーダのバリアントに一般的に分類されます。[ 4 ]
トランスフォーマーアーキテクチャのオリジナルバージョンは、2017 年のGoogleの研究者による論文「 Attention Is All You Need 」で提案されました。[ 1 ]トランスフォーマーの前身は、機械翻訳の以前のアーキテクチャを改良するために開発されましたが、[ 5 ] [ 6 ]それ以来、多くのアプリケーションが見つかっています。大規模な自然言語処理、コンピュータビジョン(ビジョン トランスフォーマー)、強化学習、[ 7 ] [ 8 ]オーディオ、[ 9 ]マルチモーダル学習、ロボット工学、[ 10 ]およびチェスをプレイするのに使用されています。[ 11 ]また、生成事前学習トランスフォーマー(GPT) [ 12 ]やBERT [ 13 ] (トランスフォーマーからの双方向エンコーダ表現)などの事前学習済みシステムの開発にもつながりました。
長年にわたり、シーケンスのモデリングと生成は、単純なリカレントニューラルネットワーク(RNN)を使用して行われてきました。よく知られた初期の例としては、エルマンネットワーク(1990年)があります。理論的には、1つのトークンからの情報はシーケンスの任意の遠くまで伝播できますが、実際には、勾配消失問題により、長い文の末尾にあるモデルの状態は、先行するトークンに関する正確で抽出可能な情報を持たないままになります。
重要なブレークスルーはLSTM (元々は 1995 年の技術レポートで説明され、1997 年に正式に発表された) [ 2 ] [注 1 ]であり、これは RNN で、勾配消失問題を軽減するためのゲーティング メカニズムを導入し、長系列モデリングの効率的な学習を可能にしました。重要なアーキテクチャ要素の 1 つは乗算ゲーティング ユニットの使用であり、一部のニューロンの出力が他のニューロンの出力を調整します。これらの乗算ユニットは、後にシーケンス ツー シーケンス モデル用に導入された加算アテンション メカニズムとは概念的に異なります。 [ 14 ]乗算ユニットを使用するニューラル ネットワークは、後にシグマ パイ ネットワーク[ 15 ]または高次ネットワーク[ 16 ]と呼ばれるようになりました。LSTMは、2017 年にトランスフォーマーが発表されるまで、長系列モデリングの標準アーキテクチャとなりました。しかし、LSTM は、他のほとんどの RNN と同様に、依然として逐次処理を使用していました。[注 2 ]具体的には、RNN は、最初から最後まで 1 つのトークンずつ処理します。それらは、シーケンス内のすべてのトークンに対して並列に動作することはできません。
現代のトランスフォーマーはこの問題を克服しますが、RNNとは異なり、コンテキストウィンドウのサイズの2乗に比例する計算時間が必要です。線形スケーリング高速重みコントローラ(1992)は、入力に応じてさらなる処理のための重み行列を計算することを学習します。[ 17 ]その2つのネットワークのうちの1つは、「高速重み」または「動的リンク」(1981)を持っています。[ 18 ] [ 19 ] [ 20 ]低速ニューラルネットワークは、勾配降下法によって、クエリに対する回答を計算する高速ニューラルネットワークの重みの変化を計算するためのキーと値を生成することを学習します。[ 17 ]これは後に、非正規化線形トランスフォーマーと同等であることが示されました。[ 21 ] [ 22 ]
エンコーダー・デコーダー配列変換のアイデアは2010年代初頭に開発されました。seq2seqを開発した創始者としてよく挙げられるのは、2014年に同時期に発表された2つの論文です。[ 23 ] [ 24 ]
機械翻訳用の 380M パラメータ モデルは、2 つの長短期記憶(LSTM) を使用します。[ 24 ]そのアーキテクチャは 2 つの部分で構成されています。エンコーダはトークンのシーケンスを入力として受け取り、それをベクトルに変換する LSTM です。デコーダは、ベクトルをトークンのシーケンスに変換する別の LSTM です。同様に、別の 130M パラメータ モデルでは、 LSTM の代わりにゲート付きリカレント ユニット(GRU) を使用しました。[ 23 ]その後の研究では、GRU は seq2seq に対して LSTM より優れているわけでも劣っているわけでもないことが示されました。[ 25 ] [ 26 ]
これらの初期の seq2seq モデルには注意機構がなく、状態ベクトルはソース テキストの最後の単語が処理された後にのみアクセス可能です。理論的にはこのようなベクトルは元の文全体の情報を保持しますが、実際には情報は十分に保持されません。これは、入力が 1 つのリカレント ネットワークによって固定サイズの出力ベクトルに順次処理され、それが別のリカレント ネットワークによって出力に処理されるためです。入力が長い場合、出力ベクトルには関連するすべての情報を含めることができず、出力が劣化します。証拠として、入力文を反転すると seq2seq 翻訳が改善されました。[ 27 ]
RNN検索モデルは、機械翻訳のseq2seqにアテンションメカニズムを導入し、ボトルネック問題(固定サイズの出力ベクトル)を解決し、モデルが長距離の依存関係をより容易に処理できるようにしました。この名前は、「翻訳のデコード中にソース文を検索することを模倣する」ことに由来しています。[ 5 ]
機械翻訳におけるグローバル( RNN検索)とローカル(スライディングウィンドウ)のアテンションモデルアーキテクチャの相対的なパフォーマンスを比較したところ、混合アテンションはグローバルアテンションよりも品質が高く、ローカルアテンションは翻訳時間を短縮することがわかった。[ 28 ]
2016年、Google翻訳はGoogleニューラル機械翻訳に刷新され、統計的機械翻訳に基づく以前のモデルに取って代わりました。新しいモデルはseq2seqモデルで、エンコーダーとデコーダーの両方が双方向LSTMの8層でした。[ 29 ]開発には9ヶ月かかり、開発に10年かかった統計的手法を凌駕しました。[ 30 ]
アテンション(自己アテンションを含む)を備えた Seq2seq モデルは、依然としてリカレント ネットワークと同じ問題を抱えていました。それは、並列化が難しく、GPU 上で高速化できないという問題です。2016 年、分解可能なアテンションは、並列化が容易なフィードフォワード ネットワークに自己アテンション メカニズムを適用し、 LSTM よりも桁違いに少ないパラメータでテキスト含意のSOTA結果を達成しました。 [ 31 ]その著者の 1 人である Jakob Uszkoreit は、リカレンスのないアテンションで言語翻訳には十分であると推測し、タイトルは「アテンションだけで十分」となっています。[ 32 ]この仮説は当時の常識に反しており、彼の父親で有名な計算言語学者であるHans Uszkoreitでさえ懐疑的でした。 [ 32 ]同年、LSTM 用に自己アテンション(イントラアテンションまたはイントラセンテンス アテンションと呼ばれる)が提案されました。[ 33 ]
2017年6月12日、オリジナルの(1億パラメータの)エンコーダー・デコーダー変換モデルが「Attention is all you need」という論文で発表されました。当時、研究の焦点は、機械翻訳用のseq2seqを改善することであり、すべてのトークンを並列処理するために再帰性を排除しつつ、テキスト処理性能を維持するためにドット積アテンションメカニズムを維持することでした。[ 1 ]これにより、独立したヘッドの使用と再帰性の欠如により並列化が容易なマルチヘッドアテンションモデルが導入されました。その並列化可能性は、大規模ニューラルネットワークでの普及の重要な要素となりました。[ 34 ]
2017年の春には、「Attention is all you need」というプレプリントが公開される前から、共著者の1人が「デコーダのみ」のアーキテクチャのバリエーションを適用して架空のWikipedia記事を生成していました。[ 35 ] Transformerアーキテクチャは現在、進行中のAIブームに貢献する多くの生成モデルとともに使用されています。
オリジナルのTransformerの「リファレンス実装」はTensorFlowライブラリで記述されました。[ 36 ] [ 37 ]言語モデリングでは、ELMo(2018)は双方向LSTMで、単語バッグとword2vecの研究の流れを改良し、文脈化された単語埋め込みを生成しました。その後、エンコーダーのみのTransformerモデルであるBERT (2018)が登場しました。 [ 38 ] 2019年10月、GoogleはBERTを使用して検索クエリの処理を開始しました。[ 39 ] 2020年、Google翻訳は以前のRNNエンコーダー-RNNデコーダーモデルをTransformerエンコーダー-RNNデコーダーモデルに置き換えました。[ 40 ]
2018年から、OpenAI GPTシリーズのデコーダー専用トランスフォーマーが自然言語生成の最先端となった。2022年末には、GPT-3.5のファインチューニング版に基づくチャットボットChatGPTが予想外の人気を博し[ 41 ] [ 42 ] 、大規模言語モデルをめぐるブームを引き起こした[ 43 ] [ 44 ]。
Transformer はテキスト以外のモダリティにも適用されています。「Attention is All You Need」の発表から 4 日後、その論文のほとんどの著者によってマルチモーダルTransformer アーキテクチャである MultiModel が発表されました。[ 45 ]他の例としては、ビジョン Transformer、[ 46 ]音声認識、[ 47 ]ロボット工学、[ 7 ]およびマルチモーダル[ 48 ]があります。ビジョン Transformer は、畳み込みニューラル ネットワークの新たな開発を刺激しました。[ 49 ] DALL-E (2021)、Stable Diffusion 3 (2024)、[ 50 ]およびSora (2024)などの画像およびビデオ ジェネレータは、Transformer を使用して入力データ (テキスト プロンプトなど) を「トークン」に分解し、自己注意を使用して各トークン間の関連性を計算することで分析します。これにより、モデルはデータ内のコンテキストと関係を理解することができます。
単純なトランスフォーマーアーキテクチャでは収束が困難でした。元の論文[ 1 ]では、学習率ウォームアップの使用が推奨されています。つまり、学習率はトレーニングの最初の部分で0から最大値まで線形に増加し(通常はトレーニングステップの総数の2%が推奨されます)、その後再び減少します。
2020年の論文では、マルチヘッドアテンション層とフィードフォワード層の前に(後ではなく)レイヤー正規化を使用すると、学習率のウォームアップを必要とせずにトレーニングが安定することがわかった。[ 51 ]これは「pre-LN Transformer」と呼ばれ、元の「post-LN Transformer」と比較してより一般的に使用されている。
Transformerは通常、まず大規模な汎用データセットで自己教師あり学習によって事前学習され、その後、小規模なタスク固有のデータセットで教師ありファインチューニングが行われます。事前学習データセットは通常、 The Pileのようなラベルなしの大規模コーパスです。事前学習とファインチューニングのタスクには、一般的に以下のようなものがあります。
T5トランスフォーマーレポート[ 52 ]には、多数の自然言語事前学習タスクが記載されています。いくつかの例を挙げると次のようになります。
これらのタスクは、その言語(または複数の言語)を母語とする人間にとっては些細なこと、あるいは明白なことである一方、これまでの世代の機械学習アーキテクチャにとっては、一般的に困難な課題であった。
一般的に、言語モデリングタスクには「マスク型」、「自己回帰型」、「接頭辞LM」の3つのクラスがあります。 [ 54 ]これらのクラスは、トランスフォーマーなどの特定のモデリングアーキテクチャとは独立していますが、トランスフォーマーの文脈で議論されることがよくあります。
マスクタスクでは、[ 54 ] 1 つ以上のトークンがマスクされ、モデルはコンテキストに基づいてマスクされたトークンが何であるかを予測する確率分布を生成します。タスクの損失関数は通常、マスクされたトークンのログパープレキシティの合計です。そして、この損失関数を最小化するようにモデルが訓練されます。BERTシリーズのモデルは、マスクされたトークン予測と別のタスクのために訓練されます。(「マスクされた言語モデリング」における「マスクされた」は、「マスクされたアテンション」における「マスクされた」とは異なります。)
自己回帰タスクでは、[ 55 ]最初はシーケンス全体がマスクされ、モデルは最初のトークンの確率分布を生成します。次に最初のトークンが公開され、モデルは2番目のトークンを予測し、以下同様です。タスクの損失関数は通常同じです。GPTシリーズのモデルは自己回帰タスクでトレーニングされます。
prefixLMタスク[ 56 ]では、シーケンスは2つの部分に分割されます。最初の部分はコンテキストとして提示され、モデルは2番目の部分の最初のトークンを予測します。次にそれが明らかにされ、モデルは2番目のトークンを予測し、以下同様に続きます。タスクの損失関数は通常同じです。T5シリーズのモデルはprefixLMタスクによってトレーニングされます。(「prefixLM」は「 prefix language modeling」の「prefixLM」とは異なります。)
すべての変圧器は、同じ主要部品で構成されています。
以下の説明は、原著論文に記載されている変圧器と全く同じものです。ただし、いくつかのバリエーションがあり、それらについては次のセクションで説明します。
慣例として、すべてのベクトルを行ベクトルとして記述します。たとえば、ベクトルを線形層に通すということは、右側の重み行列を乗算することを意味します。。
トランスフォーマーのアーキテクチャは、テキストではなく数値に対する演算(行列乗算、内積、活性化関数)を基本としているため、まず入力テキストを何らかの数値表現にマッピングする必要があります。これは3つのステップで行われます。
まず、入力テキストはプリプロセッサによって処理され、テキスト変換とテキストをプレトークンと呼ばれる粗粒度セグメントへの分割が行われます。後者はプレトークン化と呼ばれます。次に、各プレトークンはトークナイザによってさらにトークンに分割されます。トークナイザは、プリプロセッサが出力するプレトークンのみを対象とすることを想定しています。トークナイザが生成する各トークンは、語彙と呼ばれる有限の文字列セットに属する1つ以上の文字からなる文字列です。第三に、語彙は有限で事前に既知であるため、各トークンに整数識別子を割り当てることができ、このマッピングをトークンのシーケンスに適用することで、入力テキストを数値シーケンスとして表現できます。このマッピングは全単射であるため、出力側では整数識別子のシーケンスを生成でき、それを再びトークンに戻すことができます。前処理の一部を元に戻すと、結果は再び判読可能なテキストになります。
トークナイザーのトレーニング(語彙化と呼ばれることもある)とは、適切な語彙を見つけることである。しかし、それの使い方を学ぶことも重要です。なぜなら、任意の文字列は長さもっている仮説的なセグメンテーションの中には、語彙に含まれていないセグメントを含むものもある。語彙化において最も重要なハイパーパラメータは語彙サイズである。語彙が小さい場合、学習される語彙は一般的に文字や短い文字列で構成され、単語は多数のトークンに分割されます。語彙が大きくなると、単語全体にトークンを割り当てることが可能になりますが、プリプロセッサやトークナイザによっては、語彙が大きい場合でも、単語を分割するために常に利用可能な最大のトークンが使用されるとは限りません。
トークンは必ずしも完全な単語ではないため、サブワードと呼ばれることもあり、トークン化アルゴリズムはサブワードトークナイザーと呼ばれることもあります。これは、これらのシステムを、従来の情報検索および自然言語処理システムで使用されていた用語と区別するためでもあります。従来の用語では、「トークン化」は、今日「プレトークン化」(非常に大まかに言えば、単語への分割)と呼ばれるものを指すために使用されていました。語彙に含まれないトークンを生成するトークナイザーでは、語彙に属する特別なトークンが汎用的な代用品として使用され、「unknown」を表す「[UNK]」と表記されます。原則として、任意の文字列をこのような[UNK]で隠すことができます。実際、情報検索では、プレトークナイザー自体が、単語レベルの語彙に[UNK]を含むトークナイザー(「トークナイザー」とも呼ばれる)として使用されていました。
一般的に使用されるサブワードトークン化アルゴリズムは、バイトペアエンコーディング(BPE)とユニグラム言語モデル(ULM)であり、それぞれに語彙化アルゴリズムと専用のセグメンテーションアルゴリズムが含まれています。また、学習を必要とせず、語彙(たとえば、BPEまたはULMによって生成されたもの)が与えられた場合に適用できるセグメンテーションアルゴリズムもいくつか存在します。たとえば、プレトークンを左から右に移動してトークンを貪欲に認識するアルゴリズムなどです。サブワードトークナイザーのよく知られたソフトウェア実装としては、Hugging FaceのtokenizersRustで実装されたPythonパッケージと、sentencepieceC++で実装されたPythonパッケージがあります。後者のパッケージは、その設定オプションの1つで組み込みのプレトークナイザーを無効にすることができるため、そのように名付けられています。これにより、文全体がプレトークンとなり、トークナイザーは個々の単語ではなく文全体を認識するようになります。
各整数トークン識別子は、ルックアップテーブルを介して埋め込みベクトルに変換されます。言い換えれば、トークン識別子のワンホット表現に埋め込み行列を乗算します。例えば、入力トークンの識別子がすると、ワンホット表現は、そしてその埋め込みベクトルはトークン埋め込みベクトルは、それぞれの位置エンコーディングベクトル(下記参照)に追加され、入力ベクトルのシーケンスが生成されます。
埋め込みベクトルの次元は隠れサイズまたは埋め込みサイズと呼ばれ、次のように表記されます。[ 38 ]このサイズは次のように表記されます。オリジナルの変圧器論文において。[ 1 ]
アンエンベディング層は、エンベディング層のほぼ逆の働きをします。エンベディング層がトークン識別子をベクトルに変換するのに対し、アンエンベディング層はベクトルをトークンの確率分布に変換します。

アンエンベディング層は線形ソフトマックス層です。行列の形状はアーキテクチャによっては、埋め込み行列の転置行列を使用するものもあります。非埋め込み行列として埋め込み関連のパラメータを2倍必要とするのを避け、トレーニング中に発散するのを避けるため。この手法は重みタイイングと呼ばれます。[ 57 ]

位置エンコーディングとは、シーケンス内のトークンの相対的な位置を固定サイズのベクトルで表現したものです。これにより、トランスフォーマーモデルは入力シーケンス内の単語の位置に関する情報を得ることができます。このエンコーディングは入力シーケンスの順序に偏りをもたらすため、例えば「man bites dog」という入力シーケンスは「dog bites man」とは異なる処理を受けることになります。
位置エンコーディングは、型の関数として定義されます。、 どこは正の偶数です。元の論文[ 1 ]で定義されている完全な位置符号化は次のとおりです。どこ。
ここ、は、最大値よりもかなり大きい自由パラメータであるべきである。これは位置符号化関数に入力されます。元の論文では、。
この関数は、型が複素関数として記述すると、より単純な形式になります。どこ。
この位置符号化関数を使用する主な理由は、これを使用するとシフトが線形変換になるからです。どこは、移動させたい距離です。これにより、トランスフォーマーは任意のエンコードされた位置を受け取り、行列乗算によって、nステップ先またはnステップ後ろの位置のエンコードを求めることができます。
線形和を取ることで、あらゆる畳み込み演算を線形変換として実装することも可能です。任意の定数に対してこれにより、トランスフォーマーは任意のエンコードされた位置を受け取り、その近傍のエンコードされた位置の線形和を求めることができます。このエンコードされた位置の和をアテンション機構に入力すると、畳み込みニューラルネットワークの言語モデルと同様に、近傍にアテンション重みが生成されます。著者の言葉を借りれば、「これにより、モデルは相対位置によるアテンションを容易に学習できると我々は仮説を立てた」ということです。
一般的な実装では、すべての演算は複素数ではなく実数に対して行われますが、複素数の乗算は実数の2×2行列の乗算として実装できるため、これは単なる表記上の違いにすぎません。


以前のseq2seqモデルと同様に、オリジナルのトランスフォーマーモデルはエンコーダー・デコーダーアーキテクチャを採用していました。エンコーダーは、入力トークンをすべてまとめて1層ずつ処理するエンコード層で構成され、デコーダーは、エンコーダーの出力とデコーダーのこれまでの出力トークンを繰り返し処理するデコード層で構成されます。
各エンコーダー層の目的は、トークンの文脈化された表現を作成することであり、各表現は、自己注意機構を介して他の入力トークンからの情報を「混合」するトークンに対応します。各デコーダー層には、2 つの注意サブレイヤーが含まれています。(1) エンコーダーの出力 (文脈化された入力トークン表現) を取り込むためのクロス注意、および (2) デコーダーへの入力トークン (推論時間中にこれまでに生成されたトークン) 間で情報を「混合」するための自己注意。[ 58 ] [ 59 ]
エンコーダ層とデコーダ層の両方に、出力の追加処理のためのフィードフォワードニューラルネットワークがあり、残差接続と層正規化ステップが含まれています。 [ 59 ]これらのフィードフォワード層には、トランスフォーマーモデルのほとんどのパラメータが含まれています。

トランスフォーマー内のフィードフォワードネットワーク(FFN)モジュールは、2層構造の多層パーセプトロンである。どこそしては重み行列であり、そして はバイアスベクトルであり、は活性化関数です。元のトランスフォーマーはReLU活性化関数を使用していました。
中間層のニューロン数は、GPTでは中間サイズ[ 60 ] 、 BERTではフィルタサイズ[ 38 ] 、 BERTではフィードフォワードサイズ[ 38 ]と呼ばれます。通常、埋め込みサイズよりも大きくなります。例えば、GPT-2シリーズとBERTシリーズの両方において、モデルの中間サイズは埋め込みサイズの4倍です。。


トランスフォーマーアーキテクチャで使用されるアテンションメカニズムは、スケーリングされたドット積アテンションユニットです。各ユニットについて、トランスフォーマーモデルは、クエリ重み、主要な重み、および値の重み。
このモジュールは、クエリシーケンス、キーシーケンス、値シーケンスの3つのシーケンスを受け取ります。クエリシーケンスは長さのシーケンスです。、各エントリは次元のベクトルですキーと値のシーケンスについても同様です。
各ベクトルについてクエリシーケンスでは、行列が乗算されます。クエリベクトルを生成するすべてのクエリベクトルの行列がクエリ行列です。同様に、キー行列を構築します。そして値行列。
通常は、正方行列であるということは、など
アテンション重みはクエリベクトルとキーベクトルを使用して計算されます。トークンからトークンは、そして注意重みはキーベクトルの次元の平方根で割られ、トレーニング中に勾配を安定させ、重みを正規化するソフトマックスを通した。そして異なる行列は、注意が非対称になることを可能にします。トークンの場合トークンに注意を払う(つまり)トークンが大きいということは必ずしもトークンが大きいことを意味するわけではありませんトークンに対応します(つまり)小さい場合もある)。トークンに対するアテンションユニットの出力は、すべてのトークンの値ベクトルの重み付き合計であり、トークンからの注目各トークンに対して。
すべてのトークンに対するアテンション計算は、ソフトマックス関数を使用した1つの大きな行列計算として表現できます。これは、行列演算を高速に計算する計算行列演算最適化により、トレーニングに役立ちます。、そしては、th行はベクトルです、、 そしてそれぞれ。すると、注意を次のように表すことができます。
ここで、ソフトマックス関数は行列の各行に適用されます。
クエリベクトルの次元数はクエリサイズです鍵のサイズについても同様です値の大きさアテンションヘッドの出力次元は、そのヘッド次元である。注意機構は、以下の3つの等式が成り立つことを必要とする。しかし、それ以外は制約を受けない。
アテンションヘッドが自己アテンション方式で使用される場合、注意ヘッドがクロスアテンション方式で使用される場合、通常は理論的には、これら3つすべてが異なることもあり得るが、実際にはそのようなケースは稀である。


1セット行列はアテンションヘッドと呼ばれ、トランスフォーマーモデルの各層には複数のアテンションヘッドがあります。各アテンションヘッドは各トークンに関連するトークンに注目しますが、複数のアテンションヘッドにより、モデルは「関連性」の異なる定義に対してこれを行うことができます。具体的には、クエリおよびキー射影行列、そして注意スコアの計算に関与する要素は、「関連性」を定義します。一方、値射影行列は出力射影行列の一部と組み合わせては、注目されたトークンが、後続のレイヤーに渡される情報、そして最終的には出力ロジットにどのように影響するかを決定します。さらに、各アテンションヘッドによって捕捉されるトークン関係の範囲、つまりアテンションの範囲は、トークンが連続するレイヤーを通過するにつれて拡大することができます。これにより、モデルはより深いレイヤーでより複雑で長距離の依存関係を捕捉することができます。多くのトランスフォーマーアテンションヘッドは、人間にとって意味のある関連性関係をエンコードします。たとえば、一部のアテンションヘッドは主に次の単語に注目できますが、他のアテンションヘッドは主に動詞からその直接目的語に注目します。[ 61 ]各アテンションヘッドの計算は並列で実行できるため、高速な処理が可能になります。アテンションレイヤーの出力は連結され、フィードフォワードニューラルネットワークレイヤーに渡されます。
具体的には、複数のアテンションヘッドを以下のようにインデックス付けします。すると、行列は単語埋め込みの連結であり、行列は個々のアテンションヘッドが所有する「射影行列」、 そしてこれは、マルチヘッドアテンションヘッド全体が所有する最終射影行列です。
理論的には、各アテンションヘッドが異なるヘッド次元を持つことが可能である。しかし、実際にはそのようなケースは稀である。
例えば、最小のGPT-2モデルには自己注意機構のみが含まれています。その次元は以下のとおりです。以来その出力射影行列正方行列です。
トランスフォーマーアーキテクチャは、出力トークンを反復的に計算するように構築されています。最初の出力トークンの計算を指しますステップ1出力トークンは一定のままである。これにより、モデルの特性が自己回帰モデルと同様になることが保証される。[ 1 ]したがって、各タイムステップにおいてすべての出力の計算その位置のトークンにはアクセスできないはずですのために(時間ステップの場合、当然そうなる)トークンが(まだ計算されていません)。この動作は、ソフトマックス段階の前にマスク行列を追加することで実現できます。それは注意のつながりを断ち切る必要があるエントリで、他の場所で:以下の行列は、デコーダーの自己注意モジュールで一般的に使用され、「因果マスキング」と呼ばれます。
言葉で言うと、各トークンは自身とそれより前のすべてのトークンには注意を向けられますが、それ以降のトークンには注意を向けられません。マスクされていないアテンションモジュールは、マスクのすべてのエントリがゼロであるマスクされたアテンションモジュールと考えることができます。マスク行列のあまり一般的ではない使用例として、XLNet は次の形式のすべてのマスクを考慮します。、 どこはランダム置換行列である。[ 62 ]

エンコーダは、埋め込み層と、それに続く複数のエンコーダ層から構成される。
各エンコーダ層は、自己注意機構とフィードフォワード層という2つの主要な構成要素から成ります。入力ベクトルのシーケンスを入力として受け取り、自己注意機構を適用して中間的なベクトルシーケンスを生成し、その後、各ベクトルに対して個別にフィードフォワード層を適用します。概略図は以下のとおりです。
どこは「フィードフォワードネットワーク」の略です。より簡潔に書くと次のようになります。暗黙の了解として、これは、行列の各行に個別に適用されます。
エンコーダー層は積み重ねられています。最初のエンコーダー層は、埋め込み層から入力ベクトルのシーケンスを受け取り、ベクトルのシーケンスを生成します。このベクトルのシーケンスは2番目のエンコーダーで処理され、以下同様に処理が続きます。最後のエンコーダー層からの出力は、デコーダーで使用されます。
エンコーダーは入力全体を一度に処理するため、すべてのトークンが他のすべてのトークンに注意を向けることができ(全対全アテンション)、因果マスキングは不要です。

デコーダは、埋め込み層、それに続く複数のデコーダ層、そして最後に非埋め込み層から構成される。
各デコーダは、因果的にマスクされた自己注意機構、相互注意機構、およびフィードフォワードニューラルネットワークの 3 つの主要コンポーネントで構成されています。デコーダはエンコーダと同様の方法で機能しますが、エンコーダによって生成されたエンコーディングから関連情報を引き出す追加の注意機構が挿入されています。この機構は、エンコーダー・デコーダー注意とも呼ばれます。[ 1 ] [ 59 ]
最初のエンコーダと同様に、最初のデコーダは、エンコーディングではなく、出力シーケンスの位置情報と埋め込みを入力として受け取ります。トランスフォーマーは、出力を予測するために現在または将来の出力を使用してはならないため、この逆方向の情報フローを防ぐために出力シーケンスを部分的にマスクする必要があります。[ 1 ]これにより、自己回帰的なテキスト生成が可能になります。デコーディングでは、トークンがまだ生成されていないトークンに注意を向けることができないため、全対全アテンションは不適切です。したがって、デコーダの自己アテンションモジュールは因果的にマスクされます。
対照的に、クロスアテンション機構はエンコーダの出力ベクトルに注目するが、これはデコーダがデコードを開始する前に計算される。したがって、クロスアテンション機構ではマスキングは不要である。
概略的に言うと、次のようになります。どこは、エンコーダからの出力ベクトルを行とする行列です。
最後のデコーダーの後には、語彙に対する出力確率を生成するための最終的なアンエンベディング層が続きます。次に、その確率に基づいてトークンの1つがサンプリングされ、デコーダーが再度実行されて次のトークンが生成されます。このようにして、出力テキストが自己回帰的に生成されます。

各エンコーダー層は、自己注意機構とフィードフォワードネットワークの2つのサブレイヤーで構成されています。各デコーダー層は、因果的にマスクされた自己注意機構、クロスアテンション機構、およびフィードフォワードネットワークの3つのサブレイヤーで構成されています。




最後に、残差接続と層正規化(以下「LayerNorm」または「LN」と表記)について説明します。これらは概念的には不要ですが、数値の安定性と収束のために必要です。
残差接続は、勾配消失問題を回避し、トレーニングプロセスを安定させるために導入されます。これらは次のように表現できます。、 どこは変圧器の既知の構成要素です。入力を追加すると入力情報を保持し、勾配がゼロに近い。
フィードフォワードネットワークモジュールが各ベクトルに個別に適用されるのと同様に、LayerNormも各ベクトルに個別に適用されます。
一般的に使用されている規約は 2 つあります。ポスト LN規約とプレ LN規約です。ポスト LN 規約では、各サブレイヤーの出力は次のようになります。どここれは、サブレイヤー自体によって実装される機能です。
LN以前の慣例では、各サブレイヤーの出力はオリジナルの2017年のトランスフォーマーはポストLN規約を使用していた。これはトレーニングが難しく、ハイパーパラメータの慎重な調整と、学習率を小さくして徐々に増加させる「ウォームアップ」が必要だった。2018年に何度か提案されたプレLN規約[ 63 ]は、ウォームアップが不要でトレーニングが容易で、収束が速いことがわかった[ 51 ] 。
以下は、 Formal Algorithms for Transformers [ 64 ]から改変した、標準的な前LNエンコーダ・デコーダトランスフォーマーの擬似コードです。
入力:エンコーダ入力 t_e デコーダ入力 t_d 出力:確率分布の配列。形状は(デコーダ語彙サイズ×デコーダ出力シーケンスの長さ) /* エンコーダー */ z_e ← encoder.tokenizer(t_e) 1:length(z_e)の各tについて、 z_e[t] ← encoder.embedding(z_e[t]) + encoder.positional_embedding(t) エンコーダーのレイヤーの長さ1から長さまでの各lについて、 レイヤー ← encoder.layers[l] /* 最初のサブレイヤー */ z_e_copy ← copy(z_e) 1:length(z_e)の各tについて、 z_e[t] ← layer.layer_norm(z_e[t]) z_e ←layer.multihead_attention(z_e, z_e, z_e) 1:length(z_e)の各tについて、 z_e[t] ← z_e[t] + z_e_copy[t] /* 2番目のサブレイヤー */ z_e_copy ← copy(z_e) 1:length(z_e)の各tについて、 z_e[t] ← layer.layer_norm(z_e[t]) z_e ← layer.feedforward(z_e) 1:length(z_e)の各tについて、 z_e[t] ← z_e[t] + z_e_copy[t] 1:length(z_e)の各tについて、 z_e[t] ← encoder.final_layer_norm(z_e[t]) /* デコーダー */ z_d ← decoder.tokenizer(t_d) 1:length(z_d)の各tについて、 z_d[t] ← decoder.embedding(z_d[t]) + decoder.positional_embedding(t) 各lについて1 :length(decoder.layers)を実行する レイヤー ← decoder.layers[l] /* 最初のサブレイヤー */ z_d_copy ← copy(z_d) 1:length(z_d)の各tについて、 z_d[t] ← layer.layer_norm(z_d[t]) z_d ← layer.masked_multihead_attention(z_d, z_d, z_d) 1:length(z_d)の各tについて、 z_d[t] ← z_d[t] + z_d_copy[t] /* 2番目のサブレイヤー */ z_d_copy ← copy(z_d) 1:length(z_d)の各tについて、 z_d[t] ← layer.layer_norm(z_d[t]) z_d ←layer.multihead_attention(z_d, z_e, z_e) 1:length(z_d)の各tについて、 z_d[t] ← z_d[t] + z_d_copy[t] /* 第三のサブレイヤー */ z_d_copy ← copy(z_d) 1:length(z_d)の各tについて、 z_d[t] ← layer.layer_norm(z_d[t]) z_d ← layer.feedforward(z_d) 1:length(z_d)の各tについて、 z_d[t] ← z_d[t] + z_d_copy[t] z_d ← decoder.final_layer_norm(z_d) 出力分布 ← [] 1:length(z_d)の各tについて、 output_distributions.append(decoder.unembed(z_d[t])) 出力分布を返す
トランスフォーマーのアーキテクチャはモジュール式であるため、様々なバリエーションが可能です。ここでは、いくつかの一般的なバリエーションについて説明します。[ 52 ]
「エンコーダのみ」のトランスフォーマーは、エンコーダを使用して入力テキストを、入力テキストを表すベクトルのシーケンスにマッピングします。これは通常、テキスト埋め込みや、下流アプリケーション向けの表現学習に使用されます。BERTはエンコーダのみです。エンコーダとデコーダのトランスフォーマーをトレーニングしてからエンコーダだけを使用するよりも大幅に優れているわけではないことがわかったため、現在ではあまり使用されていません。[ 56 ]これらは「オールツーオール」または「BERT ライク」とも呼ばれます。
「デコーダのみ」のトランスフォーマーは、文字通りデコーダのみというわけではありません。エンコーダがなければ、クロスアテンション機構は注意を向けるものがないからです。したがって、デコーダのみのトランスフォーマーのデコーダ層は、因果的にマスクされた自己アテンションとフィードフォワードネットワークという2つのサブレイヤーのみで構成されます。これは通常、テキスト生成や指示追従に使用されます。GPTシリーズとChinchillaシリーズのモデルはデコーダのみのモデルです。これらは「自己回帰型」または「因果型」とも呼ばれます。
「エンコーダー・デコーダー」トランスフォーマーは、一般的に元のトランスフォーマーと同じで、エンコーダー層ごとに2つのサブレイヤー、デコーダー層ごとに3つのサブレイヤーなどを備えています。代替の活性化関数、正規化の位置の変更など、軽微なアーキテクチャ上の改良が加えられている場合があります。これは通常、テキスト生成や命令追従にも使用されます。T5シリーズのモデルはエンコーダー・デコーダーです。[ 52 ]
「prefixLM」(prefix言語モデル)はデコーダのみのアーキテクチャですが、因果マスキングとは異なるプレフィックスマスキングを備えています。具体的には、[ 52 ]の形式のマスクを持ちます:図3最初の列は「接頭辞」に対応し、後続の列は接頭辞に基づいて自己回帰的に生成されたテキストに対応します。これらはエンコーダー・デコーダーモデルに似ていますが、「スパース性」は低くなっています。このようなモデルは、理論的な可能性やベンチマーク比較として引用されることはありますが、実際に使用されることは稀です。[ 56 ]
混合型のseq2seqモデルもあります。例えば、2020年にGoogle翻訳は、以前のRNNエンコーダー-RNNデコーダーモデルをトランスフォーマーエンコーダー-RNNデコーダーモデルに置き換えました。これは、エンコーダーとは異なり、トランスフォーマーベースのデコーダーでは品質が大幅に向上しないように見えた一方、RNNデコーダーははるかに高速だったためです。[ 40 ]
オリジナルのトランスフォーマーはReLU活性化関数を使用しています。他の活性化関数も開発されました。LlamaシリーズとPaLM はSwiGLU を使用しています。 [ 65 ] GPT-1 と BERT [ 38 ]はどちらもGELU を使用しています。[ 66 ]
フィードフォワードモジュールでは、代替活性化関数がゲート付き線形ユニットと組み合わせて使用されることが多い。 [ 65 ]
トランスフォーマーで使用される正規化は、LayerNorm とは異なる場合があります。 1 つの例として、Llama シリーズで使用されているRMSNorm [ 67 ]があります。その他の例としては、ScaleNorm [ 68 ]と FixNorm [ 68 ]があります。
トランスフォーマーは正弦波以外の位置符号化方式を使用する場合があります。[ 69 ]
オリジナルのトランスフォーマー論文では、学習された位置エンコーディングの使用が報告されたが、[ 70 ]正弦波エンコーディングよりも優れているとは見出されなかった。[ 1 ]その後、[ 71 ]は、因果マスキング自体がトランスフォーマーデコーダに十分な信号を提供し、位置エンコーディングモジュールなしで暗黙的に絶対位置エンコーディングを実行することを学習できることを発見した。
RoPE(回転位置埋め込み)[ 72 ]は、 2次元ベクトルのリストを考えることで最もよく説明できます。さあ、角度を選んでみようすると、RoPEエンコーディングは同様に、2次元ベクトルを複素数として表すと、つまり、RoPEエンコーディングは角度による乗算に過ぎない。リストについては次元ベクトル、RoPEエンコーダは一連の角度によって定義される次に、各座標ペアにRoPEエンコーディングが適用されます。
RoPEの利点は、2つのベクトルの内積がそれらの相対的な位置のみに依存する点です。 任意の整数に対して。
ALiBi (Attention with Linear Biases) [ 73 ]は、元のトランスフォーマーの位置エンコーダの代替品ではありません。むしろ、アテンション機構に直接接続される追加の位置エンコーダです。具体的には、ALiBi アテンション機構はここ、は実数(「スカラー」)であり、は、次のように定義される線形バイアス行列である。言い換えると、線形バイアス行列は、ソフトマスクであるという考え方です。十分な注意を払ったことを表し、これは、注意が払われていないことを表し、線形バイアス行列は、一方の方向への注意の払われを増加させ、もう一方の方向への注意の払われを減少させます。
ALiBiは、短いコンテキストウィンドウで事前学習を行い、その後、より長いコンテキストウィンドウで微調整を行うことができます。アテンション機構に直接組み込まれているため、ネットワーク全体の「下部」に接続される任意の位置エンコーダと組み合わせることができます(これは、オリジナルのトランスフォーマーの正弦波エンコーダやRoPE、その他多くのエンコーダが配置されている場所です)。
相対位置符号化[ 74 ]はALiBiに似ているが、より汎用的である。どこはトープレッツ行列である。つまり、いつでもこれは、元の正弦波位置符号化とは対照的であり、元の正弦波位置符号化は「絶対位置符号化」である。[ 75 ]
トランスフォーマーモデルは、TensorFlowやPyTorchなどの標準的な深層学習フレームワークに実装されています。TransformersはHugging Faceが作成したライブラリで、トランスフォーマーベースのアーキテクチャと事前学習済みモデルを提供します。[ 12 ]
テキスト生成などの推論に自己回帰トランスフォーマーを使用する場合、クエリベクトルは各ステップで異なりますが、既に計算されたキーベクトルと値ベクトルは常に同じです。KVキャッシング方式では、各アテンションブロックで計算されたキーベクトルと値ベクトルを保存するため、新しいトークンごとに再計算されません。PagedAttentionは、メモリページングをKVキャッシングに適用します。 [ 76 ] [ 77 ] [ 78 ]
トランスフォーマーを「あなたはカスタマーサポート担当者です…」のような組み込みプロンプトとともに使用する場合、プロンプトのキーと値のベクトルを計算してディスクに保存できます。このモデルをオンラインチャットボットなど、多数の短いリアルタイムのやり取りに使用する場合、計算コストの削減効果は顕著です。
一般的に、ユーザーが自己回帰トランスフォーマーを使用してトークンのシーケンスの続きを生成する場合、モデルはまずこのシーケンスに対して順伝播を実行し、このシーケンス上の KV キャッシュを計算します。これはプリフィリングと呼ばれます。大規模な Transformer モデルを提供するハイパースケーラーは、分離推論を使用する場合があります。この場合、プリフィリングとデコードは、それぞれ専用のハードウェアで実行されます。[ 79 ]
FlashAttention [ 80 ]は、 GPU上でトランスフォーマー注意機構を効率的に実装するアルゴリズムです。これは、ブロック単位で行列乗算を実行する通信回避アルゴリズムであり、各ブロックはGPU のキャッシュ内に収まります。また、ブロックを慎重に管理することで、GPU キャッシュ間のデータコピーを最小限に抑えます (データ移動は遅いため)。
FlashAttentionメソッドは、これらの操作を単一のループに融合して算術強度を高める通信回避アルゴリズムです。これは、次の量を計算するオンラインアルゴリズムです。 [ 81 ] [ 82 ]そして返します実際には、FlashAttention はブロック行列乗算と同様に、ループの反復ごとに複数のクエリとキーを処理します。バックプロパゲーションが必要な場合は、出力ベクトルと中間配列がキャッシュされ、逆方向パス中に、これらのキャッシュからアテンションマトリックスが再構築されるため、一種の勾配チェックポイントとなる。
改良版の FlashAttention-2 [ 83 ] [ 84 ] [ 85 ]は、より長いコンテキスト長を処理できる言語モデルに対する需要の高まりに対応するために開発されました。作業分割と並列処理の強化により、 A100 GPU 上で最大 230 TFLOPs/s ( FP16 / BF16 )を実現し、オリジナルの FlashAttention の 2 倍の速度向上を実現しています。
FlashAttention-2 の主な進歩には、非行列乗算 FLOPs の削減、シーケンス長次元での並列性の向上、GPU ワープ間の作業分割の改善、最大 256 のヘッド次元とマルチクエリ アテンション (MQA) およびグループクエリ アテンション (GQA) のサポートの追加が含まれます。[ 86 ]
ベンチマークテストの結果、FlashAttention-2はFlashAttentionよりも最大2倍、PyTorchの標準的なアテンション実装よりも最大9倍高速であることが明らかになりました。今後の開発では、H100 GPUなどの新しいハードウェアやFP8などの新しいデータ型への最適化が予定されています。
FlashAttention-4は、命令スループットを向上させるためにパイプライン処理に重点を置いており、特にBlackwell GPUで優れたパフォーマンスを発揮するように開発されました。[ 87 ]

マルチクエリアテンションはマルチヘッドアテンションのメカニズムを変更します。[ 88 ]通常、
マルチクエリアテンションでは、、 したがって:
これはモデルの品質と学習速度には影響を与えませんが、推論速度を向上させます。
より一般的には、グループクエリアテンション(GQA)はアテンションヘッドをグループに分割し、各グループはキーと値のペアを共有します。MQAは1つのグループを持つGQAであり、標準マルチヘッドアテンションは最大数のグループを持つGQAです。[ 89 ]

マルチヘッド潜在アテンション(MLA)は、標準的なMHAの低ランク近似です。具体的には、各隠れベクトルは、アテンションメカニズムに入る前に、クエリ用とキーバリュー(KVベクトル)用の2つの低次元空間(「潜在空間」)に射影されます。この設計により、低次元のKVベクトルのみをキャッシュする必要があるため、KVキャッシュが最小限に抑えられます。[ 90 ]
投機的復号[ 91 ] [ 92 ]はトークン復号を高速化する手法です。CPUの投機的実行と同様に、将来のトークンが高速に計算され、検証されます。高速に計算されたトークンが間違っている場合は、破棄され、低速で計算されます。
投機的復号における重要な要素は、トランスフォーマー復号器が復号よりも検証を高速に行えることである。
GPT-3とGPT-3-smallという2つのトランスフォーマーモデルがあり、どちらもコンテキストウィンドウサイズが512だとします。GPT-3で貪欲デコーディングを用いてコンテキストウィンドウ全体を自己回帰的に生成するには、512回実行し、毎回トークンを生成する必要があります。時間をかけてしかし、これらのトークンの値についてある程度の推測があれば、各トークンが正しいかどうかをチェックすることで、モデルを一度実行して、すべてのトークンを並列に検証できます。確かに、は、第 1 番目の出力。
投機的デコードでは、より小さなモデルまたはその他の単純なヒューリスティックを使用して少数の投機的トークンを生成し、その後、より大きなモデルで検証します。たとえば、GPT-3-smallを使用して4つの投機的トークンを生成するとします。これにはこれらのトークンは、より大きなGPT-3に一度に通されます。そしてGPT-3が選択したであろうものとして検証され、その後それらは保持されますが、そうではないのでは破棄され、それらに対してGPT-3が実行されます。これにはより短いかもしれない。
非貪欲復号の場合も同様の考え方が適用されますが、投機トークンは確率的に受け入れられたり拒否されたりするため、最終的な出力分布は投機復号を使用しなかった場合と同じになります。[ 91 ] [ 93 ]

マルチトークン予測では、1回の順方向パスで最終的な埋め込みベクトルが生成され、それがトークン確率にアンエンベデッドされます。ただし、そのベクトルは別のトランスフォーマーブロックによってさらに処理され、次のトークンを予測できます。これを任意のステップ先まで繰り返します。各新しいトークンのコストはスタック全体ではなく、トランスフォーマーブロック1つだけなので、精度と速度のトレードオフになります。[ 94 ] [ 95 ]
トランスフォーマーベースのアーキテクチャのトレーニングは、特に長い入力の場合、コストがかかる可能性があります。[ 96 ]この問題を解決するために、多くの方法が開発されてきました。画像領域では、Swin トランスフォーマーは、シフトウィンドウ内で注意を実行する効率的なアーキテクチャです。[ 97 ]音声領域では、SepTr は時間領域と周波数領域で注意を分離します。[ 98 ] Long Range Arena (2020) [ 99 ]は、長い入力に対するトランスフォーマーアーキテクチャの動作を比較するための標準ベンチマークです。
標準的なアテンショングラフは、全対全または因果的のいずれかであり、どちらもスケーリングはどこはシーケンス内のトークンの数です。
Reformer (2020) [ 96 ] [ 100 ]は計算負荷を軽減しますに局所性に敏感なハッシュと可逆レイヤーを使用することにより。 [ 101 ]
スパースアテンション[ 102 ]は、よりゆっくりと成長するアテンショングラフを使用します。例えば、BigBird (2020) [ 103 ]は、次のように成長するランダムなスモールワールドネットワークを使用しています。。
通常のトランスフォーマーは、コンテキストウィンドウのサイズの2乗に比例するメモリサイズを必要とします。注意不要のトランスフォーマー[ 104 ]は、キーと値をリンクすることでトランスフォーマーの利点を維持しながら、これを線形依存性に減らします。
Random Feature Attention (2021) [ 105 ]はフーリエランダム特徴量を使用します。どこ正規分布からの独立したサンプルであるこのパラメータの選択は以下を満たす、 またはしたがって、1つのクエリを持つ1ヘッドアテンションは次のように記述できます。どこ複数のクエリ、およびマルチヘッドアテンションについても同様です。
この近似は、行列を計算できるため、線形時間で計算できます。まず、それをクエリと掛け合わせます。本質的に、より正確なバージョンを取得することができました。Performer (2022) [ 106 ]は同じ Random Feature Attention を使用していますが、まず、正規分布から独立にサンプリングされる。そして、グラム・シュミット法で処理される。
トランスフォーマーは、テキスト以外のモダリティ(入力または出力)にも使用/適応させることができ、通常はモダリティを「トークン化」する方法を見つけることによって実現されます。
マルチモーダルモデルは、ゼロからトレーニングすることも、ファインチューニングによってトレーニングすることもできます。2022年の研究では、自然言語のみで事前トレーニングされたトランスフォーマーは、パラメータのわずか0.03%をファインチューニングするだけで、さまざまな論理タスクや視覚タスクでLSTMと競合できることがわかりました。これは転移学習を実証しています。[ 107 ] LLaVAは、言語モデル(Vicuna-13B)[ 108 ]と視覚モデル(ViT -L/14)が線形層で接続された視覚言語モデルでした。線形層のみがファインチューニングされます。[ 109 ]
ビジョントランスフォーマー[ 46 ]は、入力画像をパッチの連続として分解し、ベクトルに変換し、標準トランスフォーマーのトークンの埋め込みベクトルとして扱うことで、トランスフォーマーをコンピュータビジョンに適合させます。
Conformer [ 47 ]と後のWhisper [ 110 ]は、音声認識において同じパターンに従っており、まず音声信号をスペクトログラムに変換し、それを画像のように扱います。つまり、一連のパッチに分解し、ベクトルに変換し、標準トランスフォーマーのトークンの埋め込みベクトルのように扱います。
知覚器[ 111 ] [ 112 ]は、マルチモダリティ用に設計されたトランスフォーマーの一種です。
画像生成の注目すべきアーキテクチャとしては、DALL-E 1 (2021)、Parti (2022)、[ 113 ] Phenaki (2023)、[ 114 ]および Muse (2023) がある。[ 115 ]後期のモデルとは異なり、DALL-E は拡散モデルではない。代わりに、自己回帰的にテキストを生成するデコーダのみのトランスフォーマーを使用し、続いて画像のトークン表現を生成し、それを変分オートエンコーダによって画像に変換する。[ 116 ] Parti はエンコーダとデコーダのトランスフォーマーであり、エンコーダがテキストプロンプトを処理し、デコーダが画像のトークン表現を生成する。[ 117 ] Muse はエンコーダのみのトランスフォーマーであり、マスクされていない画像トークンからマスクされた画像トークンを予測するようにトレーニングされている。生成中、すべての入力トークンがマスクされ、すべてのトークンが予測されるまで、最も信頼度の高い予測が次の反復に含まれる。[ 115 ] Phenaki はテキストからビデオへのモデルです。これは、事前に計算されたテキストトークンに基づいて条件付けられた双方向マスク変換器です。生成されたトークンは、ビデオにデコードされます。[ 114 ]
トランスフォーマーは自然言語処理(NLP)において大きな成功を収めています。GPT -2、GPT-3、GPT-4、Gemini、AlbertAGPT、Claude、BERT、Grok、XLNet、RoBERTa、ChatGPTなどの多くの大規模言語モデルは、トランスフォーマーがNLP関連のさまざまなサブタスクと、それに関連する実世界のアプリケーションを実行できる能力を示しています。
従来の自然言語処理(NLP)以外にも、トランスフォーマーアーキテクチャは以下のような他のアプリケーションでも成功を収めています。