الشبكة مزدوجة الرأس وشبكة الباقي
من أهم ابتكارات AlphaGo Zero البنيوية هو استخدام الشبكة مزدوجة الرأس (Dual-Head Network) بدلاً من تصميم الشبكتين المنفصلتين في AlphaGo الأصلي. هذا التغيير الذي يبدو بسيطاً أدى إلى تحسين ملحوظ في الأداء وعملية تعلم أكثر أناقة.
هذه المقالة ستحلل بعمق مبادئ تصميم هذه البنية، أساسها الرياضي، ولماذا هي فعالة جداً.
تصميم الشبكة مزدوجة الرأس
البنية الكلية
الشبكة العصبية في AlphaGo Zero يمكن تقسيمها إلى ثلاثة أجزاء:
دعونا نحلل كل جزء بالتفصيل.
العمود المشترك (Shared Backbone)
العمود المشترك هو شبكة باقي عميقة (ResNet)، مسؤولة عن استخراج الميزات من حالة اللوحة.
تفاصيل البنية
| المكون | المواصفات |
|---|---|
| طبقة الإدخال | تلافيف 3×3، 256 قناة |
| كتل الباقي | 40 كتلة (أو 20 في النسخة المخففة) |
| كل كتلة باقي | طبقتا تلافيف 3×3، 256 قناة |
| دالة التنشيط | ReLU |
| التطبيع | Batch Normalization |
التمثيل الرياضي
لنفرض أن الإدخال هو x (الأبعاد 17 × 19 × 19)، إخراج العمود المشترك هو:
f(x) = ResNet_40(Conv_3x3(x))
حيث f(x) (الأبعاد 256 × 19 × 19) هو تمثيل الميزات عالي الأبعاد.
Policy Head (رأس السياسة)
Policy Head مسؤول عن التنبؤ باحتمالية الحركة لكل موقع.
تفاصيل البنية
إخراج العمود المشترك (256 × 19 × 19)
↓
تلافيف 1×1 (قناتان)
↓
Batch Normalization
↓
ReLU
↓
تسطيح (2 × 19 × 19 = 722)
↓
طبقة كاملة الاتصال (362)
↓
Softmax
↓
الإخراج: 362 احتمالية (361 موقع + Pass)
التمثيل الرياضي
π = Softmax(FC(Flatten(ReLU(BN(Conv_1x1(f(x)))))))
الإخراج π هو متجه بـ 362 بُعداً، جميع العناصر غير سالبة ومجموعها 1.
Value Head (رأس القيمة)
Value Head مسؤول عن التنبؤ بنسبة الفوز للوضع الحالي.
تفاصيل البنية
إخراج العمود المشترك (256 × 19 × 19)
↓
تلافيف 1×1 (قناة واحدة)
↓
Batch Normalization
↓
ReLU
↓
تسطيح (1 × 19 × 19 = 361)
↓
طبقة كاملة الاتصال (256)
↓
ReLU
↓
طبقة كاملة الاتصال (1)
↓
Tanh
↓
الإخراج: نسبة الفوز [-1, 1]
التمثيل الرياضي
v = Tanh(FC_1(ReLU(FC_2(Flatten(ReLU(BN(Conv_1x1(f(x)))))))))
الإخراج v في النطاق [-1, 1]:
- v = 1: اللاعب الحالي سيفوز حتماً
- v = -1: اللاعب الحالي سيخسر حتماً
- v = 0: القوى متعادلة
لماذا مشاركة العمود؟
الفهم الحدسي
"أين يجب أن ألعب الحركة التالية" (Policy) و"من سيفوز" (Value) هما سؤالان يحتاجان فهم نفس أنماط اللوحة:
- شكل الأحجار: أي الأشكال جيدة، وأيها سيئة
- النفوذ: أي جانب أكبر، وأين يوجد مساحة
- الحياة والموت: أي الأحجار حية، وأيها في كو
- القتال: أين يوجد هجوم وقتل، وما هي نتيجة القتال المحلي
إذا استخدمنا شبكتين مستقلتين، هذه الميزات يجب تعلمها مرتين. العمود المشترك يجعل هذه الميزات الأساسية تُتعلم مرة واحدة فقط، ويمكن للمهمتين استخدامها.
منظور التعلم متعدد المهام
من منظور التعلم الآلي، هذا نوع من التعلم متعدد المهام (Multi-task Learning):
L = L_policy + L_value
المهمتان تتشاركان التمثيل الأساسي، وهذا يجلب عدة فوائد:
1. تأثير التنظيم
مشاركة المعاملات تعادل تنظيماً ضمنياً. إذا كانت ميزة مفيدة فقط لـ Policy وليس Value (أو العكس)، يصعب تضخيمها بشكل مفرط.
عدد المعاملات الفعلي أقل من عدد معاملات شبكتين مستقلتين.
2. كفاءة البيانات
كل مباراة تولّد في نفس الوقت تسميات Policy (احتمالية بحث MCTS) وتسميات Value (الفوز/الخسارة النهائي). العمود المشترك يجعل كلا التسميتين تُستخدمان لتدريب الميزات المشتركة، مما يحسن كفاءة استخدام البيانات.
3. إشارات التدرج الغنية
تدرجات المهمتين تتدفق إلى العمود المشترك:
∂L/∂θ_shared = ∂L_policy/∂θ_shared + ∂L_value/∂θ_shared
هذا يوفر إشارات إشراف أغنى، ويجعل الميزات المشتركة أكثر متانة.
الأدلة التجريبية
تجارب الاستئصال من DeepMind أظهرت أن الشبكة مزدوجة الرأس تتفوق بشكل ملحوظ على الشبكتين المنفصلتين:
| التكوين | تقييم ELO | الفارق النسبي |
|---|---|---|
| شبكتا Policy + Value منفصلتان | الأساس | - |
| شبكة مزدوجة الرأس (عمود مشترك) | +300 ELO | ~65% فارق في نسبة الفوز |
فارق 300 ELO يعني أن الشبكة مزدوجة الرأس لها نسبة فوز حوالي 65% على الشبكتين المنفصلتين. هذا تحسين ملحوظ.
مبادئ شبكة الباقي
معضلة الشبكات العميقة
قبل اختراع ResNet، واجهت الشبكات العصبية العميقة مفارقة:
نظرياً، الشبكات الأعمق يجب أن تكون على الأقل بمستوى الشبكات الضحلة (في أسوأ الحالات، الطبقات الإضافية يمكن أن تتعلم تحويل الهوية). لكن عملياً، الشبكات الأعمق غالباً ما يكون أداؤها أسوأ.
هذه هي مشكلة التدهور (Degradation Problem):
- خطأ التدريب يزداد مع العمق (ليس فرط التكيف، بل صعوبة التحسين)
- التدرج يتلاشى تدريجياً أثناء الانتشار العكسي (Vanishing Gradient)
- معاملات الطبقات العميقة يكاد يكون من المستحيل تحديثها بفعالية
تصميم كتلة الباقي
في 2015، اقترح هي كايمينغ وآخرون حلاً بسيطاً وأنيقاً: اتصال الباقي (Skip Connection).
التمثيل الرياضي
الشبكة التقليدية: تتعلم التحويل المستهدف H(x)
y = H(x)
شبكة الباقي: تتعلم تحويل الباقي F(x) = H(x) - x
y = F(x) + x
لماذا اتصال الباقي فعال؟
1. طريق التدرج السريع
اعتبر تدرج الانتشار العكسي:
∂L/∂x = ∂L/∂y × ∂y/∂x = ∂L/∂y × (1 + ∂F(x)/∂x)
المفتاح هو ذلك +1. حتى لو كان ∂F(x)/∂x صغيراً جداً أو صفراً، التدرج لا يزال يمكنه المرور مباشرة عبر +1.
هذا مثل بناء "طريق تدرج سريع"، يسمح للتدرج بالانتقال دون عوائق من طبقة الإخراج إلى طبقة الإدخال.
2. تحويل الهوية أسهل للتعلم
إذا كان الحل الأمثل قريباً من تحويل الهوية (H(x) ≈ x)، فإن:
- الشبكة التقليدية: تحتاج تعلم H(x) = x، قد يكون صعباً
- شبكة الباقي: تحتاج فقط تعلم F(x) ≈ 0، أسهل نسبياً
تهيئة الأوزان بصفر أو قريباً من الصفر، كتلة الباقي تميل طبيعياً نحو تحويل الهوية.
3. تأثير التجميع
ResNet العميقة يمكن رؤيتها كـتجميع ضمني لكثير من الشبكات الضحلة. إذا كان هناك n كتلة باقي، المعلومات يمكن أن تتدفق عبر 2^n مسار مختلف.
هذا التأثير التجميعي يزيد متانة النموذج.
اختراق ResNet في ImageNet
ResNet حققت نتائج مذهلة في مسابقة ImageNet 2015:
| العمق | خطأ Top-5 |
|---|---|
| VGG-19 (بدون باقي) | 7.3% |
| ResNet-34 | 5.7% |
| ResNet-152 | 4.5% |
| مستوى البشر | ~5.1% |
ResNet بـ152 طبقة ليس فقط قابلاً للتدريب، بل أفضل بكثير من VGG بـ 19 طبقة. هذا يثبت أن اتصال الباقي حل فعلاً مشكلة تدريب الشبكات العميقة.
ResNet بـ 40 طبقة في AlphaGo Zero
لماذا اختيار 40 طبقة؟
DeepMind اختبرت ResNet بأعماق مختلفة:
| عدد كتل الباقي | إجمالي الطبقات | تقييم ELO |
|---|---|---|
| 5 | 11 | الأساس |
| 10 | 21 | +200 |
| 20 | 41 | +400 |
| 40 | 81 | +500 |
الشبكات الأعمق فعلاً أقوى، لكن العائد الحدي يتناقص. AlphaGo Zero يستخدم 20 أو 40 كتلة باقي:
- AlphaGo Zero (نسخة الورقة): 40 كتلة باقي، 256 قناة
- النسخة المخففة: 20 كتلة باقي، 256 قناة
تكوين 40 طبقة يحقق توازناً جيداً بين قوة اللعب وتكلفة التدريب.
التكوين المحدد
تكوين ResNet في AlphaGo Zero كالتالي:
تقدير عدد المعاملات
| المكون | عدد المعاملات (تقريباً) |
|---|---|
| تلافيف الإدخال | 17 × 3 × 3 × 256 ≈ 39K |
| كل كتلة باقي | 2 × 256 × 3 × 3 × 256 ≈ 1.2M |
| 40 كتلة باقي | 40 × 1.2M ≈ 47M |
| Policy Head | ~1M |
| Value Head | ~0.2M |
| الإجمالي | ~48M |
حوالي 48 مليون معامل، بالمعايير الحديثة هذه شبكة عصبية متوسطة الحجم.
دور Batch Normalization
بعد كل طبقة تلافيف هناك Batch Normalization (BN)، وهذا حاسم لاستقرار التدريب:
1. تطبيع قيم التنشيط
BN تطبّع قيم التنشيط في كل طبقة إلى متوسط 0 وتباين 1:
x_hat = (x - μ_B) / sqrt(σ_B² + ε)
y = γ × x_hat + β
حيث γ و β معاملات قابلة للتعلم.
2. تخفيف انزياح المتغيرات الداخلية
في الشبكات العميقة، توزيع الإدخال لكل طبقة يتغير مع تحديث معاملات الطبقات السابقة. BN تجعل توزيع الإدخال لكل طبقة مستقراً، وتسرع تقارب التدريب.
3. تأثير التنظيم
BN تستخدم إحصائيات mini-batch أثناء التدريب، مما يضيف عشوائية، ولها تأثير تنظيم خفيف.
المقارنة مع بنيات أخرى
مقابل CNN في AlphaGo الأصلي
| الميزة | AlphaGo الأصلي | AlphaGo Zero |
|---|---|---|
| نوع البنية | CNN قياسي | ResNet |
| العمق | 13 طبقة | 41-81 طبقة |
| اتصال الباقي | لا يوجد | يوجد |
| عدد الشبكات | 2 (منفصلة) | 1 (مشتركة) |
| BN | لا يوجد | يوجد |
مقابل شبكات نمط VGG
VGG كانت الوصيفة في ImageNet 2014، تستخدم تكديس تلافيف 3×3:
| الميزة | VGG | ResNet |
|---|---|---|
| أقصى عمق قابل للتدريب | ~19 طبقة | 152+ طبقة |
| تدفق التدرج | يتناقص طبقة بطبقة | له طريق سريع |
| صعوبة التدريب | صعب للطبقات العميقة | قابل للتدريب للطبقات العميقة |
مقابل Inception / GoogLeNet
Inception تستخدم تلافيف متعددة المقاييس بالتوازي:
| الميزة | Inception | ResNet |
|---|---|---|
| الميزة | ميزات متعددة المقاييس | تكديس عميق |
| التعقيد | أعلى | بسيط |
| ملاءمة الغو | عادية | ممتازة |
تصميم ResNet البسيط أنسب للغو الذي يحتاج استدلالاً عميقاً.
مقابل Transformer
بنية Transformer المقترحة في 2017 حققت نجاحاً كبيراً في NLP. البعض حاول تطبيق Transformer على الغو:
| الميزة | ResNet | Transformer |
|---|---|---|
| الانحياز الاستقرائي | محلية (تلافيف) | انتباه شامل |
| ترميز الموقع | ضمني (تلافيف) | صريح |
| أداء الغو | ممتاز | ممكن لكن ليس أفضل من ResNet |
| كفاءة الحساب | أعلى | أقل (O(n²)) |
لمشاكل مثل الغو ذات البنية المكانية الواضحة، الانحياز الاستقرائي لـ CNN/ResNet أنسب.
تحليل عميق لخيارات التصميم
لماذا استخدام تلافيف 3×3؟
AlphaGo Zero يستخدم تلافيف 3×3 طوال الوقت، وليس نوى تلافيف أكبر:
- كفاءة المعاملات: تلافيفان 3×3 لهما نفس مجال الرؤية كتلافيف 5×5 واحد، لكن معاملات أقل (18 مقابل 25)
- شبكة أعمق: بنفس عدد المعاملات، يمكن تكديس طبقات أكثر
- غير خطية أكثر: بين كل طبقة يوجد ReLU، يزيد القدرة التعبيرية
لماذا استخدام 256 قناة؟
256 قناة خيار تجريبي:
- قليل جداً (مثل 64): قدرة تعبيرية غير كافية، لا يستطيع التقاط الأنماط المعقدة
- كثير جداً (مثل 512): عدد المعاملات يتضاعف، تكلفة التدريب تزيد كثيراً، لكن تحسين قوة اللعب محدود
تجارب KataGo اللاحقة أظهرت أن عدد القنوات يمكن ضبطه حسب موارد التدريب:
- موارد منخفضة: 128 قناة، 20 كتلة
- موارد عالية: 256 قناة، 40 كتلة
- موارد أعلى: 384 قناة، 60 كتلة
لماذا Policy Head تستخدم Softmax و Value Head تستخدم Tanh؟
Policy Head: Softmax
الحركة هي مشكلة تصنيف — اختيار واحد من 361 موقع (زائد Pass). إخراج Softmax يحقق:
- جميع الاحتماليات غير سالبة: π_i >= 0
- مجموع الاحتماليات 1: Σπ_i = 1
هذا يتوافق مع تعريف التوزيع الاحتمالي.
Value Head: Tanh
نسبة الفوز هي مشكلة انحدار — التنبؤ بقيمة مستمرة. نطاق إخراج Tanh هو [-1, 1]:
- محدود: لا ينتج قيماً متطرفة
- متماثل: الفوز والخسارة تُعالجان بتماثل
- قابل للاشتقاق: يسهل حساب التدرج
استخدام Tanh بدلاً من إخراج غير محدود (مثل طبقة خطية) يمنع عدم استقرار التدريب.
تفاصيل التدريب
دالة الخسارة
الخسارة الكلية في AlphaGo Zero هي مجموع ثلاثة عناصر:
L = L_policy + L_value + L_reg
Policy Loss
تستخدم خسارة الإنتروبيا المتقاطعة، تجعل إخراج الشبكة يقترب من احتمالية بحث MCTS:
L_policy = -Σ π_MCTS(a) × log(π_net(a))
حيث:
- π_MCTS(a) هي احتمالية بحث MCTS للإجراء a
- π_net(a) هي الاحتمالية التي تخرجها الشبكة
Value Loss
تستخدم الخطأ التربيعي المتوسط (MSE)، تجعل إخراج الشبكة يقترب من الفوز/الخسارة الفعلي:
L_value = (v_net - z)²
حيث:
- v_net هي نسبة الفوز المتنبأ بها من الشبكة
- z هي نتيجة المباراة الفعلية (+1 أو -1)
Regularization Loss
تستخدم تنظيم L2 لمنع فرط التكيف:
L_reg = c × ||θ||²
حيث c هو معامل التنظيم، وθ هي معاملات الشبكة.
تكوين المحسن
| المعامل | القيمة |
|---|---|
| المحسن | SGD + Momentum |
| الزخم | 0.9 |
| معدل التعلم الأولي | 0.01 |
| تناقص معدل التعلم | تنصيف كل X خطوة |
| حجم الدفعة | 32 × 2048 = 64K (موزع) |
| معامل تنظيم L2 | 1e-4 |
تعزيز البيانات
لوحة الغو لها 8 تناظرات (4 دورات × 2 انعكاس). أثناء التدريب، كل وضع يمكن أن ينتج 8 عينات تدريب متكافئة.
هذا يجعل بيانات التدريب الفعالة تزيد 8 مرات، دون الحاجة للعب ذاتي إضافي.
اعتبارات التنفيذ
تحسين الذاكرة
تدريب ResNet بـ 40 طبقة يحتاج ذاكرة كبيرة:
- الانتشار الأمامي: يحتاج تخزين قيم التنشيط لكل طبقة (للانتشار العكسي)
- الانتشار العكسي: يحتاج تخزين التدرجات
استراتيجيات التحسين:
- نقاط فحص التدرج (Gradient Checkpointing): تخزين جزء فقط من قيم التنشيط، إعادة الحساب عند الحاجة
- التدريب بدقة مختلطة: استخدام FP16 لتقليل استهلاك الذاكرة
- التدريب الموزع: توزيع الدفعة على عدة GPU/TPU
تحسين الاستنتاج
أثناء الاستنتاج لا نحتاج إحصائيات mini-batch لـ BN، يمكن استخدام المتوسط المتحرك المتراكم أثناء التدريب:
x_hat = (x - μ_moving) / sqrt(σ_moving² + ε)
هذا يجعل الاستنتاج أسرع والنتائج حتمية.
التكميم والضغط
عند النشر يمكن ضغط الشبكة أكثر:
- تكميم الأوزان: FP32 → INT8، الذاكرة تقل 4 مرات
- التشذيب: إزالة الاتصالات ذات الأوزان الصغيرة
- التقطير المعرفي: استخدام شبكة كبيرة لتدريب شبكة صغيرة
تطابق الرسوم المتحركة
المفاهيم الأساسية في هذه المقالة ورقم الرسوم المتحركة المقابل:
| الرقم | المفهوم | التطابق الفيزيائي/الرياضي |
|---|---|---|
| 🎬 E3 | الشبكة مزدوجة الرأس | التعلم متعدد المهام |
| 🎬 D12 | اتصال الباقي | طريق التدرج السريع |
| 🎬 D8 | الشبكة العصبية التلافيفية | مجال الرؤية المحلي |
| 🎬 D10 | Batch Normalization | تطبيع التوزيع |
قراءة موسعة
- المقال السابق: نظرة عامة على AlphaGo Zero — لماذا لا يحتاج سجلات بشرية
- المقال التالي: عملية التدريب من الصفر — التطور التفصيلي من اليوم 0 إلى 3
- تعمق تقني: CNN والغو — لماذا CNN مناسبة للوحة
المراجع
- Silver, D., et al. (2017). "Mastering the game of Go without human knowledge." Nature, 550, 354-359.
- He, K., et al. (2016). "Deep Residual Learning for Image Recognition." CVPR 2016.
- Ioffe, S., & Szegedy, C. (2015). "Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift." ICML 2015.
- Caruana, R. (1997). "Multitask Learning." Machine Learning, 28(1), 41-75.
- Veit, A., et al. (2016). "Residual Networks Behave Like Ensembles of Relatively Shallow Networks." NeurIPS 2016.