الرؤية الحاسوبية2015متوسط10 دقيقة قراءة

الغوص في عالم المُقوِّمات: كيف تجاوزت الشبكات أداء البشر في تصنيف ImageNet

Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification

He, K. · Zhang, X. · Ren, S. · Sun, J. — ICCV

المشكلة

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

الإسهام

تقدّم الورقة إسهامين متكاملين. الأول PReLU: يتحوّل ميل الجانب السالب من قيمة ثابتة إلى معامل يتعلّمه ، فتقرر كل قناة بنفسها إن كانت تمرّر الإشارات السالبة أو تُضعفها أو تحجبها، وكل ذلك بتكلفة حسابية إضافية لا تُذكر. الثاني تهيئة He: بما أن ReLU تُصفِّر نصف الإشارة فإنها تُنصِّف عند كل طبقة، ولتعويض ذلك يجب أن يكون مقياس الأوزان √(2/n) بدلاً من √(1/n) التي تعتمدها Xavier. هذا التعديل وحده يكفي شبكات تتجاوز 30 طبقة من الصفر دون توقف. بدمج الإسهامين معاً، حققت شبكات PReLU نسبة خطأ 4.94% في أعلى 5 تنبؤات على ، وهي المرة الأولى التي يتجاوز فيها نموذج حاسوبي الأداء البشري المُسجَّل (5.1%).

الأثر

تحوّلت تهيئة He إلى الإعداد الافتراضي لأي شبكة تعتمد عائلة ReLU، ولا تزال كذلك حتى اليوم. كانت الشرط الذي لا غنى عنه لظهور ResNet — فبدونها لم يكن ممكناً تدريب 152 طبقة. ومن جهتها أثبتت PReLU أن دوال التنشيط ليست بالضرورة صيغاً جامدة، فمهّدت الطريق لدوال مثل GELU وSwish وسلسلة التنشيطات المتعلَّمة والناعمة التي نراها اليوم. أما تجاوز الأداء البشري على ImageNet فقد غيّر تصوّر المجتمع بأكمله عمّا يمكن أن يحققه التعلّم العميق.

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

تهيئة Xavier صُمِّمت لعالمٍ يتدفق فيه الماء بالتساوي في الاتجاهين. لكن ReLU تسدّ أحد الاتجاهين تماماً — عند كل دلو يُفقد نصف الماء. تهيئة He تعوّض ذلك بمضاعفة سعة كل دلو، فيصل السيل إلى الدلو الأخير بقوّته الكاملة دون أن يتلاشى.

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

المشكلة: تهيئة Xavier تفترض الخطية، لكن ReLU ليست خطية

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

في عام 2010 عالج Glorot وBengio هذه المشكلة بتهيئة Xavier: تُضبط تباين الأوزان على 1/n1/n، حيث nn عدد مدخلات . لكن الاشتقاق بُني على افتراض جوهري: أن دالة التنشيط خطية حول الصفر، بمعنى أنها تمرّر القيم الموجبة والسالبة بالتساوي. وهذا كان صحيحاً فعلاً مع دالتَي tanh و اللتين كانتا السائدتين آنذاك.

المشكلة أن ReLU تكسر هذا الافتراض كلياً: ReLU(x)=max(0,x)\text{ReLU}(x) = \max(0, x) تُصفِّر كل القيم السالبة. عملياً، هذا يعني أنها تُنصِّف التباين عند كل طبقة. وعبر LL طبقة يتقلّص التباين بعامل (1/2)L(1/2)^L. في شبكة من 30 طبقة، يصبح العامل بحدود واحد على مليار. الشبكة قائمة رياضياً، لكنها ميتة عملياً — كل التدرُّجات تُقرَّب إلى صفر في حساب الفاصلة العائمة.

افتح في المختبر
راقب كيف ينهار تباين الإشارة طبقةً تلو الأخرى مع Xavier، بينما يبقى مستقراً مع تهيئة He.
تستيقظ التجربة عند وصولك…

PReLU: دع الشبكة تختار شكل تنشيطها بنفسها

