الرؤية الحاسوبية2018متوسط9 دقيقة قراءة
التسوية بالمجموعات
Group Normalization
Wu, Y. · He, K. — ECCV
المشكلة
أحدثت تسوية الدفعات ثورة في من خلال تثبيت عملية عبر تسوية الخصائص باستخدام إحصائيات الدفعة. لكن لهذه التقنية نقطة ضعف جوهرية: تحتاج إلى دفعات كبيرة (32 صورة لكل وحدة معالجة رسومية مثلاً) لتقدير المتوسط بدقة. وحين تفرض قيود الذاكرة استخدام دفعات صغيرة — كما في كشف الكائنات (صورة أو صورتان فقط) وتصنيف الفيديو الدلالية — يرتفع خطأ تسوية الدفعات بشكل حادّ. دفعة من صورتين تعطي تقديراً مضطرباً لإحصائيات المجتمع الأصلي، فتنهار دقة الشبكة.
الإسهام
التسوية بالمجموعات: قسّم القنوات إلى مجموعات (32 مجموعة افتراضياً) واحسب المتوسط والتباين داخل كل مجموعة لكل عيّنة على حدة. هذه التقنية مستقلة تماماً عن حجم الدفعة — إحصائياتها تأتي من قنوات صورة واحدة، لا من الدفعة ككل. بحجم دفعة يساوي 2، حققت التسوية بالمجموعات خطأ أقل بنسبة 10.6% مقارنة بتسوية الدفعات على ResNet-50 في ImageNet. وعند أحجام الدفعات المعتادة، تقترب من تسوية الدفعات بفارق لا يتجاوز 0.5%. تنتقل التسوية بالمجموعات بسلاسة من إلى ، وتتفوق على نظيراتها القائمة على تسوية الدفعات في كشف الكائنات والتجزئة في COCO وتصنيف الفيديو في Kinetics.
الأثر
فتحت التسوية بالمجموعات الباب أمام تدريب نماذج رؤية حاسوبية عالية السعة كانت مستحيلة التدريب مع الدفعات الصغيرة. أصبحت التسوية الافتراضية في Mask R-CNN وDetectron2 لمهام الكشف والتجزئة. تبنّتها بنية ConvNeXt عام 2022 كجزء من تصميمها العصري الذي ينافس أداء محوِّلات الرؤية. أثبتت هذه الورقة أن اختيار الأبعاد التي نُسوّي عبرها هو محور تصميمي جوهري، مما فتح المجال لاستراتيجيات تسوية مخصّصة لكل مهمة.
تخيّل مدرسةً يُقيّم فيها المدير أداء المعلمين بحساب متوسط درجات طلابهم. لو كان في الصف 30 طالباً، المتوسط يعكس الصورة الحقيقية. لكن بعد تقليص الميزانية، بعض الصفوف صار فيها طالبان فقط — يعني يوم اختبار سيّئ واحد يكفي لتشويه النتيجة بالكامل.
تشبه هذا المدير: تأخذ متوسط الإحصائيات عبر كل عيّنات الدفعة. مع دفعات كبيرة تعمل ممتاز، لكن مع دفعات صغيرة يصير المتوسط ضوضاء لا قيمة لها.
تقلب الفكرة: بدل ما تحسب المتوسط عبر الطلاب (الدفعة)، تُجمّع المواد () — الرياضيات مع الفيزياء، والتاريخ مع الجغرافيا — وتُسوّي داخل كل مجموعة مواد لكل طالب لوحده. حجم الصف ما عاد يفرق.
المشكلة: تسوية الدفعات تنهار مع الدفعات الصغيرة
تعتمد تسوية الدفعات على حساب المتوسط والتباين للخصائص عبر بُعد الدفعة. حين تكون الدفعة كبيرة — 32 صورة لكل مثلاً — تخرج الإحصائيات مستقرة وقريبة من القيم الحقيقية. المشكلة أن كثيراً من مهام الأساسية لا تسمح أصلاً بدفعات كبيرة:
- (Faster R-CNN وMask R-CNN): الصور عالية الدقة تأكل الذاكرة، فلا تتسع الدفعة لأكثر من صورة أو صورتين لكل GPU.
- تصنيف الفيديو (مع ثلاثية الأبعاد): الخصائص المكانية-الزمانية تستنزف الذاكرة بسرعة وتجبرك على دفعات صغيرة.
- : التنبؤ الكثيف على صور بدقتها الكاملة لا يترك مساحة تُذكر لتكبير الدفعة.
حين ينزل إلى 2، يقفز خطأ تسوية الدفعات على ResNet-50 بنسبة 10.6% مقارنةً بالأداء عند دفعة من 32. الإحصائيات تصبح مشوّشة لدرجة أن الشبكة عملياً تتدرّب على تسوية عشوائية — وهذا بالضبط عكس ما صُمِّمت تسوية الدفعات لتحقيقه.
خريطة أساليب التسوية: ما يتغير هو *أي البكسلات* تحسب متوسطها
كل أساليب تطبّق العملية نفسها — اطرح المتوسط، اقسم على الانحراف المعياري، ثم طبّق مقياساً وإزاحةً مُتعلَّمين. الفرق الوحيد بينها هو: أي مجموعة بكسلات تحسب عبرها المتوسط والتباين؟ تخيّل الخصائص كمكعب بأربعة محاور — الدفعة، القنوات، الارتفاع، والعرض — وكل أسلوب تسوية يُلوّن شريحة مختلفة من هذا المكعب:
- تسوية الدفعات: شريحة لكل قناة، تمتدّ عبر جميع العيّنات في الدفعة — أي المحاور (N, H, W). لذلك تعتمد اعتماداً مباشراً على حجم الدفعة.
- : شريحة لكل عيّنة، تشمل جميع القنوات — المحاور (C, H, W). لا تعتمد على الدفعة، لكنها تُعامل كل القنوات كأنها متساوية الأهمية.
- تسوية النُّسخ: شريحة لكل عيّنة لكل قناة منفردة — المحوران (H, W) فقط. تتجاهل تماماً العلاقات بين القنوات.
- التسوية بالمجموعات: شريحة لكل عيّنة لكل مجموعة قنوات — المحوران (H, W) مع C/G قناة في كل مجموعة. هنا تكمن النقطة المثلى: مستقلة عن الدفعة، لكن القنوات داخل كل مجموعة تُسوَّى معاً فتحافظ على البنية المشتركة بينها.
المعادلة: المحرك نفسه، والوقود مختلف
جميع أساليب التسوية تعتمد على المحرّك نفسه بخطوتين. الخطوة الأولى: اجعل الخصائص بمتوسط يساوي صفراً وتباين يساوي واحداً. الخطوة الثانية: طبّق مُتعلَّماً (مقياس + إزاحة) حتى تستطيع الشبكة التراجع عن التسوية إن لزم الأمر. ما يميّز التسوية بالمجموعات هو طريقتها في تحديد «الجوار» — أي البكسلات التي تُحسب إحصائياتها معاً.
لماذا تجميع القنوات منطقي بيولوجياً وحسابياً
القنوات في ليست مستقلة عن بعضها. التي تكشف أنماطاً متشابهة — مثل حواف أفقية في مواقع مختلفة — تُنتج بطبيعتها استجابات مترابطة. وهذا ليس جديداً: في الرؤية الحاسوبية التقليدية، خصائص مثل وHOG مُصمَّمة أصلاً على أساس مجموعات — كل مجموعة عبارة عن مدرّج تكراري للتدرّجات الموجَّهة داخل خلية مكانية، ويُسوَّى المدرّج كوحدة واحدة.
من الناحية البيولوجية أيضاً، هناك ظاهرة معروفة في علم الأعصاب تُسمّى التسوية القسمية: الخلايا العصبية تُسوّي استجاباتها ضمن مجموعات من الخلايا التي تملك متشابهة. هذا لا يحدث في القشرة البصرية الأولية فحسب، بل في الجهاز البصري بأكمله. التسوية بالمجموعات تنقل هذا المبدأ إلى التعلّم العميق: القنوات التي يُرجَّح أنها ترمّز خصائص مترابطة — حواف بزوايا مختلفة، أو أنسجة بترددات متنوعة — تُسوَّى معاً.
التطبيق: أعد التشكيل، سوِّ، ثم أعد التشكيل
أجمل ما في التسوية بالمجموعات هو بساطة تنفيذها. الفكرة كلها حيلة في إعادة تشكيل المُوتِّر: خذ المُوتِّر بأبعاده الأصلية (N, C, H, W)، أعد تشكيله إلى (N, G, C//G, H, W)، احسب المتوسط والتباين على المحاور (2, 3, 4) — أي القنوات داخل المجموعة والبعدان المكانيان — ثم سوِّ وأعد التشكيل. ثلاثة أسطر شيفرة فقط. لا متوسطات متحركة، ولا فرق بين سلوك التدريب و، ولا حاجة لأي مزامنة بين وحدات المعالجة.
مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.
def group_norm(x, gamma, beta, G=32, eps=1e-5):
"""x: مُوتِّر المدخلات بأبعاد [N, C, H, W]
gamma, beta: مقياس وإزاحة مُتعلَّمان، بأبعاد [1, C, 1, 1]
G: عدد المجموعات (الافتراضي 32)"""
N, C, H, W = x.shape
x = x.reshape(N, G, C // G, H, W) # قسّم القنوات إلى G مجموعة
mean = x.mean(axis=(2, 3, 4), keepdims=True) # المتوسط داخل كل مجموعة
var = x.var(axis=(2, 3, 4), keepdims=True) # التباين داخل كل مجموعة
x = (x - mean) / np.sqrt(var + eps) # التوحيد المعياري
x = x.reshape(N, C, H, W) # أعد الشكل الأصلي
return x * gamma + beta # التحويل الأفيني المُتعلَّمالنتائج: مستقرة حيث تنهار تسوية الدفعات
قيّمت الورقة التسوية بالمجموعات على ثلاث مهام رئيسية — تصنيف ImageNet، وكشف/ الكائنات في COCO، وتصنيف الفيديو في Kinetics — مع مقارنة منهجية أمام تسوية الدفعات وتسوية الطبقات وتسوية النُّسخ.
على ImageNet مع ResNet-50 بدفعة من 32، الفرق بين التسوية بالمجموعات وتسوية الدفعات لا يتجاوز 0.5% (24.1% مقابل 23.6%). تسوية الطبقات تتأخر بـ 1.7% وتسوية النُّسخ بـ 4.8%. يعني التسوية بالمجموعات هي أفضل خيار بين الأساليب التي لا تعتمد على الدفعة.
الفارق الحقيقي يظهر مع الدفعات الصغيرة: عند حجم دفعة يساوي 2، ينفجر خطأ تسوية الدفعات من 23.6% إلى 34.7% — قفزة بـ 11.1%. التسوية بالمجموعات عند الحجم نفسه تحقق 24.1%، تقريباً نفس أدائها عند دفعة 32. منحنى الخطأ شبه مسطّح عبر كل أحجام الدفعات من 2 إلى 32.
على COCO مع Mask R-CNN (بعمود فقري ResNet-50 وصورة واحدة لكل GPU)، تتفوق التسوية بالمجموعات على خط الأساس الذي يُجمّد طبقات تسوية الدفعات، سواءً في دقة أو دقة القناع. والأمر نفسه على Kinetics لتصنيف الفيديو مع 3D ResNet-50 — التسوية بالمجموعات تتفوق حين تكون الدفعات صغيرة.
الحساسية لعدد المجموعات G
السؤال العملي: كم مجموعة تحتاج؟ الورقة جرّبت قيم G = 1, 2, 4, 8, 16, 32, 64 على ResNet-50 في ImageNet. النتيجة مُطمئنة جداً: كل القيم من G=8 إلى G=64 تعطي أداءً متقارباً ضمن هامش 0.5%، مع تفوّق طفيف لـ G=32. الطرفان يؤكدان التوقعات: G=1 (أي تسوية الطبقات) أسوأ بـ 1.2%، وG=C (أي تسوية النُّسخ) أسوأ بـ 4.7%.
هذا الثبات نعمة عملية — اختر G=32 واطمئنّ. القيمة الافتراضية أثبتت نجاحها عبر بنيات مختلفة (ResNet-50 وResNet-101) ومهام متعددة (تصنيف، كشف، تجزئة، فيديو) دون حاجة لإعادة ضبط هذا .
نقل التعلُّم: الميزة الخفية للتسوية بالمجموعات
هناك مشكلة خفيّة في تسوية الدفعات تظهر عند . خلال التدريب المسبق على ImageNet، تُراكم تسوية الدفعات إحصائيات متحركة (متوسط وتباين المجتمع) محسوبة من بيانات التدريب. حين تنتقل لاحقاً إلى الضبط الدقيق على مهمة مختلفة، تلك الإحصائيات المخزّنة قد لا تُطابق البيانات الجديدة. والممارسون يقعون في معضلة: إما تجميد طبقات التسوية فيخسرون القدرة على التكيّف، أو إعادة تقدير الإحصائيات فتزداد التعقيدات.
التسوية بالمجموعات لا تحتفظ بأي إحصائيات متحركة — كل شيء يُحسب من المدخل الحالي مباشرةً. لذلك الانتقال بين المهام يحصل بسلاسة: نفس العملية الحسابية تعمل أثناء التدريب المسبق والضبط الدقيق، بلا أي تعارض في التوزيعات. والنتائج العملية تؤكد ذلك: التسوية بالمجموعات حقّقت دقة متوسطة أعلى من خطوط الأساس التي تُجمّد تسوية الدفعات على COCO، لأنها تستطيع تكييف تسويتها تلقائياً مع توزيع خصائص المهمة الجديدة.
الإرث: من ECCV 2018 إلى ConvNeXt وما بعدها
التأثير الأول والمباشر لـالتسوية بالمجموعات كان في مهام كشف الكائنات والتجزئة — حيث أصبح Mask R-CNN مع التسوية بالمجموعات هو خط الأساس المعتمد في Detectron2. لكن الدرس الأعمق هو درس معماري: الأبعاد التي تُسوّي عبرها ليست قاعدة ثابتة، بل خيار تصميمي يعتمد على المهمة.
حين صمّم Liu وزملاؤه ConvNeXt عام 2022 — وهي شبكة التفافية صرفة تُنافس دقة — اختاروا عمداً التسوية بالمجموعات بدلاً من تسوية الدفعات كإحدى خطوات التحديث. السبب منطقي: التسوية بالمجموعات تحسب لكل عيّنة على حدة كما تفعل تسوية الطبقات في المحوِّلات، وفي الوقت نفسه تحافظ على بنية تجميع القنوات التي تستفيد منها الالتفافات.
2015
تسوية الدفعات
يقدّم Ioffe وSzegedy تسوية الدفعات التي مكّنت من تدريب شبكات عميقة جداً. انتشرت في كل مكان لكنها تتطلب دفعات كبيرة.
2016
تسوية الطبقات
يُسوّي Ba وزملاؤه عبر جميع القنوات لكل عيّنة. مستقلة عن الدفعة وتعمل جيداً مع الشبكات التكرارية والمحوِّلات لكنها أضعف في مهام الرؤية.
2018
التسوية بالمجموعات
يجد Wu وHe النقطة المثلى: جمّع القنوات معاً وسوِّ لكل عيّنة لكل مجموعة. مستقلة عن الدفعة ومستقرة من حجم 2 إلى 32 ونقل تعلُّم طبيعي.
2022
ConvNeXt تتبنّى التسوية بالمجموعات
شبكة التفافية صرفة أُعيد تصميمها بمبادئ حديثة. استبدال تسوية الدفعات بالتسوية بالمجموعات أحد التغييرات الجوهرية التي مكّنت ConvNeXt من منافسة محوِّلات الرؤية.
المرجعWu, He. Group Normalization. ECCV, 2018.
مصطلحات هذه الورقة
- تسوية الدفعات الحسابيةBatch Normalization
- التسوية الطبقيةLayer Normalization
- المعايرة القياسية للبياناتNormalization
- القناة البنيويةChannel
- خريطة السماتFeature Map
- حجم الدفعة الحسابيةBatch Size
- التباينVariance
- التحويل التآلفيAffine Transform
- الانزياح الداخلي للتوزيعاتInternal Covariate Shift
- التجزئة الفوريةInstance Segmentation
- رصد وتحديد الكائناتObject Detection
- الوصلة التجاوزيةResidual Connection