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

التوجيه الديناميكي بين الكبسولات

Dynamic Routing Between Capsules

Sabour, S. · Frosst, N. · Hinton, G. E. — NeurIPS

المشكلة

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

الإسهام

شبكات الكبسولات: بدل أن يُخرج كل كاشف سمة رقماً واحداً، نجمع عدة عصبونات في وحدة واحدة (كبسولة) تُخرج متجهاً يحمل معلومتين معاً: هل الكيان موجود، وما هيئته. بالاتفاق تعمل تكرارياً لتوصل كل كبسولة سُفلى بالكبسولة العُليا التي يتوافق خرجها أكثر مع التنبؤ — تماماً كقطع أحجية تبحث عن مواضعها الصحيحة. حقّق النظام نتائج متقدمة على MNIST وتفوّقاً واضحاً في فصل الأرقام المتداخلة بشدة.

الأثر

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

تخيّل أن تتعرّف على الوجه بأسلوب قائمة الحضور: ✓ عينان، ✓ أنف، ✓ فم — «إذن هو وجه!» حتى لو كانت العينان أسفل الفم والأنف مقلوباً. كل ما يهمّها ماذا يوجد، لا كيف تترتّب القطع مع بعضها.

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

المشكلة: التجميع الأقصى يُدمّر العلاقات المكانية

الشبكات الالتفافية تكتشف عبر مُتعلَّمة — حواف وأنسجة وأجزاء — وهذا يؤدي عملاً ممتازاً (كما رأينا مع LeNet). لكن هناك ثغرة جوهرية في الطريقة التي تتعامل بها هذه الشبكات مع ترتيب السمات المُكتشَفة:

  • يُضيّع الموقع. حين تكتشف الشبكة «عيناً» و«فماً»، لا يحتفظ التجميع الأقصى إلا بأنهما وُجدا في مكانٍ ما ضمن المنطقة. هل العين فوق الفم أم تحته؟ الشبكة لا تعرف — كل ما يعنيها أن التنشيطين مرتفعان.

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

  • لا فهم لعلاقة الجزء بالكلّ. الشبكة الالتفافية لا تملك آلية تسأل بها: «هل الأجزاء المُكتشَفة تتّفق على مكان الكائن الكامل وهيئته؟» بل تعامل كل سمة كصوت مستقل، لا كقطعة في أحجية هندسية.

افتح في المختبر
حرّك أجزاء الوجه وأعد ترتيبها. الشبكة الالتفافية تقول «وجه!» ما دامت الأجزاء موجودة. شبكة الكبسولات لا تقتنع إلا إذا تحقّق التوافق المكاني.
تستيقظ التجربة عند وصولك…

الفكرة: من عصبونات مُفرَدة إلى كبسولات متجهية

الفكرة الجوهرية بسيطة رغم عمقها: بدل مُفرَدة تُخرج رقماً واحداً، نستخدم مجموعات صغيرة من العصبونات (كبسولات) تُخرج متجهاً كاملاً.

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

الكبسولة تقدّم معلومات أغنى بكثير:

  • طول المتجه (بين 0 و1) يُعبّر عن احتمال وجود الكيان — وهذا يُشبه قيمة التنشيط القديمة.

  • اتجاه المتجه يحمل تفاصيل الهيئة — أين يقع الكيان، ما حجمه، كيف يميل، كيف يتشوّه.

هذا مختلف جذرياً. كبسولة مخصصة لمفهوم «عين» لا تكتفي بأن تنشط حين توجد عين — بل يُرمّز متجهها أيّ عين هذه، في أيّ موضع، بـأيّ زاوية. تخيّل الفرق بين مفتاح إنارة (تشغيل/إيقاف) وبوصلة (اتجاه ومقدار).

افتح في المختبر
قارن بين عصبون مُفرَد (يسار) وكبسولة (يمين). العصبون المُفرَد لا يملك سوى شدّة التنشيط. الكبسولة تحمل معلومات الهيئة في اتجاه متجهها.
تستيقظ التجربة عند وصولك…

دالة السحق: إبقاء المتجهات في النطاق [0, 1]

