آليات التدريب2015متوسط11 دقيقة قراءة

تسوية الدُّفعات: تسريع تدريب الشبكات العميقة بتقليل الانزياح الداخلي للتوزيعات

Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift

Ioffe, S. · Szegedy, C. — ICML

المشكلة

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

الإسهام

تسوية الدُّفعات (BN): تحويل قابل للاشتقاق يُدرَج قبل كل دالة تنشيط غير خطية، يُعيد الاستجابات إلى متوسط صفري وتباين واحدي مستخدماً إحصاءات الدُّفعة المصغرة، ثم يطبّق معاملَي مقياس (γ) وإزاحة (β) يتعلّمهما النموذج تلقائياً. هذه الطبقة البسيطة وفّرت استقراراً هائلاً في التدريب لدرجة أنه أمكن رفع معدل التعلّم من 5 إلى 30 ضعفاً، والاستغناء عن Dropout، بل حتى تدريب شبكات sigmoid التي كانت مستعصية سابقاً. حقّقت BN دقة Inception في عُشر خطوات التدريب وسجّلت رقماً قياسياً جديداً على ImageNet بنسبة خطأ 4.82% على أفضل 5 ترشيحات — متجاوزةً الأداء البشري.

الأثر

أصبحت تسوية الدُّفعات من أكثر المكوّنات انتشاراً في . هي جزء أساسي في شبكات ResNet وInception وفي كل شبكة التفافية حديثة تقريباً. ألهم نجاحها عائلة كاملة من أساليب التسوية — تسوية الطبقات للمحوِّلات، وتسوية المجموعات للدُّفعات الصغيرة، وتسوية المثيلات لنقل الأسلوب الفني — وكل منها يكيّف الفكرة الجوهرية لمجال مختلف. كما فتحت الباب أمام تقدّمات عملية كالتدريب بالدقة المختلطة والتدريب بدُفعات كبيرة عبر معالجات متعددة، وهي أدوات لا غنى عنها اليوم للتدريب على نطاق واسع.

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

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

العصا هنا هي الاستجابات المتدفقة بين الطبقات، والحكم هو طبقة BN: سوِّ الاستجابات أولاً ثم دَع كل طبقة تُعيد تشكيلها كما تحتاج عبر المعاملين المُتعلَّمين γ وβ.

المشكلة: الأرض تتحرك باستمرار تحت كل طبقة

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

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

العواقب العملية كانت وخيمة:

  • يجب أن يكون ضئيلاً. الخطوات الكبيرة تُضخّم الانزياح فينحرف التدريب أو يتذبذب.
  • تهيئة حذرة للأوزان لا مفرّ منها. أوزان ابتدائية سيئة قد تدفع الاستجابات منذ الخطوة الأولى إلى مناطق التشبّع في أو tanh.
  • sigmoid هُجرت عملياً. بدون ضبط دقيق كانت شبكات sigmoid تعلق في مناطق مسطّحة حيث — حتى في مهام بسيطة كتصنيف أرقام MNIST.
افتح في المختبر
شاهد كيف ينزاح توزيع الاستجابات بعنف أثناء التدريب بدون BN، بينما يظل مستقراً معها.
تستيقظ التجربة عند وصولك…

الفكرة: سوِّ أولاً ثم دَع الشبكة تختار

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

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

هنا جاء قرار التصميم الحاسم من Ioffe وSzegedy: بعد التسوية أضِف معاملين مُتعلَّمين لكل سمة — مقياس γ وإزاحة β. يمنح هذا كل طبقة مَخرَجاً احتياطياً: إذا احتاجت الشبكة التوزيع الأصلي يمكنها أن تتعلّم ضبط γ = σ وβ = μ فتُلغي التسوية تماماً. في الممارسة تتعلم الشبكة حلاً وسطاً — مُسوًّى بما يكفي لتحقيق الاستقرار، لكنه مُشكَّل بما يخدم القدرة التعبيرية.

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

افتح في المختبر
تابع المراحل الأربع لتحويل BN: حساب المتوسط → حساب التباين → التسوية → المقياس والإزاحة.
تستيقظ التجربة عند وصولك…

تحويل BN رياضياً

قبل أن نكتب المعادلة، نوضّح ما تفعله: لدفعة من الاستجابات لسمة واحدة، نُركّزها عند الصفر ونضغط انتشارها إلى واحد، ثم نترك مقبضَين مُتعلَّمين (γ وβ) يُعيدان تشكيل النتيجة بالطريقة التي تحتاجها الشبكة.

