Weight Decay
يُعدّ اضمحلال الأوزان تقنيةً للتنظيم تقلّص أوزان النموذج باتجاه الصفر، ما يساعد الشبكات العصبية على الحد من فرط التكيّف والتعميم على بيانات جديدة.
اضمحلال الأوزان تقنية للتنظيم تسحب الأوزان المتعلَّمة للنموذج باتجاه الصفر أثناء التدريب. يثبط هذا التقليص المتكرر قيم المعلمات الكبيرة بلا داعٍ، ويساعد الشبكة العصبية على التعميم على أمثلة لم ترها من قبل. وتكون هذه التقنية مفيدةً على نحو خاص عندما تكون سعة النموذج كافية لحفظ الضوضاء في بيانات التدريب.
قدّم Geoffrey Hinton اضمحلال الأوزان في بحثه الصادر عام 1986 بعنوان تعلّم التمثيلات الموزعة للمفاهيم. وفي تجربته لشجرة العائلة، خفّض مقادير الأوزان بنسبة 0.2% بعد كل تحديث لتسهيل تفسير الروابط المتعلَّمة. ثم شاع استخدام اضمحلال الأوزان للتحكم في فرط التكيّف.
آلية عمل اضمحلال الأوزان#
أثناء الانحدار المتدرج، يغيّر المحسِّن المعلمات باستخدام التدرجات: وهي مشتقات تصف تأثير كل معلمة في دالة الخسارة. يضيف اضمحلال الأوزان قوة سحب باتجاه الصفر. وفق اصطلاح التحجيم بمعدل التعلّم الذي تستخدمه محسنات كثيرة، يكون تحديث SGD البسيط من دون زخم هو new weight = (1 - learning rate × decay) × old weight - learning rate × gradient. يجمع هذا بين التعلّم من أخطاء التنبؤ والتقليص المتناسب.
يتحكم معامل الاضمحلال في قوة السحب. ويؤدي ضبطه على الصفر إلى تعطيله؛ أما القيم الموجبة الأكبر فتزيد التقليص عند ثبات معدل التعلّم. ومع ذلك، يمكن لتدرج المهمة أن يزيد وزنًا إذا أدى ذلك إلى تحسين التنبؤات. يقلل اضمحلال معدل التعلّم حجم خطوة المحسِّن تدريجيًا؛ أما اضمحلال الأوزان فيؤثر في قيم المعلمات.
اضمحلال الأوزان مقابل تنظيم L2#
يضيف تنظيم L2 مجموعًا موزونًا من مربعات الأوزان إلى دالة الهدف الخاصة بالتدريب. عند استخدام الانحدار المتدرج العشوائي البسيط، يؤدي اشتقاق هذا الحد إلى التقليص المتناسب نفسه، عند مواءمة المعاملات على نحو مناسب. ويُسمّى التدريب باستخدام حدّ مربعات الأوزان هذا في الانحدار الخطي انحدار ريدج.
عند استخدام محسِّن Adam، يمرر إدراج حدّ L2 تدرج هذا الحد عبر المتوسطات المتحركة لـ Adam والتحجيم الخاص بكل معلمة. أما AdamW فيطبّق التقليص على نحو منفصل عن حساب التدرج التكيّفي هذا. قدّم Ilya Loshchilov وFrank Hutter محسِّن AdamW في بحثهما الصادر عام 2017 بعنوان تنظيم اضمحلال الأوزان المفصول، الذي نُشر في ICLR 2019. يجعل هذا الفصل قوة الاضمحلال مستقلة عن تحجيم Adam المعتمد على سجل التدرجات.
اختيار قوة الاضمحلال#
اضمحلال الأوزان معلمة فائقة تُختار باستخدام بيانات التحقق. ويؤدي ضعفها إلى عدم تقييد فرط التكيّف بما يكفي. أما الاضمحلال المفرط فيسبب قصور التكيّف: إذ يعجز النموذج عن ملاءمة الأنماط المفيدة، فتكون الأخطاء مرتفعة على أمثلة التدريب والتحقق. وتكشف مقارنة درجات التحقق عبر إعدادات الاضمحلال عن القوة المناسبة لنموذج ومجموعة بيانات معينين.
يعتمد الأثر التراكمي أيضًا على جدول معدل التعلّم وعدد تحديثات المحسِّن. ويمكن أن يؤدي تغيير حجم الدفعة أو عدد عصور التدريب إلى تغيير عدد مرات تطبيق الاضمحلال؛ أما تراكم التدرجات فيجمع عدة دفعات قبل إجراء تحديث. وتعمل طبقة الإسقاط على التنظيم من خلال تصفير التنشيطات عشوائيًا، بينما يحد الإيقاف المبكر من مدة التدريب.
تتيح Ultralytics YOLO إعداد تدريب weight_decay، وتبلغ قيمته الافتراضية 0.0005، للتحكم في التنظيم عند تدريب نماذج مثل YOLO26. وتستبعد مجموعات معلمات المحسِّن الخاصة بها الانحيازات ومعلمات طبقات التطبيع من اضمحلال الأوزان.
اضمحلال الأوزان في PyTorch#
يوفر المحسِّن torch.optim.AdamW اضمحلال أوزان مفصولًا في PyTorch. ثبّت الحزمة باستخدام pip install torch؛ ينشئ هذا المثال تدرجًا صفريًا للمهمة بحيث يعزل التحديث المطبوع أثر اضمحلال الأوزان:
import torch
weight = torch.nn.Parameter(torch.tensor([2.0]))
optimizer = torch.optim.AdamW([weight], lr=0.1, weight_decay=0.1)
before = weight.item()
# Create a zero gradient while keeping the parameter in the computation.
optimizer.zero_grad()
loss = (weight * 0).sum()
loss.backward()
optimizer.step()
print(f"Weight: {before:.2f} -> {weight.item():.2f}")الناتج هو Weight: 2.00 -> 1.98: يضرب تحديث واحد الوزن في 1 - 0.1 × 0.1، أي 0.99، فيقلل مقداره بنسبة 1%.










