Training Techniques2016متوسط9 دقيقة قراءة
تسوية الطبقة
Layer Normalization
Ba, J. L. · Kiros, J. R. · Hinton, G. E. — arXiv
المشكلة
تسوية الدفعة كانت نقلة حقيقية في تسريع الشبكات الأمامية العميقة، لكنها تحمل مشكلتين أساسيتين. المشكلة الأولى: أداؤها مرتبط بحجم الدفعة المصغّرة — فكلما صغُرت الدفعة أصبحت الإحصاءات مشوّشة وغير موثوقة. المشكلة الثانية: لا توجد طريقة واضحة لتطبيقها على الشبكات التكرارية، لأنّ كل خطوة زمنية ترى توزيعاً مختلفاً للمدخلات، وأطوال التسلسلات تتفاوت من مثال لآخر.
الإسهام
الفكرة بسيطة: بدلاً من حساب المتوسط عبر أمثلة الدفعة، نحسبهما من جميع الخلايا العصبية داخل طبقة واحدة على مثال واحد فقط. كل مثال يُسوّي نفسه بنفسه دون الحاجة لأمثلة أخرى. هذا يعني أنّ حجم الدفعة لم يعد مهماً، والصيغة نفسها تعمل في كل خطوة زمنية بلا فرق بين التدريب ، ولا حاجة لتخزين إحصاءات تراكمية.
الأثر
تسوية الطبقة أصبحت عنصراً لا غنى عنه في بنية . كل نموذج من عائلات GPT وBERT وClaude يعتمد عليها بعد (أو قبل) كل طبقة فرعية للانتباه والتغذية الأمامية. هي التي أتاحت تدريباً مستقراً لنماذج تسلسلية عميقة جداً كانت تسوية الدفعة عاجزة عن التعامل معها، وفتحت الباب لأساليب لاحقة مثل تسوية المجموعات وRMSNorm.
تخيّل امتحاناً في قاعة دراسية. تشبه أستاذاً يصحّح كل سؤال بمقارنة إجابات الطلاب جميعاً — يحتاج أن يرى أوراق الصف كاملاً ليرسم المنحنى. لو لم يحضر إلا ثلاثة طلاب، المنحنى لن يكون موثوقاً.
تعمل بمنطق مختلف تماماً: كل طالب يُعاير ورقته بنفسه، يقارن درجاته في كل الأسئلة ببعضها. إذا كان يميل لدرجات مرتفعة عموماً، يُطرح هذا المستوى الشخصي تلقائياً. لا حاجة لأي طالب آخر — كل ورقة تُعاير ذاتها.
وهذا بالضبط ما يجعل تسوية الطبقة مناسبة لـ التي تعالج جملة واحدة في كل مرة: لا تحتاج أبداً أن تنظر إلى أمثلة أخرى في الدفعة.
المشكلة: تسوية الدفعة تحتاج دفعة
تسوية الدفعة كانت إنجازاً حقيقياً: الفكرة أنّك تأخذ مدخلات كل خلية عصبية، تطرح المتوسط وتقسم على الانحراف المعياري، لكن محسوبَين عبر أمثلة الدفعة المصغّرة. النتيجة كانت مذهلة: سطح أصبح أكثر نعومة، وأمكن استخدام أعلى، وانخفض وقت التدريب بشكل ملحوظ.
لكنّ تسوية الدفعة تحمل مشكلة بنيوية: هي بطبيعتها تحتاج عدة أمثلة لتحسب إحصاءات موثوقة. وهذا يولّد ثلاث مشكلات عملية:
-
الدفعات الصغيرة تُفسد التقديرات. حين تكون ذاكرة GPU محدودة وينخفض حجم الدفعة إلى 2 أو 4، يصبح المتوسط والتباين مشوّشين ويفقد التدريب استقراره.
-
الشبكات التكرارية لا تتوافق معها. في الشبكة التكرارية، كل خطوة زمنية تُنتج تنشيطات من توزيعات مختلفة. تسوية الدفعة ستحتاج إلى حساب وتخزين إحصاءات منفصلة لكل خطوة زمنية، والتسلسلات تختلف في أطوالها — فأيّ إحصاءات تستخدم عند الخطوة 100 إذا انتهت معظم التسلسلات عند الخطوة 50؟
-
التدريب ≠ الاستدلال. أثناء التدريب تستخدم تسوية الدفعة إحصاءات الدفعة الحالية، وأثناء الاستدلال تستخدم متوسطات تراكمية مُخزّنة. هذا الفرق يمكن أن يُضعف الأداء، خاصةً مع مجموعات البيانات الصغيرة.
الفكرة: التسوية عبر الخصائص لا عبر الأمثلة
الفكرة في جوهرها تبديل محور واحد. بدلاً من حساب الإحصاءات عبر أمثلة تدريبية مختلفة (بُعد الدفعة)، نحسبها عبر جميع الخلايا العصبية داخل الطبقة نفسها على مثال واحد (بُعد الخصائص).
تخيّل جدولاً: كل صفّ مثال تدريبي، وكل عمود خلية عصبية. تسوية الدفعة تُعاير كل عمود — تنظر إلى الأسفل عبر الأمثلة. تسوية الطبقة تُعاير كل صفّ — تنظر عَرضاً عبر الخلايا. وبما أنّ كل صفّ مثال واحد بذاته، لا حاجة لأي مثال آخر.
بعد التسوية، يُطبَّق معامل قياس مُتعلَّم () وإزاحة مُتعلَّمة () لكل خلية عصبية، ما يتيح للشبكة أن تُعيد تشكيل التوزيع بالشكل الذي يناسب المهمة. التسوية تُزيل التذبذب غير المرغوب، و المُتعلَّم يُعيد فقط التغيّر المفيد.
الصياغة الرياضية: متوسط، تباين، تسوية، تحويل
تسوية الطبقة تمرّ بأربع خطوات مباشرة. لنأخذ مثالاً تدريبياً واحداً تنشيطاته في طبقة ما تشكّل متجهاً حيث عدد الخلايا العصبية. نحسب المتوسط والتباين على كامل المتجه، ثم نُسوّي، ثم نُطبّق تحويلاً خطياً مُتعلَّماً.
قبل أن نرى الرموز، الهدف واضح: نريد أن تقع جميع الخلايا العصبية في الطبقة على مقياس موحّد (متوسط صفري وتباين وحدوي)، ثم نترك الشبكة تختار القياس والإزاحة الأنسب للمهمة. الخطوات الأربع كالتالي.
لماذا تنجح مع الشبكات التكرارية
الشبكات التكرارية تعالج التسلسلات رمزاً برمز. في كل خطوة زمنية ، تعتمد على المدخل الحالي والحالة المخفية السابقة. المشكلة أنّ توزيع قد ينحرف بشدة كلما تقدّم التسلسل — وهذا مرتبط مباشرة بما يُعرف بـ الذي كان الدافع الأصلي لابتكار تسوية الدفعة.
لو حاولنا تطبيق تسوية الدفعة على شبكة تكرارية، سنحتاج إلى حساب إحصاءات عبر الدفعة عند كل خطوة زمنية، وتخزين متوسطات تراكمية منفصلة للخطوات 1 و2 و3 وهكذا. عملياً هذا غير ممكن: التسلسلات تتفاوت في أطوالها، والخطوة الزمنية 100 قد لا تجد إلا حفنة من الأمثلة فتكون إحصاءاتها بلا قيمة.
تسوية الطبقة تتجاوز هذه المشكلة كلياً. عند كل خطوة زمنية، تُسوّي عبر أبعادها الـ مستخدمةً ذلك المتجه الواحد فقط. لا إحصاءات دفعة، ولا تخزين مرتبط بالخطوة الزمنية. الصيغة واحدة في الخطوة 1 والخطوة 1000، أثناء التدريب وأثناء الاستدلال. لذلك كانت الخيار الطبيعي لشبكات LSTM وGRU، ثم لاحقاً لـالمحوِّل.
تسوية الطبقة في المحوِّل
حين ظهر المحوِّل عام 2017، اختار تسوية الطبقة وسيلةً للاستقرار — لا تسوية الدفعة. في البنية الأصلية، كل كتلة و تتبع هذا النمط: طبقة فرعية ← جمع ← تسوية الطبقة. يُعرف هذا الترتيب بـ.
لاحقاً، نقل GPT-2 ونماذج كثيرة بعده التسوية إلى قبل الطبقة الفرعية: تسوية طبقة ← طبقة فرعية ← جمع الاتصال التخطّي. هذا الترتيب يجعل التدريب أكثر استقراراً في الأعماق الكبيرة، لأنّ مسار الاتصال التخطّي يظلّ نظيفاً — تتدفق عبر عملية الجمع مباشرةً دون أن تمرّ بالتسوية أولاً.
في كلا الترتيبين، الوظيفة واحدة: تسوية الطبقة تُعيد توسيط وتقييس تمثيل كل كي تتلقّى الطبقة الفرعية التالية مدخلات مُكيَّفة. بدونها تتراكم القيم عبر الاتصالات التخطّية مع العمق، ويصبح التدريب هشاً.
عائلة أساليب التسوية
تسوية الطبقة واحدة من عائلة أساليب تختلف بحسب الأبعاد التي نحسب عليها المتوسط والتباين. لنتخيّل رباعي الأبعاد من التنشيطات (دفعة × قنوات × ارتفاع × عرض) — كل أسلوب يقطع شريحة مختلفة منه:
- تسوية الدفعة تُسوّي عبر الدفعة لكل قناة — الصيغة ذاتها لكن على أمثلة مختلفة.
- تسوية الطبقة تُسوّي عبر جميع القنوات (والأبعاد المكانية) لكل مثال — المثال نفسه لكن خصائص مختلفة.
- تُسوّي عبر الأبعاد المكانية لكل قناة في كل مثال — شائعة الاستخدام في نقل الأسلوب الفني.
- تقسم القنوات إلى مجموعات وتُسوّي كل مجموعة مستقلّةً — حل وسط بين تسوية الطبقة وتسوية النسخة.
الاختيار يعتمد على طبيعة المهمة. تسوية الدفعة تتألّق في ذات الدفعات الكبيرة. تسوية الطبقة هي السائدة في المحوِّلات والشبكات التكرارية. تسوية المجموعات تُفضَّل حين تكون الدفعات صغيرة لكنّ البنية المكانية مهمة (كاكتشاف الأجسام). المفتاح هو فهم المحور الذي تُسوّي عليه.
الفكرة ذاتها في شيفرة برمجية
مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.
import numpy as np
def layer_norm(x, gamma, beta, eps=1e-5):
"""
x: (دفعة, خصائص) — تنشيطات طبقة واحدة
gamma: (خصائص,) — مُعامل قياس مُتعلَّم، يبدأ بـ 1
beta: (خصائص,) — مُعامل إزاحة مُتعلَّم، يبدأ بـ 0
"""
# الخطوة 1: المتوسط عبر الخصائص (كل مثال مستقل)
mu = x.mean(axis=-1, keepdims=True) # (دفعة, 1)
# الخطوة 2: التباين عبر الخصائص
var = x.var(axis=-1, keepdims=True) # (دفعة, 1)
# الخطوة 3: التسوية إلى متوسط صفري وتباين وحدوي
x_hat = (x - mu) / np.sqrt(var + eps) # (دفعة, خصائص)
# الخطوة 4: التحويل الخطي المُتعلَّم
return gamma * x_hat + beta # (دفعة, خصائص)
# قارن مع تسوية الدفعة:
# تسوية الدفعة تحسب المتوسط والتباين عبر axis=0 (الدفعة).
# تسوية الطبقة تحسبهما عبر axis=-1 (الخصائص).
# تغيير المحور هذا هو كل الفرق بينهما.لماذا غيَّرت هذه الورقة المشهد
2015
تسوية الدفعة
قدّم يوفي وسزيغيدي تسوية الدفعة، فسرّعت تدريب الشبكات الأمامية بشكل ملحوظ عبر ضبط التنشيطات على مستوى الدفعة المصغّرة.
2016
تسوية الطبقة
اقترح با وكيروس وهينتون فكرة تسوية الطبقة — أي التسوية عبر خصائص المثال الواحد بدلاً من أمثلة الدفعة، ما أتاح استخدام الشبكات التكرارية وحرّر التدريب من الارتباط بحجم الدفعة.
2017
المحوِّل يتبنّى تسوية الطبقة
في ورقة «Attention Is All You Need»، اعتمد فاسواني وزملاؤه تسوية الطبقة في كل كتلة ترميز وفك ترميز، فأصبحت المعيار الثابت في بنية المحوِّل.
2018
تسوية المجموعات
اقترح وو وهي تسوية المجموعات كحلّ وسط: تقسم القنوات إلى مجموعات وتُسوّي كلاً منها مستقلّةً. أثبتت فعاليتها مع الشبكات الالتفافية ذات الدفعات الصغيرة، حيث تسوية الدفعة وتسوية الطبقة كلتاهما تواجهان صعوبات.
2019
المحوِّل بتسوية مسبقة (Pre-LN)
في GPT-2 والنماذج التي تلته، نُقلت تسوية الطبقة إلى ما قبل الطبقة الفرعية بدلاً من بعدها، فتحسّن استقرار التدريب بشكل واضح في النماذج شديدة العمق.
2021
RMSNorm
بسّط زانغ وسِنريتش تسوية الطبقة بإلغاء خطوة طرح المتوسط والاكتفاء بالقسمة على الجذر التربيعي لمتوسط المربعات. اعتمدتها LLaMA ونماذج لغوية كبيرة كثيرة لأنها أسرع حسابياً.
تسوية الطبقة من تلك الأفكار التي لم تتكشّف أهميتها إلا بما جاء بعدها. حين نُشرت كانت حلاً عملياً لتدريب الشبكات التكرارية. بعد سنة واحدة جاء المحوِّل فجعلها لا غنى عنها. اليوم، كل نموذج لغوي كبير — GPT وClaude وGemini وLLaMA — يُنفّذ تسوية الطبقة (أو سليلتها ) في كل طبقة بلا استثناء، مليارات المرات في كل عملية استدلال. فكرة بسيطة — تبديل محور واحد — أصبحت بنية تحتية.
المرجعBa, Kiros, Hinton. Layer Normalization. arXiv, 2016.
مصطلحات هذه الورقة
- التسوية الطبقيةLayer Normalization
- تسوية الدفعات الحسابيةBatch Normalization
- المعايرة القياسية للبياناتNormalization
- الانزياح الداخلي للتوزيعاتInternal Covariate Shift
- الشبكة العصبية التكراريةRecurrent Neural Network (RNN)
- التحويل التآلفيAffine Transform
- التباينVariance
- دالة التنشيطActivation Function