طول المتجه الخارج من الكبسولة يُعبّر عن احتمال، وبالتالي يجب أن يبقى بين 0 و1. لكننا في الوقت نفسه نريد الحفاظ على اتجاه المتجه لأنه يحمل معلومات الهيئة. تحلّ المعادلة: تضغط المتجهات القصيرة فتقترب من الصفر، وتكبح الطويلة فتقترب من الواحد، بينما يظلّ الاتجاه كما هو.

تخيّلها كصنبور ذكي: الماء القليل يمرّ كما هو، والتدفق العنيف يُكبح قبل الحدّ الأقصى بقليل، لكن اتجاه الجريان لا يتغيّر أبداً.

vj=sj21+sj2sjsj\mathbf{v}_j = \frac{\|\mathbf{s}_j\|^2}{1 + \|\mathbf{s}_j\|^2} \cdot \frac{\mathbf{s}_j}{\|\mathbf{s}_j\|}
دالة السحق||s_j||² / (1 + ||s_j||²) = معامل تحجيم يُحوّل أي طول إلى النطاق [0, 1) · s_j / ||s_j|| = متجه وحدة يحفظ الاتجاه. مدخلات قصيرة → خرج يقترب من الصفر، مدخلات طويلة → خرج يقترب من الواحد. الاتجاه محفوظ دائماً.
افتح في المختبر
غيّر طول متجه الدخل وراقب كيف تُحوّله دالة السحق إلى النطاق [0, 1) مع الحفاظ على الاتجاه. قارن مع سلوك sigmoid على اليمين.
تستيقظ التجربة عند وصولك…

التوجيه الديناميكي: الأجزاء تصوّت للكلّ

هنا تكمن المساهمة الأهم في الورقة. السؤال المحوري: كيف تقرّر كبسولة سُفلى (لنقل «عين») لأيّ كبسولة عُليا تُرسل خرجها — هل إلى «وجه» أم إلى «سيارة»؟

الجواب هو التوجيه بالاتفاق — عملية تكرارية تشبه لجنة خبراء تبحث عن إجماع:

  1. التنبؤ. كل كبسولة سُفلى ii تُنتج متجه تنبؤ لكل كبسولة أب محتملة jj، وذلك بضرب خرجها ui\mathbf{u}_i في مصفوفة تحويل مُتعلَّمة WijW_{ij}: u^ji=Wijui\hat{\mathbf{u}}_{j|i} = W_{ij} \mathbf{u}_i. كأن الكبسولة تقول: «لو كنتُ جزءاً من الكيان jj، فهيئته ينبغي أن تكون هكذا

  2. الترجيح والجمع. كل كبسولة أب تجمع التنبؤات الواردة إليها بعد ترجيحها بـمعاملات اقتران cijc_{ij} (تبدأ متساوية)، ثم تُمرّر المجموع عبر دالة السحق فتحصل على خرجها vj\mathbf{v}_j.

  3. قياس الاتفاق. إذا كان تنبؤ u^ji\hat{\mathbf{u}}_{j|i} قريباً من خرج الأب vj\mathbf{v}_j ( عالٍ)، يرتفع معامل الاقتران cijc_{ij} — أي أن الجزء «يتّفق» مع هذا الكلّ فيُرسل إليه إشارة أقوى.

  4. التكرار لعدة جولات (عادةً 3). الأجزاء المتّفقة مع كلٍّ معيّن تُعزّز بعضها، والأجزاء المختلفة تُوجَّه إلى كبسولة أخرى.

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

cij=exp(bij)kexp(bik)c_{ij} = \frac{\exp(b_{ij})}{\sum_k \exp(b_{ik})}
معاملات الارتباط عبر softmax التوجيهb_ij = قيمة التوجيه الأولية (تبدأ عند 0) + درجات الاتفاق المُتراكمة. دالة softmax تضمن أن مجموع معاملات الاقتران من الكبسولة i يساوي 1 — أي أن الجزء يوزّع صوته بين الكلّيّات المحتملة.
افتح في المختبر
تابع 3 جولات من التوجيه. الكبسولات السُّفلى ترسل تنبؤاتها للأعلى، ومعاملات الاقتران تنحاز تدريجياً نحو الكبسولة الأكثر اتفاقاً.
تستيقظ التجربة عند وصولك…

