本文へスキップ

レッスン 4/6 · 6分 · +100 XP

LLMは、どうやってトークンを1つずつ書いて返事を作るの?

言語モデルは、返事をトークン1つずつ書いていきます。1歩ごとに、次に来うるトークンすべてに点数をつけ、その点数を確率に変えて1つを引きます。だから、ありそうなトークンがたいてい選ばれます。引いたトークンを文章に足し、終わりのトークンが出るまでくり返します。温度の設定で、引き方が手堅くも冒険的にもなります。

▶ やってみよう

なぜ大切なのか

あなたが読む返事はすべて、確率のリストからトークンを1つずつ引いて書かれています。それを知れば、答えが少しずつ流れてくる理由、毎回変わる理由、1つのダイヤルで口調が変わる理由がわかります。

6分後にできるようになること

  • 言語モデルは、次のトークンすべてに点数をつけ、1つ引いて、くり返すことで文章を書きます。
  • 同じ質問への答えが違うのは、考えが変わったからではなく、引き方が違ったからです。
  • 事実や計算には安定した設定が、アイデア出しには温度を上げた設定が向いています。

練習する内容

  1. 生成のループ

    あなたがVireoに質問を送ります。返事を書く手順を正しい順番に並べましょう。

    1. あなたのメッセージがトークンに分けられる
    2. モデルが、次に来うるトークンすべてに点数をつける
    3. 点数が、温度で形を変えた確率になる
    4. トークンを1つ引いて、文章に足す
    5. 終わりのトークンが出るまで、ループをくり返す
  2. 生成マシンを動かそう

    「次のトークン」を押して、ルーレットが言葉を1つずつ引くのを見ましょう。そのあとミッションごとにダイヤルを設定して試します。確率は考え方を見せるための作った例です。

    1. 計算の答えは確実でなければなりません。毎回、正しい数を。

      あなた: 7 × 8は?

      次のトークン・確率

      1. “7 × 8” 70% · “7かける8” 22% · “計算結果” 8%
      2. “は” 90% · “の答えは” 8% · “で” 2%
      3. “56” 84% · “54” 7% · “58” 5% · “65” 3% · “むらさき” 1%
      4. “です。” 90% · “!” 10%

      ✓ 温度が低いと、いちばん上のトークンがほぼ毎回勝つので、3つの返事はどれも56。事実、計算、コードには、低い温度が向いています。

    2. アイデア出し:ロボット部が、投票用にいろいろなチーム名をほしがっています。

      あなた: ロボット部のチーム名を考えて。

      次のトークン・確率

      1. “チーム” 100%
      2. “稲妻” 50% · “鋼鉄” 20% · “歯車” 14% · “ピクセル” 10% · “ターボ” 6%
      3. “フクロウ” 55% · “ロケット” 20% · “ウィザード” 12% · “キツネ” 9% · “スパーク” 4%

      ✓ 温度を上げると、可能性の低い言葉にも本当にチャンスが生まれ、引くたびに新しい名前が出ます。アイデア出しでは、いろいろ出ることが大事です。

    3. 物語の書き出しは読む人をおどろかせたいけれど、意味は通じないといけません。

      あなた: 灯台の短い物語を書き始めて。

      次のトークン・確率

      1. “灯台守は” 100%
      2. “霧の中で” 48% · “階段の下で” 26% · “ある夜” 18% · “のの” 5% · “食べて” 3%
      3. “一通の” 66% · “古い” 20% · “小さな” 10% · “ぐろぷ” 4%
      4. “手紙” 40% · “クジラ” 25% · “扉” 20% · “くつ下” 10% · “をを” 5%
      5. “を見つけた。” 50% · “の声を聞いた。” 28% · “を絵に描いた。” 17% · “バナナバナナ” 5%

      ✓ 温度を高くしておどろきを出し、top-kを3にして、各ステップでありそうな3つの言葉だけが引かれるようにする。創造的で、でたらめなしっぽは切り落とされます。

  3. あなたにとっての意味は?

    1. Vireoに同じ質問を2回したら、言い方の違う答えが返ってきました。何が起きた?

      • トークンが1つずつ、確率からもう一度引かれた (答え)
      • 2つの質問のあいだに、Vireoが新しいことを学んだ
    2. 長い返事が画面に1語ずつ表示されるのはなぜ?

      • トークンは、1つ前のトークンができてから作られるから (答え)
      • アプリを親しみやすく見せるためのアニメーションだから
    3. 開発者が、税金の申告書を記入するツールの温度を0にしました。よい考え?

      • よい考え。毎回いちばん上のトークンが勝つので、答えが安定する (答え)
      • よくない。温度0ではモデルが止まってしまう

覚えておこう

返事は確率のリストからトークンを1つずつ引いて作られます。温度が低いと安定し、高いと創造的になります。

返事は確率からトークンを1つずつ引いて作られます。温度が低いと確実、高いと創造的。top-kででたらめを切り落とします。

押さえておきたい事実

  • 今の大規模言語モデルのもとになった設計トランスフォーマーは、出力をトークン1つずつ生成し、新しいトークンを次の入力として戻していきます。 · 出典: Vaswani et al., Attention Is All You Need, Google, 2017
  • いつもいちばんありそうな言葉を選ぶと、平凡でくり返しの多い文章になりがちなことがわかり、確率の大部分をカバーする最小限のトークンだけから引くnucleus(top-p)サンプリングが提案されました。 · 出典: Holtzman et al., The Curious Case of Neural Text Degeneration, ICLR 2020
  • ありそうなトークン上位k個だけから引くtop-kサンプリングは、ふつうの方法より多彩な物語を生成するのに使われました。 · 出典: Fan, Lewis and Dauphin, Hierarchical Neural Story Generation, ACL 2018
  • 温度は、モデルのもとの点数を確率に変える前に割る数です。1より小さいといちばん人気の候補がより強くなり、1より大きいと確率がならされます。

更新日:

よくある質問

LLMの温度(temperature)とは?

トークンを引く前に確率の形を変える設定です。低い値では、いちばんありそうなトークンがほぼ毎回勝ち、答えが安定します。高い値では確率がならされ、返事が多彩になりますが、上げすぎると意味が通じなくなります。

AIチャットボットが同じ質問に違う答えを返すのはなぜ?

チャットボットはふつう、いつもいちばん上を選ぶのではなく、確率のリストからトークンを引くからです。返事の最初のほうで違うものが引かれると、言い方が変わり、ときには答えも変わります。

top-kサンプリングとは?

ありそうな次のトークン上位k個の中からだけ引くようにする方法です。ある程度の多彩さを保ちながら、ありそうにない、でたらめになりがちなトークンの長いしっぽを切り落とします。

LLMはいつ書くのをやめるかを、どうやって知るの?

学習中に、返事の終わりを示す特別な終了トークンを覚えています。そのトークンが引かれるか、長さの上限に達すると、生成が終わります。

関連用語