Catastrophic Forgetting
ニューラルネットワークにおける壊滅的忘却を防ぐ方法を学びます。Ultralytics YOLOモデルの学習時に利用できる実証済みの軽減策を探ります。
壊滅的忘却は、しばしば壊滅的干渉とも呼ばれ、人工ニューラルネットワークが新しいタスクを学習する際に、以前に学習した情報を突然失う機械学習上の広く研究されている現象です。モデルが新しいデータセットに適応するために逐次学習を行うと、逆伝播を使用する最適化アルゴリズムがモデルの重みを更新します。このプロセスでは、以前のタスクに必要な数学的表現が意図せず上書きされることがよくあります。その結果、本来の目的に対して高度に最適化されたAIシステムでも、特別な対策を講じずに新しいデータだけで学習すると、初期のタスクにおける性能が大幅に低下する可能性があります。
壊滅的忘却が起こる理由#
ディープラーニングでは、モデルの知識は相互接続されたニューロンの分散ネットワーク全体に保存されています。ファインチューニング中は、確率的勾配降下法などの最適化関数が、新しいデータに対する誤差を最小化するようにこれらの接続を調整します。新しい学習データセットに元のクラスの例が含まれていない場合、最適化プロセスによって重みが新しいデータ分布に向かって移動し、事実上、古い分布の「記憶」が消去されます。構造シフトに関する最近の研究は、この内部崩壊が、現代のニューラルネットワークが人間のような生涯学習を追加設定なしで実現する能力を根本的に制限することを示しています。
関連概念との違い#
壊滅的忘却は、他のAI概念と区別して考えることが重要です。
- 壊滅的忘却とモデル崩壊の比較: 忘却は新しいタスクを段階的に学習することによって起こるのに対し、モデル崩壊は、他のAIモデルが生成した合成データでモデルを再帰的に学習することで、同じタスクの性能が徐々に低下する現象です。
- 壊滅的忘却と継続学習の比較: 継続学習は、壊滅的忘却の解決を目指す包括的な研究手法です。継続学習アルゴリズムは、モデルが忘却せずに新しい知識を逐次的に獲得できるようにすることを目指します。
実環境での例#
壊滅的忘却は、動的な現実世界の環境で動作するさまざまなAI分野において、重大な課題となっています。
- 自律システム: 自動運転車の認識パイプラインでは、歩行者や標準的な交通標識を認識するように最初に学習されたコンピュータビジョンシステムを、地域固有の新しい工事標識を認識するようにファインチューニングする場合があります。安全対策を講じなければ、システムが突然、歩行者を確実に検出することに苦労し、深刻な安全上のリスクが生じる可能性があります。
- 言語および認知AI: 大規模言語モデルを医療診断などのドメイン固有のタスク向けにカスタマイズすると、モデルが会話上のアライメントや一般的な推論能力を忘れてしまう可能性があります。LLMに関する最近の比較分析では、高度に専門化されたテキストに対する標準的なファインチューニングによって、以前の安全性アライメントが損なわれ、モデルが本来備えていた指示追従能力を失うことが多いことが示されています。
壊滅的忘却の克服#
AIエンジニアは、最適な可塑性と安定性のジレンマを維持しながら、この問題を軽減するために複数の戦略を活用しています。
- データセットのリプレイとマージ: 最も信頼性の高い方法は、元の学習データの一部を新しいデータと混在させることです。Ultralytics Platformなどのツールを使用すると、結合したデータセットの管理とバージョン管理を効率化でき、学習中に元のクラスが効果的にリプレイされるようにできます。
- 弾性重み統合 (EWC): この正則化手法は、以前のタスクにとって重要だったパラメータへの更新を制限します。これらの重要な重みを特定して保持することで、モデルの忘却を軽減できます。これは、ネットワークの忘却克服に関する最近の実験でも示されています。
- パラメータ効率の高いファインチューニング (PEFT): 低ランク適応 (LoRA)などの手法では、事前学習済みのコア重みを固定し、ネットワークに小規模な学習可能行列を追加することで、基盤となる知識が上書きされるのを防ぎます。
- レイヤーの凍結: 短時間の学習では、バックボーンとネックのレイヤーを凍結することで、コアの特徴抽出器をそのまま維持できます。
- 勾配不要最適化: 最近、新しいフレームワークにより、勾配更新が制約される環境でも、フォワードパスベースの手法が忘却を効率的に軽減できることが実証されています。
ビジョンAIでの実装例#
新しい物体検出タスク向けにUltralytics YOLOを適応させる場合、レイヤーの凍結は効果的で導入しやすいアプローチです。次の例では、最初の10レイヤーを凍結して壊滅的忘却を防ぎながら、新しいデータセットでUltralytics YOLO26モデルを学習する方法を示します。
from ultralytics import YOLO
# Load a pretrained Ultralytics YOLO26 model
model = YOLO("yolo26n.pt")
# Train on a combined dataset while freezing core backbone layers
# The 'freeze=10' argument prevents catastrophic forgetting of foundational visual features
results = model.train(data="combined_dataset.yaml", epochs=20, freeze=10, lr0=0.001)
# Evaluate the model to ensure it retains performance on old and new tasks
metrics = model.val()





