التعلم المعزز2015متوسط9 دقيقة قراءة

التحكم المستمر بالتعلُّم المعزِّز العميق

Continuous Control with Deep Reinforcement Learning

Lillicrap, T. P. · Hunt, J. J. · Pritzel, A. · Heess, N. · Erez, T. · Tassa, Y. · Silver, D. · Wierstra, D. — ICLR

المشكلة

أثبتت شبكة DQN أن الشبكات العصبية العميقة تستطيع إتقان ألعاب Atari حين تكون الأفعال منفصلة — اختر الزر 1 أو 2 أو 3. لكن أغلب مسائل التحكم الواقعية تحتاج فضاء أفعال مستمرّاً: كم عزماً نطبّق على المحرّك؟ بأيّ زاوية نوجّه العجلة؟ بأيّ شدّة ندفع؟ من المستحيل استعراض كل رقم حقيقي للعثور على أعلى قيمة Q، وبالتالي فإن الحيلة الأساسية في DQN — البحث عن القيمة القصوى بين الأفعال — تتعطّل تماماً. أمّا تقسيم فضاء الأفعال إلى خانات منفصلة فيُسبّب انفجاراً أُسِّياً: ذراع آلية ذات سبعة مفاصل، كل مفصل مقسّم إلى 10 خانات، تعني 10 ملايين فعل منفصل في كل خطوة.

الإسهام

DDPG خوارزمية ممثل-ناقد لا تحتاج نموذجاً للبيئة وتعمل خارج ، وتنقل أفكار DQN إلى عالم الأفعال المستمرة. شبكة الممثل تُنتج فعلاً مستمراً حتمياً مباشرةً، وشبكة الناقد تُقيِّم ذلك الفعل عبر معادلة بِلمان. أربع آليات لتثبيت التدريب — إعادة تشغيل الخبرات، والشبكات الهدفية ، وتسوية الدُّفعات، وضوضاء استكشاف أورنشتاين-أولِنبِك — تمنع التدريب من الانهيار. الخوارزمية ذاتها بالبنية والمعاملات الفائقة نفسها حلّت أكثر من 20 مهمة فيزيائية محاكاة: موازنة عمود، وبندول، ومشي، وإمساك أشياء، وقيادة سيارة.

الأثر

كان DDPG أول خوارزمية تُبرهن أن التعلّم المعزِّز العميق قادر على التعامل مع التحكم المستمر عالي الأبعاد. صار المرجع الأساسي لتعلّم الأفعال المستمرة، وألهم مباشرةً TD3 (الذي عالج مشكلة المبالغة في تقدير القيمة وعدم الاستقرار) وSAC (الذي أضاف تنظيم الإنتروبيا لتحسين الاستكشاف). قالب الممثل-الناقد مع الشبكات الهدفية وذاكرة الخبرات لا يزال يشكّل العمود الفقري لخوارزميات التحكم المستمر الحديثة، من التلاعب الآلي بالأجسام وصولاً إلى القيادة الذاتية.

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

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

DQN كان الطالب الذي لا يعرف سوى الضغط على أزرار (أفعال منفصلة). أمّا DDPG فهو الطالب الذي تعلّم تحريك العصا إلى أي موضع على مقياس متّصل.

المشكلة: DQN لا يستطيع التعامل مع مقياس متّصل

DQN حقّقت نتائج مبهرة في ألعاب Atari عبر تعلّم لكل زوج (، فعل)، ثم انتقاء الفعل صاحب أعلى قيمة. آلية البحث عن القيمة القصوى (argmax) تعمل جيداً حين تكون الأفعال أزراراً على ذراع تحكم — مجموعة صغيرة ومحدودة — لكنها تنهار تماماً حين يصبح الفعل رقماً حقيقياً كزاوية توجيه أو عزم دوران محرّك.

الحل البديهي هو تقطيع النطاق المتّصل إلى خانات: مثلاً نقسّم التوجيه من −1 إلى +1 إلى 100 شريحة. لكن إن كان لديك nn مفصلاً وكل مفصل مقسّم إلى kk خانة، فعدد الأفعال المنفصلة يصبح knk^n — انفجار أُسِّي. ذراع آلية بسبعة مفاصل و10 خانات لكل مفصل تعني 10 ملايين فعل في كل خطوة واحدة. لا يمكن لأي شبكة أن تُقيّمها كلها لتجد الأفضل.

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

افتح في المختبر
يسار: أفعال منفصلة (DQN ينتقي من مجموعة ثابتة). يمين: أفعال مستمرة (DDPG يُنتج قيماً دقيقة). جرّب تغيير عدد الخانات لتلاحظ كيف ينفجر عدد التوليفات.
تستيقظ التجربة عند وصولك…

الفكرة: شبكة تقترح وأخرى تُقيِّم

حل DDPG يقوم على بنية ، مكيَّفة هنا للأفعال المستمرة الحتمية. الفكرة بسيطة: شبكة تقترح الفعل وشبكة أخرى تحكم عليه.

