LLM Pretraining
LLM Pretraining は、巨大な text corpus を使って、transformer に 次の token を予測する ことを学習させる工程です。LLM の汎用能力 (文法、知識、推論、コード生成) の大部分は、ここで形作られます。
Objective
最も標準的な pretraining objective は、causal language modeling です。
つまり、各 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 を とすると、perplexity は次のように定義されます。
この式の気持ちは、「model が各位置で平均して何個くらいの候補に迷っているか」を表すことです。Loss が小さいほど、正しい token に高い確率を置けているため、perplexity も小さくなります。
Scaling law の文脈では、loss は parameter 数 、training token 数 、compute によって近似的にべき乗則で下がると見なされます。単純化すると、次のような形で書けます。
ここで、 は到達可能な下限、 は係数、 は model size と data size に対する改善速度を表します。この式の気持ちは、「model だけを大きくしても data が足りなければ飽和し、data だけを増やしても model が小さければ飽和する」ということです。Chinchilla 以降の議論では、与えられた compute の中で と のバランスを取ることが重要になります。
関連ページ
主なソース
- GPT-3: https://arxiv.org/abs/2005.14165
- Chinchilla: https://arxiv.org/abs/2203.15556
- Llama 3 report: https://arxiv.org/abs/2407.21783
- The Pile: https://arxiv.org/abs/2101.00027