LLM(大規模言語モデル)のしくみ

文章を作るAIは、次に来る言葉を1つずつ選んで文を作ります。このページ用に作った小さな表で、その選び方を体験します。次の言葉の候補と選ばれやすさ(確率)を見て、temperature(選び方の大胆さ)で結果がどう変わるか試しましょう。

temperature(大きいほど、意外な言葉も選ばれやすい)

空は

次の言葉の候補

  • 青い 66%
  • 広い 24%
  • 高い 10%

「1語ぶん進める」を押してください。

文をトークンに区切る

  • 空は 7
  • 青い 10
  • です 13
  • 。 14

このページの小さな辞書で、前から長い順に区切っています(辞書にない文字は1文字ずつ)。番号は辞書の順番で、点線は辞書にない文字です。実際のトークン化とは別物です。

学習用に簡単にした模型です。確率表は自作で、実際の言語モデルとは別物です。

遊び方

目標は、文が1語ずつできていく様子と、temperature で結果が変わるのを見ることです。まず書き出しと temperature を選びます。「1語ぶん進める」を押すと、次に来る言葉の候補とその確率(選ばれやすさ)が棒で出ます。くじ引きで1つが選ばれ、文に足されます。これをくり返して文を作ります。temperature が大きいほど、確率の低い言葉も選ばれやすくなります。「自動」を押すと、同じ書き出しを temperature 0、1、2 の順に作って見せます。いちばん下では、自分の文をトークン(文字や言葉の小さな断片)に区切れます。

もっと知る

文章を作るコンピューターのプログラム(言語モデル)は、それまでの言葉を材料に、「次に来る言葉(トークン)」ごとの確率を出し、そこから1つを選んで文に足す、という手順をくり返します。トークンは、文字や単語、その一部(語より小さい断片)などの、プログラムが扱う単位です。この画面の確率表は、このサイトで作った小さな表です。実際の言語モデルの出力ではなく、実際のトークン化の結果でもありません。実際のモデルは、大量の文章から「どの言葉のあとにどの言葉が来やすいか」という傾向を学んでいます。表を引くのではなく、ニューラルネットワークという計算で確率を出し、ここよりずっと長い文脈を使います。ここで見せているのは、確率からくじ引きで選ぶ部分だけです。確率の出し方は、スコアを temperature(T)で割ってから softmax にかけます。p = exp(z/T) ÷ Σ exp(z/T) です。たとえばスコア [2.0, 1.0, 0.1] は、T=1 で約 [0.659, 0.242, 0.099]、T=0.5 で約 [0.864, 0.117, 0.019]、T=2 で約 [0.502, 0.304, 0.194] になります。T が小さいほど確率の大きいものに偏り、大きいほど平らになります。T=0 は式では0で割ってしまうので、別扱いで「いちばん大きいものを選ぶ」ことにしています。乱数の種は固定してあるので、同じ操作は同じ結果になります。大事なのは、モデルは「もっともらしい次の言葉」を選ぶように作られていて、それ自体には、各文が事実かどうかを確かめる仕組みがない、ということです。このため、もっともらしいのに事実と合わない文が書かれることがあります(研究では「ハルシネーション」と呼ばれます)。「ぽこ町」は架空の町ですが、表は町が実在するかを確かめず、りんごやみかんを続けます。外の情報と組み合わせて確かめる方法もありますが、それはモデル単体のしくみとは別の話です。かといって、いつも間違うわけでも、何でも正しいわけでもありません。傾向を学んでいるので、よくある話題では当たりやすく、確かめようのない話題では作り話になりやすい、というだけです。トークンの区切りも、実際のものは別の方法で、この画面の辞書とは違います。学習用に簡単にした模型です。

読みもので詳しく: ネットの裏側:Cookie・DNS・動画・文章づくり →