الرؤية الحاسوبية2019متوسط13 دقيقة قراءة
EfficientNet: إعادة التفكير في توسيع نماذج الشبكات الالتفافية
EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
Tan, M. · Le, Q.V. — ICML
المشكلة
حين نبني شبكة التفافية، نبدأ عادةً بميزانية حوسبة محدّدة. وعندما تتوفّر موارد أكثر، نريد تكبير الشبكة للحصول على أداء أعلى. المشكلة أنّ الطريقة السائدة كانت تكبير بُعد واحد فقط: إمّا زيادة العمق بإضافة طبقات، أو زيادة العرض بإضافة قنوات، أو رفع دقة الصور المُدخَلة. لكن كل واحد من هذه الأساليب يصل بسرعة إلى نقطة تتناقص عندها العوائد. الشبكات العميقة جداً تعاني من تلاشي التدرّجات. والشبكات العريضة تتوقّف عن التحسّن بعد حدّ معيّن. ورفع الدقة وحده لا يكفي لالتقاط أنماط أغنى. باختصار، لم يكن هناك أسلوب منهجي يوسّع الأبعاد الثلاثة معاً بتوازن مدروس.
الإسهام
تقترح الورقة طريقة ، وفكرتها أنّنا بدلاً من تكبير الشبكة في بُعد واحد، نُوسّع العمق والعرض معاً عبر مُعامل واحد φ. الملاحظة الأساسية هي أنّ هذه الأبعاد الثلاثة مترابطة: الصور عالية الدقة تحتاج شبكة أعمق حتى تلتقط الأنماط الدقيقة، وتحتاج قنوات أوسع لتحتفظ بسمات أكثر لكل بكسل. استعان المؤلّفان بالبحث الآلي في بنية الشبكات العصبية لتصميم شبكة أساسية (EfficientNet-B0 القريبة من MnasNet)، ثم طبّقا عليها التوسيع المُركَّب فأنتجا عائلة نماذج من B0 حتى B7. حقّق EfficientNet-B7 دقة 84.3% على — وهي أفضل نتيجة آنذاك — رغم أنّه أصغر 8.4 مرات وأسرع 6.1 مرات من أفضل النماذج المنافسة.
الأثر
أثبت EfficientNet أنّ التوسيع المدروس يتفوّق بوضوح على مجرّد تضخيم النموذج. بعد هذه الورقة أصبح مبدأ التوسيع المُركَّب مرجعاً أساسياً في تصميم أي بنية جديدة تسعى . واعتُمدت عائلة EfficientNet بوصفها العمود الفقري المفضّل لنقل التعلّم في تطبيقات الرؤية الحاسوبية، وحلّت محل ResNet في كثير من الأنظمة الإنتاجية. كذلك أبرزت الورقة أنّ البحث الآلي في بنية الشبكات أداة عملية فعلية وليس مجرّد تجربة أكاديمية.
تخيّل أنّك تصنع كعكة وتريد تكبيرها. أمامك ثلاثة خيارات: أن تجعلها أطول بإضافة طبقات، أو أعرض باستخدام قالب أكبر، أو أن تستخدم مكوّنات أنعم للحصول على قوام أغنى. في العادة، يُحسّن الخبّاز جانباً واحداً فقط — فتكون النتيجة غير متوازنة: كعكة طويلة ورفيعة تكاد تسقط، أو واسعة ومسطّحة بلا عمق.
الوصفة التي اكتشفتها هذه الورقة هي: وسّع الارتفاع والعرض وجودة المكوّنات معاً بنسبة ثابتة. النتيجة كعكة متناسقة — أكبر وأفضل — وتستهلك عجيناً أقل من أيّ أسلوب يُكبّر بُعداً واحداً فقط.
المشكلة: توسيع بُعد واحد يصطدم بحائط
قبل EfficientNet، كان تحسين يعني غالباً تكبيرها في اتجاه واحد فقط. ResNet مثلاً وسّعت العمق — من 18 إلى 152 طبقة. وWideResNet وسّعت العرض بمضاعفة عدد أو مضاعفتها أربع مرات. وأساليب أخرى رفعت دقة صورة المدخل — من 224×224 إلى 480×480 أو أكثر.
كل أسلوب من هذه الأساليب يُعطي نتائج… إلى حدّ معيّن. الشبكات الأعمق تستخلص سمات أكثر تجريداً، لكنها في النهاية تعاني من وصعوبة حتى مع وجود . والشبكات الأوسع تلتقط سمات أكثر لكل طبقة، لكنّ مكاسب تتناقص بسرعة — مضاعفة العرض لا تُضاعف الأداء. أمّا رفع دقة الصورة فيُعطي الشبكة بكسلات أكثر، لكن بدون طبقات أعمق وأوسع لمعالجتها تذهب التفاصيل الإضافية هدراً.
الملاحظة الجوهرية هنا: كل بُعد يُعطي عوائد متناقصة حين يُوسَّع وحده، لكن الأبعاد ليست مستقلة عن بعضها. الصورة عالية الدقة تحتوي أنماطاً أدقّ، فتحتاج شبكة أعمق لالتقاطها. والطبقات الإضافية التي تُعالج أنماطاً أكثر تحتاج قنوات أكثر لتخزين ما تكتشفه. الأبعاد الثلاثة تُريد أن تنمو معاً.
التوسيع المُركَّب: مِقبض واحد يتحكّم بثلاثة أبعاد
الإسهام المحوري في هذه الورقة هو طريقة التوسيع المُركَّب. الفكرة بسيطة: بدلاً من أن نُكبّر العمق أو العرض أو الدقة كلّاً على حدة، نُوسّع الأبعاد الثلاثة معاً عبر مُعامل واحد .
تخيّل أنّ مِقبض يتحكّم بالميزانية الحسابية. حين ترفعه فأنت تقول «لديّ موارد حوسبة أكثر وأريد استثمارها.» الطريقة تأخذ هذه الميزانية وتوزّعها على الأبعاد الثلاثة بنسبة ثابتة تُحدَّد مرة واحدة فقط عبر صغير على النموذج الأساسي.
لماذا نسبة ثابتة؟ لأنّ المؤلّفَيْن وجدا تجريبياً أنّ التوازن الأمثل بين العمق والعرض والدقة يبقى شبه ثابت بغضّ النظر عن حجم النموذج. نموذج يحتاج ضعف عدد ينبغي أن يكون أعمق قليلاً وأوسع قليلاً وبدقة أعلى قليلاً — بالنِّسَب ذاتها. هذا في جوهره : الوصفة التي تصنع نموذجاً صغيراً جيداً هي نفسها التي تصنع نموذجاً كبيراً جيداً، لكن مضروبة بمُعامل.
قبل الدخول في الصيغة الرياضية، لنفهم أولاً دور كل متغيّر. الشبكة لها عمق أساسي (عدد الطبقات)، وعرض أساسي (عدد القنوات)، ودقة مدخل أساسية . المُعامل يتحكّم بمقدار التوسيع الكلّي، بينما الثوابت و و تُحدّد كيف تُوزَّع الميزانية — أي كم منها يذهب للعمق وكم للعرض وكم للدقة.
القيد يضمن أنّ كل زيادة بمقدار 1 في تُضاعف العمليات الحسابية تقريباً. لماذا التربيع هنا؟ لأنّ العمليات تتناسب خطياً مع العمق لكنها تتناسب تربيعياً مع العرض والدقة. مضاعفة القنوات تُربّع الحساب في كل ، ومضاعفة الدقة تُربّع عدد البكسلات التي يجب على كل طبقة معالجتها.
القيد يستحقّ أن نتوقّف عنده. إجمالي العمليات الحسابية في الشبكة الالتفافية يتناسب تقريباً مع . لو عوّضنا بمعادلات التوسيع نحصل على: . وبوضع تُصبح العمليات . بمعنى آخر، هو ببساطة اللوغاريتم الثنائي لمُضاعِف الحوسبة.
الأساس: شبكة EfficientNet-B0 واللبنات MBConv
التوسيع المُركَّب لا ينفع إلا إذا كانت الشبكة الأساسية جيّدة من البداية. بنية ضعيفة مهما وسّعتها بذكاء ستبقى متوسّطة الأداء. لذلك لجأ المؤلّفان إلى — نفس أسلوب البحث متعدّد الأهداف المُستخدم في MnasNet — للعثور على بنية أساسية كفوءة مُحسَّنة من حيث الدقة وعدد العمليات الحسابية معاً.
والنتيجة هي EfficientNet-B0: شبكة بـ 5.3 مليون معامل تحقّق 77.1% على ImageNet بـ 0.39 مليار عملية فقط. لبناتها الأساسية هي كتل MBConv — أي كتل التي ظهرت أولاً في MobileNetV2. يمكنك تخيُّل كل كتلة MBConv كمصنع صغير يعمل على ثلاث مراحل.
المرحلة 1 — التوسيع: يُوسّع عدد القنوات بمعامل 6 (في حالة MBConv6) أو يُبقيها كما هي (MBConv1). الفكرة أشبه بتوسيع طريق سريع ليسمح بمرور معلومات أكثر بالتوازي.
المرحلة 2 — المعالجة: يُطبّق مرشّحاً واحداً لكل قناة (بنواة 3×3 أو 5×5)، يليه ثم . هذه هي المرحلة التي يحدث فيها التعرّف على الأنماط المكانية — بتكلفة منخفضة، لأنّ كل مرشّح يعمل على قناة واحدة فقط بدلاً من جميع القنوات.
المرحلة 3 — وإعادة المعايرة: وحدة تتعلّم أيّ القنوات الأكثر أهمية فتُضخّمها وتُخمد الباقي. بعدها يأتي التفاف 1×1 يُعيد عدد القنوات إلى حجم أصغر. وإذا تطابقت أبعاد المدخل والمخرج، تُضاف تنقل المدخل مباشرة إلى المخرج.
انتباه القنوات: دع الشبكة تُركّز
ليست كل القنوات في بالأهمية نفسها. بعضها يلتقط الحوافّ، وبعضها القوامات، وبعضها الخلفيات. وحدة الضغط والإثارة تعمل كلجنة تحكيم: تُقيّم أهمية كل قناة، فتُضخّم المفيدة وتُخمد المُشوَّشة.
الضغط: تُطبَّق عملية على كل قناة فتضغط خريطتها المكانية (بأبعاد H×W) إلى رقم واحد — ملخّص يجيب عن السؤال: «ما مدى نشاط هذه القناة إجمالاً؟» والنتيجة متجه بطول ، أي رقم واحد لكل قناة.
: طبقتان صغيرتان كاملتا الربط (بنسبة اختزال 0.25) تُعالجان هذا المتجه وتُخرجان وزناً بين 0 و1 لكل قناة عبر دالة السيني. تُستخدم هذه الأوزان لإعادة ضبط خريطة السمات الأصلية قناةً بقناة.
عائلة EfficientNet: من B0 إلى B7
بعد أن صار لدينا الشبكة الأساسية B0 ومعادلة التوسيع المُركَّب، أصبح توليد بقية العائلة عملية آلية. نُثبّت و و (التي اكتشفناها بـالبحث الشبكي عند على B0)، ثم نرفع للحصول على نماذج أكبر.
يبدأ EfficientNet-B0 بدقة مدخل 224×224 وبـ 5.3 مليون معامل. وعند (أي EfficientNet-B7) تأخذ الشبكة صوراً بدقة 600×600 ويصل عدد معاملاتها إلى 66 مليوناً، لتحقّق 84.3% دقة top-1 على ImageNet. للمقارنة: GPipe التي كانت الأفضل سابقاً احتاجت 557 مليون معامل — أي 8.4 أضعاف — وكانت أبطأ 6.1 مرات عند .
والنماذج تنتقل جيداً أيضاً إلى مهام أخرى. على CIFAR-100 وFlowers وStanford Cars وغيرها، حقّقت نماذج EfficientNet أفضل النتائج بعدد معاملات أقل بعشر مرات من البنيات المنافسة — وهذا يُؤكّد قوّة في هذه العائلة.
لماذا ينجح التوسيع المُركَّب: أثر التفاعل بين الأبعاد
تقدّم الورقة أدلّة تجريبية تُفسّر لماذا يتفوّق التوسيع المُركَّب على التوسيع في بُعد واحد. أجرى المؤلّفان تجارب وسّعا فيها الشبكة الأساسية على كل بُعد مستقلاً ثم قارنا النتائج.
توسيع العمق وحده (أي إضافة طبقات) يُحسّن قدرة الشبكة على التقاط سمات معقّدة، لكنّ مكاسب الدقة تتشبّع. الشبكات البالغة العمق تعاني من صعوبة في الأمثَلة — إشارة التدريب تضعف كلما عبرت طبقات أكثر، وهذا جوهر مشكلة تلاشي التدرّجات.
توسيع العرض وحده (أي زيادة القنوات) يُمكّن كل طبقة من التقاط سمات أدقّ، لكنّ الشبكة العريضة والسطحية تجد صعوبة في تعلّم التجريدات العُليا. القنوات الإضافية تحمل معلومات أكثر لكنها تفتقر إلى العمق الكافي لدمجها.
توسيع الدقة وحدها (أي صور أكبر) يمنح الشبكة تفاصيل أكثر لفحصها، لكن بدون عمق وعرض إضافيين لا تستطيع الشبكة استثمار تلك المعلومات. الأمر يُشبه التقريب بكاميرا رديئة العدسة — مساحة أكبر لكن الضبابية ذاتها.
أمّا حين نُوسّع الأبعاد الثلاثة معاً فنتجنّب كل هذه . الطبقات الأعمق تُعالج الأنماط الدقيقة التي تكشفها الصور عالية الدقة، والقنوات الأوسع تُخزّن السمات الأغنى التي تستخلصها تلك الطبقات. كل بُعد يُضخّم أثر البُعدين الآخرين.
الشيفرة: بناء EfficientNet-B0 عملياً
مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.
# التوسيع المُركَّب: بعد اكتشاف alpha وbeta وgamma لنموذج B0 # النماذج الأكبر تزيد phi فقط # alpha * beta**2 * gamma**2 ≈ 2 => 1.2 * 1.1**2 * 1.15**2 ≈ 2.0
import math
alpha, beta, gamma = 1.2, 1.1, 1.15
# التحقق من القيد print(f"alpha * beta^2 * gamma^2 = {alpha * beta**2 * gamma**2:.3f}") # ≈ 2.0
# توليد العائلة for phi in range(8): # B0 عند phi=0 إلى B7 عند phi=7
d = alpha ** phi # مُضاعِف العمق
w = beta ** phi # مُضاعِف العرض
r = int(gamma ** phi * 224) # دقة المدخل (أساس 224)
flops_mult = 2 ** phi # مُضاعِف العمليات التقريبي
print(f"B{phi}: العمق×{d:.2f} العرض×{w:.2f} "
f"الدقة={r} العمليات≈{flops_mult}×")النتائج: الهيمنة على مقايضة الدقة والكفاءة
حقّق EfficientNet-B7 دقة 84.3% top-1 على ImageNet، مُعادلاً GPipe — لكن بعدد معاملات أقل 8.4 مرات (66 مليوناً مقابل 557 مليوناً) واستدلال أسرع 6.1 مرات. حتى EfficientNet-B0 وحده حقّق 77.1% بـ 5.3 مليون معامل فقط، وهو ما يُعادل دقة ResNet-50 (76.0%) بمعاملات وعمليات حسابية أقل.
وفي اختبارات نقل التعلّم هيمنت عائلة EfficientNet. على CIFAR-100 حقّق B7 دقة 91.7%، وعلى Flowers بلغ 98.8%، وعلى Stanford Cars نتائج مماثلة — كل ذلك بعدد معاملات أقل بمرتبة كاملة من البدائل كـ SENet وNASNet-A.
الأهمّ من ذلك أنّ طريقة التوسيع المُركَّب أثبتت عموميّتها: حين طُبّقت على MobileNetV1 وMobileNetV2 (وليس فقط على الشبكة المُصمَّمة بـالبحث الآلي)، حسّنت دقتهما بنسبة 1.4–2.0% مقارنة بالتوسيع في بُعد واحد. وهذا يُؤكّد أنّ المبدأ يعمل عبر بنيات مختلفة وليس حكراً على شبكة بعينها.
القيود والرؤى اللاحقة
طريقة التوسيع المُركَّب تفترض أنّ النسبة بين الأبعاد ثابتة عند جميع الأحجام. لكنّ أعمالاً لاحقة (EfficientNetV2 عام 2021) أظهرت أنّ هذا الافتراض لا يصمد عند الأحجام الكبيرة جداً — فالنماذج الأكبر قد تستفيد من عمق نسبي أقل وعرض أكثر ممّا تقترحه المعادلة الأصلية. النسبة الثابتة إذاً تبسيط لمشهد أعقد.
كذلك فإنّ تدريب النماذج الكبيرة من هذه العائلة بطيء بسبب الدقة العالية للمدخلات. EfficientNet-B7 يتدرّب على صور 600×600، وهو ما يستهلك ذاكرة GPU ووقتاً كبيرين. عالج EfficientNetV2 هذه المشكلة بتقنية تغيير الدقة التدريجي — أي البدء بصور أصغر ورفع الدقة تدريجياً أثناء التدريب.
أخيراً، الاعتماد على البحث الآلي في بنية الشبكات يعني أنّ البنية الأساسية صعبة الفهم الحدسي وصعبة إعادة الإنتاج — هي في النهاية تصميم صندوق أسود. وهذا يختلف عن بنيات مثل ResNet أو VGG التي صُمّمت يدوياً ومبادئها واضحة وشفّافة.
الإرث: من التوسيع المُركَّب إلى الشبكات الكفوءة الحديثة
2017
MobileNetV1 والالتفاف العميق القابل للفصل
قدّم فكرة الالتفاف العميق القابل للفصل بهدف تشغيل النماذج على الأجهزة المحمولة. خفّض الحوسبة لكل طبقة بشكل كبير، لكنّ الدقة بقيت محدودة عند الأحجام الأكبر.
2018
MobileNetV2 وكتلة الاختناق المعكوس (MBConv)
قدّم كتلة الاختناق المعكوس: وسّع القنوات أولاً، ثم عالج بالالتفاف العميق، ثم اضغط. هذه الكتلة أصبحت اللبنة الأساسية التي بُني عليها EfficientNet.
2018
SENet — شبكات الضغط والإثارة
فازت بمسابقة ImageNet 2017. أثبتت أنّ تعلّم أيّ القنوات أهمّ (انتباه القنوات) يرفع الدقة بتكلفة إضافية ضئيلة. في EfficientNet أُدمجت وحدة الضغط والإثارة داخل كل كتلة MBConv.
2019
EfficientNet (هذه الورقة)
جمعت بين التوسيع المُركَّب والبحث الآلي في بنية الشبكات وكتل MBConv ووحدات الضغط والإثارة. حقّق EfficientNet-B7 رقماً قياسياً على ImageNet بدقة 84.3% بعدد معاملات أقل 8.4 مرات من GPipe.
2021
EfficientNetV2 — تدريب أسرع وتوسيع متكيّف
أضاف كتل Fused-MBConv وتقنية رفع الدقة التدريجي أثناء التدريب. أظهر أنّ النسب المثلى للتوسيع تتغيّر بتغيُّر حجم النموذج، ممّا نقّح مبدأ التوسيع المُركَّب.
2022
ConvNeXt — إعادة النظر في الشبكات الالتفافية الصرفة
أعاد تصميم ResNet بأساليب تدريب مستعارة من عصر المُحوِّلات. أثبت أنّ الشبكات الالتفافية المصمَّمة بعناية تُنافس محوِّلات الرؤية، مستفيدةً من دروس التوسيع التي أرساها EfficientNet.
أعمق ما قدّمه EfficientNet ليس نموذجاً بعينه — بل الرؤية القائلة بأنّ التوسيع مسألة تصميم وليس مجرّد تكبير. قبل هذه الورقة كانت الاستراتيجية السائدة هي «كبّره أكثر». بعدها أصبح كل فريق يعمل على بنيات جديدة يسأل: كيف ينبغي أن نُوسّع؟ مبدأ التوسيع المُركَّب — أنّ العمق والعرض والدقة مترابطة وينبغي أن تنمو معاً — أصبح من المعارف الأساسية في تصميم الشبكات العصبية.
المرجعTan, Le. EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks. ICML, 2019.
مصطلحات هذه الورقة
- التوسيع المُركَّبCompound Scaling
- البحث التلقائي عن بنية الشبكة الأمثلNeural Architecture Search
- الكفاءةEfficiency
- الالتفاف القابل للفصل بالعمقDepthwise Separable Convolution
- الضغط والإثارةSqueeze-and-Excitation
- كتلة الاختناق المعكوس المتنقّلةMBConv
- كتلة الاختناق المعكوسInverted Residual Block
- SwishSwish
- العمليات الحسابية العائمةFLOPs
- ImageNetImageNet
- نقل التعلمTransfer Learning
- تسوية الدفعات الحسابيةBatch Normalization
- دقة الصورةResolution
- قانون التحجيمScaling Law
- الإسقاط العشوائي للعصبوناتDropout