التعلم المعزز2017متقدم12 دقيقة قراءة

إتقان لعبة غو دون أي معرفة بشرية

Mastering the Game of Go Without Human Knowledge

Silver, D. · Schrittwieser, J. · Simonyan, K. · Antonoglou, I. · Huang, A. · Guez, A. · Hubert, T. · Baker, L. · Lai, M. · Bolton, A. · Chen, Y. · Lillicrap, T. · Hui, F. · Sifre, L. · van den Driessche, G. · Graepel, T. · Hassabis, D. — Nature

المشكلة

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

الإسهام

ينطلق AlphaGo Zero من لعب عشوائي تماماً — صفحة بيضاء — دون أي بيانات بشرية. شبكة عصبية متبقية واحدة ذات رأسين تتنبأ باحتمالات النقلات () واحتمال الفوز (القيمة) في آنٍ واحد. يستعين بحث شجرة مونت كارلو بهذه الشبكة للتخطيط، فيُولِّد سياسات أقوى تتعلّم الشبكة منها بدورها. هذه الحلقة — العب، ابحث، تعلّم، كرِّر — هي كل ما في الخوارزمية. بعد 72 ساعة فقط على 4 وحدات TPU هزم النسخة التي تغلّبت على لي سيدول بنتيجة 100–0.

الأثر

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

تخيّل طالبَيْن يستعدّان لامتحان. الطالب أ يحفظ جميع الإجابات من أوراق الامتحانات السابقة — ينطلق بسرعة، لكنه حبيس الأنماط التي اكتشفها من سبقوه.

الطالب ب لم يرَ ورقة امتحان واحدة في حياته. بدلاً من ذلك يخترع أسئلة بنفسه، يحلّها، يصحّحها، ثم يخترع أسئلة أصعب. بعد دورات كافية لا يتقن الطالب ب الأساليب المعروفة فحسب، بل يبتكر حِيَلاً لم ترد في أي كتاب.

AlphaGo Zero هو الطالب ب. «الامتحان» هنا هو لعبة غو — لعبة عدد أوضاعها القانونية يفوق عدد ذرات الكون — و«الأسئلة التدريبية» هي المباريات التي يخوضها عبر اللعب الذاتي ضد نفسه.

المشكلة: المعرفة البشرية كسقف

كان AlphaGo الأصلي إنجازاً تاريخياً — أول برنامج يهزم لاعب غو محترفاً. لكن بنيته اعتمدت على ثلاثة أشكال من المعرفة البشرية:

  • تدريب مُوجَّه مسبق على 30 مليون وضعية من مباريات المحترفين لتهيئة شبكة السياسة.
  • سمات مصمَّمة يدوياً — كعدّ الحريات وأنماط السلالم وعمر الأحجار — وضعها خبراء غو.
  • شبكتان منفصلتان — شبكة سياسة لاختيار النقلات و لتقييم الأوضاع، تُدرَّب كلٌّ منهما على حدة.

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

افتح في المختبر
قارن بين مسارَي التدريب: AlphaGo يحتاج مباريات خبراء بشريين، بينما AlphaGo Zero ينطلق من الصفر.
تستيقظ التجربة عند وصولك…

الفكرة الجوهرية: اللعب الذاتي كمعلّم وحيد

فكرة AlphaGo Zero جذرية: تخلَّص من كل البيانات البشرية. ابدأ بأوزان عشوائية، ودع النظام يلعب ضد نفسه ويتحسّن من نتائج مبارياته. حلقة التدريب بأكملها ثلاث خطوات لا غير:

  1. العب الحالية تلعب مباريات ضد نفسها مستعينةً بـ لاختيار النقلات.
  2. تعلّم — تُدرَّب الشبكة لتتنبأ باحتمالات النقلات المحسَّنة التي أنتجها البحث، وبنتيجة المباراة النهائية.
  3. قيِّم — تواجه الشبكة الجديدة أفضل نسخة حالية؛ فإن فازت بأكثر من 55% من المباريات حلّت محلها وأصبحت هي المولِّد الجديد لمباريات اللعب الذاتي.

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

