エクスペリエンスリプレイ(LLM)(エクスペリエンスリプレイ)
LLMの継続学習で過去タスクのデータサンプルを保存・再生成し、新タスクの学習データに混合することで壊滅的忘却を防ぐ手法。強化学習のリプレイバッファ概念をFine-tuningに適用。生成モデルを使った疑似リプレイも含む。
エクスペリエンスリプレイ(Experience Replay)とは
エクスペリエンスリプレイ(Experience Replay)は、継続学習において過去タスクのデータを保存または再生成し、新タスクの学習データに混合することで壊滅的忘却を防ぐ手法です。強化学習のリプレイバッファから着想を得ており、LLMのFine-tuningにも広く適用されています。
リプレイの2つのタイプ
1. メモリリプレイ(Memory Replay)
過去タスクの実際のデータサンプルを保存したバッファを用いる手法:
# リプレイバッファの管理
class ReplayBuffer:
def __init__(self, max_size_per_task=1000):
self.buffer = {} # task_id → samples
def add_task(self, task_id, samples):
# 代表サンプルを重要度サンプリングで選択
selected = importance_sampling(samples, k=self.max_size)
self.buffer[task_id] = selected
def sample_for_training(self, current_task_data, mix_ratio=0.3):
# 新データ70% + 旧データ30%の混合
past_data = random_sample(self.buffer, n=len(current_task_data)*mix_ratio)
return interleave(current_task_data, past_data)
利点: 実データを使用するため忘却防止効果が高い 欠点: ストレージコスト、プライバシー問題、著作権問題
2. 疑似リプレイ(Generative Replay / Pseudo-Rehearsal)
過去データを直接保存せず、生成モデルを使って過去のデータに似た合成データを生成する手法:
# 疑似リプレイの概念フロー
# 1. タスク1学習時: Teacher Modelをスナップショット
teacher_model_task1 = copy.deepcopy(base_model_after_task1)
# 2. タスク2学習時: Teacher Modelで疑似データ生成
pseudo_samples = teacher_model_task1.generate(
prompts=["タスク1の代表的なプロンプト"],
n=1000
)
# 3. 疑似データと新データを混合して学習
training_data = mix(task2_data, pseudo_samples, ratio=0.3)
student_model.train(training_data)
利点: 実データ保存不要でプライバシー安全 欠点: 生成品質に依存、生成コストが高い、時間経過でドリフトが蓄積
LLM特有のリプレイ設計
Dark Experience Replay(DER++)
旧モデルの出力(ソフトラベル)を「知識」として保存し、新モデルの学習制約に使用:
L_DER++ = L_CE(new_task) + α * KL(new_model(x), old_model_logits) + β * L_CE(replay_data)
旧モデルの確信度分布を蒸留することで、one-hotラベルより豊かな情報を保持。
Instruction Replay
LLMのInstruction Tuning継続学習に特化した手法:
- システムプロンプト + 入力 + 期待出力のトリプルを保存
- Constitutional AIのルールに準拠したサンプルを優先的に保持
- アライメント(安全性・有用性)の劣化を防ぐための選択的リプレイ
Selective Replay(重要度ベースサンプリング)
すべての過去データを均等に保存するのではなく、重要度に基づいて代表サンプルを選択:
| 選択基準 | 手法 | 効果 |
|---|---|---|
| 損失の高いサンプル | Herding | 難しい事例を保持 |
| 最大カバレッジ | Coreset | 分布を均等カバー |
| 不確実性の高いサンプル | Uncertainty Sampling | 境界事例を保持 |
| ランダム | Uniform Sampling | 実装簡易、意外と強力 |
LLMでのリプレイ適用事例
ケース1: 多言語追加対応
英語特化LLMに日本語・中国語・フランス語を順次追加学習する際:
- 英語の代表的なInstruction-Responseペア5,000件をバッファに保存
- 各言語追加時に英語データを20%混合
- 英語性能を90%以上維持しながら多言語対応
ケース2: 時間的知識更新
2024年のデータでLLMを更新する際、2023年以前の重要事実をリプレイ:
- Wikipedia変更差分から影響が大きい事実を特定
- 変更された事実と不変の事実を分離してリプレイ設計
- 事実の矛盾を防ぎながら新情報を統合
プライバシーとリプレイの倫理課題
GDPR準拠: EU圏のユーザーデータを含む場合、「忘れられる権利」との衝突。リプレイバッファに個人データが残ると法的リスク。疑似リプレイが有効な代替。
差分プライバシーとの組み合わせ: リプレイサンプルにDP-SGDを適用してプライバシー保護しながらリプレイ効果を維持する研究が進んでいる(2025年)。
まとめ
エクスペリエンスリプレイは継続学習の中で最も直感的で実装容易な手法であり、多数のLLM継続学習パイプラインで採用されています。実データ保存と疑似リプレイのどちらを選ぶかはプライバシー要件・ストレージ制約・生成コストによって判断します。2025年時点では、LoRAやプログレッシブプロンプトとの組み合わせで補完的に使用するハイブリッドアプローチが主流になりつつあります。