仕組みと構造 — エンジニア視点
テキストがトークン化され、ベクトル化され、Transformerで処理されて確率分布になり、サンプリングで文章になる。LLMの推論パイプライン全体を順に追う。
本章では、言語モデル(LLM)を主な題材に、入力が処理され出力が生成されるまでのパイプラインを順に追います。全体像は 「テキスト → トークン → ベクトル → Transformerによる変換 → 次トークンの確率分布 → サンプリング」 という流れです。
トークン化(Tokenization)
モデルは文字や単語をそのまま扱いません。まずテキストを トークン と呼ばれる小さな単位に分割します。多くのモデルは BPE(Byte Pair Encoding) やその派生(WordPiece、SentencePiece、Unigram)を用い、頻出する文字列を一つのトークンにまとめます。結果として、よくある単語は1トークン、珍しい単語や日本語の一部は複数トークンに分かれます。
トークン数は コスト・速度・コンテキスト上限 に直結します。英語に比べ日本語は同じ意味でもトークン数が増えやすい傾向があり、API利用時の料金や入力可能量に影響する点は実務上重要です。
# 「ChatGPTは便利だ」が例えば次のように分割される(モデルにより異なる)
["Chat", "G", "PT", "は", "便", "利", "だ"]
↓ 各トークンに整数IDが割り当てられる
[13564, 38, 5868, ...]
埋め込み(Embedding)
整数IDのままでは意味の計算ができないため、各トークンIDを高次元の ベクトル(埋め込み) に変換します。このベクトル空間では、意味的に近い語が近い位置に配置されるように学習されます。さらにTransformerは語順を区別できないため、各位置の情報を加える 位置エンコーディング(positional encoding) が併用されます。
Transformerとアテンション
現代の生成AIの中核が Transformer 12 です。その心臓部が 自己注意機構(Self-Attention) で、文中の各トークンが「他のどのトークンに注目すべきか」を動的に計算します。これにより、離れた位置にある語どうしの関係(長距離依存)を捉えられます。
アテンションは各トークンから三つのベクトル—Query(問い)・Key(鍵)・Value(値)—を作り、QueryとKeyの内積で「関連の強さ」を測り、その重みでValueを合成します。複数の観点から同時に注目する マルチヘッド・アテンション により、構文・意味など異なる関係を並列に学習します。
Attention(Q, K, V) = softmax( QKT / √dk ) · V
生成系のLLMの多くは デコーダのみ(decoder-only) の構成を採り、未来のトークンを見ないよう 因果マスク(causal mask) をかけます。これにより「左から右へ、次の1トークンを予測する」自己回帰生成が成立します。
学習プロセス — 事前学習・微調整・整合
多くのLLMは、大きく三段階を経て作られます。各段階で「何を学ぶか」が異なる点を押さえると、モデルの挙動が理解しやすいでしょう。
| 段階 | 目的 | 学ぶ内容 |
|---|---|---|
| 事前学習 Pre-training | 言語と世界知識の獲得 | 大量テキストで「次トークン予測」を繰り返し、文法・知識・推論の土台を形成。最も計算コストが高い。 |
| 教師あり微調整 SFT | 指示に従う形式の習得 | 「指示と理想的な応答」のペアで学習し、対話・指示遂行の作法を身につける。 |
| 選好整合 RLHF / DPO 等 | 人間の好みへの整合 | 人間の評価を信号に、有用・無害・誠実な応答を強化する。口調や安全性はここで大きく形作られる。 |
近年は人間のフィードバックを用いる RLHF に加え、報酬モデルを介さず選好データから直接最適化する DPO などの手法も広く使われています。手法の詳細は研究の進展で変化するため、概念として「整合の段階が存在する」点を理解しておくとよいでしょう。
推論時のパラメータ
学習済みモデルから実際に文章を生成する際、出力の確率分布から「どう選ぶか」を制御するパラメータがあります。プロンプト設計と並んで、出力品質を左右する重要な要素です。
| パラメータ | 役割 | 挙動 |
|---|---|---|
temperature | ランダム性 | 低いほど決定的・無難に、高いほど多様・創造的になる。0に近いとほぼ最尤の出力。 |
top-p (nucleus) | 候補の絞り込み | 確率の高い順に累積がpに達するまでの候補だけを残してサンプリング。 |
top-k | 候補数の制限 | 確率上位k個の候補のみを対象にする。 |
max tokens | 出力長の上限 | 生成する最大トークン数。コストと打ち切りに関わる。 |
frequency / presence penalty | 繰り返し抑制 | 既出トークンの再出現にペナルティを与え、反復を減らす。 |
コンテキストウィンドウ
コンテキストウィンドウ とは、モデルが一度に処理できるトークン数の上限(入力+出力の合計)です。これを超える情報はモデルから「見えません」。長文を扱う際は、要約・分割・検索による絞り込み(後述のRAG)で、関連情報を窓の中に収める工夫が必要です。
なお、ウィンドウが大きくても、長い文脈の中間部分が相対的に参照されにくくなる現象(俗に「中盤の見落とし」と呼ばれる)が報告されています10 。重要な指示は冒頭や末尾に置くと効きやすい、という経験則につながります。
- BPE / SentencePiece などのサブワード分割
- Self-Attention(Query–Key–Value)、Multi-Head Attention、Causal Masking
- Pre-training / SFT / RLHF / DPO といった学習パイプライン
- Temperature, Top-p (nucleus) sampling, Top-k