التحسين2019متوسط11 دقيقة قراءة

فصل اضمحلال الأوزان عن التحديث التكيُّفي

Decoupled Weight Decay Regularization

Loshchilov, I. · Hutter, F. — ICLR

المشكلة

كان آدام يُعطي نتائج أضعف من النزول التدريجي العشوائي مع في مهام تصنيف الصور، فاضطرّ الممارسون للتبديل بين المُحسِّنَين بحسب المهمة. تبيّن لاحقاً أن السبب خلل دقيق لكنه جوهري: مكتبات كانت تُطبّق تنظيم L2 وتُسمّيه «اضمحلال أوزان»، لكنهما ليسا متكافئَين في المُحسِّنات التكيُّفية. تنظيم L2 يُقسَم على معدلات التعلم التكيُّفية الخاصة بكل معامل، فتحصل الأوزان ذات التدرجات الكبيرة على تنظيم أقل — عكس المطلوب تماماً.

الإسهام

إصلاح من سطر واحد لكن أثره عميق: افصل خطوة عن التحديث التكيُّفي للتدرجات. في AdamW تتقلّص الأوزان بنسبة ثابتة λ كل خطوة — بغضّ النظر عن حجم التدرج — ثم يُطبَّق التحديث التكيُّفي بشكل مستقل. النتيجة: (1) اضمحلال الأوزان يؤثّر بالتساوي على جميع المعاملات، (2) القيمة المُثلى ومُعامِل الاضمحلال تصبحان مستقلتين إلى حدٍّ كبير ما يُسهّل ضبط المعاملات الفائقة، (3) آدام يصبح منافساً للنزول التدريجي مع الزخم في مهام كان يتخلّف فيها سابقاً، مع تحسّن نسبي بنسبة 15% في خطأ الاختبار على CIFAR-10.

الأثر

أصبح AdamW المُحسِّن الافتراضي المُحوِّلات والنماذج اللغوية الكبيرة. يستخدمه GPT-2 وGPT-3 وBERT ومُحوِّلات الرؤية وعملياً كل نموذج أساسي حديث. الاكتشاف بأن اضمحلال الأوزان وتنظيم L2 يختلفان جذرياً تحت المُحسِّنات التكيُّفية غيّر نظرة المجتمع البحثي للتنظيم بأكمله. واليوم يُعدّ torch.optim.AdamW في PyTorch المُحسِّن الأكثر استخداماً في أبحاث التعلم العميق.

تخيّل صالة رياضية فيها مدرّب شخصي، مهمّته أن يُطبّق حمية واحدة على كل المجموعات العضلية: الجميع يخسر الوزن بالتساوي. لكن في الصالة نظام ذكي () يُلاحظ أن بعض العضلات تتمرّن بجهد أكبر، فيُقرّر من تلقاء نفسه تخفيف حميتها — ظنّاً منه أنه يُساعدها.

النتيجة؟ العضلات التي تحتاج أشدّ انضباط تحصل على أقلّه. الخطة تبدو سليمة على الورق، لكن النظام الذكي أعاد صياغتها بصمت.

AdamW يعزل النظام الذكي عن قسم الحمية تماماً. القاعدة: خطة إنقاص الوزن (اضمحلال الأوزان) تسير في مسار مستقل — لا تدخّل من النظام التكيُّفي. النظام التكيُّفي يظلّ مسؤولاً عن شدّة التمرين (معدَّل التعلُّم)، لكن ليس له علاقة بـالحمية ().

الخلط: تنظيم L2 ≠ اضمحلال الأوزان

لعقود طويلة، عُومِلت تقنيتا تنظيم وكأنهما شيء واحد:

يُضيف حدّ عقوبة إلى يتناسب مع مربع قيم الأوزان: Lreg=L+λ2θ2L_{reg} = L + \frac{\lambda'}{2}\|\theta\|^2. تدرُّج هذه العقوبة هو λθ\lambda'\theta ويُضاف إلى تدرُّج الخسارة الأصلي.

اضمحلال الأوزان يُقلّص الأوزان مباشرةً بنسبة ثابتة في كل خطوة: θt+1=(1λ)θtαft(θt)\theta_{t+1} = (1 - \lambda)\theta_t - \alpha \nabla f_t(\theta_t).

في القياسي، الاثنان متكافئان رياضياً (حيث λ=λ/α\lambda' = \lambda / \alpha). لكن هذا التكافؤ ينهار عند استخدام تكيُّفي مثل آدام — وهذا الانهيار كان السبب الخفيّ وراء ضعف تعميم آدام.

θt+1=(1λ)θtαft(θt)\theta_{t+1} = (1 - \lambda)\,\theta_t - \alpha\,\nabla f_t(\theta_t)
اضمحلال الأوزان الأصلي (Hanson & Pratt, 1988)في كل خطوة تدريبية، يُقلّص النموذج قيم جميع الأوزان قليلاً قبل تطبيق تحديث التعلّم المعتاد. هذا التقليص المنتظم يمنع المعاملات من النمو المُفرط ويعمل كوسيلة تنظيم. ولأن معدل الاضمحلال واحد لجميع الأوزان، فإن أثره لا يتغيّر بتغيُّر قيم التدرجات.

لماذا يفترقان داخل آدام

جوهر المشكلة بسيط. آدام يقسم كل تدرُّج على الجذر التربيعي للمتوسط المتحرّك لمربعات التدرجات — وهذا ما يُنتِج معدَّل التعلُّم التكيُّفي. حين نستخدم تنظيم L2، فإن تدرُّج العقوبة λθ\lambda'\theta يمرّ هو أيضاً عبر هذا التقييس التكيُّفي.

لنأخذ وزناً تدرجاته كانت كبيرة تاريخياً: مقام آدام v^t\sqrt{\hat{v}_t} سيكون كبيراً لهذا الوزن، فيصير معدل التعلم الفعلي صغيراً. لكن المقام الكبير نفسه يُقلّص إشارة التنظيم أيضاً — أي أن الأوزان ذات التدرجات الكبيرة تحصل على تنظيم أقل. الآلية التكيُّفية التي صُمِّمت لتسريع تُقوّض التنظيم من دون أن يلاحظ أحد.

والعكس صحيح: وزن ذو تدرجات صغيرة يُقسَم على مقام صغير فيتضخّم التحديث والتنظيم معاً — أي أن الأوزان الهادئة تُعاقَب أكثر من اللازم. هذا عكس التنظيم المنتظم الذي نريده تماماً.

افتح في المختبر
لاحظ كيف يتشوّه تنظيم L2 بسبب التقييس التكيُّفي في آدام، بينما اضمحلال الأوزان المفصول يُطبَّق بانتظام على الجميع.
تستيقظ التجربة عند وصولك…

الإصلاح: سطر واحد يُغيّر كل شيء

إصلاح AdamW بسيط لدرجة مُحرجة. بدلاً من إضافة حدّ التنظيم إلى (حيث يتشابك مع المعدلات التكيُّفية)، نُطبّق اضمحلال الأوزان مباشرةً على المعاملات كخطوة منفصلة بعد التحديث التكيُّفي:

  1. نحسب دالة الخسارة فقط (بلا حدّ L2)
  2. نُحدّث العزمَين التكيُّفيَّين mtm_t و vtv_t بهذا التدرُّج النظيف
  3. نحسب الخطوة التكيُّفية بعد : m^tv^t+ϵ\frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon}
  4. بشكل منفصل نُقلّص الأوزان: θtθt1ηt(αm^tv^t+ϵ+λθt1)\theta_t \leftarrow \theta_{t-1} - \eta_t\left(\alpha \frac{\hat{m}_t}{\sqrt{\hat{v}_t}+\epsilon} + \lambda\,\theta_{t-1}\right)

حدّ اضمحلال الأوزان λθt1\lambda\,\theta_{t-1} لا يمسّ الآلية التكيُّفية مطلقاً. كل وزن يضمحلّ بالمعدل نفسه λ\lambda بصرف النظر عن تاريخ تدرجاته.

θt=θt1ηt(αm^tv^t+ϵ+λθt1)\theta_t = \theta_{t-1} - \eta_t \left( \alpha \frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon} + \lambda\,\theta_{t-1} \right)
قاعدة تحديث AdamW — اضمحلال الأوزان مفصول عن التدرجاتيجمع AdamW بين تأثيرين مستقلين في كل خطوة تحديث. الأول يُعدّل المعاملات وفق آلية آدام التكيُّفية المبنية على التدرجات. والثاني يُقلّص المعاملات بشكل مستقل عبر اضمحلال الأوزان. الفرق عن التطبيقات السابقة أن مقدار الاضمحلال لا يتأثر بالتقييس التكيُّفي المُطبّق على التدرجات، ما يجعل أثر التنظيم أكثر انتظاماً وأسهل في التحكّم. ويمكن أيضاً تعديل حجم التحديث الكلّي بمرور الوقت باستخدام جدول لمعدل التعلّم.
افتح في المختبر
تتبّع قواعد تحديث Adam وAdamW جنباً إلى جنب لترى بالضبط أين يفترقان.
تستيقظ التجربة عند وصولك…