افتح في المختبر
تابع حلقة تدريب اللعب الذاتي خطوةً بخطوة — راقب دورة العب والتعلّم والتقييم.
تستيقظ التجربة عند وصولك…

بحث شجرة مونت كارلو: التفكير المُسبَق ببوصلة عصبية

في كل دور لا يكتفي AlphaGo Zero بتنبؤات الشبكة المباشرة، بل يُجري 1,600 محاكاة من بحث شجرة مونت كارلو — كل محاكاة منها رحلة تبدأ من وضع الرقعة الحالي وتنزل عبر . تخيّل الأمر كأن النظام يتمرّن ذهنياً على سيناريوهات مستقبلية قبل أن يختار نقلته.

تمرّ كل محاكاة بأربع مراحل:

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

التوسيع — حين تصل إلى عقدة ورقية (وضع لم يُزَر من قبل)، وسِّعها بتمرير الرقعة إلى الشبكة العصبية. تعيد الشبكة سياسة p يصف مدى واعدية كل نقلة، وقيمة v تقدّر احتمال الفوز من هذا الوضع.

التحديث الراجع — أعِد القيمة v صعوداً عبر المسار، وحدِّث Q لكل حافة مررت بها. بعد عدد كافٍ من المحاكاة تتقارب Q نحو تقدير موثوق لجدوى كل نقلة.

اللعب — بعد إتمام المحاكاة الـ 1,600، اختر النقلة بما يتناسب مع لكل فعل عند الجذر. المعيار هنا هو عدد الزيارات وليس القيمة الخام — تفصيلة دقيقة لكنها جوهرية تضمن اختياراً متيناً.

افتح في المختبر
شاهد كيف يبني بحث شجرة مونت كارلو شجرته. انقر «محاكاة» لتشغيل دورة واحدة: اختيار ← توسيع ← تحديث راجع.
تستيقظ التجربة عند وصولك…

صيغة PUCT: الموازنة بين الاستكشاف والاستغلال

عند كل عقدة في شجرة البحث يحتاج بحث شجرة مونت كارلو إلى تحديد أي فرع يستكشفه تالياً. يختار الفعل الذي يُعظِّم مجموع حدّين: القيمة المقدّرة Q(s,a) ومكافأة الاستكشاف U(s,a). الفكرة بديهية — اتبع المسارات التي أثبتت قيمة عالية (استغلال) أو التي تبدو واعدة لكنها لم تُجرَّب بما يكفي (استكشاف).

at=argmaxa[Q(s,a)+cpuctP(s,a)bN(s,b)1+N(s,a)]a_t = \arg\max_a \bigl[ Q(s,a) + c_{\text{puct}} \cdot P(s,a) \cdot \frac{\sqrt{\sum_b N(s,b)}}{1 + N(s,a)} \bigr]
قاعدة اختيار PUCT — قلب بحث AlphaGo ZeroQ(s,a) = متوسط القيمة من المحاكاة السابقة · P(s,a) = الاحتمال المسبق من الشبكة العصبية للفعل a · N(s,a) = عدد زيارات الفعل a · c_puct = ثابت الاستكشاف. حد الاستكشاف يتقلّص كلما زاد N(s,a) — النقلات المُختبَرة جيداً تُستغَل والنقلات غير المُختبَرة تُستكشَف.
افتح في المختبر
اسحب ثابت الاستكشاف c_puct وشاهد كيف يتغير التوازن بين الاستغلال والاستكشاف.
تستيقظ التجربة عند وصولك…

الشبكة العصبية: دماغ واحد بمخرجَين

على خلاف AlphaGo الأصلي الذي استخدم شبكتين منفصلتين، يعتمد AlphaGo Zero على . المدخل بأبعاد 19×19×17: تمثّل الرقعة الحالية مع آخر 8 أوضاع تاريخية لكل لاعب، بالإضافة إلى مؤشر لون اللاعب.

