Transformerのアーキテクチャーは、本当に賢いのか?

Transformerのアーキテクチャーは、本当に賢いのか?

ChatGPT、Gemini、Claudeら現在のAIのアーキテクチャーのコアはTransformerです。Transfomerは、「次に来るトークンを予測できる」と言われるのですが、自分には違和感があったので、いろいろ深堀をして見ようと思いました。

Transfomerは、「次に来るトークンを予測できる」という言い方には実は間違いがあって、Transformerというアーキテクチャーの中身自体は、入力トークン、クエリー、キー、バリューとその間に存在する3種類の重み行列の間の巨大なtensor計算にしかすぎません。入力トークン列に対して、一文字ずらせたトークン列を正解として学習させることで、初めて「次に来るトークンを予測できる」という能力を獲得することができます。もしも、一文字ずらせたトークン列を正解(ラベルともいう)として学習を行わせない場合には、Transfomerの出力は完全に意味不明なランダムな確率分布にしかすぎず、「意味不明な計算を行っている賢さのかけらもないソフトウェアー」にしかすぎません。

何故、Transformerが学習で「次に来るトークンを予測できる能力」を得ることが出来るのかについて、原理原則の観点から、Transformerの背後にある考え方というか、そのイメージを、出来るだけ「あは~」と納得できるような表現に落とし込んでみようと思います。

入力に使うのは、文章としての文字列です。文字列を構成する最小単位をトークンと呼びます。コンピューターにトークンを読み込ませるために、トークンを数値に変換するのですが、それをやってくれるソフトをトークナイザーと呼びます。このブログ記事の主眼点は、トークナイザーのアルゴリズムを説明し、そのコーディングを示すことではありません。トークナイザーは、早い話、トークンに対して唯一無二の数値を割り当てるソフトであり。その数値のことをIDと呼びます。トークンを決めるにはルールがあった方が分かりやすいですし、それぞれが意味を持つトークンであった方が便利です。例えば、リンゴという単語があった時に、それを「り」「ん」「ご」にまで分解してしまうのはやりすぎです。単語、句読点、数字などの意味のある最小単位に分割し、それらをトークンとすることが便利です。実際にトークンのIDの最大値がどのくらいになるのか?ということには興味があるところでして、AIモデルによって違いがあるのですが、現在のAIモデルは、50,000から100,000くらいの範囲にあるようです。

さて、文章としての文字列が、トークンのID列に変換された後、これを入力としてTransformerにINPUTする時に各IDに紐づけられた「埋め込みベクトル」と言うのが作られます。このベクトルの次元は非常に高次元でして、384次元、768次元、1,024次元、1,536次元、4,096次元などがあり、標準的なTransformerでは768次元が採用されているようです。以下の話の中では、この埋め込みベクトルの次元を(e)としておきます。我々の実空間は、縦、横、高さ、と言う3次元ですが、この768次元の各軸に同じように明確な意味が割り付けられているのか?というと全くそんなことは無くて、人間には理解できない抽象的なものです。例えば、「リンゴ」と言うトークンを考えた場合、人間には「赤い」「甘い」「丸い」などの「リンゴ」を特徴づける直感的な指標を各次元の軸に割り振りたくなりますが、Transformer的には、768個の直行性の高い人間には認識できない何らかの特徴付けのイメージが各軸に割り付けられているというイメージになると思います。つまり768次元の仮想的な空間内に「リンゴ」の特徴を反映したベクトルがあるということです。完全なブラックボックスだという訳です。

Transformerは、この入力から自動的に「クエリー」「キー」「バリュー」という高次元なベクトルを作り出します。クエリーとキーのサイズは、入力に用いたトークン列(文字列)の数を行数(例えばc)とし、任意のd列を持つ行列になります。d列の数はどうやって決まっているか?と言うと、768次元の高次元を例えば、12分割すると、一分割の大きさは64になります。分割することで計算のサイズが小さくなり、12個を並列動作させることで計算速度も上がります。この分割ですが、計算上の利点でそうしたというのではなく、分割にどういうイメージがあるのかというと、768次元の内、ある分割には、トークン間の文法的な繋がりが集約され、ある分割には主語と述語の関係が集約されたり、12個の各分割ごとに異なる視点から同時に文章を見ることが出来るようになるという感じです。これは、あくまでもイメージであって、学習させているうちに直行性の高い分割が生き残って来るということでして、各分割が何を主眼にしているかはブラックボックスです。

