AI・機械学習
上級

LLM損失関数(エルエルエムソンシツカンスウ)

LLM(大規模言語モデル)の学習時にモデル出力と正解の乖離を数値化する関数。Cross-Entropy Loss を基本とし、RLHF や DPO など人間の選好を反映する損失関数が 2024-2026 年に急速に多様化した。損失関数の設計がモデルの品質・安全性・効率を左右する。

0 回閲覧
0 いいね

LLM損失関数とは

LLM損失関数(Loss Function)は、大規模言語モデルの学習において「モデルの予測がどれだけ正解から離れているか」を定量化するスカラー値を返す関数である。勾配降下法でこの値を最小化することでモデルのパラメータが更新される。2026 年現在、事前学習には Cross-Entropy Loss、ファインチューニングには SFT Loss、アライメントには DPO/KTO/SimPO など選好最適化損失が標準的に使われる。

主な損失関数の分類

LLM で使われる損失関数は大きく 3 段階に対応する:

  • 事前学習(Pre-training): Next-Token Prediction の Cross-Entropy Loss。GPT-4、Llama 3、Mistral Large すべてこの基本形を採用
  • 教師ありファインチューニング(SFT): 指示応答ペアに対する Cross-Entropy Loss。学習率 1e-5〜5e-5、エポック 2-3 が標準
  • 選好最適化(Alignment): RLHF の PPO Loss、DPO Loss、KTO Loss、SimPO Loss など。人間の好み・安全性を反映
  • 蒸留(Distillation): KL Divergence Loss で教師モデルの出力分布を生徒モデルに転写
  • 対照学習(Contrastive): InfoNCE Loss、Triplet Loss で埋め込み空間の構造を学習
  • 補助損失: Load Balancing Loss(MoE モデル)、Z-Loss(学習安定化)、Auxiliary Loss(マルチタスク)

損失関数比較表

損失関数用途数式の特徴代表モデル計算コスト
Cross-Entropy事前学習/SFT-log P(y_t) の系列平均GPT-4, Llama 3低
PPO (RLHF)アライメントクリッピング付き方策勾配ChatGPT, Claude高(報酬モデル必要)
DPOアライメント選好ペアの対数比Zephyr, Tulu 2中(報酬モデル不要)
KTOアライメント単一応答の KL 制約付きStarling-7B低(ペア不要)
SimPOアライメント長さ正規化 + マージンSimPO-Mistral中
InfoNCE埋め込み学習ソフトマックス対照BGE-M3, E5-Mistral中

事前学習の Cross-Entropy Loss

事前学習では次トークン予測の Cross-Entropy Loss が使われる。系列長 T のトークン列に対し:

L = -(1/T) * Σ_{t=1}^{T} log P(x_t | x_{<t})
  • Llama 3 405B: 15T トークンで学習、最終 Loss 約 1.25(perplexity 3.49)
  • GPT-4: 推定 13T トークン、Loss 収束値は非公開だが perplexity 3-4 程度と推定
  • Mistral Large 2: 12T トークン、Loss 約 1.30
  • DeepSeek-V3: 14.8T トークン、MoE 構造で Load Balancing Loss を併用

学習率スケジュールは Cosine Decay が標準で、ウォームアップ 2000 ステップ → ピーク 3e-4 → 最終 3e-5 が一般的。バッチサイズは 4M〜16M トークンで、勾配累積により実効バッチサイズを確保する。

選好最適化損失の進化

2023-2026 年にかけて選好最適化損失は急速に進化した:

  • RLHF/PPO(2022): OpenAI が InstructGPT で導入。報酬モデル学習 → PPO で方策最適化の 2 段階。計算コストが高く不安定
  • DPO(2023): Stanford 発。報酬モデルを不要にし、選好ペアから直接方策を最適化。β=0.1 が標準ハイパーパラメータ
  • KTO(2024): 選好ペアではなく「良い/悪い」の単一ラベルで学習可能。データ収集コストを大幅削減
  • IPO(2024): DPO の過学習問題を正則化で緩和。τ=0.01 が推奨
  • ORPO(2024): SFT と選好最適化を 1 ステップに統合。学習時間 50% 削減
  • SimPO(2024): 応答長のバイアスを除去する長さ正規化を導入。β=2.5、γ=0.5 が推奨
手法報酬モデルデータ要件安定性品質
PPO必要選好ペア低最高
DPO不要選好ペア高高
KTO不要単一ラベル高中-高
SimPO不要選好ペア高高
ORPO不要選好ペア高中-高

実装時の注意点

損失関数を実装・選択する際の実践的ポイント:

  • 勾配爆発防止: Cross-Entropy で label smoothing 0.1 を適用すると学習が安定。Llama 3 は label smoothing なしだが、Z-Loss(logits の L2 正則化)を使用
  • 長文バイアス: 系列平均の Loss は長い応答を不当に優遇するため、SimPO のような長さ正規化が有効
  • MoE 専用損失: Mixtral 8x7B や DeepSeek-V3 では Load Balancing Loss でエキスパート間の負荷分散を強制。係数 α=0.01 が標準
  • 混合精度学習: BF16 で Loss 計算すると精度劣化。Loss 計算は FP32 キャストが必須(PyTorch の AMP はデフォルトで FP32)
  • Loss スパイク: 学習中の突発的 Loss 上昇は、データ品質問題やバッチ内の異常サンプルが原因。Llama 3 では Loss スパイク検出 → 該当バッチスキップの戦略を採用

関連用語との違い

用語役割損失関数との関係
損失関数(Loss)学習の最適化目標本体
報酬関数(Reward)RLHF の報酬モデル出力PPO Loss の入力
評価指標(Metric)モデル性能の測定学習に直接使わない
正則化(Regularization)過学習防止Loss に追加される項

よくある質問(FAQ)

Q1: DPO と PPO のどちらを使うべきですか? A: 2026 年現在、DPO が標準的な選択肢。PPO は報酬モデルの学習が必要で計算コストが 2-3 倍になるが、非常に高品質なアライメントが求められる場合(安全性クリティカルなアプリケーション)には依然有効。

Q2: 事前学習の Loss が下がらない場合の対処法は? A: 主な原因は学習率の設定ミス(高すぎ/低すぎ)、データの重複・品質問題、バッチサイズ不足。まず学習率を 1/10 に下げて収束するか確認し、次にデータの dedup(重複排除)率を検証する。

Q3: Loss の値からモデルの性能を推定できますか? A: Cross-Entropy Loss の exp がおおよそ perplexity に対応する。Loss 1.5 → perplexity 4.48、Loss 1.2 → perplexity 3.32。ただし下流タスク性能との相関は完全ではなく、MMLU や HumanEval などのベンチマークで別途評価が必要。

Q4: マルチタスク学習での損失関数のバランスはどう取りますか? A: タスクごとの Loss に重み係数を掛ける加重和が基本。自動調整には Uncertainty Weighting(各タスクの分散を学習)や GradNorm(勾配ノルムの均等化)が有効。Llama 3 では事前学習 Loss と補助タスク Loss の比率を 1:0.1 に設定。

まとめ

  • 事前学習は Cross-Entropy Loss が唯一の標準
  • アライメントは DPO 系が 2026 年のデファクト、PPO は高コストだが最高品質
  • KTO/SimPO/ORPO が低コスト代替として台頭
  • MoE モデルには Load Balancing Loss が必須
  • Loss 計算は FP32 必須、label smoothing と Z-Loss で安定化