خوارزمية AdamW كاملة

خوارزمية AdamW الكاملة تكاد تكون نسخة طبق الأصل من آدام — كل سطر هو نفسه ما عدا السطرين 6 و12. السطر 6 يحسب تدرُّج دالة الخسارة من دون إضافة حدّ التنظيم. والسطر 12 يطرح حدّ اضمحلال الأوزان خارج النسبة التكيُّفية ليبقى مستقلاً عنها. انقر على كل خطوة أدناه لفهم دورها:

افتح في المختبر
انقر على كل سطر لمعرفة الغرض منه. الأسطر المُظلّلة بالأخضر هي تعديلات AdamW.
تستيقظ التجربة عند وصولك…

لماذا يُحدث فرقاً: معاملات فائقة قابلة للفصل

من أبرز الفوائد العملية لفصل اضمحلال الأوزان أنه يجعل القيمة المُثلى لكلٍّ من معدَّل التعلُّم α\alpha ومُعامِل اضمحلال الأوزان λ\lambda مستقلة عن الأخرى إلى حدٍّ كبير. في آدام القياسي مع تنظيم L2، هذان مترابطان بإحكام: تغيير أحدهما يستلزم إعادة ضبط الآخر. أفضل الإعدادات تقع على قطر في شبكة (α,λ)(\alpha, \lambda) — لا يمكنك تحسين أحدهما مع تثبيت الآخر.

في AdamW الوضع مختلف: أفضل الإعدادات تشكّل منطقة مستطيلة. يمكنك إيجاد λ\lambda جيّد وα\alpha جيّد كلٌّ على حدة، والجمع بينهما سيظلّ قريباً من الأمثل. هذا يختصر تكلفة البحث عن المعاملات الفائقة من شبكة ثنائية الأبعاد إلى مسحَين مستقلَّين أحاديَّي البعد.

افتح في المختبر
قارن خارطة المعاملات الفائقة: المنطقة المُثلى لآدام تقع على القطر (مترابطة)، بينما منطقة AdamW تُشكّل مستطيلاً محاذياً للمحاور (منفصلة).
تستيقظ التجربة عند وصولك…

التخفيض بجيب التمام وإعادة التشغيل الدافئة

يُبيّن البحث أيضاً أن آدام يستفيد كثيراً من — رغم أنه مُحسِّن تكيُّفي. يقترح المؤلفان AdamWR: وهو AdamW مُقترناً بالتخفيض بجيب التمام من بحثهم السابق SGDR. مُضاعِف معدَّل التعلُّم يتبع المعادلة:

ηt=ηmin+12(ηmaxηmin)(1+cos(πTcur/Ti))\eta_t = \eta_{min} + \frac{1}{2}(\eta_{max} - \eta_{min})(1 + \cos(\pi T_{cur}/T_i))

يبدأ معدَّل التعلُّم مرتفعاً ويتراجع بسلاسة نحو الصفر وفق منحنى جيب التمام، ثم «يُعاد تشغيله» — أي يقفز عائداً إلى القمة ويتكرر. كل فترة إعادة تشغيل TiT_i يمكن أن تنمو بمُعامِل TmultT_{mult} (مثلاً 100 ← 200 ← 400 حقبة تدريبية). الفائدة أن هذا يمنح المُحسِّن فرصة للإفلات من واستكشاف مناطق جديدة في فضاء دالة الخسارة.

