【図解】ChatGPTなど、TransformerのLLMの仕組み
はじめに
世界的にLLMの導入が進んでいますが、
意外と仕組みは知られていないと感じています。
ですが、仕組みを知っていれば、
思わぬ失敗を防いだり、よりよい活用ができると考えています。
そこで、この記事を書くことにしました。
O'Reillyの「直感 LLM」で学んだことが中心になります。(良著でした)
LLMとは
ChatGPTやGeminiの背後にあるものです。
Large Language Modelの略であり、大規模言語モデルと訳されます。
Transformerとは
ChatGPTやGeminiのLLMのベースになるものです。
この記事では、Transformerを通して、LLMの仕組みを書いていきます。
Transformerは簡単に言うと、
「テキストを入力すると、それに応じたテキストを出力するもの」です。

トークンとは
コンピューターで扱いやすいよう、LLMはテキストをトークンに分割します。
トークナイザーと呼ばれるものが、この分割を行います。
OpenAI Platformでトークナイザーの挙動を実際に確認できます。

フォワードパスとは
Transformerでは、トークンごとに、順番にテキストを生成します。
1回の計算で、1つのトークンが生成されますが、この計算をフォワードパスと呼びます。
フォワードパスは「つぎのトークンの予測」のため、
LLMの本質は「トークンの予測を繰り返しているだけ」と言えます。

フォワードパスの仕組み
フォワードパスでは、つぎのモジュールを通して、トークンの確率を計算します。
- トークナイザー
- Transformerブロック
- LMヘッド
確率の計算には、後述の埋め込みが利用されます。
最終的には、計算した確率をもとに、トークンを選択します。

埋め込みとは
トークンの意味を、ベクトルで表現したものです。
(.91, -.11, .19, .94, -.51)など、数値のベクトルで意味を表現します。
つぎの図がイメージですが、実際は数百を超える次元のベクトルになります。

デコード戦略とは
計算した確率をもとに、トークンを選択するとき、
どのトークンが選択されるかは、デコード戦略で決まります。
もっとも単純な戦略は貪欲法であり、確率の高いトークンを選択します。
貪欲法にはtemperatureというパラメーターがあり、
出力が単調にならないよう、選択のランダム性を制御することができます。
- temperatureの数値が0のとき
- 1番目に高い確率のトークンだけが選ばれる
- プロンプトが同じであれば、毎回の出力も同じになる
- temperatureの数値が0でないとき
- 1番目だけでなく、2番目や3番目に高い確率のトークンも選ばれる
- プロンプトが同じでも、毎回の出力は変わる
- 数値が大きければ、出力の多様性が高まり、数値が小さければ、出力の一貫性が高まる
さいごに
弊社でも、LLMの活用が進んでいますが、表面的な理解で扱うのではなく、
特性や仕組みを理解したうえで、適切に活用することが大事になると考えています。
また、LLMの仕組みだけでなく、プロンプトエンジニアリングの基本も書きました。
ぜひ読んでいただきたいです!
Discussion