Skip to main content

LLM Pretraining

LLM Pretraining は、巨大な text corpus を使って、transformer に 次の token を予測する ことを学習させる工程です。LLM の汎用能力 (文法、知識、推論、コード生成) の大部分は、ここで形作られます。

Objective

最も標準的な pretraining objective は、causal language modeling です。

L(θ)=1Ni=1Nt=1Tilogpθ(xt(i)x<t(i))\mathcal{L}(\theta) = -\frac{1}{N}\sum_{i=1}^{N}\sum_{t=1}^{T_i} \log p_\theta(x_t^{(i)} \mid x_{<t}^{(i)})

つまり、各 sequence の各 token を、その前の文脈から予測する cross-entropy loss です。

なぜこれで「知能」が出るのか

「次の token を予測する」というだけの目的が、なぜ翻訳、コード生成、reasoning、common sense を生むのか。直感的には、

  • 次の token を正確に予測するためには、文脈の意味を理解する必要がある
  • 大量の document を学習すると、間接的に「世界がどう動いているか」を学ぶ
  • 文体、形式、論理構造、計算手順なども次トークン予測に必要

という説明がよくされます。これは prediction-as-compression の見方とも近接します。

データ

Pretraining の質は、データの質と多様性に強く依存します。

代表的な工夫:

  • Deduplication: 同一・近似 document の削除 (overfitting と test leakage の防止)
  • Quality filter: 言語モデル / classifier で低品質を排除
  • Domain mixing: web / code / 書籍 / 多言語の比率設計
  • Curriculum: 易しい data から徐々に難しい data へ

Scaling

Pretraining のコストは膨大です。Chinchilla 以降の知見では、compute、data、parameter の三者をバランスよく増やすことが重要です。詳細は Scaling Laws を参照してください。

Pretraining と Post-Training の境界

近年は、pretraining と post-training の境界が曖昧になっています。

  • Mid-training: 高品質 instruction / code / math データを後半で混ぜる
  • Annealing: 学習率を絞りながら高品質 data に切り替える
  • Continued pretraining: domain-specific corpus で追加学習

これらは、純粋な next-token prediction の枠組みを保ちつつ、post-training に近い効果を得る工夫です。

数式で見る perplexity と scaling

Causal language modeling の loss は、token ごとの negative log likelihood です。Dataset 全体の平均 loss を L\mathcal{L} とすると、perplexity は次のように定義されます。

PPL=exp(L)\mathrm{PPL}=\exp(\mathcal{L})

この式の気持ちは、「model が各位置で平均して何個くらいの候補に迷っているか」を表すことです。Loss が小さいほど、正しい token に高い確率を置けているため、perplexity も小さくなります。

Scaling law の文脈では、loss は parameter 数 NN、training token 数 DD、compute CC によって近似的にべき乗則で下がると見なされます。単純化すると、次のような形で書けます。

L(N,D)L+aNα+bDβ\mathcal{L}(N,D) \approx \mathcal{L}_\infty + aN^{-\alpha}+bD^{-\beta}

ここで、L\mathcal{L}_\infty は到達可能な下限、a,ba,b は係数、α,β\alpha,\beta は model size と data size に対する改善速度を表します。この式の気持ちは、「model だけを大きくしても data が足りなければ飽和し、data だけを増やしても model が小さければ飽和する」ということです。Chinchilla 以降の議論では、与えられた compute の中で NNDD のバランスを取ることが重要になります。

関連ページ

主なソース