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

Pendulum RL

رفع البندول وAcrobot بكل طرق التعلم المعزز الكلاسيكية

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

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

التقنياتPyTorchGymnasiumNumPyMatplotlibpytest

Pendulum RL — نظرة عامة

نظرة عامة

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

كتبتُ قاعدة شيفرة PyTorch واحدة بملف لكل عائلة: DDPG وTD3 وSAC مع ضبط تلقائي للإنتروبيا للعزم المستمر؛ وPPO مع GAE والقص، وA2C وREINFORCE على المهمتين؛ وطريقة الإنتروبيا المتقاطعة كخط أساس بلا تدرجات؛ وDQN وdouble DQN وdueling DQN على Acrobot وDQN بأفعال مقطَّعة على البندول؛ وSARSA(lambda) مع الترميز بالبلاطات (tile coding) وآثار الأهلية (eligibility traces) دون أي شبكة عصبية. تمر كل طريقة عبر Monitor نفسه، الذي يعدّ خطوات البيئة ويقيّم السياسة الحتمية على حالات البداية نفسها.

على Pendulum تحل طرق الممثل-الناقد الثلاث خارج السياسة المهمة في 5-6k خطوة لأنها تعيد تشغيل كل انتقال؛ ويحتاج PPO إلى نحو أربعة أضعاف ذلك، وREINFORCE إلى 320k وCEM إلى 1.4M. وعلى Acrobot يكون SARSA(lambda) مع الترميز بالبلاطات الأسرع إلى عتبة -100، في 12,500 خطوة و12 ثانية، ويحقق A2C أفضل عائد نهائي. تُظهر الخرائط الحرارية للقيمة أن كل ناقد يجد الشريط القطري نفسه من الحالات التي تنساب حتى القمة، وأن كل سياسة قريبة من التحكم الثنائي (bang-bang).

السؤال

كيف تتقارن طرق الممثل-الناقد خارج السياسة (off-policy)، وتدرجات السياسة ضمن السياسة (on-policy)، والبحث الصندوقي الأسود، والطرق القائمة على القيمة، على مهمتي تحكم كلاسيكيتين نفسيهما حين تتشارك بيئة واحدة ووحدة ميزانية واحدة (خطوات البيئة) وتقييماً واحداً؟

أهم الميزات

كيف يعمل

  1. بناء البيئة

    تعيد make_env بيئة Pendulum-v1 (الملاحظة cos theta وsin theta وtheta_dot؛ والعزم في [-2, 2]) أو Acrobot-v1 (ستة أعداد، وثلاثة عزوم للمرفق). ويقسم المغلِّف DiscretizedAction عزم البندول إلى 5 قيم لأجل DQN.

  2. اختيار شكل الحلقة

    الوكلاء خارج السياسة يتصرفون ويخزنون الانتقال ويأخذون خطوة تدرج على دفعة عشوائية. والوكلاء ضمن السياسة يجمعون مساراً ويحسبون مزايا GAE ثم يحدِّثون ويتخلصون من البيانات. ويشغّل CEM حلقات كاملة لكل متجه أوزان مرشَّح؛ ويتحدث SARSA في كل خطوة عبر آثار الأهلية.

  3. التعلم

    يصعد DDPG بالقيمة Q(s, mu(s))؛ ويضيف TD3 ناقدين توأمين وتحديثات متأخرة للممثل وتنعيماً للهدف؛ ويعظّم SAC المكافأة زائد alpha مضروباً في الإنتروبيا، مع ضبط alpha نحو إنتروبيا هدف قدرها -1؛ ويقص PPO نسبة الاحتمالات إلى 0.8-1.2 على 10 حقب؛ وتنحدر متغيرات DQN نحو شبكة هدف مع تصحيحات double وdueling.

  4. المراقبة على المحور نفسه

    يعدّ Monitor خطوات البيئة، ويسجل كل عائد تدريب، ويشغّل 5 حلقات تقييم كل eval_every خطوة بالسياسة الحتمية على البذور من 10000 فصاعداً، أي حالات البداية نفسها لكل طريقة.

  5. المقارنة والفحص

    يدرّب pendulum-compare كل طريقة ويكتب جدول النتائج (الخطوات حتى العتبة، والعائد النهائي على 20 حلقة، والزمن الفعلي)، والمنحنيات، والخرائط الحرارية للقيمة / العزم المقيَّمة على شبكة حالات 61x61.

