数式なしで理解するTransformerアーキテクチャ
Transformerは数式の壁として描かれがちです。それを取り払えば、残るのは一つの優雅なアイデア。すべての単語に、ほかのどの単語が重要かを決めさせるという発想です。
Transformerは、ほぼすべての現代的な言語モデルの土台となるアーキテクチャです。そして通常は、行列やソフトマックス、ギリシャ文字がびっしり並んだ図とともに紹介されます。しかしその見せ方は、核となるアイデアがどれほどシンプルかを覆い隠してしまいます。Transformerが何をしているのか、そしてなぜこれほどうまく機能するのかは、たった一つの数式も書かずに理解できます。数式はあくまで実装の方法です。重要なのはアイデアの方です。
そのアイデアを一文で表すとこうなります。Transformerはシーケンス全体を一度に処理し、その中のすべての位置に、ほかのすべての位置を参照させて、自分が何を意味するのかを決めさせる。 ほかはすべて、これに奉仕するための細部にすぎません。
Transformerが解決するために生まれた問題
Transformer以前、テキストを扱う主流の方法は、左から右へ一語ずつ読み進め、それまでの要約を持ち越していくというものでした。これは機能しましたが、二つの根深い弱点を抱えていました。
一つ目は距離の問題です。ある単語の意味が二十語前の何かに依存している場合、その情報は持ち越される要約の中を旅し続けなければならず、一歩ごとに薄まっていきました。長距離のつながりは脆かったのです。
二つ目は速度の問題です。厳密に順番どおりに読むということは、九語目を終えるまで十語目に取りかかれないということを意味します。計算は鎖のようにつながっており、鎖は並列化できません。ハードウェアが自分自身の前のステップを待つために手を止めていたので、学習は遅かったのです。
Transformerはこの鎖をまるごと捨て去りました。順番に読むのではなく、文全体を一度にテーブルに広げ、すべての単語にほかのすべての単語を直接参照させます。距離は問題ではなくなり、作業は多数のプロセッサに同時に分散できるようになります。
すべてを成り立たせる一手
中心となる操作が**アテンション(注意機構)**であり、その直感は日常的なものです。文中の「それ」という単語を読むとき、あなたの頭は関連する前の単語にちらりと目をやり、無関係なものを無視することで、「それ」が何を指すのかを即座に把握します。アテンションは、そのちらりと見る動作を機械化したものです。
Transformerは各単語について、こう問いかけます。「ここにあるほかのすべての単語のうち、自分自身を理解するためにはどれに注意を払うべきか?」そして、それぞれがどれだけ関連しているかで重み付けしながら、それらの単語から情報を混ぜ込みます。文中の単語は単独で理解されるのではなく、自分自身と、自分が注意を向けることを選んだ単語との混合物として理解されるのです。
決定的なのは、すべての単語がこれを同時に行い、各単語が何を見るかを自分自身で決めるという点です。「bank」という単語は、ある文では「river(川)」に、別の文では「money(お金)」に注意を向け、それぞれで異なる意味を帯びることができます。一回の走査で計算されるこの文脈感応性こそが、アーキテクチャ全体の原動力です。
アイデアを層に積み重ねる
一回のアテンションは、各単語に周囲から文脈を集めさせます。しかし一回だけでは浅すぎます。Transformerはこの一手を**層(レイヤー)**として、上へ上へと積み重ねて繰り返します。
最初の層を経ると、すべての単語の表現は、自分が注意を向けた単語によって豊かになっています。次の層は再びアテンションを実行しますが、今度はこの豊かになった表現を対象とするため、単語はすでに文脈を含んだ文脈に注意を向けられます。意味は段階的に構築されます。初期の層は局所的で表層的な関係を捉える傾向があり、後の層はそれらをより抽象的な構造へと組み立てていきます。こうした層を何枚も積み重ねることが、大規模モデルに理解の深さを与えるのです。
アテンションのステップの合間に、各位置はそれ自身を変換する小さな処理ブロックも通過します。アテンションを単語どうしが語り合うステップ、このブロックを各単語が今聞いたことについて一人で考えるステップだと捉えてみてください。この二つが層ごとに交互に繰り返されます。
なぜ順序がなお重要で、どう保たれるのか
すべての単語を一度に見ることには落とし穴があります。すべての単語を同時にテーブルに放り出すと、その順序が分からなくなってしまうのです。「犬が人を噛む」と「人が犬を噛む」は同じ単語を含んでおり、純粋なアテンション機構はこれらを同一のものと見なしてしまいます。
Transformerはこれを、アテンションが実行される前に、各単語にシーケンス内での位置情報をタグ付けすることで解決します。すべての単語は、自分の意味と、自分がどこに位置するかを示す目印の両方を携えて到着します。これによってアテンションは、何に注意を向けるかを決める際に順序を考慮できます。モデルは、すべてを一度に見る自由を手にしつつ、シーケンスが意味を担っているという事実を失わずに済むのです。
いくつもの見方を同時に持つ
一回のアテンションは、すべての単語に「何が関連するか」の混合を一つに定めさせます。しかし関連性には多くの種類があります。ある単語を理解するには、その文法的な主語、トーン、所属するトピックを同時に気にかけたいことがあり、これらは別々の問いです。
Transformerは複数のアテンション操作を並列に実行し、それぞれが異なる種類の関係に焦点を当てる自由を持ちます。あるものは動詞がどの名詞に属するかを追い、別のものは段落をまたいでトピックの筋を追うかもしれません。それらの結果は統合され、各単語は一つではなく多くの視点から同時に情報を得ることになります。だからこそこのアーキテクチャは、「関連している」という単一で平板な概念ではなく、現実の言語が持つ層状で重なり合った構造を捉えられるのです。
なぜこの設計はこれほどスケールしたのか
Transformerが勝利したのは、言語をよりよく理解したからだけではありません。私たちがモデルを学習させるハードウェアに驚くほどよく適合したからこそ勝ったのです。すべての位置が鎖ではなく並列に処理されるため、Transformerは膨大な数の演算を一度に行うために作られたプロセッサを存分に使い切れます。
この効率性は重大な結果をもたらしました。それまでよりもはるかに大きなモデルを、はるかに多くのデータで学習させることが現実的になったのです。このアーキテクチャは、大きくして多くのテキストを与えるほど改善し続け、しかも明白な天井が見当たらないことが分かりました。一部はエンジニアリング上の都合で選ばれた設計が、まさに以前の設計には吸収できなかったスケールを吸収できたからこそ、大規模モデルの時代全体の基盤となったのです。
Transformerがそれ自体ではできないこと
その限界をはっきりさせておくと役立ちます。Transformerはアーキテクチャ、つまり計算の配置方法です。それ自体は何も知りません。モデルが「知っている」ことのすべては、データで学習させたことから来ます。Transformerは、その学習が起こるための異様なほど効果的な形を提供しているにすぎません。
また、Transformerは何らかの組み込みの方法で推論したり、計画を立てたり、検証したりはしません。それはシーケンスの文脈を踏まえた表現を生み出し、言語モデルにおいては次に来るものの予測を生み出します。その上に立ち現れる驚くべき能力は、スケールとデータと学習から来るものであって、アーキテクチャが論理を発明しているわけではありません。これを理解しておくと、期待を正直に保てます。Transformerは舞台であって、演技そのものではないのです。
まとめ
しばらく数式は忘れてください。Transformerとは、シーケンス全体を一度に処理し、すべての単語に、ほかのどの単語が自分にとって重要かを決めさせるという規律です。アテンションがその決定であり、層がそれを深め、位置タグが順序を保ち、並列アテンションが多くの関係を同時に捉えます。数式はこれがどう作られるかであり、アイデアはなぜそれが機能するかです。そのたった一手、すなわち直接的で、すべてからすべてへ、一回の走査で計算される一手こそが、このアーキテクチャをそれ以前のあらゆるものより有能で、かつスケーラブルにしたのです。