تتكوّن الشبكة من ثلاثة أجزاء:

البرج المتبقي — 19 (أو 39) ، كل كتلة تحتوي بحجم 3×3 مع و. الوصلات المتبقية (اتصالات التخطّي) تسمح لـ بالتدفق عبر الطبقات العميقة دون تلاشٍ — الحيلة ذاتها التي مكّنت من تدريب شبكات الصور العميقة.

1×1 تليها تُخرج على جميع النقلات الممكنة 19×19 + 1 = 362 (بما فيها التمرير). هذا الرأس يجيب عن سؤال: «ماذا ألعب تالياً؟»

رأس القيمة — طبقة التفاف 1×1، ثم متصلة بالكامل من 256 وحدة، ومخرج tanh يعطي عدداً واحداً في المجال [-1, +1]. هذا الرأس يجيب عن سؤال: «من يكسب من هذا الوضع؟»

مشاركة البرج المتبقي بين الرأسين تعني أن الشبكة تتعلم نافعة لكلتا المهمتين في آنٍ واحد — فالنمط الذي يساعد في التنبؤ بالنقلة الجيدة يساعد أيضاً في التنبؤ بالفائز.

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

بعد أن تُنتج كل مباراة لعب ذاتي مجموعة بيانات من ثلاثيات (، سياسة بحث شجرة مونت كارلو، نتيجة المباراة)، تُدرَّب الشبكة بتصغير مركّبة:

L=(zv)2πTlogp+cθ2L = (z - v)^2 - \boldsymbol{\pi}^T \log \mathbf{p} + c \|\theta\|^2
دالة الخسارة المركّبة لـ AlphaGo Zero(z - v)² = مربع الخطأ بين القيمة المتوقعة v ونتيجة المباراة الفعلية z · ‎-π^T log p = الإنتروبيا التقاطعية بين سياسة البحث π وسياسة الشبكة p · c||θ||² = تنظيم L2 لمنع فرط التخصيص

يمكنك قراءة هذه الدالة على أنها إشارتا تعلُّم وشبكة أمان. خسارة القيمة تقول للشبكة: «تحسَّني في توقُّع من سيفوز». خسارة السياسة تقول: «حاكي خيارات البحث — فهي أذكى من تخميناتك الأولية». أما فيقول: «لا تحفظي أوضاعاً بعينها — عمِّمي».

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

تشويش ديريكليه: ضمان عدم انحباس البحث

الخطر في اللعب الذاتي هو نحو استراتيجية ضيقة — كأن يُتقن النظام افتتاحية واحدة دون أن يكتشف أن غيرها قد يكون أفضل. يتفادى AlphaGo Zero هذا الفخ بإضافة إلى الاحتمالات المسبقة في عقدة الجذر:

P(s,a)=(1ϵ)pa+ϵηa,ηDir(α)P(s, a) = (1 - \epsilon) \cdot p_a + \epsilon \cdot \eta_a, \quad \eta \sim \text{Dir}(\alpha)

حيث ϵ=0.25\epsilon = 0.25 وα=0.03\alpha = 0.03 لرقعة غو 19×19. عملياً يعني ذلك أن 25% من الاحتمال المسبق عند الجذر مصدره تشويش عشوائي لا الشبكة — وهذا يكفي لإجبار البحث على تجربة نقلات مفاجئة بين الحين والآخر. لاحظ أن التشويش يُطبَّق على الجذر فقط وليس في عمق الشجرة، فيبقى البحث مركّزاً ما إن يختار اتجاهاً.

فكّر في الأمر كقيد إبداعي: الشبكة تقترح نقلات، لكن دفعة عشوائية تُلزمها أحياناً بالنظر في خيارات كانت لتتجاهلها. بعض هذه المفاجآت يتبيّن أنه ممتاز فعلاً — وبهذه الآلية يكتشف AlphaGo Zero استراتيجيات لم يلعبها بشر قط.