x^i=xiμBσB2+ϵ,yi=γx^i+β\hat{x}_i = \frac{x_i - \mu_B}{\sqrt{\sigma^2_B + \epsilon}}, \quad y_i = \gamma \hat{x}_i + \beta
تحويل تسوية الدُّفعاتμ_B = متوسط الدُّفعة المصغرة · σ²_B = تباين الدُّفعة المصغرة · ε = ثابت صغير للاستقرار العددي · γ وβ = مقياس وإزاحة مُتعلَّمان · y_i = المخرج الذي ينتقل للطبقة التالية

أين تقع BN داخل الطبقة الالتفافية

في طبقة نموذجية تحسب z = g(Wu + b) تُدرَج BN قبل دالة التنشيط g فتصبح العملية: z = g(BN(Wu)). يختفي حدّ b لأن β الخاص بـBN يتولّى دوره — فطرح المتوسط يُلغي أي إزاحة ثابتة.

في تسوّي BN كل على حدة وليس كل بكسل بمفرده. خريطة سمات بحجم p×q ضمن دُفعة بحجم m تُسوَّى باستخدام جميع القيم m·p·q — أي متوسط μ واحد وانحراف σ واحد لكل . هذا ينسجم مع طبيعة الالتفاف: المرشّح نفسه ينبغي أن يسلك السلوك ذاته بصرف النظر عن موقعه المكاني في الصورة.

افتح في المختبر
انقر على كل مكوِّن لمعرفة سبب وضع BN بعد التحويل الخطي (الالتفاف/الطبقة الكاملة) وقبل دالة التنشيط.
تستيقظ التجربة عند وصولك…

التدريب مقابل الاستدلال: وضعان مختلفان

أثناء التدريب تستخدم BN متوسط وتباين الدُّفعة المصغرة الحالية. هذا ما يجعل التسوية قابلة للاشتقاق ويولّد ضوضاء تنظيمية خفيفة.

أثناء نريد مخرجات حتمية — توقُّع صورة ما يجب ألّا يتأثر بالصور الأخرى الموجودة معها في الدُّفعة. لذا تنتقل BN إلى إحصاءات المجموعة الكلية: متوسطات وتباينات متحركة جُمعت أثناء التدريب عبر . عندها تتحوّل طبقة BN بالكامل إلى تحويل خطي واحد: اضرب في γ/σ وأضف (β − γμ/σ). لا عبء حسابي إضافي ولا اعتماد على الدُّفعة.

هذا السلوك المزدوج هو السبب في وجود مفتاح «وضع التدريب» مقابل «وضع التقييم» في أُطر التعلم العميق — ونسيان تبديله يُعدّ من أكثر الأخطاء البرمجية شيوعاً في الممارسة.

افتح في المختبر
بدِّل بين وضعي التدريب والاستدلال لترى كيف تستخدم BN إحصاءات الدُّفعة مقابل المتوسطات المتحركة.
تستيقظ التجربة عند وصولك…

لماذا تُطلق BN معدّلات تعلّم أعلى

من أبرز الفوائد العملية لـتسوية الدُّفعات أنها تسمح برفع معدّل التعلّم رفعاً كبيراً — يصل أحياناً إلى 30 ضعفاً مقارنةً بالتدريب بدونها. الحدس وراء ذلك كالآتي:

في شبكة عادية، لو ضربت مصفوفة الأوزان W بعامل a (فأصبحت aW)، فإن الاستجابات تتضخّم بنفس العامل وكذلك الراجعة. أوزان كبيرة → استجابات كبيرة → تدرّجات كبيرة → انفجار محتمل. لهذا كان لا بد من معدّلات تعلّم ضئيلة لإبقاء سلسلة التضخيم تحت السيطرة.

مع BN، ضرب W بالعامل a لا يؤثر في المخرج المُسوَّى: BN(aWu) = BN(Wu). التسوية تُلغي أثر التضخيم. والأفضل من ذلك أن التدرّجات بالنسبة للأوزان المُضخَّمة تُقسم على a: أوزان أكبر ← تدرّجات أصغر. ينشأ عن ذلك حلقة تثبيت ذاتي تجعل التدريب متيناً أمام تغيّرات معدّل التعلّم.

