Catastrophic Forgetting
النسيان الكارثي هو الفقدان المفاجئ لمهارات سابقة عندما تُدرَّب شبكة عصبية على بيانات جديدة. يتناول أسباب حدوثه وأمثلة عليه وسبل الحد منه.
النسيان الكارثي، المعروف أيضًا باسم التداخل الكارثي، هو فقدان مفاجئ لمهارات سبق تعلمها عندما تُدرّب شبكة عصبية على بيانات جديدة لم تعد تتضمن أمثلة للمهمة القديمة. تحدّث عملية التدريب أوزان النموذج المشتركة نفسها التي خُزنت فيها المعرفة السابقة، ولا يوجد ما يكافئ الاحتفاظ بها في دالة الخسارة الجديدة؛ لذا قد تنهار الدقة في المهمة الأصلية خلال بضع مئات من التحديثات. وصف McCloskey وCohen هذا الأثر عام 1989 في شبكات تعلمت حقائق حسابية بالتتابع، ولا يزال العائق الرئيسي أمام التعلم المستمر ومخاطرة متكررة عند الضبط الدقيق.
لماذا يحدث النسيان الكارثي#
المعرفة في الشبكة العصبية موزعة: يسهم كل وزن في مخرجات كثيرة، وتعتمد كل مخرجات على أوزان عديدة. يؤدي التدريب على مهمة جديدة إلى تحريك الأوزان في الاتجاه الذي تنخفض فيه خسارتها بأسرع ما يمكن، دون حد يقيس أداء المهمة القديمة؛ لذا يبتعد النموذج عن المنطقة التي نجحت فيها المهمة القديمة. ويُبرز التصنيف الأثر في طبقة الإخراج. فعندما لا تظهر في بيانات التدريب سوى فئات جديدة، تدفع كل خطوة درجات الفئات الغائبة إلى الانخفاض حتى يتوقف النموذج تمامًا عن التنبؤ بها. يوضح ذلك تدريب شبكة صغيرة على الأرقام المكتوبة بخط اليد من 0 إلى 4 ثم على الأرقام من 5 إلى 9، كما يوضح كيف تحدّ إعادة تشغيل عينة صغيرة من البيانات القديمة من هذا الأثر:
import torch
from sklearn.datasets import load_digits
torch.manual_seed(0)
X, y = load_digits(return_X_y=True)
X, y = torch.tensor(X / 16, dtype=torch.float32), torch.tensor(y)
train = torch.arange(len(y)) < 1400 # hold out the last 397 images for testing
task_a, task_b, test_a = train & (y < 5), train & (y >= 5), ~train & (y < 5)
replay = task_a & (torch.rand(len(y)) < 0.1) # keep 10% of task A for replay
for name, second_task in [("task B only", task_b), ("task B + 10% replay", task_b | replay)]:
model = torch.nn.Sequential(torch.nn.Linear(64, 64), torch.nn.ReLU(), torch.nn.Linear(64, 10))
optimizer = torch.optim.Adam(model.parameters(), lr=0.01)
# Train on digits 0-4 (task A), then on digits 5-9 (task B)
for mask in (task_a, second_task):
for _ in range(200):
loss = torch.nn.functional.cross_entropy(model(X[mask]), y[mask])
optimizer.zero_grad()
loss.backward()
optimizer.step()
accuracy = (model(X[test_a]).argmax(1) == y[test_a]).float().mean()
print(f"{name}: held-out digits 0-4 accuracy {accuracy:.1%}")بعد المهمة A، تصنف الشبكة 92.4% من الأرقام المحجوزة للاختبار، وعددها 198، ضمن الفئة الصحيحة للأرقام من 0 إلى 4. ويؤدي التدريب على الأرقام من 5 إلى 9 وحدها إلى خفض هذه النسبة إلى 0.0%، لأن النموذج لا يتنبأ الآن إلا بالفئات الجديدة. أما مزج 66 صورة مسترجعة من المهمة A في المرحلة الثانية فيحافظ على دقة تبلغ 74.7%.
النسيان الكارثي في التطبيق العملي#
- اكتشاف الأجسام: يتوقف كاشف دُرّب على المشاة وإشارات المرور، ثم ضُبط بدقة باستخدام صور لإشارات إنشائية جديدة فقط، عن اكتشاف المشاة. ويتعلم النموذج بنشاط اعتبار أي مشاة يظهرون دون تسميات في الصور الجديدة خلفيةً، ما يسرّع النسيان.
- نماذج اللغة الكبيرة: أثناء الضبط المستمر للتعليمات على نماذج LLM ذات أحجام تتراوح بين مليار و7 مليارات معلمة، تدهورت المعرفة بالمجالات والاستدلال والاستيعاب القرائي جميعها، وازداد النسيان حدةً مع زيادة حجم النموذج ضمن هذا النطاق. ويمكن أن يؤدي الضبط الدقيق للنماذج الموجّهة، حتى على بيانات غير ضارة، إلى إضعاف سلوكها الآمن.
النسيان الكارثي والمصطلحات ذات الصلة#
- التعلم المستمر: مجال بحثي يدرس كيفية تعلم سلسلة من المهام دون نسيان المهام السابقة. والنسـيان الكارثي هو المشكلة التي يعالجها هذا المجال.
- انهيار النموذج: فقدان تدريجي للجودة والتنوع عندما تُدرّب النماذج على بيانات أنتجتها نماذج سابقة، حتى عند تنفيذ المهمة نفسها.
- فرط التكيّف: ملاءمة ضجيج بيانات التدريب الحالية بدقة مفرطة، ما يخفض الأداء على بيانات جديدة من المهمة نفسها. أما النسيان فهو فقدان أداء مهمة سابقة.
- إزالة التعلم الآلي: إزالة بيانات أو معرفة محددة عمدًا من نموذج مدرّب؛ وهو النظير المقصود للنسيان.
- معضلة الاستقرار والمرونة: الموازنة بين الحفاظ على استقرار المعرفة القديمة والإبقاء على مرونة كافية لتعلم مهام جديدة، وهي موازنة تعالجها كل وسيلة تخفيف بطريقة مختلفة.
كيفية الحد من النسيان الكارثي#
تنقسم وسائل التخفيف إلى ثلاث فئات: إعادة التشغيل والتنظيم وعزل المعلمات، وعادةً ما تحدد قيود المشروع الفئة المناسبة:
- إعادة التشغيل: إن مزج أمثلة مخزنة من المهام السابقة ببيانات التدريب الجديدة أكثر الحلول موثوقيةً، كما يوضح مثال الأرقام. وبالنسبة إلى كواشف YOLO26، تقبل ملفات YAML للبيانات في Ultralytics قائمة بمجلدات صور التدريب؛ لذا تعني إعادة التشغيل إدراج عينة من الصور الأصلية إلى جانب الصور الجديدة ضمن قائمة فئات مشتركة.
- التنظيم: تعاقب آلية توطيد الأوزان المرنة (EWC) التغييرات التي تطرأ على كل وزن بما يتناسب مع أهميته للمهام السابقة، وفق تقدير يستند إلى معلومات Fisher. أما التعلم دون نسيان فيستخدم تقطير المعرفة بدلًا من ذلك، إذ يدرّب النموذج على مواصلة مطابقة مخرجاته السابقة على البيانات الجديدة.
- عزل المعلمات: يترك تجميد الطبقات المشتركة أو إضافة رؤوس خاصة بالمهام أو تدريب محوّلات مثل LoRA الأوزان الأصلية دون تغيير. وفي مهام البرمجة والرياضيات، تعلّم LoRA أقل من الضبط الدقيق الكامل، لكنه نسي أقل، كما تعلّم الضبط الدقيق الكامل تغييرات في الأوزان برتبة أعلى من التكوينات المعتادة لـLoRA بمقدار يتراوح بين 10 و100 ضعف.