الممثل μ(sθμ)\mu(s \mid \theta^\mu) يستقبل الحالة ويُنتج فعلاً مستمراً مباشرةً — لا توزيعاً احتمالياً، بل رقماً دقيقاً واحداً (أو من الأرقام إن كان فضاء الأفعال متعدّد الأبعاد). تخيّله كدالة تربط «ما أراه الآن» بـ«ما سأفعله».

الناقد Q(s,aθQ)Q(s, a \mid \theta^Q) يأخذ الحالة والفعل الذي اقترحه الممثل، ثم يُنتج رقماً واحداً: تقديره لإجمالي المستقبلية إن اتّخذنا ذلك الفعل في تلك الحالة. ببساطة، الناقد يجيب عن سؤال: «ما مدى جودة هذا الفعل بالذات؟»

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

افتح في المختبر
تتبّع مسار البيانات: الحالة تدخل الممثل، ثم الفعل ينتقل إلى الناقد مصحوباً بالحالة، والتدرّج يتدفّق عكسياً عبر الشبكتين معاً.
تستيقظ التجربة عند وصولك…

قواعد التعلُّم

يتعلّم الناقد بتقليل الفارق بين تقديره الحالي لـQ وبين هدف أحادي الخطوة — تماماً كما في DQN، لكن مع فارق جوهري: «الفعل التالي» هنا يأتي من الممثل بدلاً من البحث عن القيمة القصوى:

L(θQ)=E(s,a,r,s)R[(Q(s,aθQ)y)2],y=r+γQ(s,μ(sθμ)θQ)L(\theta^Q) = \mathbb{E}_{(s,a,r,s') \sim \mathcal{R}} \Big[ \big( Q(s,a \mid \theta^Q) - y \big)^2 \Big], \quad y = r + \gamma \, Q'\big(s', \mu'(s' \mid \theta^{\mu'}) \mid \theta^{Q'}\big)
خسارة الناقد — انحدار بِلمان أحادي الخطوةy هو الهدف: المكافأة الحالية مضافاً إليها القيمة المخصومة للحالة التالية. الفعل التالي يختاره ممثل الهدف μ'، ويُقيّمه ناقد الهدف Q'. علامة (') تشير إلى الشبكات الهدفية — نُسخ تُحدَّث ببطء شديد لتثبيت عملية التعلُّم.

أمّا الممثل فيتعلّم بتتبّع التدرّج الذي يزيد Q — أي «عدِّل مخرجاتك في الاتجاه الذي يراه الناقد أفضل»:

θμJEsR[aQ(s,aθQ)a=μ(s)θμμ(sθμ)]\nabla_{\theta^\mu} J \approx \mathbb{E}_{s \sim \mathcal{R}} \Big[ \nabla_a Q(s, a \mid \theta^Q) \Big|_{a=\mu(s)} \cdot \nabla_{\theta^\mu} \mu(s \mid \theta^\mu) \Big]
تدرُّج السياسة الحتمية — قاعدة تحديث الممثلقاعدة السلسلة عبر الناقد: أولاً، كيف تتغيّر Q بتغيّر الفعل (∇ₐQ)؟ ثم كيف يتغيّر مُخرَج الممثل بتغيّر معاملاته (∇θμ)؟ نضرب الاثنين فنحصل على اتجاه التحسين.

أربع آليات تجعل الخوارزمية تعمل

بنية الممثل والناقد في صورتها الخام مع غير مستقرّة — الناقد يطارد هدفاً يتحرّك باستمرار، والممثل بدوره يطارد ناقداً متحرّكاً. لذلك يستعير DDPG أربع آليات لتثبيت التدريب ويوسّعها:

1. — كل انتقال (s,a,r,s)(s, a, r, s') يُخزَّن في ، ثم تُسحب منها عيّنات عشوائية للتدريب. الفائدة مزدوجة: أولاً، هذا يكسر الارتباط الزمني بين العيّنات المتتالية (الذي كان سيُحرّف التدرّج)، وثانياً يسمح بإعادة استخدام كل خبرة مرّات عديدة فترتفع كفاءة استغلال البيانات بشكل كبير. تخيّلها ككتاب مرجعي يجمع رحلات طيران سابقة يعود إليه الطالب بدل أن يعتمد فقط على ما يحدث الآن.

2. بالتحديث الناعم — لو استخدمنا نفس الشبكة لحساب الهدف وتحديث في آن واحد، لنشأت حلقة تغذية راجعة تُفقد التعلّم استقراره. الحل: يحتفظ DDPG بنُسخ تُحدَّث ببطء شديد وفق القاعدة θτθ+(1τ)θ\theta' \leftarrow \tau\theta + (1-\tau)\theta'. مع قيمة τ=0.001\tau = 0.001، تنزاح الأهداف برفق بدلاً من أن تقفز فجأةً، فتُمنع التذبذبات والتباعد اللذان أصابا التعلّم المعزِّز العصبي في مراحله الأولى. هذا يختلف عن أسلوب DQN الذي كان ينسخ الشبكة بالكامل دورياً — التحديث الناعم أكثر سلاسة وأثبت أنه أنسب للمجالات المستمرة.

θτθ+(1τ)θ,τ1\theta' \leftarrow \tau \, \theta + (1 - \tau) \, \theta', \quad \tau \ll 1
التحديث الهدفي الناعم — قاعدة الدفتر المرجعيبعد كل خطوة تدريب، تتحرّك المعاملات الهدفية θ' بخطوة صغيرة جداً نحو المعاملات الحالية θ. بقيمة τ = 0.001، يعني هذا 99.9% من القديم و0.1% من الجديد في كل خطوة — انزياح بطيء للغاية ومستقر للغاية.

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

4. الاستكشاف (أورنشتاين-أولِنبِك) — السياسة الحتمية تُنتج الفعل ذاته دائماً لنفس الحالة، فلا تستكشف من تلقاء نفسها أبداً. لذلك يُضيف DDPG ضوضاء مترابطة زمنياً من عملية أورنشتاين-أولِنبِك: at=μ(stθμ)+Nta_t = \mu(s_t \mid \theta^\mu) + \mathcal{N}_t. هذه العملية تولّد ضوضاء تنجرف بسلاسة بدل القفز العشوائي — وهذا مناسب تحديداً للأنظمة الفيزيائية ذات القصور الذاتي، حيث الحركات المتقطّعة العشوائية تكون مجرّد هدر.

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

الخوارزمية الكاملة بنظرة شاملة

افتح في المختبر
تقدّم خطوة بخطوة في حلقة تدريب DDPG. كل خطوة تُبرز المكوِّن النشط.
تستيقظ التجربة عند وصولك…

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

حلقة تدريب الممثل-الناقد في DDPG (مبسَّطة)python

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

import numpy as np

def soft_update(target_params, current_params, tau=0.001):
    """دمج تدريجي للشبكة الحالية في الشبكة الهدفية."""
    for tp, cp in zip(target_params, current_params):
        tp[:] = tau * cp + (1 - tau) * tp

def ddpg_step(actor, critic, target_actor, target_critic,
              replay_buffer, batch_size=64, gamma=0.99, tau=0.001):
    """خطوة تدريب واحدة في DDPG."""
    # 1. سحب دفعة مصغّرة من ذاكرة الخبرات
    states, actions, rewards, next_states = replay_buffer.sample(batch_size)

    # 2. حساب قيم Q الهدفية (عبر الشبكات الهدفية)
    next_actions = target_actor(next_states)           # الممثل الهدفي يختار الفعل التالي
    target_Q = rewards + gamma * target_critic(next_states, next_actions)

    # 3. تحديث الناقد: تقليل خطأ بِلمان
    critic_loss = mean_squared_error(critic(states, actions), target_Q)
    critic.update(critic_loss)

    # 4. تحديث الممثل: اتّباع التدرّج الذي يرفع Q
    #    قاعدة السلسلة: d(Q)/d(theta_actor) = d(Q)/d(a) * d(a)/d(theta_actor)
    predicted_actions = actor(states)
    actor_loss = -critic(states, predicted_actions).mean()  # تعظيم Q
    actor.update(actor_loss)

    # 5. تحديث ناعم لكلتا الشبكتين الهدفيتين
    soft_update(target_actor.params, actor.params, tau)
    soft_update(target_critic.params, critic.params, tau)

# أثناء جمع البيانات:
# action = actor(state) + OU_noise()   ← استكشاف
# next_state, reward = env.step(action)
# replay_buffer.store(state, action, reward, next_state)

ما الذي يستطيع DDPG تحقيقه

بنفس بنية الشبكة والمعاملات الفائقة ذاتها — دون أي تعديل — حلّ DDPG أكثر من 20 مهمة تحكم مستمر في محاكي MuJoCo: موازنة عمود بقوة مستمرة، وتأرجح بندول بمحرّك واحد، ومشي جسم شبيه بالإنسان، وتحكم دقيق بالأصابع، وقيادة سيارة — مهام يتراوح فيها فضاء الأفعال من بُعد واحد إلى 26 بُعداً.

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

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

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

القيود وما جاء بعدها

DDPG فتح الباب لكنه حمل نقاط ضعف واضحة تولّى خلفاؤه معالجتها:

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

الحساسية الشديدة لـالمعاملات الفائقة — DDPG يحتاج ضبطاً دقيقاً لمعاملات الضوضاء و وأحجام الشبكة. تغييرات طفيفة قد تُسبّب انهياراً كاملاً في الأداء.

استكشاف محدود — السياسة الحتمية مع ضوضاء OU محدودة الفاعلية. SAC استبدلها بسياسة عشوائية تسعى لتعظيم المكافأة و في آن واحد، فتوازن تلقائياً بين الاستكشاف و.

رغم هذه القيود، يظلّ القالب الذي أرساه DDPG — الممثل والناقد مع الشبكات الهدفية وذاكرة الخبرات — المخطط الأساسي الذي بُني عليه TD3 وSAC وتقريباً كل خوارزمية تحكم مستمر حديثة في .

المرجعLillicrap, Hunt, Pritzel, Heess, Erez, Tassa, Silver, Wierstra. Continuous Control with Deep Reinforcement Learning. ICLR, 2016.

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