BN((aW)u)=BN(Wu),BN((aW)u)(aW)=1aBN(Wu)W\text{BN}((aW)u) = \text{BN}(Wu), \quad \frac{\partial \text{BN}((aW)u)}{\partial (aW)} = \frac{1}{a} \cdot \frac{\partial \text{BN}(Wu)}{\partial W}
تسوية الدُّفعات ثابتة أمام التضخيم — أوزان أكبر تحصل على تدرّجات أصغراليسار: مخرج BN لا يتغير عند تضخيم W. اليمين: التدرّج يتناسب عكسياً — خاصية تثبيت ذاتي تمنع انحراف التدريب.
افتح في المختبر
قارن منحنيات التدريب عند معدّلات تعلّم مختلفة مع وبدون BN. لاحظ كيف تتحمّل BN معدّلات أعلى بـ5–30 ضعفاً.
تستيقظ التجربة عند وصولك…

مكافأة إضافية: BN كأداة ضبط هيكلي

عند التدريب بوجود BN، يُسوَّى كل مثال تدريبي وفقاً لإحصاءات الدُّفعة التي صادف وجوده فيها. دُفعات مختلفة تعني متوسطاً μ وتبايناً σ مختلفين، وبالتالي قيماً مُسوَّاة مختلفة قليلاً لنفس المدخل. هذه العشوائية تعمل كحقن ضوضاء — أي شكل من أشكال الضبط الهيكلي الذي يحدّ من ، بروح مشابهة لما يفعله الإسقاط العشوائي.

في تجاربهم وجد Ioffe وSzegedy أن شبكات BN كثيراً ما عادلت أو تفوّقت على شبكات تستخدم الإسقاط العشوائي — من دون أن تستخدمه هي. معنى ذلك أن واحداً صار بالإمكان حذفه (نسبة الإسقاط) والتدريب صار أسرع (لا عصبونات مُقنَّعة). كذلك قلّصوا ضبط بمقدار 5 أضعاف وأزالوا كلياً.

الفكرة ذاتها في الكود

تسوية الدُّفعات في نحو 25 سطراًpython

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

import numpy as np

def batch_norm_forward(x, gamma, beta, eps=1e-5, training=True,
                       running_mean=None, running_var=None, momentum=0.1):
    """
    x: الاستجابات، الشكل (m, d) — m مثال، d سمة
    gamma, beta: مقياس وإزاحة مُتعلَّمان، الشكل (d,)
    يُعيد: المخرج المُسوَّى والمُقيَّس
    """
    if training:
        mu = x.mean(axis=0)                          # متوسط الدُّفعة
        var = x.var(axis=0)                          # تباين الدُّفعة
        x_hat = (x - mu) / np.sqrt(var + eps)       # تسوية
        # تحديث الإحصاءات المتحركة للاستدلال لاحقاً
        running_mean[:] = (1 - momentum) * running_mean + momentum * mu
        running_var[:]  = (1 - momentum) * running_var  + momentum * var
    else:
        # الاستدلال: استخدم إحصاءات المجموعة الكلية
        x_hat = (x - running_mean) / np.sqrt(running_var + eps)

    y = gamma * x_hat + beta                        # المقياس والإزاحة
    return y

# هذا كل شيء. أربعة أسطر حسابية — سوِّ ثم قيِّس وأزِح —
# والشبكات العميقة تتدرّب أسرع بـ14 ضعفاً.

النتائج: أسرع بـ14 ضعفاً ثم رقم قياسي جديد

طبّق Ioffe وSzegedy تسوية الدُّفعات على نسخة معدّلة من بنية Inception (GoogLeNet) على مجموعة ImageNet. جاءت النتائج لافتة:

  • BN-Baseline (إضافة BN فقط دون أي تغيير آخر): وصلت إلى دقة Inception البالغة 72.2% في نصف خطوات التدريب.
  • BN-x5 (BN + معدّل تعلّم أعلى 5 أضعاف + حذف الإسقاط العشوائي + تقليل L2): بلغت 72.2% في عُشر خطوات التدريب وحقّقت دقة نهائية 73.0%.
  • BN-x30 (معدّل تعلّم أعلى 30 ضعفاً): بلغت 74.8% — تحسّن كبير على Inception الأصلية.
  • BN-x5-Sigmoid (sigmoid بدل ): حقّقت 69.8%. بدون BN نفس البنية مع sigmoid لم تتدرّب أصلاً — ظلّت عند مستوى التخمين العشوائي (0.1%).

مجموعة من 6 شبكات BN-Inception حقّقت خطأ 4.82% على أفضل 5 ترشيحات على ImageNet، وهو أداء يتجاوز الدقة البشرية المُقدَّرة بنحو 5.1%.