الفكرة في شيفرة برمجية

نسخة مبسّطة من اللعب الذاتي وبحث شجرة مونت كارلوpython

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

import numpy as np

class Node:
    """عقدة واحدة في شجرة بحث MCTS."""
    def __init__(self, prior):
        self.prior = prior        # P(s,a) من الشبكة
        self.visit_count = 0      # N(s,a) عدد الزيارات
        self.value_sum = 0.0      # مجموع القيم المتراكمة
        self.children = {}        # فعل -> عقدة

    def value(self):
        if self.visit_count == 0:
            return 0
        return self.value_sum / self.visit_count  # Q(s,a)

def puct_score(parent, child, c_puct=1.5):
    """PUCT: وازن بين الاستغلال (Q) والاستكشاف (U)."""
    exploration = c_puct * child.prior * np.sqrt(parent.visit_count) / (1 + child.visit_count)
    return child.value() + exploration

def mcts_simulate(root, network, game, n_simulations=1600):
    """شغّل n_simulations محاكاة: اختيار ← توسيع ← تحديث راجع."""
    for _ in range(n_simulations):
        node = root
        path = [node]
        state = game.clone()

        # الاختيار — انزل في الشجرة وفق PUCT
        while node.children:
            action = max(node.children, key=lambda a: puct_score(node, node.children[a]))
            node = node.children[action]
            state.apply(action)
            path.append(node)

        # التوسيع — استخدم الشبكة لتقييم العقدة الورقية
        policy, value = network.predict(state)  # (p, v) = f_θ(s)
        for action, prob in enumerate(policy):
            if state.is_legal(action):
                node.children[action] = Node(prior=prob)

        # التحديث الراجع — أعد القيمة إلى أعلى المسار
        for ancestor in reversed(path):
            ancestor.value_sum += value
            ancestor.visit_count += 1
            value = -value  # اعكس المنظور في كل مستوى

    # أعد توزيع عدد الزيارات كسياسة محسّنة
    visits = {a: c.visit_count for a, c in root.children.items()}
    total = sum(visits.values())
    return {a: n / total for a, n in visits.items()}

النتائج: من العشوائية إلى مستوى خارق في 72 ساعة

منحنى تدريب AlphaGo Zero من أكثر المنحنيات إثارة في تاريخ . يبدأ النظام من لعب عشوائي بحت — اختيار النقلات بتوزيع منتظم تماماً — ثم يحقّق ما يلي:

  • بعد 3 ساعات: يلعب غو قانونياً بأساسيات واضحة، يأسر الأحجار ويؤمّن المناطق.
  • بعد 19 ساعة: يعيد اكتشاف الافتتاحيات البشرية الكلاسيكية (نقطة النجمة، نقطة 3-4).
  • بعد 36 ساعة: يتجاوز AlphaGo Lee (النسخة التي هزمت لي سيدول 4–1).
  • بعد 72 ساعة: يهزم AlphaGo Lee بنتيجة 100–0 مستخدماً 4 وحدات TPU فقط مقابل 48.
  • بعد 40 يوماً: يصل إلى 5,185 متجاوزاً AlphaGo Master (تصنيفه 4,858) الذي هزم أقوى المحترفين 60–0 عبر الإنترنت.

النظام النهائي عمل على آلة واحدة بأربع وحدات TPU فحسب. في المقابل كان AlphaGo Lee موزَّعاً على آلات عديدة بـ 48 وحدة TPU. أداء أعلى بمراحل مع واحد على اثني عشر من القدرة الحوسبية — تلك هي قوة البدء من الصفر.

افتح في المختبر
شاهد تصنيف إيلو لـ AlphaGo Zero يتصاعد على مدار 40 يوماً، متجاوزاً كل نسخة سابقة.
تستيقظ التجربة عند وصولك…

إعادة اكتشاف المعرفة البشرية — ثم تجاوزها

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

