أساسيات تعلم الآلة1959تأسيسي10 دقيقة قراءة

دراسات في التعلُّم الآلي باستخدام لعبة الداما

Some Studies in Machine Learning Using the Game of Checkers

Samuel, A. L. — IBM Journal of Research and Development

المشكلة

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

الإسهام

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

الأثر

صاغ صمويل مصطلح «التعلّم الآلي» وبرهن عملياً أن الحاسوب قادر على التحسّن في مهمة معقّدة دون برمجة صريحة لكل خطوة. أسلوب التعلّم بالتعميم الذي ابتكره عُرف لاحقاً بوصفه أول تطبيق فعلي للتعلّم بفارق الزمن — وهو الخيط الذي يمتد مباشرةً عبر TD-Gammon وشبكات Q العميقة وAlphaGo. أما اللعب الذاتي، الذي كان صمويل رائده، فقد صار المحرّك الأساسي لكل نظام تفوّق على البشر في الألعاب تقريباً منذ ذلك الحين.

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

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

لماذا الداما؟ المختبر المثالي

كان صمويل يبحث عن مسألة صعبة بما يكفي لتستحقّ الاهتمام، وبسيطة بما يكفي لحاسوب من حقبة الخمسينيات. الداما حقّقت هذا التوازن تماماً: نحو 5×10²⁰ وضعية ممكنة — عدد يستحيل حصره — لكن القواعد واضحة والفوز محدّد بلا غموض. والأهم أن اللعب الجيد يتطلّب تفكيراً استراتيجياً حقيقياً: أن تضحّي بقطعة من أجل موقع أفضل، وتسيطر على وسط الرقعة، وتخطّط لعدة نقلات قادمة.

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

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

النظر إلى الأمام: بحث المصغَّر-المكبَّر والتقليم ألفا-بيتا

قبل الحديث عن التعلّم، البرنامج يحتاج أولاً إلى آلية لاختيار النقلة التالية. الفكرة الأساسية التي اعتمدها صمويل هي : تخيّل أنك تبني من كل النقلات المستقبلية الممكنة، وتفترض أن خصمك ذكيّ ويختار دائماً أسوأ نقلة بالنسبة لك. في ظلّ هذا الافتراض، تختار أنت النقلة التي تقود إلى أفضل نتيجة ممكنة.

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

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

افتح في المختبر
انقر «توسيع» لبناء شجرة اللعب. الفروع المقلَّمة تظهر باهتة — البرنامج لا يقيّمها أصلاً، فيوفّر حسابات ثمينة.
تستيقظ التجربة عند وصولك…

بطاقة التقييم: دالة التقييم

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

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

الرؤية المفتاحية هنا أن الأوزان التي تحدّد أهمية كل سمة لا يلزم أن يضبطها خبير بشري — بل يستطيع البرنامج تعلُّمها بنفسه.

V(s)=w1piece_adv+w2king_adv+w3mobility+w4center+V(s) = w_1 \cdot \text{piece\_adv} + w_2 \cdot \text{king\_adv} + w_3 \cdot \text{mobility} + w_4 \cdot \text{center} + \cdots
دالة التقييم الخطية — «بطاقة الأداء»كل سمة تقيس جانباً من وضعية الرقعة. الأوزان wᵢ تحدّد مقدار تأثير كل سمة في التقييم النهائي. التعلّم هنا يعني ببساطة ضبط هذه الأوزان.
افتح في المختبر
اسحب أشرطة الأوزان لترى كيف يتغيّر تقييم الرقعة عند تغيير وزن كل سمة. البرنامج يتعلّم هذه الأوزان تلقائياً.
تستيقظ التجربة عند وصولك…

أسلوب التعلّم الأول: التعلّم بالحفظ — الذاكرة بوصفها عمقاً

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

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

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

التعلّم بالحفظ أعطى تحسّناً بطيئاً لكنه ثابت ومتراكم. كان أنجح ما يكون في مواقف الافتتاح ونهاية اللعب، حيث تتكرّر الأنماط نفسها كثيراً. بهذا الأسلوب وحده وصل البرنامج إلى مستوى «مبتدئ فوق المتوسط».

أسلوب التعلّم الثاني: التعميم — سلف التعلّم بفارق الزمن

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

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

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

هذه الفكرة — «عدّل تقديرك الحالي ليقترب من تقدير مستقبلي أدقّ» — هي بالضبط ما صاغه ريتشارد ساتون رسمياً عام 1988 تحت مسمى . ساتون نفسه أشار صراحةً إلى برنامج صمويل بوصفه «أقدم وأشهر استخدام لأسلوب TD». وهذا ليس مجرد طرفة تاريخية — إنه خط النسب المباشر الذي يربط حاسوب صمويل IBM 701 بـالتعلّم بفارق الزمن ثم TD-Gammon وصولاً إلى AlphaGo.