الفكرة الجوهرية هنا أن معدلات التعلُّم التكيُّفية (الخاصة بكل معامل) وجداول معدَّل التعلُّم الشاملة تخدم أغراضاً مختلفة وتتكامل بامتياز. المعدلات التكيُّفية تتولّى الاتجاه، بينما الجدول الشامل يتولّى التوازن بين الاستكشاف والاستغلال.

افتح في المختبر
شاهد جدول معدَّل التعلُّم مع إعادة التشغيل الدافئة — كل دورة تصبح أطول.
تستيقظ التجربة عند وصولك…

اضمحلال الأوزان على أرض الواقع

لبناء حدس عن دور اضمحلال الأوزان، تخيّل كل وزن نابضاً مربوطاً بالصفر. في كل خطوة تدريب، التدرُّج يسحب الوزن نحو النقطة التي تُقلّل الخسارة، لكن النابض يجذبه عائداً نحو الصفر. التوازن بين هاتين القوتين يُحدّد الحجم النهائي للوزن.

حين نستخدم تنظيم L2 داخل آدام، تتفاوت شدّة النابض من وزن لآخر (لأن المعدلات التكيُّفية تُعدّلها). أمّا مع ، فشدّة النابض واحدة — كل وزن يشعر بالسحب نفسه نحو الصفر. هذا الانتظام يُشجّع على قيم أوزان أصغر وأكثر توزُّعاً، وهي التي تُعمّم بشكل أفضل عادةً.

افتح في المختبر
اسحب شريط اضمحلال الأوزان وشاهد كيف تتقلّص الأوزان نحو الصفر مع كل خطوة تدريب.
تستيقظ التجربة عند وصولك…

الفكرة نفسها في الكود

Adam مقابل AdamW — اكتشف فرق السطر الواحدpython

مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.

import numpy as np

def adam_step(theta, grad, m, v, t, lr=0.001, beta1=0.9, beta2=0.999, eps=1e-8, wd=0.01):
    """آدام القياسي مع تنظيم L2 (الاضمحلال مخلوط بالتدرج)."""
    grad = grad + wd * theta          # ← L2: تدرُّج العقوبة يُضاف إلى تدرُّج الخسارة
    m = beta1 * m + (1 - beta1) * grad
    v = beta2 * v + (1 - beta2) * grad ** 2
    m_hat = m / (1 - beta1 ** t)
    v_hat = v / (1 - beta2 ** t)
    theta = theta - lr * m_hat / (np.sqrt(v_hat) + eps)
    return theta, m, v                # الاضمحلال قُيّس بـ 1/sqrt(v_hat) — مُشوَّه!

def adamw_step(theta, grad, m, v, t, lr=0.001, beta1=0.9, beta2=0.999, eps=1e-8, wd=0.01):
    """AdamW: اضمحلال الأوزان مفصول عن تحديث التدرج."""
    # التدرج نظيف — بلا حدّ L2
    m = beta1 * m + (1 - beta1) * grad
    v = beta2 * v + (1 - beta2) * grad ** 2
    m_hat = m / (1 - beta1 ** t)
    v_hat = v / (1 - beta2 ** t)
    theta = theta - lr * (m_hat / (np.sqrt(v_hat) + eps) + wd * theta)  # ← الاضمحلال مفصول
    return theta, m, v                # الاضمحلال مُطبَّق بانتظام — كما هو المطلوب!

# هذا كل شيء. سطر واحد تغيّر مكانه. GPT وBERT وكل مُحوِّل حديث يستخدم هذا الإصلاح.

ماذا أظهرت التجارب

اختبر المؤلفان AdamW مقابل آدام القياسي (مع تنظيم L2) عبر إعدادات متعددة على CIFAR-10 وImageNet32x32. وجاءت النتائج متّسقة:

  • حقّق AdamW تحسّناً نسبياً بنسبة 15% في خطأ الاختبار على CIFAR-10 مقارنةً بآدام مع تنظيم L2.
  • التخفيض بجيب التمام مع إعادة التشغيل الدافئة (AdamWR) سرّع التقارب بمعدّل يصل إلى 10 أضعاف في المراحل المبكرة من التدريب.
  • المُعاملات الفائقة المُثلى لـ AdamW كانت أسهل في الفصل بكثير: يمكن ضبط معدَّل التعلُّم واضمحلال الأوزان بشكل مستقل، ما يختصر وقت الضبط بشكل كبير.
  • عند قيم خسارة تدريب متقاربة، أظهر AdamW باستمرار خطأ اختبار أفضل — وهذا دليل على تحسُّن حقيقي في التعميم وليس مجرد تقارب أسرع.
  • أغلق AdamW معظم الفجوة بين آدام والنزول التدريجي العشوائي مع الزَّخم، فأصبح اختيار المُحسِّن أقل عشوائية.

