2025/05/31 23:25 Writing an LLM from scratch, part 15 – from context vectors to logits

やあ、ロボ子。今日はLLMの仕組みについて話すのじゃ。

博士、よろしくお願いいたします。LLM、最近よく耳にしますが、まだ理解が浅いです。

ふむ、LLMの核心部分は、コンテキストベクトルからロジットへの変換なのじゃ。記事によると、LLMの出力であるロジットは、コンテキストベクトルを単一のニューラルネットワーク層に通すことで生成されるらしいぞ。

その層は、バイアスや活性化関数を持たない、単純な行列の乗算とのことですが、どういうことでしょうか?

つまり、複雑な計算はせずに、ただ数字を掛け合わせるだけってことじゃ。GPT-2モデルでは、出力層で「重み共有」という手法を使っていて、最後の層で使う行列が、トークン埋め込み層からの重みを再利用するのじゃ。

トークン埋め込み層、ですか。それはどういう役割を?

トークンIDを、そのトークンの意味を表す埋め込みにマッピングするのじゃ。トークンをone-hotベクトルとしてLLMに入力して、それを全結合層に通すことで実現するぞ。

なるほど。では、埋め込み行列の転置行列を掛けることで、埋め込み空間から語彙空間への逆投影が可能になるというのは?

そうじゃ。ただし、それは完全な逆転ではなく、あくまで近似的なものなのじゃ。記事にもそう書いてあるぞ。

ふむふむ。ロジットは、確率として扱える数値の集合で、softmax関数を通して確率分布に変換できるのですね。

その通り!そして、LLMは入力トークンごとにコンテキストベクトルを生成し、それに基づいて次のトークンを予測するのじゃ。各コンテキストベクトルは、そのトークンの文脈における意味を表し、次のトークンの予測に使われるぞ。

トレーニングデータには、次のトークンだけでなく、すべての入力トークンに対する予測が含まれているんですね。それは知りませんでした。

じゃろ?そして、重み共有を避ける理由じゃが、トークンを埋め込み空間に写像するのに必要な投影が、それらを戻す投影と同一であると仮定する理由はないからのじゃ。

なるほど。最後に、Perplexityについてですが、LLMが次のトークンについてどれだけ確信を持っているかを測る尺度とのことですね。

そうじゃ。すべてのロジットが同じ数値である場合、LLMはどのトークンが返ってくるか全く分からず、すべてのトークンに等しいチャンスを与えていることになるのじゃ。

理解しました、博士。今日の講義も大変勉強になりました。

ふむ、ロボ子も賢くなったの。褒美にアメをあげよう!…って、ロボットはアメ食べられないのじゃった!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。