إسماعيل بن علا

CartPole RL

اثنتا عشرة طريقة للتعلم المعزز على معيار واحد

التعلم المعزز · أكتوبر 2026 · مكتمل

كل طرق التعلم المعزز الكلاسيكية، من جدول Q إلى PPO وشبكات CNN على البكسلات، توازن العمود نفسه تحت التقييم نفسه.

التقنياتPyTorchGymnasiumNumPyMatplotlibpytest

CartPole RL — نظرة عامة

نظرة عامة

CartPole هي أبسط مهمة تحكم في Gymnasium: ادفع عربة يمينًا أو يسارًا ليبقى العمود قائمًا، نقطة واحدة لكل خطوة، و500 خطوة كحد أقصى. استخدمتها منصة اختبار لأنفّذ بنفسي كل طرق التعلم المعزز (Reinforcement Learning) الكلاسيكية وأرى كيف تصل كل منها فعليًا إلى الحل: Q-learning الجدولي وSARSA وتحكم Monte Carlo على حالة مقسَّمة إلى خانات، وDQN بمتغيراته المزدوج (double) والمبارز (dueling) وإعادة التشغيل ذات الأولوية وn-step، وREINFORCE مع خط أساس (baseline) ومن دونه، والممثل-الناقد (actor-critic) بخطوة واحدة، وA2C وPPO، وأخيرًا سياسات CNN لا ترى سوى الإطارات المرسومة.

كل شيء يتشارك بيئة واحدة، وأداة Recorder واحدة تعدّ الخطوات وتجري تقييمًا جشعًا كل 5,000 خطوة، وتعريفًا واحدًا للحل (مرشَّح على 10 حلقات بمتوسط >= 475 يُؤكَّد على 100 حلقة إضافية)، والرسوم البيانية نفسها. كل قاعدة تحديث بضعة أسطر بجانب تعليق يشرح سبب وجودها، و53 اختبارًا تتحقق من القطع (reward-to-go، وGAE عند lambda 0 و1، وهدف double DQN، ورأس dueling، وقصّ PPO) مقابل أرقام محسوبة يدويًا.

على ملاحظات الحالة، تحل الطرق الاثنتا عشرة المهمة كلها. PPO وREINFORCE + خط أساس يحلّانها بعد 15,000 خطوة، وQ-learning الجدولي بعد 40,000 خطوة لكن في 4 ثوانٍ فقط من وقت المعالج، وDQN العادي بعد 50,000 خطوة مع هضبة طويلة لا تظهر في متغيري double وdueling. تشغيلات البكسلات هي الجزء الصريح: 50,000 خطوة على المعالج المركزي بعيدة جدًا عن الكفاية، ولا ترتفع فوق اللعب العشوائي أصلًا سوى الوكلاء القائمين على فروق الإطارات.

السؤال

إذا شُغِّلت كل طرق التعلم المعزز (Reinforcement Learning) الكلاسيكية على البيئة نفسها وبالتقييم الجشع نفسه، فماذا يكشف منحنى تعلّم كل طريقة عن سبب وجود مكوّناتها (إعادة التشغيل، والشبكات الهدف، وخطوط الأساس، والقصّ)؟

أهم الميزات

