目次

1. はじめに
2. 「こう来たら、そう返すよね」
3. 「こう来たら、そう返すよね」を条件付き確率でモデル化する方法
4. 大規模言語モデルが使っている条件付き確率
5. トークン
6. 自己回帰モデル:トークンを用いた条件付き確率の式
7. 大規模言語モデルの事前学習における「条件付き確率の学び」
8. 自己回帰モデルからハルシネーションを捉える
9. まとめ

1. はじめに

先日、The Cambridge Dictionary Word of the Year 2023が発表されていました。それはなんと

hallucinate

でした!意味はもちろん、AIのあの動作のことでした。
"When an artificial intelligence hallucinates, it produces false information."
(筆者意訳) 人工知能がハルシネートする、とは、それが誤った情報を生成することである。

世相ですね。この選定には、本稿でテーマとする大規模言語モデルだけではなく、AIで生成した画像・音声・動画などを用いたフェイクに対する問題意識も込められているような気がして、とてもよい選定のような気がしました。

さて、ハルシネーションのことを正しく理解するためには、筆者は、大規模言語モデル(Large Language Model, LLM)の動作をわかりやすく示してくれるモデルである自己回帰モデルを、一度は学んでおいた方がよいように感じています。私見では、自己回帰モデルについては、経営者、管理職、オフィス実務者、学生など、LLMに関わる可能性のある人は全員学んだ方がよい知識なんじゃないかなぁ、とも思います。

RNN, LSTM、GRU、Attention, Transformerの知識より、自己回帰モデルの知識の方を先に学んだ方がよい気も・・・

といっても、2023年現在、読者のほとんどは「自己回帰モデルって何?」という感じになってしまうのではないかと予測しています。CDLEメンバーだと知っている方も結構多いのかな、とも思いますが、一般にはさすがに・・・

なので、「誰でもある程度わかる」ように記述された自己回帰モデルの解説が必要だなぁと思っていましたので、ようやくですが記事にしたいと思います。なお、本記事は、筆者が高専のAI教育に用いた教育資料の一部を抜粋し、加筆修正したものとなります。

2. 「こう来たら、そう返すよね」

本稿でテーマとしている、言語モデルにおける「自己回帰モデル」とは、大雑把に言えば「こう来たら、そう返すよね」を確率モデルで表したものです。それを理解するために、まずは「こう来たら、そう返すよね」について考えてみましょう。

(問) 次に続く文字は何がふさわしいと思いますか?
・012345678
・abcdefghijklmnopqrstuvwxy

上記はそれぞれなんとなく、誰しも同じような文字を思い浮かべると思います。

では、以下はいかがでしょうか?

(問) 次に続く言葉は何がふさわしいと思いますか?
地球上に男って何人いるか、知ってる?


上記の場合、恐らく、平成末期から令和の日本のお笑いに詳しい方であれば、ある特定のリズムを伴った特定の言い回しを思い浮かべるであろうと推測されます。

このように、我々人間は「こう来たら、こう返すよね」という組み合わせに関する知識を大量に持っているようなところがあります。最近のお笑いの世界ではこれを「定食」などと呼ぶことがありますね。

3. 「こう来たら、そう返すよね」を条件付き確率でモデル化する方法

「こう来たら、そう返すよね」における前振りと返しの関係は、条件付き確率p(y|x)、つまり「xの時にyが起こる確率」を使って以下のようにモデル化することが可能です。
image.png 6.27 KBつまり、「ある前振りの時に、最も確率が高い返し」を選ぶと、「そう返すよね」と感じられる返しとなる、とモデル化できるわけです。

4. 大規模言語モデルが使っている条件付き確率は何か?

前章で、「こう来たら、そう返すよね」を条件付き確率でモデル化する方法を紹介しましたが、よく考えると「pって何の確率?ウケる確率?」という疑問が生じます。

もしも大規模言語モデルが、前振りに対する返しの「ウケる確率」を算出できるとしたら、それはそれは面白い反応をする言語サービスを作れると思うのですが、残念ながら今のところそれはできません。これは私の夢だな・・・

今の大規模言語モデルができることは「ある前振りに対して、続くことの多い単語系列の列挙と、それぞれの発生確率の算出」です。

実はOpenAI Playgroundを使うと、前振りに対して、単語系列とそれぞれの発生確率を算出させることができます。
image.png 9.29 KB
012345678に対しては、43.65%の確率で「90」が続くらしいです。確かにそんなもんな気がする・・・

更に、]のところにカーソルを合わせると以下のように表示されます。
image.png 8.04 KBこれは、01234567890の後には、43.37%の確率で\n(改行)が続き、7.64%の確率で";が続き、・・・、0.56%の確率で ] が続く、ということを示しています。

このように、大規模言語モデルは「前振りに対する、返しの確率」を決める能力を持っていて、それを用いて単語系列を生成しているのです。

5. トークン

さて、012345678の後には43.65%の確率で90が続く、と言われると、まあそうかぁ、とは思うものの、「なぜ、"90"とか "]" のようなごく短い系列の確率ばかり出してるの?」と疑問に思うかもいらっしゃるかもしれません。


実は、LLMは、単語系列をこのようなごく短い系列に分解しないと処理できないのです。そのため、ChatGPTやPlaygroundのようなサービスは、LLMに単語系列を渡すときに、上記のようにごく短い系列に分解して渡しています。その単位を「トークン」と呼びます。上記の例でいえば、"90"や "|"は「1トークン」に該当します。

