Re Reference AI

技術

破滅的忘却とは

Catastrophic Forgetting

新しいタスクを追加学習した際に、以前学習していたタスクの性能が大きく低下してしまう現象

学習ファインチューニング

ひとことで言うと

AIに新しいことを教えると、前に覚えたはずのことをうっかり忘れてしまう現象。

概要

破滅的忘却は、ニューラルネットワークが新しいタスクやデータセットで追加学習(ファインチューニング等)をした際に、以前のタスクの解決に使っていた重みが上書きされ、以前は正しく扱えていたタスクの性能が大きく低下してしまう現象。 人間が新しいスキルを学んでも以前の記憶をほとんど失わないのとは対照的に、ニューラルネットワークは1つのパラメータ集合で複数のタスクの知識を共有して表現しているため、新しいタスクへの最適化が古いタスクの知識と衝突しやすい。 LLMのファインチューニングにおいても、特定ドメインへ特化させる学習をした結果、元々持っていた一般的な会話能力や指示追従性能が低下する現象として現れることがある。 対策として、以前のタスクのデータを少量混ぜながら学習を続けるリハーサル、重要なパラメータの変化を制約するEWC(Elastic Weight Consolidation)、LoRAのように元の重みを凍結したまま差分だけを学習する手法などが研究・実践されている。

背景

ニューラルネットワークは分散表現によって知識をパラメータ全体に共有して保持しているため、新しいタスクのために勾配降下法でパラメータを更新すると、既存タスクに重要だった重みも意図せず変化してしまう。 破滅的忘却は、この分散表現ゆえの副作用として、継続学習(Continual Learning)研究における中心的な課題の1つになっている。

歴史

1989年: McCloskeyとCohenが、ニューラルネットワークにおける逐次学習時の性能低下を指摘し、破滅的忘却という概念を提示。 2017年: Kirkpatrickらが論文「Overcoming catastrophic forgetting in neural networks」でEWCを提案し、対策手法の研究が本格化。 2020年代: LLMのファインチューニングにおいても、LoRAなど元の重みを保持したまま適応する手法が、破滅的忘却の実務的な緩和策として広く使われるように。

コード例

PyTorchで破滅的忘却を再現する簡易例

import torch, torch.nn as nn

model = nn.Linear(2, 2)
optimizer = torch.optim.SGD(model.parameters(), lr=0.1)
loss_fn = nn.CrossEntropyLoss()

# タスクA: (1,0)->0, (0,1)->1 を学習
task_a_x = torch.tensor([[1.0, 0.0], [0.0, 1.0]])
task_a_y = torch.tensor([0, 1])
for _ in range(200):
    optimizer.zero_grad()
    loss_fn(model(task_a_x), task_a_y).backward()
    optimizer.step()
acc_before = (model(task_a_x).argmax(1) == task_a_y).float().mean()

# タスクB: タスクAと逆の対応関係のみを追加学習
task_b_y = torch.tensor([1, 0])
for _ in range(200):
    optimizer.zero_grad()
    loss_fn(model(task_a_x), task_b_y).backward()
    optimizer.step()
acc_after = (model(task_a_x).argmax(1) == task_a_y).float().mean()

print(acc_before, acc_after)  # タスクAの精度がタスクB学習後に低下する

欠点

  • 追加学習によって特定タスクの性能を上げようとすると、意図せず他の能力を損なうリスクがある
  • 複数のタスクを継続的に学習させるシステムの設計を難しくする
  • 対策手法(リハーサルやEWC等)の導入には追加の設計・計算コストがかかる

比較

  • ファインチューニングファインチューニングは破滅的忘却が起こりやすい代表的な学習シーンの1つ
  • LoRALoRAは元の重みを凍結したまま少量のパラメータのみ学習するため、破滅的忘却を緩和しやすい手法として使われる
  • 転移学習転移学習でも、追加学習の範囲や強度次第で破滅的忘却が起こり得る

関連用語

ファインチューニングLoRA転移学習過学習

よくある質問

LoRAは破滅的忘却を防げる?

元のモデルの重みを凍結したまま少量の追加パラメータのみを学習するため、フルファインチューニングと比べて元の能力を保持しやすく、破滅的忘却の影響を受けにくいとされる。

破滅的忘却を防ぐ代表的な方法は?

以前のタスクのデータを混ぜて学習を続けるリハーサル、重要なパラメータの変化を制約するEWC、元の重みを保持したまま差分学習するLoRAなどのパラメータ効率的手法が代表的。

参考文献

関連Zenn記事