أمثلة

Pendulum مع SAC، من وضع التدلي نفسه: الممثل غير المدرَّب (يساراً) لا يرفع القضيب أبداً (عائد -1846)؛ وبعد 15,000 خطوة تدريب (يميناً) يتأرجح لاكتساب الطاقة، ثم يكبح ويثبّته عمودياً (-244).
Acrobot مع A2C: السياسة غير المدرَّبة (يساراً) لا تصل إلى الخط أبداً في 500 خطوة؛ والمدرَّبة (يميناً) ترفع الطرف فوقه في 88 خطوة.
كل طرق Pendulum من وضع التدلي نفسه، وهو الأصعب، حيث نحو -250 هو أفضل نتيجة ممكنة: يبلغ SAC ‏-244، وDDPG وTD3 نحو -340، وCEM ‏-530.
كل طرق Acrobot من البداية نفسها: ترفع الثماني كلها الطرف فوق الخط، في 64 (REINFORCE) إلى 96 (CEM) خطوة.
ما تعلمه كل وكيل على Pendulum: ‏V(s) على (theta، theta_dot) حيث theta = 0 هو الوضع العمودي (في الأعلى) والعزم (في الأسفل). يجد كل ناقد الشريط القطري نفسه من الحالات التي تنساب حتى القمة؛ وكل سياسة شبه ثنائية (bang-bang).
ما تعلمه كل وكيل على Pendulum: ‏V(s) على (theta، theta_dot) حيث theta = 0 هو الوضع العمودي (في الأعلى) والعزم (في الأسفل). يجد كل ناقد الشريط القطري نفسه من الحالات التي تنساب حتى القمة؛ وكل سياسة شبه ثنائية (bang-bang).
عائد التقييم على Pendulum مقابل خطوات البيئة: يتجاوز SAC وDDPG وTD3 القيمة -200 عند 5-6k خطوة، وPPO عند 20k، وREINFORCE عند 320k، وCEM عند 1.4M.
عائد التقييم على Pendulum مقابل خطوات البيئة: يتجاوز SAC وDDPG وTD3 القيمة -200 عند 5-6k خطوة، وPPO عند 20k، وREINFORCE عند 320k، وCEM عند 1.4M.
عائد التقييم على Acrobot: يصل SARSA(lambda) مع الترميز بالبلاطات إلى -100 أولاً عند 12,500 خطوة؛ وتبلغ الطرق الثماني كلها العتبة أثناء التدريب.
عائد التقييم على Acrobot: يصل SARSA(lambda) مع الترميز بالبلاطات إلى -100 أولاً عند 12,500 خطوة؛ وتبلغ الطرق الثماني كلها العتبة أثناء التدريب.

المدخل

pendulum-train --env pendulum --algo sac && pendulum-eval runs/pendulum/sac/model.pt --episodes 20

المخرج

final return -119.0 ± 82.5 over 20 episodes (15,000 steps, 1.8 min on one CPU thread)

تشغيل SAC الذي يقف وراء جدول النتائج. يأتي الهامش ± 82 من حالات البداية لا من السياسة: البداية قرب القمة تعطي نحو 0، والبداية من التدلي نحو -250.

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

ما تعلمته

الحدود

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

التعلم المعزز · التحكم المستمر · رفع البندول · Acrobot · DDPG · TD3 · SAC · PPO · GAE · طريقة الإنتروبيا المتقاطعة · DQN · SARSA(lambda) · الترميز بالبلاطات · Gymnasium · PyTorch