クエリーとキーという高次元ベクトルですが、クエリーとは何ぞやと言えば、例えば「リンゴ」を指定した時に、リンゴが持つ特徴を知りたい、教えて~、ということですね。それに対してキーは何ぞやと言えば、各トークンが持つ特徴を示したものです。クエリーした時に、関連性の高いトークンを浮かび上がらせるためには、クエリーとキーの間の距離を計算し、それが大きいほど、関連性が高いということにすれば良いです。ベクトルの間の関連性を測定する指標を計算する時に便利な方法に「内積」があります。例えば、二つのベクトルが直行していれば内積はゼロになります。二つのベクトルが同じ方向を向いていて、ベクトル間の角度が狭いほど、内積の値は大きくなります。逆にベクトルが逆向きの場合には、内積はマイナスになります。このようにして、クエリーとキーの内積を取ると、クエリーがどのトークンと関連性が高いのかという指標((c, c)のサイズの行列)が出来上がってきます。

さて、そこでバリューという高次元ベクトルが登場します。バリューと言う行列のサイズは、(c, e)になります。つまり入力に用いた「埋め込みベクトル」と同じサイズになっています。バリューと言うのは、クエリーしたトークンが実際に保持している具体的な意味や内容を表すものという事なのですが、クエリーとキーの内積からクエリと各トークンの間の関連性を示す内積の結果である行列をSigmoid関数というのを使って各行を確率に変換したものをAttentionマップと呼びます。Attentionマップにバリューの行列を掛けてあげるとサイズが(c, e)の行列が出来上がります。そして、その各行は、対応するトークンがどの程度クエリーと関連性を持つものかが表現されていることになります。以上の計算の中で、注意点としてはAttentionマップに因果マスクというものをかけて、現在の出力が過去の入力のみに依存し、未来の入力には依存しないという性格を持たせます。細かい話をすると分かりずらくなるので、上手く「あは~~」が誘起されるような記述に出来るだけ留めようと思います。

大切な点は、入力に用いたトークン列の埋め込みベクトル表現(サイズは、(c, e))に対して、出力も同じサイズを維持しているという事です。

ここまで来てもなんかすっきりしないと思うのですが、ここで、トークンを一文字ずらせた文字列を用意し、それを回答として、その誤差を逆伝搬させて、あるトークンの後ろにはどのトークンが来るべきかを学習させます。これを行わないと、冒頭に書いたようにTransformerは「無茶苦茶な結果を返すだけの役立たずな計算機」になってしまいます。そして、不思議にも、学習が収束すると、Transformerが次に来るトークンを予測できるようになります。そうなるように内部の重みパラメータが変化していくわけです。

このようにして、Transformerと言うアーキテクチャーは、無茶苦茶に情報を混ぜ合わせて関連性を計算し、次を予測できる性能を持ったという事なのですが、これは、たぶん、赤ちゃんが言語を理解していくのと似ているのだと思います。繰り返し聞いて、それがどういう状況で起こるのかという関連性を理解すると、言語の文法なんて全く考えもせずに赤ちゃんが話せるようになるのと同じです。文法規則を教科書で暗記したから話せるのではなく、大量のパターンと文脈に触れる中で、次に何が来るか、の確率的な直感を獲得していくというプロセスは、人間の赤ちゃんと恐ろしく似ています。

現在のTransformerのアーキテクチャーは、人間が一生かけても読み切れない、そして忘れてしまうほどの巨万の文書を読み込ませて初めてその能力を獲得します。それが故に、データセンター1カ所で、発電所が一カ所必要なほどの膨大な電気エネルギーを使います。しかし、赤ちゃんの場合には、生まれてから数年間の限られた会話(数百万から数千万ワード)を聞くだけで流ちょうに話せるようになり、未知の状況にも応用できるようになります。この違いは、Transformerには無駄が多すぎるという事を端的に示すものであり、ヒトの場合には、洗練されたニューラルネットワークが存在し、特徴抽出と関連性の認識を桁違いに効率的に行うことが出来ると言えるでしょう。言い方を変えると人のニューラルネットワークの効率が高いのは、予め物事を上手く認識できるための接続回路が遺伝的・進化学的に出来上がった状態でスタートしているからだと言っても良いのかも知れません。

つまり、Transformerのアーキテクチャーは、バカすぎて効率が超悪いのだという事です。人間の脳は、わずか数十ワットのエネルギーで動きますしね。きっともっと効率的なアーキがあるはずです。皆でもっともっと考えてみましょう。

Mx

糖鎖プロファイリング技術のパイオニア 環境再生型農業の実現

コメントは受け付けていません。

Powered by WordPress |Copyright © 2020 Emukk. All rights reserved