قاعدة ReLU القياسية واضحة: ما هو موجب يمرّ كما هو، وما هو سالب يتحوّل إلى صفر. لكن السؤال: هل صفر هو فعلاً الخيار الأفضل للجانب السالب؟ حاولت حل ذلك بتمرير الإشارات السالبة مع ميل صغير ثابت (0.01)، لكن هذه القيمة مختارة يدوياً دون مبرر نظري.

PReLU تجعل ميل الجانب السالب يتعلّمه النموذج بنفسهaia_i لكل ii:

f(yi)={yiif yi>0aiyiif yi0f(y_i) = \begin{cases} y_i & \text{if } y_i > 0 \\ a_i \, y_i & \text{if } y_i \le 0 \end{cases}
PReLU — وحدة التقويم الخطي ذات المعاملاتحين ai=0a_i = 0 نحصل على ReLU القياسية. وحين aia_i ثابت وصغير نحصل على Leaky ReLU. أما في PReLU فإن aia_i يُتعلَّم تلقائياً مع بقية الشبكة عبر الانتشار العكسي.

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

من الناحية الحسابية، تدرّج تحديث aia_i هو ببساطة مجموع قيم yiy_i في المواضع التي تحقق yi0y_i \le 0، فلا يُضيف تكلفة تُذكر. بل إن النسخة المشتركة التي تستخدم معاملاً واحداً aa لجميع قنوات الطبقة — معامل واحد إضافي فقط لكل طبقة — تُحسِّن الدقة بشكل ملموس.

من أطرف ما كشفته الورقة: الطبقات الأولى تتعلّم قيم aa كبيرة (نحو 0.6)، أي أنها تحتفظ بقدر كبير من الإشارة السالبة وتعمل كمُجمِّعات للمعلومات. أما الطبقات الأعمق فتتعلّم قيم aa صغيرة تقترب من سلوك ReLU القياسي — تصبح أكثر انتقائية وتمييزاً.

افتح في المختبر
حرّك المنزلق لتغيير ميل الجانب السالب a. عند 0 نحصل على ReLU، وعند 1 نحصل على الدالة الخطية (المطابقة).
تستيقظ التجربة عند وصولك…

تهيئة He: احتساب عامل النصف الذي تُحدثه ReLU

الفكرة الجوهرية وراء أي تهيئة بسيطة: نريد أن يبقى تباين الإشارة ثابتاً تقريباً وهي تنتقل من طبقة إلى أخرى، فلا تنفجر ولا تتلاشى.

لننظر إلى طبقة واحدة. الناتج قبل التنشيط هو yl=Wlxl+bly_l = W_l x_l + b_l، حيث xlx_l متّجه من nl=k2cn_l = k^2 c مُدخلاً (kk حجم ، وcc عدد قنوات الدخل). إذا كانت الأوزان مستقلة ومتوسّطها صفر نحصل على:

Var[yl]=nlVar[wl]E[xl2]\text{Var}[y_l] = n_l \, \text{Var}[w_l] \, E[x_l^2]

تهيئة Xavier افترضت أن E[xl2]=Var[xl]E[x_l^2] = \text{Var}[x_l]، وهذا لا يصحّ إلا إذا كان متوسط xlx_l يساوي صفراً. لكن بعد ReLU يصبح xl=max(0,yl1)x_l = \max(0, y_{l-1})، وهذه قيمة لا تكون سالبة أبداً، فمتوسطها بالتأكيد ليس صفراً. وبتحليل دقيق: إذا كان المُدخل متماثلاً حول الصفر قبل ReLU، فإن نصف القيم بالضبط تتحوّل إلى أصفار:

E[xl2]=12Var[yl1]E[x_l^2] = \tfrac{1}{2}\,\text{Var}[y_{l-1}]

وبالتعويض في المعادلة الأصلية:

Var[yl]=12nlVar[wl]Var[yl1]\text{Var}[y_l] = \tfrac{1}{2}\, n_l\, \text{Var}[w_l]\, \text{Var}[y_{l-1}]
انتقال التباين عبر طبقة ReLUالعامل ½ هو البصمة المميزة لـ ReLU: تُنصِّف الإشارة الفعّالة عند كل طبقة. تهيئة Xavier تتجاهل هذا العامل، بينما تهيئة He تعوّض عنه.

لكي يظل التباين ثابتاً من طبقة إلى أخرى، نحتاج إلى:

12nlVar[wl]=1Var[wl]=2nl\tfrac{1}{2}\, n_l\, \text{Var}[w_l] = 1 \quad \Longrightarrow \quad \text{Var}[w_l] = \frac{2}{n_l}

بمعنى أن الأوزان تُسحب من توزيع غاوسي متوسّطه صفر وانحرافه المعياري σ=2/nl\sigma = \sqrt{2 / n_l}. قارن هذا بتهيئة Xavier حيث σ=1/nl\sigma = \sqrt{1 / n_l} — الفرق كلّه عامل 2 في البسط، لكنه هو الذي يصنع الفارق في الشبكات العميقة.

المنطق نفسه ينطبق على : الشرط المقابل هو 12n^lVar[wl]=1\frac{1}{2}\hat{n}_l \text{Var}[w_l] = 1 مع n^l=k2dl\hat{n}_l = k^2 d_l (باستخدام قنوات الخرج بدل قنوات الدخل). يكفي تحقيق أحد الشرطين — فإذا تحقّق أحدهما تحقّق الآخر تقريباً بالتبعية.

افتح في المختبر
قارن بين تقارب شبكة من 30 طبقة بتهيئة He مقابل Xavier. لاحظ كيف تتجمّد Xavier تماماً.
تستيقظ التجربة عند وصولك…

التعميم على تهيئة PReLU

حين يكون التنشيط PReLU بميل ابتدائي aa، لم يعد الجانب السالب يُصفَّر تماماً بل يُضرب في aa. لذلك يتغيّر عامل التباين من 12\frac{1}{2} إلى 12(1+a2)\frac{1}{2}(1 + a^2):

Var[wl]=2(1+a2)nl\text{Var}[w_l] = \frac{2}{(1 + a^2)\, n_l}
تهيئة مراعية لـ PReLUحين a=0a = 0 نعود إلى تهيئة He (أي حالة ReLU القياسية). وحين a=1a = 1 يصبح التنشيط خطياً بالكامل ونعود إلى تهيئة Xavier.

لماذا تفشل Xavier مع شبكات ReLU العميقة

الورقة تُثبت ذلك بمثال عملي صريح. لنأخذ نموذج VGG-B: 10 طبقات التفافية بـمرشّحات 3×3. الانحرافات المعيارية الصحيحة حسب تهيئة He هي 0.059 و0.042 و0.029 و0.021 للطبقات ذات 64 و128 و256 و512 مرشّحاً على الترتيب. في المقابل، استخدم VGG انحرافاً معيارياً ثابتاً 0.01 لجميع الطبقات دون تمييز. التدرّج الفعلي الذي ينتقل من الطبقة العاشرة إلى الثانية يبلغ تقريباً 1/(1.7×104)1/(1.7 \times 10^4) من القيمة المفترضة — أي صفر عملياً.

الورقة درّبت شبكة من 30 طبقة بالتهيئتين معاً للمقارنة. تهيئة He تقاربت بنجاح. أما Xavier فقد تجمّدت كلياً: نسبة الخطأ لم تتحرّك، ورصد التدرُّجات أكّد أنها جميعاً تتلاشى. ليست المسألة صبراً أو ضبطاً — الإشارة ميتة رياضياً.

الفكرة ذاتها في شيفرة برمجية

تهيئة He و PReLU في NumPypython

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

import numpy as np

def he_init(shape, mode='fan_in'):
    """تهيئة He (كايمينغ) لشبكات ReLU.
    shape: (fan_out, fan_in) للطبقة الكاملة، أو (out_ch, in_ch, kH, kW) للالتفاف.
    """
    if len(shape) == 2:
        fan_in = shape[1]
    else:
        fan_in = shape[1] * shape[2] * shape[3]   # in_ch * kH * kW
    std = np.sqrt(2.0 / fan_in)
    return np.random.randn(*shape) * std

def prelu(x, a):
    """تنشيط PReLU: f(x) = max(0,x) + a * min(0,x)"""
    return np.maximum(0, x) + a * np.minimum(0, x)

# --- توضيح انتقال التباين ---
n_layers, n_units = 30, 256

# تهيئة He: التباين يبقى قريباً من 1
signal = np.random.randn(1, n_units)
for _ in range(n_layers):
    W = he_init((n_units, n_units))
    signal = np.maximum(0, signal @ W.T)   # ReLU
print(f"He  — تباين المخرج بعد {n_layers} طبقة: {signal.var():.4f}")

# تهيئة Xavier: التباين ينهار
signal = np.random.randn(1, n_units)
for _ in range(n_layers):
    W = np.random.randn(n_units, n_units) * np.sqrt(1.0 / n_units)
    signal = np.maximum(0, signal @ W.T)
print(f"Xavier — تباين المخرج بعد {n_layers} طبقة: {signal.var():.6f}")

PReLU عملياً: ماذا تكشف الميول المتعلَّمة

درّب الباحثون شبكة من 14 طبقة، ثم فحصوا معاملات aia_i التي تعلّمتها كل طبقة. النتائج كشفت نمطين واضحين:

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

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

هذا التدرّج من الحفظ إلى الانتقاء يشبه الطريقة التي نعالج بها المشاهد البصرية: نجمع كل التفاصيل ثم نركّز على ما يهم.

افتح في المختبر
ميول PReLU المتعلَّمة بحسب عمق الطبقة — الأولى تحفظ المعلومات (a مرتفع) والعميقة تنتقي (a منخفض).
تستيقظ التجربة عند وصولك…

تجاوز الأداء البشري على ImageNet

بدمج تنشيطات PReLU مع تهيئة He، درّب الباحثون سلسلة نماذج متصاعدة العرض والعمق. أفضل نموذج فردي حقّق نسبة خطأ 5.71% في أعلى 5 تنبّؤات — وهذا وحده يتفوّق على كل تجميعات النماذج المتعددة التي سبقته. وحين جُمعت ستة نماذج معاً، انخفضت النسبة إلى 4.94%، متجاوزةً الأداء البشري المُسجَّل (5.1%) على نفس مجموعة البيانات.

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

من الملاحظات الطريفة أن أخطاء البشر تركّزت في التمييز الدقيق (مثل 120 سلالة كلاب) وعدم الإلمام ببعض الفئات، بينما أخطاء الآلة جاءت من مواقف تحتاج فهم السياق أو مشاهد تحتوي كائنات متعدّدة.

افتح في المختبر
أبرز المحطات في نسبة الخطأ (أعلى 5 تنبؤات) على ImageNet — شبكات PReLU تجاوزت خط الأداء البشري.
تستيقظ التجربة عند وصولك…

لماذا لا يزال هذا مهماً

  1. 2010

    تهيئة Xavier

    اشتقّ Glorot وBengio طريقة لضبط مقياس الأوزان بما يناسب sigmoid وtanh، عبر تحليل تدفّق التباين. تعمل جيداً مع التنشيطات المتماثلة، لكنها لا تصلح لـ ReLU.

  2. 2011

    ReLU تكتسب زخماً

    أثبت Glorot وزملاؤه أن ReLU تتدرّب أسرع من sigmoid، ومعها أصبحت الشبكات العميقة ذات التنشيطات المتفرّقة خياراً عملياً قابلاً للتطبيق.

  3. 2015

    تهيئة He + PReLU

    عالج He وزملاؤه خلل التهيئة لشبكات ReLU بإضافة عامل 2، واقترحوا ميول تنشيط قابلة للتعلّم. شبكات PReLU حقّقت 4.94% متجاوزةً الأداء البشري للمرة الأولى.

  4. 2015

    ResNet (نفس المؤلفين)

    بفضل تهيئة He أصبح ممكناً تدريب 152 طبقة مع اتصالات تخطّي. فازت ResNet بمسابقة ILSVRC 2015 بنسبة خطأ 3.57%.

  5. 2017

    GELU وSwish والتنشيطات المتعلَّمة

    فتحت فكرة PReLU بالتنشيطات القابلة للتعلّم الباب أمام بدائل ناعمة كـ GELU وSwish، وهما اليوم من الأساسيات في المحوِّلات والبنى الحديثة.

المرجعHe, Zhang, Ren, Sun. Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification. ICCV, 2015.

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