افتح في المختبر
شاهد كيف تعدّل النسخة النشطة أوزانها بعد مقارنة تقييمها بالنظرة الأعمق للنسخة المستقرّة. الأعمدة تُظهر أوزان السمات وهي تتقارب مع تقدّم الجولات.
تستيقظ التجربة عند وصولك…
wiwi+α(Vstable(s)Vactive(s))Vactive(s)wiw_i \leftarrow w_i + \alpha \cdot \bigl(V_{\text{stable}}(s') - V_{\text{active}}(s)\bigr) \cdot \frac{\partial V_{\text{active}}(s)}{\partial w_i}
قاعدة تحديث الأوزان — بذرة التعلّم بفارق الزمنتقييم النسخة النشطة للوضع s يُدفع باتجاه تقييم النسخة المستقرّة للوضع التالي s′. المعامل α هو معدّل التعلّم. المشتقة الجزئية تحدّد الاتجاه الذي ينبغي تحريك كل وزن فيه.

اللعب الذاتي: البرنامج خصم ذاته

السؤال الطبيعي: من أين تأتي بيانات التدريب؟ الحل الذي اختاره صمويل بسيط وعبقري في آن: جعل البرنامج يلعب ضد نفسه. نسخة تستخدم دالة التقييم الحالية، والنسخة المقابلة تستخدم النسخة المستقرّة أو نسخة أقدم قليلاً. كل مباراة تولّد عشرات أوضاع الرقعة، وكل وضع منها يصلح مثالاً تدريبياً.

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

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

افتح في المختبر
اضغط «شغّل مباراة» لتشاهد النسختين تتنافسان. بعد كل مباراة، لاحظ كيف تتغيّر الأوزان. الرسم البياني يتتبّع التحسّن عبر الجولات.
تستيقظ التجربة عند وصولك…

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

دالة تقييم صمويل وتحديث الأوزان، مبسَّطةpython

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

import numpy as np

def evaluate(board, weights):
    """قيّم وضعية الرقعة باستخدام السمات الموزونة."""
    features = np.array([
        piece_advantage(board),   # قطعي ناقص قطع الخصم
        king_advantage(board),    # ملوكي ناقص ملوك الخصم
        mobility(board),          # عدد نقلاتي المتاحة
        center_control(board),    # القطع على المربعات المركزية
    ])
    return weights @ features     # الضرب النقطي = المجموع الموزون

def update_weights(weights, board_now, board_next,
                   stable_weights, lr=0.01):
    """تحديث شبه-TD: ادفع الأوزان النشطة نحو التقييم الأعمق."""
    v_active = evaluate(board_now, weights)
    v_stable = evaluate(board_next, stable_weights)
    error = v_stable - v_active   # فارق الزمن
    features_now = extract_features(board_now)
    weights += lr * error * features_now   # خطوة تدرّج
    return weights

# حلقة اللعب الذاتي: العب مباريات وتعلّم من كل وضعية
for game in range(1000):
    boards = play_game(weights, stable_weights)
    for t in range(len(boards) - 1):
        weights = update_weights(
            weights, boards[t], boards[t+1], stable_weights
        )
    if game % 50 == 0:
        stable_weights = weights.copy()   # حدّث النسخة المستقرّة

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

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

الإرث التقني لا يقلّ عمقاً. أسلوب التعميم الذي ابتكره كان أول تطبيق فعلي لمبدأ فارق الزمن. اللعب الذاتي عاد بقوة في TD-Gammon عام 1992، ثم في AlphaGo عام 2016، ثم في AlphaZero عام 2017. ودالة التقييم الخطية ذات الأوزان المُتعلَّمة كانت البذرة التي نبتت منها كل تُخرج قيمة عددية واحدة — بما فيها شبكات القيمة في أنظمة الألعاب الحديثة. وفكرة صمويل أن الآلة قادرة على «التعلّم دون أن تُبرمَج صراحةً» صارت التعريف الرسمي لتخصّص بأكمله.

  1. 1952

    صمويل يبدأ برنامج الداما

    آرثر صمويل يبدأ بناء برنامج لعب الداما على حاسوب IBM 701 في بوكبسي، نيويورك. واحدة من أولى المحاولات لجعل الحاسوب يتعلّم.

  2. 1956

    العرض التلفزيوني

    صمويل يعرض البرنامج على التلفزيون الوطني. حاسوب يلعب الداما ويتعلّم من أخطائه — مشهد أسر الجمهور الأمريكي.

  3. 1959

    نشر الورقة البحثية الأساسية

    نُشرت ورقة «دراسات في التعلّم الآلي باستخدام لعبة الداما» في مجلة IBM، فصاغت مصطلح «التعلّم الآلي» ووصفت أسلوبَي التعلّم بالحفظ والتعميم.

  4. 1962

    يتغلّب على بطل بشري

    البرنامج يهزم روبرت نيلي، بطل الداما الكفيف، في مباراة علنية. الإعلام يعلن (سابقاً أوانه) أن الداما «قد حُلّت».

  5. 1988

    ساتون يصوغ التعلّم بفارق الزمن رسمياً

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

  6. 1992

    TD-Gammon

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

  7. 2016

    AlphaGo يهزم لي سيدول

    AlphaGo من DeepMind يستخدم اللعب الذاتي والتقييم المُتعلَّم (شبكات القيمة) وبحث الشجرة لهزيمة بطل العالم في غو — السليل الفكري المباشر لبنية صمويل.

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

المرجعSamuel, A. L.. Some Studies in Machine Learning Using the Game of Checkers. IBM Journal of Research and Development, 1959.

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