افتح في المختبر
قارن خطوات التدريب للوصول إلى دقة 72.2%: Inception مقابل متغيّرات BN. نسخة BN-x5 أسرع بـ14 ضعفاً.
تستيقظ التجربة عند وصولك…

شجرة عائلة التسوية: BN وLN وGN وIN

تسوّي BN عبر بُعد الدُّفعة — أي تسأل: «كيف تبدو هذه السمة عبر جميع الأمثلة في الدُّفعة؟». يعمل هذا بامتياز مع ذات الدُّفعات الكبيرة، لكن له حدود:

  • دُفعات صغيرة ← إحصاءات مُشوَّشة ← تدريب غير مستقر. مشكلة واقعية في مهام مثل حيث تحدّ ذاكرة من حجم الدُّفعة.
  • نماذج التسلسلات ← المدخلات متغيّرة الطول تجعل إحصاءات الدُّفعة غير محدّدة المعنى. لا يمكنك حساب متوسط ذي دلالة لاستجابة الموضع 50 عبر جمل بأطوال 10 و50 و200.

أفرزت هذه القيود عائلة من البدائل، كلٌّ منها يسوّي عبر أبعاد مختلفة:

  • تسوّي عبر السمات داخل كل مثال — بلا أي اعتماد على الدُّفعة. هذا جعلها الخيار الافتراضي في والنماذج اللغوية.
  • تسوّي عبر مجموعات من القنوات — مستقلة تماماً عن حجم الدُّفعة. أساسية لمهام الكشف و.
  • تسوية المثيلات (Instance Normalization) تسوّي كل قناة لكل مثال على حدة — تُستخدم في نقل الأسلوب الفني حيث تحمل إحصاءات كل صورة بصمتها الفنية.
افتح في المختبر
مرّر فوق كل نوع تسوية لمعرفة الأبعاد التي يحسب المتوسط عبرها. BN عبر الدُّفعة؛ LN عبر السمات؛ GN عبر مجموعات القنوات.
تستيقظ التجربة عند وصولك…

لماذا كانت مهمة

  1. 2015

    تسوية الدُّفعات (هذه الورقة)

    قدّم Ioffe وSzegedy تسوية الدُّفعات محقّقين تسريعاً بـ14 ضعفاً على ImageNet ونسبة خطأ 4.82% على أفضل 5 — متجاوزَين الدقة البشرية.

  2. 2015

    ResNet — تسوية الدُّفعات تصبح مكوّناً أساسياً في الشبكات الالتفافية العميقة

    استخدم He وفريقه BN بعد كل طبقة التفافية مما أتاح بناء شبكات من 152 طبقة. كانت BN ضرورية إلى جانب وصلات التخطّي لتدريب شبكات بهذا العمق.

  3. 2016

    تسوية الطبقات — بديل BN للتسلسلات

    اقترح Ba وفريقه التسوية عبر السمات بدل الدُّفعة، فأزالوا الاعتماد على حجمها. أصبحت المعيار في الشبكات التكرارية ولاحقاً في المحوِّلات.

  4. 2017

    التدريب بالدقة المختلطة — BN تُمكّن استخدام FP16

    أظهر Micikevicius وفريقه أن تسوية BN تُبقي الاستجابات في نطاق يناسب الحساب بنصف الدقة، مما جعل التدريب بالدقة المختلطة ممكناً عملياً.

  5. 2018

    تسوية المجموعات — بديل BN للدُّفعات الصغيرة

    اقترح Wu وHe التسوية عبر مجموعات القنوات، فأصبحت مستقلة عن حجم الدُّفعة. حاسمة لمهام الكشف والتجزئة.

  6. 2018

    كيف تساعد BN في الأمثلة؟ — إعادة نظر في الأساس النظري

    بيّن Santurkar وفريقه أن الفائدة الحقيقية لـBN تأتي من تنعيم سطح دالة الخسارة وليس من تقليل الانزياح الداخلي للتوزيعات — مراجعة نظرية مهمة.

  7. 2019

    التدريب بدُفعات كبيرة — BN في التدريب الموزَّع

    استخدم Goyal وآخرون BN مع التدريب بدُفعات كبيرة عبر معالجات رسومية عديدة، ووضعوا وصفات لتدريب ImageNet في دقائق بدل أيام.

المرجعIoffe, Szegedy. Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift. ICML, 2015.

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