過去のタスクの訓練データを小さなバッファ(メモリ)に保存し、新タスクの学習時に過去データと混合して訓練することで破壊的忘却を防ぐ継続学習手法。人間の脳の海馬リプレイ機構に着想を得ており、実装が直感的かつ効果が高いことから最も広く使われている。
Experience Replay は、継続学習における破壊的忘却を防ぐリプレイベースの手法群の代表格である。基本的なアイデアは「過去のデータの一部を保存し、新しいデータと一緒に学習する」という極めてシンプルなものだが、その効果は高く、多くの継続学習ベンチマークで最強クラスの性能を示す。
元々は強化学習の文脈で Lin(1992)が提案した手法で、経験(state, action, reward, next_state)をバッファに保存してランダムにサンプリングして学習するDQNの基盤技術として知られる。継続学習の文脈では、Robins(1995)の「Pseudorehearsal」に始まり、教師あり学習でのデータリプレイとして再定式化された。
Experience Replay の基本構造は以下の通りである。
[メモリバッファ M] ← 旧タスクのデータをサンプリング保存
[新タスクデータ D_new] + [メモリバッファ M からのサンプル]
→ 混合バッチで学習
→ 学習後、新タスクのデータの一部を M に追加
| 戦略 | 概要 | メモリ効率 | 多様性 |
|---|---|---|---|
| Reservoir Sampling | 全データから等確率でサンプリング | 高 | 高 |
| Ring Buffer | FIFO で古いデータを順次置換 | 高 | 低(最新偏重) |
| Herding | クラス中心に近いサンプルを優先保存 | 中 | 中 |
| Gradient-based | 忘却に最も寄与するサンプルを優先 | 中 | 高 |
| K-means Clustering | クラスタ中心に近いサンプルを保存 | 中 | 高 |
| Mean of Features | 特徴量の平均に近いサンプルを保存 | 中 | 中 |
| バッファサイズ(タスクあたり) | 忘却率 | 新タスク性能 | 推奨場面 |
|---|---|---|---|
| 0(リプレイなし) | 30-40% | 最高 | ベースライン |
| 100 サンプル | 15-20% | 高 | メモリ制約環境 |
| 500 サンプル | 8-12% | 高 | 標準的な設定 |
| 2,000 サンプル | 3-5% | 中-高 | 忘却最小化重視 |
| 10,000 サンプル | 1-2% | 中 | メモリに余裕がある場合 |
500-2,000サンプル/タスクが精度とメモリのバランスが最もよい。
Buzzega et al.(2020)が提案。データのラベルだけでなく、モデルの出力ロジット(logits)も一緒に保存する。リプレイ時にロジットのKL Divergenceも損失に加えることで、表現レベルの一貫性を保つ。DER++はさらに正則化項を追加した改良版。
過去のデータを保存する代わりに、生成モデル(GAN/VAE)で過去データの分布を学習し、合成データを生成してリプレイする。プライバシー保護に有利だが、生成品質がボトルネック。
Lopez-Paz & Ranzato(2017)が提案。リプレイバッファのデータに対する勾配方向を制約として、旧タスクの性能が悪化しない方向にのみ新タスクの勾配を投影する。忘却をゼロに近づけるが計算コストが高い。
GEMの計算コストを軽減した近似版。バッファからのランダムサンプルで制約を近似し、実用的な速度を実現。
| パターン | バッファ内容 | 用途 | バッファサイズ目安 |
|---|---|---|---|
| Instruction Replay | 旧タスクの指示-応答ペア | Instruction Tuning の継続 | 5,000-20,000 ペア |
| Alignment Replay | RLHF の選好データ | 安全性の維持 | 1,000-5,000 ペア |
| Language Replay | 各言語のテキスト | 多言語能力の維持 | 10,000 文/言語 |
| Capability Replay | コード・数学・推論のサンプル | 汎用能力の維持 | 5,000-10,000 サンプル |
新データと旧データ(リプレイ)の混合比は性能に大きく影響する。
| 新:旧比 | 新タスク性能 | 旧タスク忘却率 | 推奨場面 |
|---|---|---|---|
| 1:0 | 最高 | 30-40% | ベースライン |
| 3:1 | 高 | 10-15% | 新タスク重視 |
| 1:1 | 中-高 | 5-8% | バランス型 |
| 1:3 | 中 | 2-3% | 旧タスク保護重視 |
| 1:5 | 低-中 | 1-2% | 忘却最小化 |
一般的には 1:1〜1:3 がバランスが良い。新タスクの学習が遅い場合は比率を新タスク寄りに調整。
Q1: Experience Replay は過去のデータを保存するため、プライバシーの問題はないですか? A: バッファに実データを保存するため、データ保護規制(GDPR等)の文脈で課題がある。対策として、(1)Generative Replayで合成データに置き換える、(2)差分プライバシーを適用してバッファデータにノイズを加える、(3)勾配ベースの蒸留でデータ自体ではなく勾配情報を保存する等の手法がある。
Q2: バッファサイズが限られる場合、どのサンプルを保存すべきですか? A: Gradient-based Selection(勾配が大きい=忘却リスクが高いサンプル)が最も効果的。次いで Herding(クラス代表サンプル)、Reservoir Sampling(ランダム)の順。ランダムでも500サンプル/タスクあれば忘却率を半分以下にできるため、複雑な選択戦略の費用対効果は限定的。
Q3: Experience Replay と EWC はどちらが効果的ですか? A: 多くのベンチマークで Experience Replay が EWC を上回る。特に10タスク以上の長いタスク列では、EWCのFisher行列累積による飽和に対し、Replayは安定した効果を維持。ただし、EWCはデータ保存不要というメリットがある。最良の結果は両者の併用で得られる。