LLM アーキテクチャー成功を支えたもの −- Next token Prediction

LLMアーキテクチャーの成功を支えたもの 


振り返り -- LLM アーキテクチャーの成立 

先のセッション「大規模言語モデルへのアーキテクチャーの変化 概要」では、革命的なTransformerアーキテクチャーの登場を引き金として起きた大きな変化を見てきました。

Transformerのアーキテクチャーから何を継承・発展させるかで、「翻訳モデル」が中心だったAIのアーキテクチャーに大きな分岐が起きました。一方は、TransformerからEncoderを継承し、他方はTransformerからDecoderを継承しようとしました。これら二つのAIアーキテクチャーは、"Encoder−only" あるいは "Decoder−only" と呼ばれていました。

結果的に大きな成功を収めたのは、"Decoder−only" と呼ばれた流れでした。これが、現在の「大規模言語モデル LLM」です。こうして、AIのアーキテクチャーは、「翻訳モデル」から「大規模言語モデル」へと大きくな転換したのです。

今日では、GPTファミリーはもとより、Gemini も Claude もLLamaもすべて、Decoder−only のLLMアーキテクチャーを採用しています。

LLMアーキテクチャーの成功を支えたもの −- Next token Prediction

このセッションでは、LLMアーキテクチャーの成功を支えた、技術的な優位性はなんだったのかを、まずは、次のような視点から見ていきたいと思います。

  • システムの目的設定のシンプルさ Next token prediction
  • 大量のテキストから学習する能力 Self-Supervised Learning
  • プロンプトを利用した柔軟なタスクの習得 In-Context Learning

まだまだたくさんありますね。ある意味、いいことづくめにも見えます。切り口によって見えてくるものが変わります。 プロンプト導入によるLLMの成功のベースにあるのは、LLMの基本的な性格に遡って考えれば、LLMアーキテクチャーが持つ「実行可能なタスクの一般性 Universality」です。

同じように考えれば、LLMの推論の効率性には、「推論の因果性 Casuality」が関係しています。ずっと技術寄りなトピックになりますが 「KVキャッシュによる推論の効率性」は、「Causal LLM」の特徴のコロラリーです。

LLMの成功の要因として、技術的な優位性そのものではないことが挙げられることもあります。例えば、「Scaling則によるパフォーマンスの予測可能性」とかは、技術についてのメタな議論だと思います。 まあ、それはそれで意味があるのですが。

ここでは、最初に挙げた三つの点について話してみようと思います。

Next token prediction

LLMの振る舞いのシンプルさは、「LLMは、ある文字列トークンの並びが与えられたとき、そのトークンの並びの次に来るトークンを予測して、それを選ぶ」という表現に集約されると思います。

LLMの振る舞いは、決してシンプルなものには見えません。ある場合にはリクエストに応じて長いレポートを書き、ある場合には人間と長い会話をし、ある場合にはプログラムや絵だって書いてくれます。

驚くべきは、こうしたLLMの複雑な振る舞いが、全て、先に述べた Next token predictionという極めてシンプルなメカニズムに還元されるということです。にわかには信じられないと思います。

ただ、それは事実なのです。そのシンプルさが、我々が今やその全体像を見渡すことができないほど巨大なシステムにLLMが成長することを可能にしました。巨大になっても、その心臓部を動かしているのは、「次のトークンを予測する」という単純なメカニズムなのです。

僕たちは、「知能」や「意味理解」に対して機械が与えた、ある意味暴力的にも見える「還元主義」的理解を、どのように捉え返すべきかを考える必要があるのだと思います。

ただ、そこには、誤解も含まれています。また、何か本当は複雑なことが見過ごされていて、簡単な表面に目が入っているだけなのかもしれません。それを考えてみましょう。

Next tokenはどう選ばれるのか

少し、細かな議論をします。

TransfomerでもLLMでも、その最終出力は「確率」と書かれているポンチ絵がほとんどです。でも、それは正確ではありません。TransformerでもLLMでも、最終出力を担っているユニットはSoftmaxです。Softmaxは「確率」ではなく「確率分布」を返す関数です。



LLMがNext token を「返す」とすれば、それはLLMの直接の出力ではなくて、LLMが出力した全てのtokenを渡る「確率分布」の中から、最大の確率をもつtokenを選んでそれを返すと考えるということです。「確率分布」が与えられた時、その分布から最大の確率をもつ変数を選択するのは、決定論的で自動的な過程です。