لكنه لم يقف عند ما يعرفه البشر. اكتشف AlphaGo Zero استراتيجيات جديدة تحدّت الحكمة التقليدية — نقلات رفضها المحترفون في البداية باعتبارها أخطاء، ثم أدركوا لاحقاً أنها متفوقة فعلاً. فضّل افتتاحيات نادراً ما يلعبها البشر، وتخلّى عن أخرى يعتبرونها قياسية.

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

لماذا تهمّ هذه الخيارات التصميمية: دراسة الاستئصال

تختبر الورقة بعناية كل خيار تصميمي على حدة لإثبات أهميته:

  • شبكة موحّدة مقابل شبكتين منفصلتين: الشبكة ذات الرأسين الموحّدة (dual-res) تتفوق بوضوح على استخدام شبكة سياسة وشبكة قيمة منفصلتين (sep-res)، رغم أن شبكة القيمة المنفصلة تتنبأ بنقلات الخبراء بدقة أعلى قليلاً. لماذا؟ لأن السمات المشتركة تخلق تآزراً — تعلُّم النقلات الجيدة يساعد في الوقت ذاته على تعلُّم من سيفوز.
  • كتل متبقية مقابل التفاف عادي: الكتل المتبقية تُحسِّن بشكل ملحوظ دقة التنبؤ وقوة اللعب معاً، خصوصاً كلّما زاد عمق الشبكة. بدون اتصالات التخطّي لا تستطيع الشبكات العميقة التعلّم بفعالية.
  • بدون بيانات بشرية مقابل بيانات بشرية: نسخة (AlphaGo Zero) تتجاوز في النهاية نسخة دُرِّبت ببيانات بشرية (AlphaGo Master). البيانات البشرية تمنح انطلاقة سريعة، لكنها تُدخل تحيّزاً يحتاج النظام لاحقاً إلى التخلّص منه.
افتح في المختبر
قارن بين المتغيّرات المعمارية الأربعة — dual-res يتفوق باستمرار.
تستيقظ التجربة عند وصولك…

لماذا غيَّر كل شيء

  1. 2015

    AlphaGo Fan

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

  2. 2016

    AlphaGo Lee

    هزم بطل العالم لي سيدول 4–1 في مباراة تاريخية. ظلّ معتمداً على مباريات الخبراء البشريين للتهيئة. استخدم 48 وحدة TPU موزّعة على آلات عديدة.

  3. 2017

    AlphaGo Zero

    صفحة بيضاء — صفر بيانات بشرية. شبكة متبقية واحدة ذات رأسين بدون محاكاة عشوائية. هزم AlphaGo Lee بنتيجة 100–0 مستخدماً 4 وحدات TPU فقط على آلة واحدة.

  4. 2017

    AlphaGo Master

    البنية نفسها لكن مع تدريب على بيانات بشرية. هزم أقوى المحترفين 60–0 عبر الإنترنت. تجاوزته لاحقاً نسخة الصفحة البيضاء Zero.

  5. 2018

    AlphaZero

    عمّم المنهج ليشمل الشطرنج والشوغي وغو بخوارزمية واحدة. أثبت أن اللعب الذاتي من الصفر يعمل عبر مجالات متعددة وليس في غو وحدها.

أظهر AlphaGo Zero أن وصفة اللعب الذاتي + بحث شجرة مونت كارلو + الشبكة العصبية وصفة قابلة للتعميم على مجالات مختلفة. AlphaZero أثبت ذلك عملياً بإتقان ثلاث ألعاب مختلفة بالشيفرة ذاتها. ولا يزال هذا المبدأ يُلهم أبحاث والروبوتات والاكتشاف العلمي حتى اليوم.

المرجعSilver, Schrittwieser, Simonyan, Antonoglou, Huang, Guez, Hubert, Baker, Lai, Bolton, Chen, Lillicrap, Hui, Sifre, van den Driessche, Graepel, Hassabis. Mastering the Game of Go Without Human Knowledge. Nature, 2017.

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