📘 الدرس السادس: التعلم المعزز (Reinforcement Learning) في بايثون وكيف نصنع وكيلاً ذكياً

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

أنت الآن في: الدرس 6 من 12 التقدم: 50%
التعلم المعزز في بايثون

1. للمبتدئين: ما هو التعلم المعزز؟ 🧠

تخيل أنك تقوم بتدريب كلب على التقاط الكرة. إذا نجح، تعطيه قطعة حلوى (مكافأة)، وإذا فشل، لا تعطيه شيئاً (عقاب). بمرور الوقت، سيتعلم الكلب أن التقاط الكرة يجلب له المكافأة، فيكرر هذا السلوك.

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

2. للمتوسطين: كيف يعمل تحت الغطاء؟ ⚙️

لفهم كيفية برمجة ذلك في بايثون، يجب أن نعرف الأركان الأربعة الأساسية في التعلم المعزز:

  • الوكيل (Agent): هو الذكاء الاصطناعي الذي نبرمجه (مثل شخصية سوبر ماريو في اللعبة).
  • البيئة (Environment): العالم الذي يتفاعل معه الوكيل (مثل مستوى اللعبة بكل ما فيه من عوائق).
  • الحركة أو الفعل (Action): ما يمكن للوكيل القيام به (القفز، التحرك يميناً، إلخ).
  • المكافأة (Reward): النتيجة التي تعطيها البيئة للوكيل بعد كل حركة (مثلاً +1 عند تجاوز عقبة، -10 عند الخسارة).

3. للمتقدمين: التطبيق العملي باستخدام بايثون 💻

للبدء في التطبيق، أفضل أداة في بايثون هي مكتبة Gymnasium. تسمح لنا هذه المكتبة بإنشاء بيئات جاهزة لتدريب نماذجنا. في هذا المثال، سنقوم بإنشاء بيئة "CartPole" الشهيرة، حيث يحاول الذكاء الاصطناعي موازنة عصا فوق عربة متحركة.

تثبيت المكتبة اللازمة:

pip install gymnasium

كود بايثون الأساسي لتهيئة البيئة:

# استدعاء مكتبة الجيمنازيوم
import gymnasium as gym

# إنشاء بيئة موازنة العصا
env = gym.make("CartPole-v1", render_mode="human")

# إعادة ضبط البيئة للبدء من الصفر
state, info = env.reset()

# نجعل الوكيل يتخذ 100 خطوة
for step in range(100):
    # اختيار حركة عشوائية (يمين أو يسار)
    action = env.action_space.sample()

    # تنفيذ الحركة ومراقبة النتيجة من البيئة
    next_state, reward, terminated, truncated, info = env.step(action)

    if terminated or truncated:
        print(f"سقطت العصا بعد {step} خطوة!")
        state, info = env.reset()
        break

env.close()

في المراحل المتقدمة القادمة من سلسلة Alamai Pro، سنستبدل الحركة العشوائية `sample()` بخوارزمية ذكية مثل Q-Learning أو Deep Q-Networks (DQN) لتجعل الوكيل يتعلم من أخطائه ولا يُسقط العصا أبداً.

تعليقات

المشاركات الشائعة من هذه المدونة

الدرس 17: التعلم الموجّه (Supervised Learning) – كيف تتعلم النماذج باستخدام بيانات مُعلّمة؟

الدرس السادس : شرح Functions في Python بأسلوب مبسط مع أمثلة عملية

تربية الأطفال في عصر الذكاء الاصطناعي: دليل الآباء والمربين لتحقيق توازن تربوي آمن