خوارزمية التوجيه خطوة بخطوة

تعمل الخوارزمية بين كل زوج متجاور من الكبسولات. الخطوات كالتالي:

  • التهيئة: نبدأ بتصفير جميع قيم التوجيه bij=0b_{ij} = 0، فتُرسل كل كبسولة سُفلى وزناً متساوياً لجميع الآباء المحتملين.
  • لعدد rr من الجولات (عادةً 3):
  • حساب معاملات الاقتران: ci=softmax(bi)\mathbf{c}_i = \text{softmax}(\mathbf{b}_i)
  • حساب المدخل المُرجَّح لكل أب: sj=iciju^ji\mathbf{s}_j = \sum_i c_{ij} \hat{\mathbf{u}}_{j|i}
  • تطبيق دالة السحق: vj=squash(sj)\mathbf{v}_j = \text{squash}(\mathbf{s}_j)
  • تحديث قيم التوجيه: bijbij+u^jivjb_{ij} \leftarrow b_{ij} + \hat{\mathbf{u}}_{j|i} \cdot \mathbf{v}_j

الضرب النقطي u^jivj\hat{\mathbf{u}}_{j|i} \cdot \mathbf{v}_j هو مقياس الاتفاق — يُخبرنا كم كان تنبؤ الكبسولة ii للأب jj قريباً مما حسبه jj فعلاً. اتفاق عالٍ يعني اقتراناً أقوى، واتفاق منخفض يعني توجيهاً إلى مكان آخر.

بنية CapsNet

تعرض الورقة بنية مباشرة من ثلاث طبقات لتمييز أرقام MNIST:

الطبقة الأولى — Conv1: تقليدية تضمّ 256 بحجم 9×9 مع تفعيل . مهمّتها تحويل قيم البكسلات إلى كواشف سمات محلية — لا شيء خاص بالكبسولات حتى هذه النقطة.

الطبقة الثانية — الكبسولات الأولية (PrimaryCapsules): طبقة كبسولات التفافية فيها 32 قناة، كل قناة تُنتج كبسولات من 8 أبعاد، بأنوية 9×9 و 2. المحصّلة: 32 × 6 × 6 = 1,152 كبسولة، كلٌّ منها متجه ثماني الأبعاد يُمثّل كياناً بسيطاً كحافّة موجَّهة أو شكل أوّلي. هنا تحلّ دالة السحق محلّ ReLU.

الطبقة الثالثة — كبسولات الأرقام (DigitCaps): 10 كبسولات (واحدة لكل صنف)، كلٌّ منها بـ16 بُعداً. كل كبسولة رقم تستقبل مدخلات من الكبسولات الأولية الـ1,152 جميعها عبر مصفوفات تحويل مُتعلَّمة، والتوجيه الديناميكي يجري بين هاتين الطبقتين.

طول متجه كل كبسولة رقم يُعطي مباشرةً احتمال . بـ8.2 مليون فقط (مقابل 35.4 مليون في شبكة التفافية مُقارنة)، تحقّق CapsNet خطأ اختبار 0.25% على MNIST.

افتح في المختبر
انقر على أي طبقة لترى أبعادها وعدد معاملاتها ودورها في خط المعالجة.
تستيقظ التجربة عند وصولك…

خسارة الهامش: دالة خسارة لكل كبسولة

كل كبسولة في DigitCaps تقرّر بشكل مستقل ما إذا كان صنف رقمي معيّن موجوداً، ولذلك تستخدم الورقة هامش منفصلة لكل كبسولة. هذا الاستقلال ضروري كي تستطيع الشبكة اكتشاف أرقام متعددة في آنٍ واحد (كما في مهمة الأرقام المتداخلة).

الفكرة بسيطة: إذا كان الرقم kk موجوداً (Tk=1T_k = 1)، نريد طول كبسولته vk\|\mathbf{v}_k\| أن يصل إلى m+=0.9m^+ = 0.9 على الأقل. وإذا كان غائباً (Tk=0T_k = 0)، نريد أن ينخفض الطول إلى m=0.1m^- = 0.1 أو أقل. الخسارة تُعاقب أيّ انتهاك لهذين الحدّين.

