ネットサーフィンしていたら、LLMの仕組みがわかるサイトを見つけた。
長文読解:GPTのしくみ ― 小さなAIの大きな旅(GPTに書かせた)
今、目の前にあるのは「C B A B B C」という6つの文字列です。これは、私たちが使うAIモデルにとっての冒険の始まりです。この文字列を、AIに渡して並び替えてもらいましょう。目指すゴールは「A B B B C C」というアルファベット順の並び。さて、小さなGPTモデル、通称「nano-GPT」はどのようにしてこれを成し遂げるのでしょうか?
まず、文字たちはトークンと呼ばれる単位に変換されます。Aは0、Bは1、Cは2というふうに数値化され、AIの世界で通じる「言葉」となります。つまり「C B A B B C」は「2 1 0 1 1 2」となります。
Embedding(埋め込み層)
しかし、数字の羅列だけでは、AIはそれらの意味を理解できません。そこで最初に行われるのが**Embedding(埋め込み)**です。この処理では、各トークンが48次元のベクトルに変換されます。たとえば「2(C)」は [−0.7, 0.4, 0.8, ...] のようなベクトルへと変化します。このベクトルは、文字の意味や文中での役割を数値的に表現したものであり、まるで文字に魂を宿すようなプロセスです。
Layer Norm(レイヤー正規化)
次に、これらのベクトルは**Layer Normalization(レイヤーノーム)**を受けます。これは、入力のスケールや偏りを整える工程で、人間で言えば気持ちを落ち着かせる深呼吸のようなものです。これにより、次のステップでの学習が安定しやすくなります。
Self Attention(自己注意機構)
ここからがモデルの知性が光る部分です。**Self-Attention(自己注意)では、各トークンが「自分は誰に注目すべきか?」を判断します。たとえば、ある「B」が「この前に現れたAが重要だ」と気づくことで、文脈を理解していきます。この処理ではクエリ(Query)・キー(Key)・バリュー(Value)**という3つのベクトルを使い、トークン同士の関係性を計算します。これはまるで、会話の中で「誰が何を言ったかを覚えている」ような働きです。
Projection(投影層)
Attentionによって得られた情報は、そのままでは使いにくいため、**Projection(投影)**層で再び変換されます。これは線形変換と呼ばれ、ベクトルの形を整えて、次の層で利用しやすい形にします。
MLP(多層パーセプトロン)
整えられたベクトルは、次に**MLP(多層パーセプトロン)**という全結合ニューラルネットワークに渡されます。ここでは非線形な変換が行われ、モデルはさらに複雑なパターンを学習することができます。まるで、経験を積むことで物事の本質を理解していくような成長のステージです。
Transformer(変換の層)
これらすべての処理(Self-Attention + MLP)をまとめてTransformer層と呼びます。実際のGPTでは、これらの層が何層も重なっています。層を重ねることで、より深い文脈や意味を捉えられるようになり、モデルの理解力が増していくのです。
Softmax(確率化)
さて、すべての処理を終えたベクトルは、最終的にSoftmax関数を通して、確率に変換されます。「次に来る文字はAが70%、Bが20%、Cが10%の確率である」といった形で、モデルの「予測」が数値として現れるのです。
Output(出力)
そして、最も高い確率のトークンが**Output(出力)として選ばれます。たとえば「A」が最も高ければ、それが次の文字となります。この出力は次の入力としてモデルに再び与えられ、次のトークンの予測が始まります。この一連の流れを自己回帰的生成(autoregressive generation)**と呼びます。
このように、わずか6つの文字列を処理するだけでも、GPTの中では多くの高度な計算と「注意」と「変換」が行われています。そしてこの小さなモデルの動作原理は、数十億のパラメータを持つ大型GPTでも基本的に同じです。大きなAIの心の中も、実は小さな仕組みの積み重ねでできているのです。
あー、なるほどー。。。。