ただ、Next tokenを「返す」のと、Next tokenを「予測する」のは違うことです。「確率分布」が与えられたとしても、そのことは、何を選ぶかを決定するものではありません。

「吾輩は」というtokenが与えられた時、LLMは「猫」が最大確率をもつ「確率分布」を計算して返す可能性はあります。ただ、「猫」じゃなく、「豚」でも「海」でも「毛虫」でも選んでいいんです。その選択は、「猫」より確率が低いかもしれないというだけです。

LLMが行っていること

LLMが行っていることは、次のようなことです。

文xが与えられた時、LLMは文xの次に来るtokenの「確率分布」を計算します。その分布pからtoken a1が選ばれたとすると、その確率は確率分布pのもとで xが与えられた時a1が選ばれる確率 p( a1 | x ) で表されることになります。

その後、LLMは文xの後にtoken a1を追加して、文 xa1を作り、今度は、文 xa1 の次に来るtoken の確率分布p1を「新しく」計算します。その分布p1からtoken a2が選ばれれば、a2が選ばれる確率は、p1( a2 | xa1)になります。 LLMは、token を一つづつ追加して長い文を作っていくのですが、こうした過程を繰り返します。図が表しているのは、そうした過程なのですが、手抜きをしていて確率分布を全て同じpで表しています。これは本当は正しくありません。文が長くなるたびに、確率分布は、毎回新しく計算し直されます。


BradleyのLLMの確率計算

実は、前回のマルレクで、Tai−Danae BradleyのMagnitude論を紹介したのですが、その前半部分で、こうしたLLMの行っている確率計算のステップを詳しく解説しています。

「LLMのマグニチュード論 1 −− LLMの確率計算とenrichedカテゴリー論」 https://www.marulabo.net/docs/llm1bradley2/

その中の、「LLMの確率計算の基本」を参照ください。
YouTube: 
https://youtu.be/7KJeDC482AI?list=PLQIrJ0f9gMcMjv25F7mabNGdzKUVt-2CZ
PDF:
https://drive.google.com/file/d/182D1nhVmjk6stoKjQ2Q0VwmxB_PrgZn2/view




LLMの内部では何が計算されているのか 

Next token predictionについては、もう一つ注意すべきことがあります。

先のNext token predictionの説明では、LLMは、文字列トークンの並びから次のトークンを予測しているように見えたと思います。それは、ある意味では正しいまとめで、LLMの振る舞いを知るにはわかりやすいのですが、ただ、その説明には、表面的なところがあります。

例えば、LLMで確率分布を計算しているのは、Softmax関数なのですが、Softmaxは文字列トークンを扱うことはできません。それが受け取るのは、文字列トークンではなくそのベクトル表現です。LLMの入出力自体、それを文字列トークンの並びとイメージすることはできるのですが、実際にLLMが受け取って処理して吐き出しているのは、そのベクトル表現です。文字列トークンのベクトル表現をembeddingと言います。

LLMは人間とのインターフェースには、自然言語の文字列を使うのですが、LLM内部の主要なデータの形式は、文字列ではなくそのembeddingです。LLMの内部では、文字列ではなくembeddingが忙しく飛び回っているのです。

ただし、我々は直接はembeddingを解釈できないので、そのことは、表面からは見えにくいかもしれません。実際には、LLMの行う処理の複雑さは、embeddingに閉じ込められたembeddingが持つ情報の複雑さに、多くをおっています。

そのことは、我々がLLMの行いうる処理の複雑さを「LLMのパラメーター数」で表す時、そのパラメーター数は、LLMがすでにembeddingとしてすぐに処理可能な文字列トークンの数(正確にいうと、それにベクトルの次元数をかけたもの)であることにも表れています。

−−−−−−−−---−−−−−−--−−-
セミナーの申込ページ

blog ページのURL

このシリーズのblogのIndex ページ

スライドのpdfのURL
https://drive.google.com/file/d/1wl6PdRTczJZay7zPXjmhHX54PSqY4IhE/view?usp=sharing

ショートムービーの
https://youtu.be/1p6c0p4bml0?list=PLQIrJ0f9gMcOZAuK3OhXu9mcZrX32ZS1j

コメント

このブログの人気の投稿

初めにことばありき

機械の言語能力の獲得から考える embeddingの共有・蓄積・検索の未来

密度行列とは何か?