كيف يعمل

  1. عملية قرار ماركوفية واحدة وثلاث رؤى لها

    تعطي CartPole-v1 مكافأة +1 لكل خطوة إلى أن يميل العمود أكثر من 12 درجة، أو تغادر العربة المسار، أو تمر 500 خطوة. يرى الوكلاء الحالة الخام، أو إطارًا مرسومًا مقصوصًا، أو الإطار مع صورة الفرق؛ وتقسّم الطرق الجدولية الحالة إلى 1 x 6 x 12 x 12 = 864 خانة.

  2. TD الجدولي وMonte Carlo

    يُحدَّث جدول 864 x 2 بهدف Q-learning وهو r + gamma max Q(s', .)، أو بهدف SARSA الذي يستخدم الفعل المتخذ فعلًا بعد ذلك، أو بالعائد الحقيقي للحلقة في تحكم Monte Carlo، مع تناقص epsilon من 1.0 إلى 0.02.

  3. طرق القيمة العميقة

    تتدرب شبكة Q بحجم 4-128-128-2 على مخزن إعادة تشغيل مع شبكة هدف بمتوسط Polyak وخسارة Huber. وتفعّل الخيارات الهدف المزدوج (تختار الشبكة المتصلة a' وتقيّمه الشبكة الهدف)، ورأس dueling بصيغة Q = V + A - mean A، وإعادة التشغيل ذات الأولوية مع أوزان الأهمية، وعوائد n-step.

  4. تدرّج السياسة والممثل-الناقد

    يرفع REINFORCE قيمة log pi(a|s) مرجَّحة بـ reward-to-go المطبَّع، مطروحًا منه اختياريًا خط أساس متعلَّم V(s). يستخدم الممثل-الناقد بخطوة واحدة خطأ TD كميزة (advantage) بعد كل خطوة؛ ويشغّل A2C ثماني بيئات لثماني خطوات ثم يجري خطوة واحدة مجمّعة للممثل والناقد والإنتروبيا.

  5. PPO

    8 بيئات x 32 خطوة لكل جولة جمع (rollout)، ومزايا GAE (gamma 0.98، lambda 0.8)، ثم 20 حقبة على الدفعة مع قصّ نسبة الاحتمال إلى [0.8, 1.2] حتى لا تبعد التحديثات المتكررة السياسة كثيرًا عن تلك التي جمعت البيانات.

  6. التقييم نفسه للجميع

    كل 5,000 خطوة تلعب السياسة الجشعة 10 حالات بداية ثابتة؛ ويُؤكَّد المتوسط >= 475 على 100 حلقة إضافية، وتعطي أول نقطة مؤكَّدة عدد الخطوات والحلقات والثواني حتى الحل. ويملأ تقييم نهائي على 100 حلقة بحالات بداية غير مرئية الجدول.

أمثلة

قبل التدريب وبعده على حالة البداية نفسها. يسارًا: وكيل عشوائي يسقط عموده عند الخطوة 64 (متوسط اللعب العشوائي نحو 22). يمينًا: وكيل PPO المدرَّب يحافظ على التوازن طوال الخطوات الـ 500.
وكيل مدرَّب واحد لكل عائلة على حالة البداية نفسها: يسقط الوكيل العشوائي عند الخطوة 64 بينما تصل نقاط حفظ جدول Q وdouble DQN وREINFORCE + خط أساس وA2C وPPO كلها إلى 500 خطوة.
عائد التدريب (خطوط، مع الاستكشاف) والتقييم الجشع (نقاط) مقابل خطوات البيئة لكل طريقة قائمة على الحالة. تظهر انهيارات A2C قرب 35k و65k و80k خطوة، وهضبة DQN العادي عند 130-160.
عائد التدريب (خطوط، مع الاستكشاف) والتقييم الجشع (نقاط) مقابل خطوات البيئة لكل طريقة قائمة على الحالة. تظهر انهيارات A2C قرب 35k و65k و80k خطوة، وهضبة DQN العادي عند 130-160.
خطوات البيئة حتى أول حل مؤكَّد، ببذرة واحدة: PPO وREINFORCE + خط أساس عند 15,000، وdueling DQN وREINFORCE والممثل-الناقد عند 20,000، وصولًا إلى تحكم Monte Carlo عند 115,000.
خطوات البيئة حتى أول حل مؤكَّد، ببذرة واحدة: PPO وREINFORCE + خط أساس عند 15,000، وdueling DQN وREINFORCE والممثل-الناقد عند 20,000، وصولًا إلى تحكم Monte Carlo عند 115,000.
تشغيلات البكسلات الأربعة على 50,000 خطوة. يبقى PPO على إطار واحد عند المستوى العشوائي؛ ويصعد REINFORCE + خط أساس على فروق الإطارات إلى عائد تدريب يقارب 55، ولا تبدأ تشغيلات PPO على فروق الإطارات بالارتفاع إلا بعد 40,000 خطوة.
تشغيلات البكسلات الأربعة على 50,000 خطوة. يبقى PPO على إطار واحد عند المستوى العشوائي؛ ويصعد REINFORCE + خط أساس على فروق الإطارات إلى عائد تدريب يقارب 55، ولا تبدأ تشغيلات PPO على فروق الإطارات بالارتفاع إلا بعد 40,000 خطوة.

المدخل

cartpole-train --method ppo --record ppo.gif

المخرج

[ppo/state] step 15000 ep 183 train(last20) 264.0 eval 500.0 +- 0.0 22.0s confirm(100) 498.1

السطر المطبوع عند التقييم الذي حلّ فيه PPO المهمة: 15,000 خطوة، و183 حلقة، ومتوسط جشع على 10 حلقات قدره 500.0، مؤكَّد بـ 498.1 على 100 حلقة إضافية. أما عائد التدريب مع الاستكشاف فلا يزال 264 عند تلك النقطة.

التقنيات المستخدمة

ما تعلمته

الحدود

الكلمات المفتاحية

التعلم المعزز · CartPole · Gymnasium · Q-learning · SARSA · تحكم Monte Carlo · DQN · double DQN · dueling DQN · إعادة تشغيل الخبرة ذات الأولوية · REINFORCE · الممثل-الناقد · A2C · PPO · PyTorch