معامل التخفيف λ=0.5\lambda = 0.5 على حدّ الأصناف الغائبة يحمي من مشكلة عملية: بدونه قد تتعلّم الشبكة في بداية التدريب أن تُقلّص جميع المتجهات إلى الصفر بدل أن تتعلّم تمييزاً حقيقياً.

Lk=Tkmax(0,m+vk)2+λ(1Tk)max(0,vkm)2L_k = T_k \max(0,\, m^+ - \|\mathbf{v}_k\|)^2 + \lambda\,(1 - T_k)\,\max(0,\, \|\mathbf{v}_k\| - m^-)^2
خسارة الهامش لكل كبسولة رقمT_k = 1 إذا كان الرقم k موجوداً · m⁺ = 0.9 (الحد الأعلى المستهدف) · m⁻ = 0.1 (الحد الأدنى المستهدف) · λ = 0.5 (تخفيف وزن الأصناف الغائبة). الخسارة الكلية = مجموع الخسائر على الكبسولات العشر.

إعادة البناء: إثبات أن الكبسولة ترمّز الهيئة

كيف نتأكّد أن متجهات DigitCaps تحمل فعلاً معلومات هيئة حقيقية وليست مجرد إشارة تمييزية؟ الورقة تُضيف لإعادة البناء: ثلاث (512 ← 1024 ← 784) تُعيد بناء صورة الدخل انطلاقاً من متجه الكبسولة للرقم الصحيح.

أثناء التدريب، تُصفَّر جميع المتجهات ما عدا متجه الرقم الصحيح، ثم يحاول فاكّ الترميز إعادة بناء الصورة الأصلية 28×28 من 16 بُعداً فقط. خسارة إعادة البناء (متوسط مربع الخطأ، مُقيَّسة بـ0.0005) تُضاف إلى .

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

افتح في المختبر
حرّك المنزلقات لتغيير أبعاد متجه الكبسولة وراقب كيف تتغيّر صورة الرقم المُعاد بناؤه.
تستيقظ التجربة عند وصولك…

الأرقام المتداخلة: حيث تتألّق الكبسولات حقاً

أبرز نتيجة في الورقة تظهر على مجموعة MultiMNIST: رقمان من صنفين مختلفين مُركَّبان فوق بعضهما في الصورة نفسها، بتداخل يصل إلى نحو 80% بين المربعات المحيطة.

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

فاكّ ترميز إعادة البناء يُثبت نجاح الفكرة: حين تُعيد بناء كل رقم من متجه كبسولته على حدة، تحصل على صورتين نظيفتين منفصلتين — رغم أن الرقمين كانا متداخلين فيزيائياً في المدخل. تحقّق CapsNet خطأ 5.2% على MultiMNIST بـ11.36 مليون معامل فقط، مُضاهيةً نموذج تتابعياً اختُبر على نسخة أسهل بكثير من المهمة.

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

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

التوجيه الديناميكي بين الكبسولات، كاملاًpython

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

import numpy as np

def squash(s):
    """السحق اللاخطي: قصير → قريب من 0، طويل → قريب من 1، الاتجاه محفوظ."""
    sq_norm = np.sum(s ** 2, axis=-1, keepdims=True)
    scale = sq_norm / (1 + sq_norm)
    return scale * s / (np.sqrt(sq_norm) + 1e-8)

def routing(u_hat, r=3):
    """
    u_hat: (عدد_الكبسولات_الدنيا, عدد_الكبسولات_العليا, بُعد_العليا) — متجهات التنبؤ.
    يُرجع: (عدد_الكبسولات_العليا, بُعد_العليا) — خرج الكبسولات العليا.
    """
    n_lower, n_upper, _ = u_hat.shape
    b = np.zeros((n_lower, n_upper))       # لوغاريتمات التوجيه، تبدأ من 0

    for iteration in range(r):
        c = np.exp(b) / np.exp(b).sum(axis=1, keepdims=True)  # معاملات الارتباط (softmax)
        s = np.einsum('ij,ijd->jd', c, u_hat)                 # مجموع مرجَّح للتنبؤات
        v = squash(s)                                          # سحق للحصول على الخرج

        if iteration < r - 1:
            # تحديث لوغاريتمات التوجيه بالاتفاق (ضرب نقطي)
            agreement = np.einsum('ijd,jd->ij', u_hat, v)
            b += agreement

    return v  # (عدد_الكبسولات_العليا, بُعد_العليا)

