ChatGPTの仕組みから学ぶG検定対策講座⑥
次のトークンはどう選ばれるのか?Logit・Softmax・Temperature
こんにちは。ゆうせいです。
前回は、Self-Attentionで集めた情報をMLPで加工し、残差接続やLayer Normalizationを使いながら複数のTransformer Blockを通過する流れを説明しました。
最後のTransformer Blockを通過すると、各トークンは文章の文脈を反映した数値ベクトルになっています。
しかし、この時点では、まだ次に出力するトークンは決まっていません。
今回は、Transformer Explainerの「Output Probabilities」を操作しながら、次の内容を確認します。
- 最後のトークンの表現を取り出す
- 50,257個のLogitを計算する
- Softmaxで確率へ変換する
- Temperatureで確率分布を調整する
- Top-kとTop-pで候補を絞る
- 確率分布から次のトークンを選ぶ
Probabilitiesを開く
Transformer Explainerを開き、画面を「 Probabilities」までスクロールしてください。
この部分には、Transformer Blockの処理結果から次のトークンを選ぶまでの流れが表示されています。
Transformer Explainerで使用されているGPT-2 smallには50,257種類のトークンがあります。最終的な出力層では、それぞれのトークンに対して、次に出現する可能性を表す数値が計算されます。

次トークン予測では最後の位置を使う
入力文が次の6個のトークンに分かれているとします。
- Data
- visualization
- em
- powers
- users
- to
各トークンは、12個のTransformer Blockを通過した後も768次元のベクトルで表現されています。
Data :768次元
visualization :768次元
em :768次元
powers :768次元
users :768次元
to :768次元
次のトークンを生成するときに使うのは、現在の文章の最後にある「to」の表現です。
Data visualization empowers users to
この文章に続くトークンを予測するため、最後の「to」が持つ768次元のベクトルを出力層へ渡します。
文章の途中にある各位置についても学習時には予測値を計算できますが、実際に文章の続きを1トークン生成するときは、現在の末尾位置に対応する出力を使用します。
768次元を50,257次元へ変換する
最後のトークンは768次元のベクトルですが、GPT-2 smallの語彙には50,257種類のトークンがあります。
そこで、線形変換を使って768次元の表現を50,257次元へ変換します。
768次元
↓
線形変換
↓
50,257次元
50,257個の各出力は、語彙に登録されている一つのトークンに対応します。
| 出力の位置 | 対応するトークンのイメージ |
|---|---|
| 1番目 | あるトークンA |
| 2番目 | あるトークンB |
| 3番目 | あるトークンC |
| …… | …… |
| 50,257番目 | あるトークンZ |
この段階で計算される数値を、Logit(ロジット)と呼びます。
Logitとは何か
Logitは、次のトークンとしてどの程度有力かを表す点数です。
例えば、次の文章に続くトークンを予測するとします。
日本の首都は
説明用に単純化すると、次のようなLogitが得られるイメージです。
| 候補トークン | Logit |
|---|---|
| 東京 | 8.5 |
| 大阪 | 4.2 |
| 京都 | 3.8 |
| 日本 | 2.1 |
「東京」のLogitが最も大きいため、次のトークンとして最も有力です。
ただし、Logitは確率ではありません。
Logitには、次のような特徴があります。
- 合計が1になるとは限らない
- 負の値になることもある
- 上限や下限が決まっていない
- 値の大小によって候補の強さを比較できる
Logitをそのままでは確率として扱えないため、Softmaxを使って確率分布へ変換します。
Softmaxで確率分布を作る
Softmaxは、複数のLogitを、合計が1になる確率へ変換する関数です。
例えば、三つの候補に次のLogitが付いているとします。
[3.0, 2.0, 1.0]
Softmaxを適用すると、おおよそ次の確率になります。
[0.665, 0.245, 0.090]
合計は1です。
0.665 + 0.245 + 0.090 = 1.000
元のLogitが大きい候補ほど、高い確率になります。
| 候補 | Logit | Softmax後の確率 |
|---|---|---|
| 候補A | 3.0 | 約66.5% |
| 候補B | 2.0 | 約24.5% |
| 候補C | 1.0 | 約9.0% |
Transformer Explainerでは、50,257個のLogitがSoftmaxによって確率分布へ変換され、その確率をもとに次のトークンが選ばれる様子を確認できます。
最も確率が高いトークンを必ず選ぶわけではない
最も単純な選び方は、確率が最大のトークンを常に選ぶ方法です。
この方法は、貪欲法またはGreedy Decodingと呼ばれます。
例えば、次の確率分布があるとします。
| 候補 | 確率 |
|---|---|
| 東京 | 70% |
| 大阪 | 15% |
| 京都 | 10% |
| その他 | 5% |
Greedy Decodingでは、必ず「東京」を選びます。
一方、確率に応じて候補を抽選する方法もあります。
この方法をSampling(サンプリング)と呼びます。
サンプリングでは、「東京」が選ばれる可能性が最も高いものの、場合によっては「大阪」や「京都」が選ばれることもあります。
そのため、同じ入力を与えても、生成される文章が毎回同じになるとは限りません。
Temperatureとは何か
Transformer Explainerの画面上部には、Temperatureを変更する欄があります。
Temperatureは、次のトークンを選ぶ前に、確率分布の形を調整するための値です。
Temperatureは、Softmaxへ入力する前のLogitに対して使われます。
調整後のLogit
= 元のLogit ÷ Temperature
TemperatureをTとすると、計算のイメージは次のようになります。
Softmax(Logit ÷ T)
Temperatureが1の場合、Logitを1で割るため、値は変化しません。1より小さい場合は確率分布が鋭くなり、1より大きい場合は確率分布が平らになります。
Temperatureが1の場合
Temperatureが1の場合は、元のLogitをそのままSoftmaxへ渡します。
Logit ÷ 1 = Logit
したがって、Temperatureによる調整は行われません。
| 候補 | 調整前のLogit | Temperature 1で割った後 |
|---|---|---|
| A | 3.0 | 3.0 |
| B | 2.0 | 2.0 |
| C | 1.0 | 1.0 |
Temperatureを低くすると確率が集中する
Temperatureを0.5にすると、Logitは0.5で割られます。
3.0 ÷ 0.5 = 6.0
2.0 ÷ 0.5 = 4.0
1.0 ÷ 0.5 = 2.0
Logit同士の差が大きくなるため、Softmax後の確率は上位候補へ集中します。
| 候補 | Temperature 1 | Temperature 0.5 |
|---|---|---|
| A | 約66.5% | 約86.7% |
| B | 約24.5% | 約11.7% |
| C | 約9.0% | 約1.6% |
最も有力な候補Aが選ばれる可能性が、さらに高くなっています。
Temperatureを低くすると、次のような傾向になります。
- 確率の高いトークンが選ばれやすい
- 回答が安定しやすい
- 同じ入力に対して似た出力になりやすい
- 意外性のある表現は選ばれにくい
Temperatureを高くすると確率が平らになる
Temperatureを2にすると、Logitは2で割られます。
3.0 ÷ 2 = 1.5
2.0 ÷ 2 = 1.0
1.0 ÷ 2 = 0.5
Logit同士の差が小さくなるため、Softmax後の確率分布は平らになります。
| 候補 | Temperature 1 | Temperature 2 |
|---|---|---|
| A | 約66.5% | 約50.6% |
| B | 約24.5% | 約30.7% |
| C | 約9.0% | 約18.6% |
候補Bや候補Cが選ばれる可能性が高くなっています。
Temperatureを高くすると、次のような傾向になります。
- 幅広い候補が選ばれやすい
- 出力の多様性が高まる
- 同じ入力でも異なる文章になりやすい
- 文脈に合わない候補も選ばれやすくなる
Temperatureが高い状態は「創造性が高い」と表現されることがあります。
ただし、モデルが人間のような創造力を獲得するわけではありません。
正確には、確率の低い候補も選ばれやすくなり、出力の多様性が増えるという意味です。
Temperatureによる違いを山の形で考える
確率分布を山に例えると、Temperatureの働きを理解しやすくなります。
Temperatureが低い場合
確率
│ ▲
│ ▲▲▲
│ ▲▲▲▲▲
│_______▲▲▲▲▲▲▲_______
候補
高い山が一つでき、上位候補へ確率が集中します。
Temperatureが高い場合
確率
│ ▲▲▲▲▲▲▲
│ ▲▲▲▲▲▲▲▲▲▲
│ ▲▲▲▲▲▲▲▲▲▲▲▲▲
│____________________
候補
山が低く広がり、多くの候補が選ばれる可能性を持ちます。
Transformer ExplainerでTemperatureを試す
Transformer Explainerの上部で、Temperatureを変更してGenerateボタンを押してください。
Temperatureを0.2にする
Temperatureを0.2程度に設定すると、確率の高い少数のトークンへ分布が集中します。
Generateを複数回押しても、上位のトークンが繰り返し選ばれやすくなります。
Temperatureを1にする
Temperatureを1にすると、モデルが計算した元のLogitをそのままSoftmaxへ渡します。
Temperatureを2程度にする
Temperatureを高くすると、確率分布が平らになります。
Generateを複数回押すと、上位以外のトークンも選ばれやすくなります。
Transformer Explainerでは、Temperatureを変更したときに、各候補の確率がその場で更新されます。
Temperatureを高くしすぎるとどうなるのか
Temperatureを高くしすぎると、本来は確率が低かったトークンまで選ばれやすくなります。
その結果、次のような問題が起こる可能性があります。
- 話題が突然変わる
- 文法的に不自然な文章になる
- 事実性が低下する
- 質問と関係のない内容が出力される
- 文章全体の一貫性が失われる
Temperatureは、高ければ高いほどよいという値ではありません。
目的に応じて調整する必要があります。
| 用途 | Temperatureの考え方 |
|---|---|
| 事実に基づく説明 | 比較的低め |
| プログラムコードの生成 | 比較的低め |
| 定型的なビジネス文書 | 低めから中程度 |
| アイデア出し | 中程度からやや高め |
| 物語やキャッチコピー | 目的に応じて高め |
実際の適切な設定値は、使用するモデルやサービス、求める出力によって異なります。
Top-kとは何か
Temperatureを調整しても、語彙に含まれるすべてのトークンには、非常に小さくても一定の確率が残る場合があります。
そこで、候補を確率上位の一定数だけに絞る方法が使われます。
これが、Top-k Samplingです。
例えば、次の候補があるとします。
| 順位 | 候補 | 確率 |
|---|---|---|
| 1 | A | 40% |
| 2 | B | 25% |
| 3 | C | 15% |
| 4 | D | 10% |
| 5 | E | 5% |
| 6以下 | その他 | 合計5% |
Top-kを3に設定すると、上位3候補だけを残します。
残す候補:A、B、C
除外する候補:D、E、その他
除外された候補の確率は0になります。
残った候補の確率は、合計が1になるように再調整されます。
| 候補 | 絞り込み前 | Top-k適用後のイメージ |
|---|---|---|
| A | 40% | 50% |
| B | 25% | 31.25% |
| C | 15% | 18.75% |
| D以下 | 20% | 0% |
Transformer Explainerでは、Top-kを設定すると、確率が高い上位k個のトークンだけがサンプリング候補になります。
Top-kの特徴
Top-kでは、候補数が常に一定です。
Top-kを5に設定すれば、確率分布の形にかかわらず、原則として上位5候補を残します。
そのため、次のような状況が起こります。
上位候補に確率が集中している場合
| 候補 | 確率 |
|---|---|
| A | 90% |
| B | 5% |
| C | 2% |
| D | 1% |
| E | 0.5% |
Top-kを5にすると、確率が非常に低いDやEも候補に残ります。
確率が分散している場合
| 候補 | 確率 |
|---|---|
| A | 15% |
| B | 14% |
| C | 13% |
| D | 12% |
| E | 11% |
| F | 10% |
Top-kを5にすると、10%の確率を持つFであっても除外されます。
Top-kは分かりやすい方法ですが、確率分布に応じて候補数を変えることはできません。
Top-pとは何か
確率分布に応じて候補数を動的に変える方法が、Top-p Samplingです。
Nucleus Samplingとも呼ばれます。
Top-pでは、確率が高い順に候補を並べ、累積確率が指定したp以上になるまで候補を残します。
例えば、Top-pを0.8に設定したとします。
| 順位 | 候補 | 確率 | 累積確率 |
|---|---|---|---|
| 1 | A | 40% | 40% |
| 2 | B | 25% | 65% |
| 3 | C | 15% | 80% |
| 4 | D | 10% | 90% |
| 5 | E | 10% | 100% |
A、B、Cまでで累積確率が80%に達するため、候補は次の三つになります。
A、B、C
DとEは除外されます。
Transformer Explainerでは、Top-pを指定すると、累積確率がしきい値pを超える最小の候補集合から次のトークンを選びます。
Top-pでは候補数が変化する
Top-pの特徴は、確率分布の状態によって候補数が変わることです。
一つの候補が非常に強い場合
| 候補 | 確率 | 累積確率 |
|---|---|---|
| A | 85% | 85% |
| B | 5% | 90% |
| C | 4% | 94% |
Top-pが0.8なら、候補Aだけでしきい値に達します。
確率が分散している場合
| 候補 | 確率 | 累積確率 |
|---|---|---|
| A | 25% | 25% |
| B | 20% | 45% |
| C | 15% | 60% |
| D | 12% | 72% |
| E | 10% | 82% |
Top-pが0.8なら、AからEまでの5候補が残ります。
このように、Top-pではモデルの確信度に応じて候補数が変化します。
Top-kとTop-pの違い
| 項目 | Top-k | Top-p |
|---|---|---|
| 候補の選び方 | 上位k個を残す | 累積確率がpに達するまで残す |
| 候補数 | 基本的に固定 | 確率分布によって変化 |
| 設定例 | Top-k=5 | Top-p=0.9 |
| 長所 | 仕組みが分かりやすい | 確信度に応じて候補数を調整できる |
どちらも、確率が極端に低い不自然なトークンを候補から外しつつ、一定の多様性を残すために使われます。
Temperature・Top-k・Top-pの役割
三つの設定は似ていますが、それぞれ役割が異なります。
| 設定 | 変更するもの | 主な効果 |
|---|---|---|
| Temperature | 確率分布の鋭さ | 上位候補への集中度を変える |
| Top-k | 候補の個数 | 上位k個だけを残す |
| Top-p | 候補の累積確率 | 確率の合計がpに達する候補だけを残す |
処理のイメージは次のとおりです。
50,257個のLogit
↓
Temperatureで分布を調整
↓
Softmaxで確率へ変換
↓
Top-kまたはTop-pで候補を絞る
↓
残った候補の確率を再調整
↓
サンプリング
↓
次のトークンを一つ選ぶ
実際のライブラリやサービスでは、処理順や利用できる設定が異なる場合があります。
次のトークンを文章へ追加する
候補の中から一つのトークンが選ばれると、そのトークンを現在の文章の末尾へ追加します。
例えば、次の文章が入力されているとします。
Data visualization empowers users to
次のトークンとして「understand」が選ばれた場合、文章は次のようになります。
Data visualization empowers users to understand
モデルは、更新された文章全体をもう一度入力として使います。
そして、さらに次のトークンを予測します。
Data visualization empowers users to
↓
understandを予測
↓
Data visualization empowers users to understand
↓
次のトークンを予測
↓
文章が少しずつ伸びる
この処理を、終了を表すトークンが選ばれるか、設定された最大長へ達するまで繰り返します。
Transformer Explainerで確認するポイント
Transformer ExplainerのOutput Probabilitiesを操作し、次の点を確認してください。
- 最後のトークンの768次元ベクトルが出力層へ渡される
- 768次元が50,257次元へ変換される
- 各語彙トークンにLogitが計算される
- SoftmaxによってLogitが確率へ変換される
- Temperatureを下げると上位候補へ確率が集中する
- Temperatureを上げると確率分布が平らになる
- Top-kでは上位k個の候補だけが残る
- Top-pでは累積確率に応じて候補数が変わる
- Generateを押すたびに、選択されたトークンが文章へ追加される
- 追加後の文章を使って、再び次トークン予測が行われる
Transformer全体の流れ
ここまでの全6回で説明したTransformerの流れをまとめます。
入力文章
↓
Tokenization
文章をトークンへ分割
↓
Token Embedding
トークンを数値ベクトルへ変換
↓
Positional Encoding
トークンの位置情報を追加
↓
Multi-Head Self-Attention
トークン同士の関係を計算
↓
Causal Mask
未来のトークンを参照できないようにする
↓
MLP
各トークンの特徴を個別に加工
↓
残差接続・Layer Normalization
情報と学習を安定させる
↓
複数のTransformer Block
文脈を反映した表現へ段階的に更新
↓
Linear Layer
語彙数と同じ数のLogitを計算
↓
Softmax
次トークンの確率分布を作る
↓
Temperature・Top-k・Top-p
確率分布と候補を調整
↓
Sampling
次のトークンを一つ選ぶ
↓
選んだトークンを文章へ追加
↓
同じ処理を繰り返す
今回のまとめ
- 最後のTransformer Blockを通過した後、次トークン予測を行う
- 文章生成時には、現在の末尾位置に対応する表現を使用する
- GPT-2 smallでは、768次元を50,257次元へ変換する
- 語彙中の各トークンにLogitと呼ばれる点数が付く
- Logitは確率ではなく、候補の有力さを表す数値である
- Softmaxによって、Logitを合計1の確率分布へ変換する
- Temperatureを低くすると、確率が上位候補へ集中する
- Temperatureを高くすると、幅広い候補が選ばれやすくなる
- Top-kは、確率上位のk個だけを候補として残す
- Top-pは、累積確率がpへ達するまでの候補を残す
- 選ばれたトークンを文章へ追加し、次のトークンを再び予測する
- この処理の繰り返しによって、長い文章が生成される
Transformerの基本動作は、次のトークンを予測することです。
しかし、その一回の予測には、トークン化、埋め込み、位置情報、Self-Attention、MLP、Softmax、サンプリングといった多くの処理が組み合わされています。
Transformer Explainerで各部分を実際に操作すると、ChatGPTなどの文章生成AIが、どのように入力を数値へ変換し、文脈を取り込み、次のトークンを選んでいるのかを視覚的に理解できます。
投稿者プロフィール

- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
海外放浪の末、2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。
学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。
最新の投稿
山崎講師2026年7月26日ChatGPTの仕組みから学ぶG検定対策講座⑥
山崎講師2026年7月26日ChatGPTの仕組みから学ぶG検定対策講座⑤
山崎講師2026年7月26日ChatGPTの仕組みから学ぶG検定対策講座④
山崎講師2026年7月26日ChatGPTの仕組みから学ぶG検定対策講座③
