解説
さらに詳しく解説
学習(トレーニング)とは
機械学習における学習/トレーニング(Training)は、データからモデルのパラメータを最適化するプロセスです。LLMでは事前学習、ファインチューニング、RLHFなど複数の学習フェーズがあります。
LLMの学習フェーズ
LLM学習の段階:
1. 事前学習(Pre-training)
└── 大規模テキストで言語モデル学習
↓
2. 教師あり微調整(SFT)
└── 指示-応答ペアで調整
↓
3. RLHF/DPO
└── 人間のフィードバックで最適化事前学習
ファインチューニング
ファインチューニングの種類:
├── フルファインチューニング
│ └── 全パラメータを更新
├── LoRA
│ └── 低ランク行列を追加学習
├── QLoRA
│ └── 量子化+LoRA
└── Adapter
└── 小さな層を追加学習データの重要性
| 要素 | 影響 |
|---|---|
| 量 | 性能の上限を決定 |
| 質 | ノイズ、バイアスの影響 |
| 多様性 | 汎化性能に影響 |
| 最新性 | 知識のカットオフ |
学習の課題
よくある課題:
├── 過学習
│ └── 訓練データに過適合
├── 壊滅的忘却
│ └── 新学習で旧知識を忘れる
├── 勾配消失/爆発
│ └── 深いネットワークで発生
└── 分布シフト
└── 訓練と実環境の差学習の設定
| 設定 | 説明 | 典型値 |
|---|---|---|
| 学習率 | パラメータ更新の大きさ | 1e-5〜1e-3 |
| バッチサイズ | 一度に処理するサンプル数 | 32〜512 |
| エポック数 | データを何回繰り返すか | 1〜10 |
| ウォームアップ | 学習率を徐々に上げる | 0.1 |
分散学習
大規模学習の手法:
├── データ並列
│ └── データを分割して並列処理
├── モデル並列
│ └── モデルを分割して配置
├── パイプライン並列
│ └── 層ごとに分割
└── ZeRO
└── 状態を分散保持学習の監視
| 指標 | 用途 |
|---|---|
| 損失(Loss) | 学習の進捗 |
| 検証損失 | 過学習の検出 |
| 勾配ノルム | 安定性確認 |
| 学習率 | スケジュール確認 |