# مثال: 1152 كبسولة أولية ← 10 كبسولات أرقام
# كل كبسولة أولية تتنبأ بمتجه 16 بُعداً لكل كبسولة رقم
# u_hat[i,j] = W_ij @ u_i  (تحويل مُتعلَّم)
# بعد 3 جولات توجيه، طول متجه كل كبسولة رقم
# يُعطي احتمال وجود ذلك الرقم.

تساوي التغيُّر مقابل ثبات التغيُّر

الفارق الفلسفي الجوهري بين الشبكات الالتفافية والكبسولات يتعلّق بكيفية التعامل مع تغيُّرات زاوية النظر:

الشبكات الالتفافية تسعى إلى : التجميع الأقصى يجعل الخرج ثابتاً بغضّ النظر عن موضع السمة. الرقم «7» ينشّط العصبون نفسه سواء ظهر في الأعلى أو الأسفل. لكن الثمن فقدان معلومة أين يقع — وهي ضرورية لفهم الترتيب المكاني.

الكبسولات تسعى إلى : حين يتغيّر المدخل (دوران، تحجيم، إزاحة)، يتغيّر متجه خرج الكبسولة بشكل مُنتظم ومتوقّع. الكبسولة تتتبّع كيف تغيّرت هيئة الكيان بدل أن تتجاهل التغيير.

هذا يمنح الكبسولات قدرة على التعميم لزوايا نظر لم ترها من قبل. في تجربة لافتة: دُرِّبت CapsNet على أرقام MNIST مُزاحة فقط ثم اختُبرت على أرقام مُحوَّلة أفينياً (affNIST)، فحقّقت دقة 79% مقابل 66% لشبكة التفافية بعدد معاملات مشابه — دون أن ترى أيّ دوران أو قصّ أثناء التدريب.

افتح في المختبر
أدِر الرقم المُدخَل. لاحظ أن تنشيط عصبون الشبكة الالتفافية يبقى ثابتاً (ثبات التغيُّر)، بينما متجه الكبسولة يدور معه بانتظام (تساوي التغيُّر).
تستيقظ التجربة عند وصولك…

لماذا كانت هذه الورقة مهمة

  1. 2011

    المحوِّلات الذاتية الترميزية

    طرح هينتون وكريجيفسكي ووانغ فكرة الكبسولة لأول مرة، واقترحوا مصفوفات تحويل لتعلّم علاقة الجزء بالكلّ، لكن النظام كان يحتاج إشرافاً خارجياً لتعلّم التحويلات.

  2. 2017

    التوجيه الديناميكي بين الكبسولات

    قدّم سابور وفروست وهينتون نظام كبسولات متكاملاً مع آلية توجيه مُتعلَّمة. حقّق نتائج متقدمة على MNIST وأثبت قدرة الكبسولات على فصل الأرقام المتداخلة بكفاءة.

  3. 2018

    كبسولات المصفوفات بتوجيه EM

    استبدل هينتون وسابور وفروست التوجيه الديناميكي بتوجيه قائم على EM (تعظيم التوقع)، واستخدموا مصفوفات هيئة بدل متجهات الهيئة ليحصلوا على تمثيل أثرى.

  4. 2019

    المشفّرات الذاتية للكبسولات المُكدَّسة

    دمج كوسيوريك وسابور وته وهينتون الكبسولات مع المشفِّرات الذاتية لاكتشاف الأجسام وتحليل أجزائها دون إشراف — ممّا ألغى الحاجة إلى بيانات مُعنوَنة.

  5. 2020

    محوِّل الرؤية (ViT)

    ليس شبكة كبسولات، لكنه يعكس كثيراً من أفكارها: فهم العلاقات المكانية بين رُقَع الصورة عبر الانتباه الذاتي الذي يؤدي دوراً يُشبه التوجيه بالاتفاق.

المرجعSabour, Frosst, Hinton. Dynamic Routing Between Capsules. NeurIPS, 2017.

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