اضمحلال الأوزان المُقيَّس: إعداد واحد لكل ميزانيات التدريب

لاحظ المؤلفان أن القيمة المُثلى لـاضمحلال الأوزان تعتمد على ميزانية التدريب الإجمالية — كلما طال التدريب احتجنا λ\lambda أصغر. فاقترحا لتقليل هذا الاعتماد: λ=λnormb/(BT)\lambda = \lambda_{norm}\sqrt{b / (BT)}، حيث bb هو وBB حجم مجموعة البيانات وTT عدد . بهذه الطريقة يبقى λnorm\lambda_{norm} ثابتاً تقريباً مهما تغيّرت مدة التدريب أو تغيّرت مجموعة البيانات.

هذا التقييس ليس اكتشافاً نظرياً عميقاً — التقييس بالجذر التربيعي حُدِّد تجريبياً. لكن فائدته العملية كبيرة: قيمة λnorm\lambda_{norm} جيدة تُكتشَف في تجارب قصيرة تنتقل بسلاسة إلى التجارب الطويلة.

لماذا كان مهمّاً

  1. 2014

    ظهور مُحسِّن آدام

    قدّم Kingma وBa خوارزمية آدام التي تجمع بين الزخم ومعدلات التعلم التكيُّفية. انتشرت سريعاً كمُحسِّن افتراضي، لكنها أظهرت تعميماً أضعف من SGD في بعض المهام.

  2. 2017

    اقتراح AdamW (مسوّدة على arXiv)

    اكتشف Loshchilov وHutter أن تنظيم L2 واضمحلال الأوزان غير متكافئين في المُحسِّنات التكيُّفية، واقترحا فصل اضمحلال الأوزان. عنوان المسوّدة كان «إصلاح تنظيم اضمحلال الأوزان في آدام».

  3. 2018

    GPT-1 يتبنّى AdamW

    استخدم Radford وفريقه AdamW لتدريب أول مُحوِّل GPT، فترسّخ كمُحسِّن أساسي للتدريب المسبق للنماذج اللغوية.

  4. 2019

    نشر AdamW رسمياً في ICLR

    نُشر البحث رسمياً في ICLR 2019. أضافت PyTorch وTensorFlow تطبيقات رسمية لـ AdamW. وكان BERT قد اعتمد عليه منذ 2018.

  5. 2020

    LAMB — توسيع AdamW للدفعات الكبيرة

    طوّر You وفريقه AdamW بإضافة تقييس تكيُّفي لكل طبقة، فأصبح بالإمكان تدريب BERT بدفعات تصل إلى 64 ألف عيّنة، وانخفض وقت التدريب من 3 أيام إلى 76 دقيقة.

  6. 2023

    Lion — تطوُّر ما بعد AdamW

    استخدم Chen وفريقه البحث البرمجي لاكتشاف Lion، مُحسِّن أبسط يعتمد على عمليات الإشارة فقط. ورغم ذلك لا يزال يستخدم اضمحلال أوزان مفصولاً — المبدأ يصمد حتى مع تطوُّر الخوارزمية الأساسية.

العنوان الأصلي للورقة على arXiv كان «إصلاح تنظيم اضمحلال الأوزان في آدام» — عنوان صادق ومُنعش. إعادة تسميته لاحقاً بالعنوان الأكاديمي «فصل تنظيم اضمحلال الأوزان» أخفت الروح الحقيقية: كان هذا إصلاح خلل برمجي. أهمّ إصلاح خلل في تاريخ تحسين التعلُّم العميق.

المرجعLoshchilov, Hutter. Decoupled Weight Decay Regularization. ICLR, 2019.

مصطلحات هذه الورقة