先ほどの例の前振り
image.png 1.08 KBを、OpenAI Playgroundは何トークンだと思っているのか、確認してみましょう。Playground上では、単語系列を選択すると、そのトークン数が表示されます。
image.png 3.44 KB012345678は、4トークンと数えているそうです。ちなみに、以下の試行から、01, 23, 45, 678の4つがトークンとして扱われていることがわかります。
image.png 60.05 KB

6. 自己回帰モデル: トークンを用いた条件付き確率の式

さて、ここまでくると、LLMが持つ「前振りに対する返しの確率を算出する能力」を、トークンを用いた条件付き確率で示すことができます。

まずは具体例から。Playgroundがimage.png 7.27 KBのように、012345678に続くトークンの確率を算出する能力は、トークンのみを用いて以下のように表現することができます。

Playgroundが上記の図で見せている能力は、0123456781を分解したトークン列
image.png 1.2 KBに対して、それに続くことの多いトークンyをいくつか列挙し、それらの条件付き確率
image.png 1.1 KBを算出する能力である


上記の式では、トークン長4の場合の条件付き確率を示していますが、この式を長さLに一般化した式が、LLMの自己回帰モデルの式そのものです。LLMは、以下の条件付き確率を算出する能力を有している、と考えて頂いて差し支えありません。
image.png 1.14 KB
L ≦ N の範囲で条件付き確率を算出可能だとすると、前振りに対して条件付き確率で次のトークンを導出し、それで出来た新しいトークン列に対して条件付き確率で次のトークンを導出し・・・を繰り返すことで、単語系列を生成することができます。
image.png 3.3 KB
なお、実際のLLMは、単純に高確率の次トークンを選んでいるわけではなく、探索アルゴリズムによって次トークンを選んでいます。その選び方については、Greedy Search, Exhaustive Search, Beam Searchなどで検索してみて下さい。

7.   大規模言語モデルの事前学習における「条件付き確率の学び」

大規模言語モデルは、よりよい条件付き確率をモデルで算出できるようになることを目標として事前学習しています。このことが、初代GPTの論文「Improving Language Understanding by Generative Pre-Training」に記載されていますし、この枠組みは、2023年現在の大半の大規模言語モデルで同様だと思われます。
image.png 63.1 KBimage.png 7.79 KB
この言説が何を意味しているかを理解するために、式変形を行います。上記の尤度関数は、logに関する公式
image.png 810 Bytesを用いて以下のように式変形できます。
image.png 5.94 KBGPTの事前学習は、この式を最大とするニューラルネットを構築する、という目的で行われるわけです。この式から、両辺のlogを取り除いた式を用いて、以下の言説を導出できます。

GPTは
image.png 1.84 KBを最大とするニューラルネットΘを構築する、という目的で学習を行っている


Θは「そのニューラルネットを使った時の確率」と読み替えられるのですが、式に入っていると読みにくくなるので、式からΘを外してもうちょっと言い換えると

GPTは、学習によって構築されたニューラルネットΘを使うと
image.png 2.17 KBが最大となるように学習を行っている

となります。最後の式は、「次のトークンを導出する条件付き確率の積」です。この確率が最大になるように学習できれば、個々のトークンではなく「生成される単語系列{ U1, U2, ... Un }を繋げて全体を見ると「そう返すよね」と思える」トークン列を生成できるわけです。

さて、上記を目指して学習する過程は、Next Token Predictionと呼ばれる自己教師あり学習の一種となっています。大規模言語モデルの場合は、大規模コーパスと呼ばれるパブリックデータを用いて、この手法で学習しています。これについては様々な文献で紹介されていますので、興味のある方は当たってみて下さい。

8. 自己回帰モデルからハルシネーションを捉える

本稿の最初に言及したハルシネーションを、自己回帰モデルの知識を用いて理解することにチャレンジしてみましょう。事例としては、松尾先生の解説文「深層学習と人工知能」に掲載されている、LLMによる素数の生成を使ってみたいと思います。

図を拝借します!
image.png 90.81 KB我々人間は、太字で示された2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41を見ると、「あ、素数を昇順に並べていけばいいんだな!」と気づいて、素数を並べ始めると思います。

しかしLLMが自己回帰モデルで示される動きを行っている場合、2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41を受け取ると「うーん、次に来る確率が高いトークンは・・・43だ!」というように、素数を求められている、とか、43が素数である、などの本質は知らないまま、次に来る確率が高いトークンを生成するわけです。

これが自己回帰モデルで示される動きをする場合のLLMの限界。これを知っていると、LLMの出力を「過度にうのみにする」ことはなくなると思いますし、むしろ「何をどのように間違うか」をある程度想像できるようになるのではないでしょうか?

9. まとめ

本稿では、大規模言語モデル(Large Language Model, LLM)の動作をモデル化する自己回帰モデルについて、順を追って理解を深めてきました。内容をまとめると以下のようになります。

・LLMが実現しているのは「こう来たら、こう返す」を考える機能
・「こう来たら、そう返すよね」は条件付き確率でモデル化できる
・大規模言語モデルは「こうトークンが続いたら、次に来るトークンはこれ」を示す条件付き確率を用いて単語系列を生成する
・大規模言語モデルは、事前学習で「こう来たら、そう返すよね」の「そう返すよね」を最大化できるように条件付き確率を学んでいる


今回の記事で、LLMの理解が深まり、ハルシネーションに右往左往しない上手なLLMの使いこなしの一助となれば幸いです。