言語モデルは各ステップで語彙全体に対する確率を出力し、そこから三つの決定器が候補を絞ります。temperature はロジットを再スケールし、1 未満なら強弱の差が開き、1 を超えると差が縮まります。top_k は上位 k 件だけを残して再正規化します。top_p は上位から累積し、合計が p に達するまで残すため、しきい値をまたいだ候補も残ります。ここでの四つの段階はその四つの時点であり、除外された候補はその場に残り、どのパラメータが外したかを示します。
三つの決定器は交換可能ではありません。先にスケールすると、切り捨ては作り替えられた分布を見ることになります。temperature を上げると曲線が平坦になり、top_p がしきい値に達するのが遅くなって候補が多く残ります。先に切り捨てる場合は、元の確率で残すかどうかが決まり、temperature は生き残った候補だけを作り替えます。SDK ごとに採用する順序が異なるため、このツールは一方を既定値の裏に隠さず、選択そのものを見せています。
ここでの出発点となる分布は取得したものではなく構成したものです。三つの形は、それぞれ別の決定器が見えるように選んでいます。首位が突出した形、上位が拮抗した形、そして長い裾を持つ形です。構成であることは画面上に明示します。因果関係を見せるツールが、どちらの半分が本物かについて曖昧でいるわけにはいかないからです。そして本物である半分こそが重要な半分です。temperature、top_k、top_p の実装は実際のサンプラーと同じなので、目にする変化はすべて本物の計算です。構成した分布では得られないのは実際の語彙の手触りであり、だからこそブラウザ内で動く小さなモデルの読み込みは、おまけではなく次の一歩として用意されています。
このテーマに関するよくある疑問と回答をまとめました。
作用する対象が違います。temperature は誰も除外せずに分布全体を作り替え、強い候補が弱い候補よりどれだけ優勢に見えるかを決めます。top_p は累積確率がしきい値に達した時点で線を引き、候補そのものを取り除きます。両方を同時に動かすのが勧められないのは互いに干渉するからです。temperature を上げると曲線が平坦になり、同じ top_p でもしきい値に達するまでに多くの候補が必要になるため、除外したつもりのトークンが残ります。片方だけ動かしてチェーンを見れば、その干渉がそのまま見えます。
top_k は固定の人数です。確率が高い上位 k 件を残し、残りを捨てて再正規化します。top_p は確率の総量で決める方式で、核サンプリングとも呼ばれます。最も確率の高いものから順に足していき、累積が p に達した時点で止めます。合計を p の向こう側へ押し出した候補も残ります。それがなければしきい値に届かないからで、p を小さくすると候補が一つだけになることがあるのはこのためです。top_k は常に同じ数の選択肢を残し、top_p はそのステップでモデルがどれだけ確信しているかによって残る数が変わります。
最後の一手が決定ではなく抽選だからです。三つのパラメータは、どの候補が残るかと、それぞれの重みを決めるだけです。実際に出力されるトークンは、その重み付き集合から抽選されます。したがってパラメータが同じ二回の実行は同じ候補プールを共有していても、違うトークンに着地しえます。ここで「もう一度引く」を押すと、チェーンはまったく動かないのに結果だけが変わります。それが残っているランダム性のすべてです。temperature を 0 にすると候補プールが一つに収束するため、決定的に振る舞います。
推奨値を探すのではなく、一度に一つだけ動かしてチェーンへの影響を見てください。散漫な出力は、確率の低い候補がまだ残っていることが多いので、top_p や top_k を小さくして切り詰めれば、残った候補の形を変えずに除外できます。繰り返しが多い場合は候補プールが一つ二つの優勢な候補に潰れていることが多く、差を広げる手段は temperature を上げることです。実践的な方法としては、三つのうち二つを固定し、残る一つを保守的な値から積極的な値へ動かして、残った候補の集合が目的に合う地点で止めます。普遍的に正しい値は存在しないため、このツールは設定を推奨せず仕組みを示しています。
出発点の分布はデモのために構成したもので、画面にもそう表示しています。つまりモデル由来ではありません。ただしその下流はすべてブラウザ内でリアルタイムに計算され、実際のサンプラーと同じ処理をしています。したがって仕組みはご自身の呼び出しにも当てはまりますが、具体的な数値は当てはまりません。呼び出しではプロンプトが異なり、モデルやトークナイザ、決定器の順序も違う可能性があり、さらに繰り返しペナルティなど、このページが再現していない処理が加わることもあります。実際の分布で試したい場合は、ブラウザ内に小さなモデルを読み込めば、同じチェーンがその実出力の上で動きます。
三つです。それぞれ、主役となる決定器が変わるように選んでいます。首位が突出している場合、切り捨てには取り除くものがほとんどなく、目に見える効果があるのは temperature だけです。上位が拮抗している場合は、top_p を少し動かすだけで残る顔ぶれが変わり、同じ問いに違う答えが返る理由を最も直接的に体感できます。長い裾がある場合に力仕事をするのは top_k で、はぐれた数個ではなく裾全体を切り落とします。話題ではなく形で選んでいるのは意図的です。どのパラメータを回す価値があるかを決めるのは形であり、学ぶ価値があるのはそこだからです。