大規模言語モデル (LLM) の内部動作を
「学習」から「推論」まで、ステップごとに可視化するツール
🔍 このプログラムは何?
AI チャットに質問すると、まるで「考えて」答えているように見えます。
しかし実際には、内部で数値の行列計算 を何層も繰り返しているだけです。
このプログラムでは、小さな Transformer モデルを 実際に学習 させ、
その後の推論(予測)の全過程 を1ステップずつ可視化します。
「AIが学ぶとはどういうことか」「質問に答えるとき内部で何が起きているか」を体感できます。
💬 なぜ Decoder だけ?
Transformer には Encoder(入力を理解する)と Decoder (テキストを生成する)の2種類がありますが、
現在の主要な生成AI の多くは Decoder のみ の構造を採用しています。
Decoder の特徴は Causal Mask (因果マスク)です。
「未来の単語を見ずに次の単語を予測する」という制約があるからこそ、
1単語ずつテキストを生成できます。
このツールでは、最も実用的かつ理解すべきこの Decoder 構造に焦点を当てています。
📝 今回のシナリオ
テーマ: 動物に関する質問と回答
学習データ(入力) 正解
「人気のペットは」 猫 「かわいい動物は」 猫 「化ける動物は」 猫 「気まぐれな動物は」 猫 …他 12 件
登場する答え: 犬・狐・狸・猫
推論で試す質問: 「人気のペットは」 / 「山で見かける動物は」 / 「化ける動物は」 / 「忠実な動物は」 / 「かわいい動物は」 / 「昔話に出る動物は」
モデル: 4レイヤー / d_model =16 / 2ヘッド / パラメータ 数 13,728 個
(教育用に極小サイズ。実際の LLM は数千万〜数千億個のパラメータ を持つ)
🎯 このツールで体験できること
AIモデルが動くまでには、大きく2つのフェーズ があります。
フェーズ1: 学習(Training)
ランダムな重みから始めて、16件の学習データを300回繰り返し学習。
モデルに質問を入力し、答えを予測させる(最初はデタラメ)
予測と正解のズレ(損失関数 )を計算する
ズレが小さくなるよう重みを少しずつ調整する(勾配降下法 )
これを何百回も繰り返す → 予測精度が上がる
→ 損失関数 の値が下がっていく様子を確認できます。
▶ 学習過程を見る
フェーズ2: 推論(Inference)
学習済みモデルに質問を入力し、答えを予測させる。この内部処理を全ステップ可視化。
質問文を単語(トークン )に分割し、数値(ベクトル )に変換する
各単語が「他のどの単語に注目するか」を計算する(Self-Attention )
各単語の表現をさらに変換する(FFN )
2〜3 を4回繰り返す(= 4層のレイヤー)
最後に、語彙の中から「次に来る単語」の確率を出力する(次トークン予測 )
→ 各質問ごとに、Embedding → Attention → FFN → 予測 の全過程を確認できます。
▶ 推論の過程を見る
📊 学習過程を見るLoss の低下 / 予測の変化 / Attention の変化
🔍 推論の過程を見るEmbedding → Attention → FFN → 予測
🛠️ カスタマイズ自分のデータで試す / パラメータ調整
📖 用語集専門用語の解説一覧
📌 ポイント: このエミュレータは実際に16件のデータで学習を行っています。
答えを事前に仕込んでいるのではなく、モデルが学習データから「文脈と答えの関係」を学び取った結果です。
ただし、実際の LLM は数兆語のデータで学習しており、このミニチュアモデルとは規模が全く異なります。
「学習」とは何か?
Transformer のパラメータ(約 13,728 個の数値=「重み」)は、
最初はランダムな値 で初期化されています。この状態では何も予測できません。
学習とは、「問題を解く → 答え合わせ → 間違いを修正する」を何千回も繰り返して、
重みを少しずつ調整していくプロセスです。人間が問題集を繰り返し解いて覚えるのに似ています。
今回の学習の規模
学習データ 16件 (下の表を参照)
エポック 数300回 (= 16件を300回繰り返す)
学習ステップ合計 4,800回 (= 16 × 300)
学習率 0.005(1回の修正の大きさ)
※ 実際の LLM は数兆語のデータを数回通す。
このミニモデルはデータが少ないため、多くの繰り返しが必要。
各ステップで起きていること
モデルに「人気のペットは」と入力し、次の単語を予測させる(最初はデタラメ)
予測と正解のズレを計算する → これが損失関数 (Loss)の値
出力層から入力層へ逆向きに「どの重みがズレの原因か」を計算する(バックプロパゲーション )
原因の大きい重みほど大きく修正する(勾配降下法 、修正の大きさ = 学習率 )
これを 16件 × 300回 = 4,800回 繰り返す
下のアニメーションでは、300エポックの中から20箇所でスナップショット を撮影し、
学習が進むにつれてモデルの予測がどう変化するかをパラパラ漫画のように表示します。
学習データ(16件)
入力 正解
人気のペットは 猫
かわいい動物は 猫
化ける動物は 猫
気まぐれな動物は 猫
人気のペットは 犬
忠実な動物は 犬
飼いやすい動物は 犬
山で見かける動物は 犬
山で見かける動物は 狐
昔話に出る動物は 狐
化ける動物は 狐
ずる賢い動物は 狐
山で見かける動物は 狸
昔話に出る動物は 狸
化ける動物は 狸
かわいい動物は 狸
すべて表示 (16件)
🖱️ 操作方法:
▶ 再生 でアニメーション開始、次へ ▶| で1コマ送り、スライダーで任意の位置へジャンプ。
青い用語にマウスを重ねると解説が表示されます。
学習アニメーション
次トークン予測 の変化
人気のペットは 山で見かける動物は 化ける動物は 忠実な動物は かわいい動物は 昔話に出る動物は
モデル情報
レイヤー 数: 4 / d_model : 16 / ヘッド 数: 2
学習率 : 0.005 / エポック 数: 300
パラメータ総数: 約 13,728 個
🔎 アニメーションの着目ポイント
📉 Loss(損失)の変化
最初は高い値(=デタラメな予測)から始まり、急激に下がる。
その後は緩やかに低下する。この「急→緩」のカーブが典型的な学習曲線。
Loss が下がりきらない場合は、データに矛盾がある(同じ質問に複数の答え)ことを意味する。
📍 収束ライン(オレンジ破線)
Loss グラフ上のオレンジ色の破線は、損失の変化率が十分に小さくなった地点 =収束ポイントを示す。
この地点以降は、学習を続けても損失がほとんど改善しない。
収束 ≠ 完璧 — 収束後も Loss が 0 でない場合、
それはデータ自体に持つ不確実性(同じ質問に複数の正解がある等)に由来する。
このツールでは「1ステップの Loss 減少が全体降下量の 2% 未満」になった地点を収束とみなしている。
実務での判断 — 実際の LLM 学習では、検証データでの Loss が改善しなくなった時点で
学習を止める「Early Stopping」が広く使われる。
📊 予測確率の変化
初期状態では全トークンがほぼ均等な確率(=何も学んでいない状態)。
学習が進むと、正解トークンの確率が上がっていく様子が見える。
「忠実な動物は→犬 99%」のように1つしか正解がない質問は確率が集中し、
「人気のペットは→猫/犬」のように複数の正解がある質問は確率が分散する。
なぜ分散するのか? → 学習データに両方の答えがあるため、モデルは「どちらもありうる」と学習する。
🟧 Attention Weight の変化
初期状態ではほぼ均一(どこにも注目していない)。
学習が進むと、特定のトークンに注目するパターンが形成される。
例えば「ペット」というトークンに強い注目が集まるようになれば、
モデルが「ペット」という文脈を手がかりに予測することを学んだことを意味する。
なぜ三角形?
ヒートマップが左下三角形になるのは Causal Mask(因果マスク)の効果。
Decoder は「次の単語を予測する」モデルなので、各トークンは自分より前のトークンだけ を参照できる。
未来のトークンは常にマスクされるため、右上は必ずゼロ=三角形になる。これは学習の結果ではなく構造上の制約。
Head 1, Head 2 とは?
Attention の計算を複数の「ヘッド」に分けて並列実行する仕組み(Multi-Head Attention)。
例えば Head 1 は「直前の単語に注目」、Head 2 は「文の主語に注目」など、
異なる観点で注目先を学習する。ヘッド間でパターンが違うほど、多角的に文脈を捉えている ことになる。
逆にパターンがほぼ同じなら、ヘッドを分けた効果が薄い(冗長な状態)。
紫色の「差分 |H1−H2|」 —
Head 1 と Head 2 の注目度の差の絶対値。紫が濃い箇所は「2つのヘッドが異なる判断をしている位置」。
学習初期は差分がほぼゼロ(両ヘッドとも均一)だが、
学習が進むと差分が大きくなる = 各ヘッドが異なる役割を獲得していることを意味する。
学習済みモデルに質問を入力し、Transformer の各レイヤー を通過して 次トークン予測 に至る過程をアニメーションで表示します。
下のボタンで質問を切り替え、▶ 再生 で処理の流れを確認できます。
⚙️ Transformer の処理フロー
STEP 1 Embedding トークン をベクトル に変換 + 位置情報を付与
↓
STEP 2 Decoder Layer ×4 以下を各レイヤー で繰り返す
2a Masked Self-Attention 各トークン が「過去のどのトークン に注目するか」を計算
2b Add & LayerNorm 残差接続 で情報を保持 + 正規化
2c FFN 各トークン を独立に非線形変換 (ReLU )
2d Add & LayerNorm 再び残差接続 + 正規化
↓
STEP 3 Output Head 最終ベクトル から次トークン予測 の確率分布 を出力
🖱️ 操作方法:
▶ 再生 で各ステップのアニメーション開始、次へ ▶| で1ステップ送り。
青い用語にマウスを重ねると解説が表示されます。
人気のペットは 山で見かける動物は 化ける動物は 忠実な動物は かわいい動物は 昔話に出る動物は
<BOS> → 人気 → の → ペット → は
Embedding
↓
Layer 1
↓
Layer 2
↓
Layer 3
↓
Layer 4
↓
予測結果
<BOS> → 山 → で → 見かける → 動物 → は
Embedding
↓
Layer 1
↓
Layer 2
↓
Layer 3
↓
Layer 4
↓
予測結果
<BOS> → 化ける → 動物 → は
Embedding
↓
Layer 1
↓
Layer 2
↓
Layer 3
↓
Layer 4
↓
予測結果
<BOS> → 忠実 → な → 動物 → は
Embedding
↓
Layer 1
↓
Layer 2
↓
Layer 3
↓
Layer 4
↓
予測結果
<BOS> → かわいい → 動物 → は
Embedding
↓
Layer 1
↓
Layer 2
↓
Layer 3
↓
Layer 4
↓
予測結果
<BOS> → 昔話 → に → 出る → 動物 → は
Embedding
↓
Layer 1
↓
Layer 2
↓
Layer 3
↓
Layer 4
↓
予測結果
🔎 推論アニメーションの着目ポイント
📐 Embedding(ステップ1)
各トークンが数値ベクトルに変換された状態。
ヒートマップの色は 赤 = 正の大きな値 、青 = 負の大きな値 、白 = ゼロ付近。
学習によって「似た意味の単語は似た色パターン」になっているか観察してみよう。
この時点ではトークン間の情報交換はまだ行われていない。
d0〜d15 の各次元に決まった意味はない。
学習前はランダムな値で、学習を通じて複数の次元の組み合わせとして意味のあるパターンが自然に生まれる(分散表現)。
シードを変えれば各次元の値はまったく変わるが、モデルの予測性能には影響しない。
大規模 LLM では数千次元の空間内に「感情」「文法的役割」などの方向が見出される研究もあるが、それも個々の次元ではなく次元空間内の方向(direction)の話である。
🟧 Attention Weight(各レイヤー上段)
行 = 注目する側、列 = 注目される側。
「は」のトークンが「ペット」に強く注目しているなら、モデルは「ペットは?」という構造を理解している。
レイヤーが深くなるほど、より抽象的な関係(意味的類似性など)を捉えるようになる。
異なる質問間で Attention パターンを比較すると、モデルが文脈をどう区別しているかがわかる。
差分 |H1−H2|(紫) が濃い箇所は、2つの Head が異なる注目をしている位置。
濃い = 役割分担ができている。質問ごとに差分パターンが変わるのは、文脈に応じて各 Head の注目先が変化している証拠。
⭐ レイヤーを通じた表現の変化(核心)
Layer 1 → Layer 4 でヒートマップが次元ごとに整列化していくのが最も重要な観察。
これは、バラバラだった単語の集まりが、レイヤーを重ねるごとに「予測に使える文脈表現」へ加工されている証拠。
各レイヤーの Attention が「どのトークンが重要か」を判断して情報を集約し、FFN がそれを変換する — この繰り返しで表現が洗練される。
特に最後のトークン位置には文全体の文脈が集約され、これが次トークン予測に使われる。
質問ごとにパターンが違う = 異なる文脈を区別できている。
学習前のランダムな重みではこの整列化は起きない。つまりこれは学習の成果そのもの。
試してみよう: Layer 4 のステップを選んだ状態で質問ボタンを切り替えると、
どの質問でもヒートマップが整列していることがわかる。ステップ位置は質問切り替え時も維持される。
📊 FFN 出力(各レイヤー下段)
Attention の結果をもとに各トークンの表現を変換した結果。
レイヤーを通過するたびに色パターンが変化する — これがモデルの「思考過程」に相当する。
Layer 1 と Layer 4 を比べると、表現がどれだけ変化したかがわかる。
🎯 予測結果(最終ステップ)
全レイヤーを通過した結果の最終予測。
「忠実な動物は」と「人気のペットは」で確率分布がどう違うか比較してみよう。
学習データの傾向がそのまま反映されていることが確認できる。
🌡️ Temperature スライダー
予測結果の画面にある Temperature スライダーで、予測のランダム性を体感できる。
仕組み: モデルの最終出力は「Logit」と呼ばれる生のスコア(例: 猫=2.1, 犬=1.9, 狐=0.5)。
これを Softmax 関数で確率に変換するが、その前に Temperature T で割る:
確率 = Softmax(Logit / T)
T が小さい(0.1〜0.5): Logit の差が拡大され、1位がほぼ100%に。回答が確定的になる。
T = 1.0: 通常の確率分布。学習結果がそのまま反映される。
T が大きい(2.0〜3.0): Logit の差が縮小され、全候補が均等に近づく。回答がランダムになる。
実際の AI チャットの「創造性」や「Temperature」設定はまさにこれ。
低い値で事実に忠実な回答、高い値で創造的だが不確実な回答が得られる。
🎲 Greedy vs Sampling
確率分布が得られた後、実際にどのトークンを選ぶかの方式が2つある。
Greedy: 常に最大確率のトークンを選択する。同じ入力には毎回同じ結果。確実だが画一的。
Sampling: 確率分布に従ってランダムに1つ引く。サイコロを振るようなもの。
猫35%・犬33%なら、猫が出やすいがたまに犬も出る。
試してみよう: 「Sampling」モードに切り替えて 🎲 ボタンを連打すると、
同じ質問でも毎回違う答えが選ばれることがわかる。
Temperature を上げるとさらにバラつきが増える。
実際の AI チャットが同じ質問に毎回少し違う回答をするのはこの仕組みによるもの。
推論結果一覧
入力(質問) 予測結果
人気のペットは 犬 (52%) / 猫 (47%) / 狸 (1%)
山で見かける動物は 犬 (33%) / 狸 (33%) / 狐 (32%) / 猫 (1%)
化ける動物は 猫 (36%) / 狸 (32%) / 狐 (30%) / 犬 (1%)
忠実な動物は 犬 (99%)
かわいい動物は 猫 (56%) / 狸 (42%) / 狐 (1%)
昔話に出る動物は 狸 (51%) / 狐 (47%) / 猫 (1%) / 犬 (1%)
このプログラムの学習データと質問は、あなたの好みに合わせて自由に入れ替えることができます。
料理、都市、プログラミング言語、歴史上の人物 — 何でも OK。
プロファイル JSON ファイル(profiles/default.json)を編集するか、
新しいファイルを作成して --profile で指定します。
📄 プロファイル JSON の構造
{
"title": "テーマのタイトル",
"training_data": [
{"input": "質問文A", "output": "答え1"},
{"input": "質問文B", "output": "答え1"},
{"input": "質問文C", "output": "答え2"},
...
],
"queries": [
"推論で試したい質問1",
"推論で試したい質問2"
],
"model": {
"layers": 4,
"d_model": 16,
"heads": 2,
"d_ff": 64,
"seed": 42
},
"training": {
"epochs": 300,
"lr": 0.005,
"snapshot_count": 20,
"animation_speed": 400
},
"inference": {
"animation_speed": 1200,
"max_tokens": 32,
"temperature": 1.0
}
}
📝 学習データの作り方のコツ
同じ答えに複数の質問を用意する
「おいしい果物は」→ りんご、「赤い果物は」→ りんご、のように。
1つの質問に1つの答えだけでは丸暗記になり、汎化しない。
答えが重なる質問を混ぜると面白い
「赤い果物は」→ りんご/いちご のように、文脈で答えが分かれるデータがあると、
モデルが確率分布 で予測する様子が観察できる。
データ量は 10〜30 件が適切
少なすぎると学習できず、多すぎるとミニチュアモデルでは処理が重くなる。
推論クエリは学習データと同じ表現を使う
「かわいい動物は」で学習したモデルに「可愛らしい生き物は」と聞いても正しく予測できない。
人間には同じ意味でも、モデルにとっては全く別のトークン 列であり、別の入力として処理される。
これは実際の LLM との最大の違いの一つ。
青色の用語にはマウスオーバー解説がある
全ページのテキスト中で青色ハイライト された用語にマウスを乗せると解説が表示される。
「📖 用語集」タブにカテゴリ別の一覧あり。
プロファイル JSON の "glossary" で用語の追加・編集も可能。
⚙️ モデルパラメータ の意味
パラメータ 意味 推奨値
layersレイヤー 数。多いほど深い表現が可能だが学習に時間がかかる2〜4
d_model 各トークン のベクトル 次元 数。大きいほど表現力が高いが過学習 しやすい 8〜32
headsAttention ヘッド 数。異なる観点で注目できる数2〜4
d_ffFFN の中間層の次元 数d_model×4
epochsエポック 数。学習データを何周するか200〜500
lr学習率 。大きいと速いが不安定になる0.001〜0.01
temperatureTemperature 。推論時の予測のランダム性0.5〜2.0
💡 テーマの例
テーマ 学習データの例
🍎 果物 「赤い果物は」→ りんご / 「黄色い果物は」→ バナナ / 「甘い果物は」→ りんご,バナナ
🌍 首都 「日本の首都は」→ 東京 / 「アジアの大都市は」→ 東京,北京
💻 言語 「Web開発の言語は」→ JavaScript / 「AI開発の言語は」→ Python
📚 文学 「日本の文豪は」→ 夏目漱石 / 「明治の作家は」→ 夏目漱石,森鷗外
🖥️ コマンドの使い方
# デフォルト(動物クイズ)
python main.py
# 自分のプロファイルで実行
python main.py --profile profiles/my_data.json
# 追加の質問を試す
python main.py --query "かわいい動物は"
# 学習パラメータを変えてみる
python main.py --epochs 500 --lr 0.01
# 出力先を指定
python main.py -o my_result.html
このツールで使われる専門用語の一覧です。各用語にマウスを乗せると解説が表示されます(クリックで固定)。
全ページのテキスト中で
青色ハイライト された用語にも同じ機能があります。
「※」マークのある説明は、このツールの教育用実装と実際の LLM との違いを示しています。
📖 用語集 / Glossary
各用語にマウスを乗せると解説が表示されます(クリックで固定)。本ページ内・学習ページ・推論ページの全テキストにも同じ機能が有効です。
【 アーキテクチャ 】
Transformer
Decoder
Encoder
レイヤー
Embedding
Token Embedding
Positional Encoding
Self-Attention
Attention
Multi-Head Attention
Head
ヘッド
Query
Key
Value
Attention Score
Causal Mask
因果マスク
Attention Weight
残差接続
LayerNorm
FFN
ReLU
Logit
Linear
【 モデル設定 】
d_model
d_k
d_ff
Sparsity
【 トークン・語彙 】
トークン
形態素解析
語彙
<BOS>
<EOS>
<PAD>
<UNK>
【 学習 】
次トークン予測
バックプロパゲーション
勾配降下法
損失関数
クロスエントロピー
重み
パラメータ
エポック
学習率
過学習
バッチ
収束
【 推論・生成 】
推論
自己回帰生成
Temperature
Softmax
Greedy
Sampling
Top-k
Top-p
確率分布
【 数学・一般 】
ベクトル
行列
次元
正規化
活性化関数
ニューラルネットワーク
LLM
用語詳細一覧
【 アーキテクチャ 】
Transformer
Self-Attention を中心にしたニューラルネットワーク構造。系列全体の関係を捉えやすく、現代の言語モデルの基盤となっている。
Decoder
Transformer 系モデルの構成方式の一つ。因果マスクを使って過去トークンだけを参照しながら次トークンを予測する。GPT 系は Decoder-only モデルに分類される。
Encoder
Transformer の構成要素の一つ。入力全体を双方向に参照でき、文の理解・分類に使われる。BERTなどが採用。このツールでは Decoder のみを扱う。
レイヤー
Transformer の処理層。Self-Attention と FFN を基本単位として積み重ね、表現を段階的に変換する。
Embedding
トークンを連続値ベクトルに写像する表現方式。学習によって意味的・統計的な性質を反映した表現になる。
Token Embedding
各トークンIDを固定長ベクトルに対応づける埋め込み行列(ルックアップテーブル)。通常は学習によって更新される。
Positional Encoding
Transformer が語順や位置情報を扱うために加える仕組み。※ このツールでは元祖 Transformer 論文の正弦波方式を使用。現代の LLM では RoPE など別方式も多い。
Self-Attention
自己注意機構。入力トークン同士の関連度を計算し、文脈に応じた表現を作る Transformer の核心部分。
Attention
入力の各要素が他の要素にどれだけ注目すべきかを計算する仕組み。Transformer では Self-Attention として使われる。
Multi-Head Attention
Attention を複数の Head に分割して並列実行する仕組み。各 Head が異なる観点の関係を捉えることができる。
Head
Multi-Head Attention の1つのヘッド。各ヘッドは異なる関係性(構文・意味など)を捉える傾向がある。
ヘッド
Multi-Head Attention を構成する各並列チャネル。詳細は Head を参照。
Query
「何を探しているか」を表すベクトル。各トークンが他のどのトークンに注目すべきかを決める。
Key
「自分は何を持っているか」を表すベクトル。Query と照合され、関連度スコアの計算に使われる。
Value
「実際に渡す情報」を表すベクトル。Attention Weight で重み付けされて集約される。
Attention Score
Q×Kᵀ/√d_k の計算結果。各トークンペアの関連度を数値化。値が大きいほど関連が強い(Softmax 前の生スコア)。
Causal Mask
因果マスク。未来のトークンへの参照を禁止する仕組み。実装では未来位置に非常に小さい値を与え、Softmax 後にほぼ 0 になるようにする。LLM の次トークン予測に不可欠。
因果マスク
Causal Mask の日本語表記。未来のトークンを参照できないようにするマスク処理。
Attention Weight
Softmax で正規化された注目度の重み。各行の合計は 1.0 になる。
残差接続
入力をそのまま出力に加算するショートカット (x + f(x))。勾配消失を防ぎ、元の情報をバイパスして保持する効果がある。
LayerNorm
各トークンの特徴ベクトルを正規化して学習を安定させる手法。正規化後に学習可能なスケール(拡大縮小)とシフト(平行移動)も行う。
FFN
Feed-Forward Network。各トークンを独立に変換する位置ごとの全結合ネットワーク。典型的には2つの線形変換の間に活性化関数を挟む。
ReLU
活性化関数の一種。f(x) = max(0, x)。負の値を0にする。※ このツールでは ReLU を使用。現代の LLM では GELU や SwiGLU なども多い。
Logit
Softmax 前の生スコア。語彙の各トークンに対する未正規化の予測値。
Linear
線形変換。行列の掛け算 (y = Wx + b)。入力ベクトルを別の次元空間に射影する。
【 モデル設定 】
d_model
各トークンを表現するベクトルの次元数。モデルごとに異なり、数百〜数千程度のことが多い。ここでは教育用に小さい値を使用。
d_k
各 Attention Head のキー/クエリの次元数。d_model ÷ ヘッド数で計算される。Attention Score のスケーリング係数 √d_k の由来。
d_ff
FFN の中間層の次元数。古典的な Transformer では d_model の約4倍に設定されることが多い。大きいほど表現力が高まるが計算コストも増える。
Sparsity
ベクトルや活性値の多くが 0(またはほぼ 0)である性質。活性化関数の後にゼロになった割合として表示される。
【 トークン・語彙 】
トークン
テキストをモデルが扱う最小単位。単語とは限らず、文字列の一部・記号・サブワードであることも多い。※ このツールでは形態素解析による単語単位を使用。実際の LLM では BPE 等のサブワード分割が一般的。
形態素解析
日本語テキストを意味のある最小単位(形態素)に分割する処理。※ このツールのトークン化に使用。実際の LLM では BPE / SentencePiece 系のサブワード分割が主流。
語彙
モデルが扱える全トークンの集合。学習データに出現するトークン+特殊トークンで構成。
<BOS>
Beginning of Sequence。文の開始を示す特殊トークン。全ての入力の先頭に自動付与される。
<EOS>
End of Sequence。文の終了を示す特殊トークン。モデルがこのトークンを予測したら生成を停止する。
<PAD>
Padding。異なる長さの入力を同じ長さに揃えるための空白トークン。計算上無視される。
<UNK>
Unknown。語彙に存在しない入力を表す特殊トークン。※ 現代のサブワード型トークナイザでは、未知語を細かく分割するため使われない場合も多い。
【 学習 】
次トークン予測
Decoder モデルの本質的タスク。与えられたトークン列から次に来るトークンを予測する。
バックプロパゲーション
誤差逆伝播法。出力層の予測誤差を入力層に向かって逆向きに伝え、各重みが誤差にどれだけ影響しているかを効率的に計算する手法。勾配降下法と組み合わせて使う。
勾配降下法
損失関数の勾配(傾き)の方向にパラメータを少しずつ更新して損失を減らす最適化手法。
損失関数
予測と正解のズレを数値化する関数。学習はこの値を最小化する最適化プロセス。
クロスエントロピー
分類問題で使われる損失関数。正解の確率が高いほど損失が小さくなる。
重み
モデルのパラメータ。行列の各要素の数値。学習前はランダム、学習により意味のある値に更新される。
パラメータ
モデルの学習可能な変数の総称。重みやバイアスを含む。モデルの規模はパラメータ数で表されることが多い。
エポック
学習データ全体を1回通して学習すること。※ このツールのような小規模データでは数百エポック回すが、大規模 LLM ではトークン総数ベースで学習量を管理することも多い。
学習率
パラメータ更新の大きさを決める係数。大きすぎると発散、小さすぎると収束が遅い。
過学習
学習データを暗記してしまい、未知のデータに対する予測性能が低下する現象。データが少ないほど起きやすい。
バッチ
学習や推論でまとめて処理するデータの単位。このツールの学習では1件ずつ処理するため、バッチサイズは1。
収束
学習が進み、損失や性能の変化が小さくなった状態。必ずしも最適解とは限らないが、更新による改善が小さくなっていることを示す。
【 推論・生成 】
推論
学習済みモデルに新しい入力を与えて予測を行うこと。学習(Training)の対義語。
自己回帰生成
次トークンを1つ予測→入力に追加→また予測、を繰り返す生成手法。生成AIのテキスト生成の基本メカニズム。
Temperature
予測のランダム性を制御するパラメータ。低い値(0.1)=ほぼ確定的に最大確率を選択。高い値(2.0)=確率の低い答えも選ばれやすくなる。1.0が標準。
Softmax
任意の実数ベクトルを確率分布(合計1.0)に変換する関数。exp(x_i) / Σexp(x_j) で計算。大きい値が強調される。
Greedy
デコーディング手法の一つ。常に最大確率のトークンを選択する。確定的で毎回同じ結果になるが、多様性がない。
Sampling
デコーディング手法の一つ。確率分布に従ってランダムにトークンを選択する。多様な出力が得られるが、不正確になることもある。
Top-k
Sampling の改良版。確率上位k個の候補からのみサンプリングする。低確率の不適切なトークンが選ばれるのを防ぐ。
Top-p
Sampling の改良版。累積確率がpに達するまでの候補からサンプリングする。nucleus sampling とも呼ばれる。
確率分布
各トークンが選ばれる確率の一覧。全て合計すると1.0(100%)になる。Softmax で生成される。
【 数学・一般 】
ベクトル
複数の数値を並べた配列。Transformer では各トークンを d_model 次元のベクトルで表現。
行列
数値を縦横に並べた2次元配列。Transformer の計算は本質的に行列の掛け算の連鎖。
次元
ベクトルや行列の大きさを表す数。d_model=16 なら各トークンは16個の数値で表現される。
正規化
データの値を一定の範囲やルールに揃える処理。LayerNorm では正規化後にスケール・シフトも行う。
活性化関数
ニューラルネットワークに非線形性を導入する関数。ReLU, GELU, SwiGLU 等がある。これがないと多層にしても線形変換の繰り返しにしかならない。
ニューラルネットワーク
人間の神経回路を模した計算モデル。入力→隠れ層→出力の多層構造で、学習により複雑なパターンを認識できる。Transformer はその一種。
LLM
Large Language Model(大規模言語モデル)。大量のテキストデータで学習した Transformer ベースのモデルの総称。