التعلم المعزز2018متوسط10 دقيقة قراءة

TD3: معالجة خطأ تقريب الدوال في أساليب الممثّل-الناقد

TD3: Addressing Function Approximation Error in Actor-Critic Methods

Fujimoto, S. · van Hoof, H. · Meger, D. — ICML

المشكلة

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

الإسهام

ثلاثة تعديلات محسوبة تُشكّل معاً خوارزمية TD3 (التوأم المتأخّر لـ DDPG). أولاً، التعلّم المزدوج المقتطع للقيمة: ناقدَين واعتماد الأقل من تقديريهما عند حساب الهدف، مما يضع سقفاً للمبالغة في التقدير. ثانياً، تأخير تحديث السياسة: تحديث الممثّل بوتيرة أبطأ من الناقدين ليتقارب تقديرهما قبل أن تتكيّف السياسة. ثالثاً، تنعيم سياسة الهدف: إضافة ضجيج إلى فعل الهدف كنوع من التنظيم يمنع السياسة من استغلال قمم ضيّقة في دالة القيمة. هذه التعديلات مجتمعة حققت أفضل النتائج على كل معيار تحكّم مستمر اختُبرت عليه.

الأثر

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

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

ما يقترحه TD3: اعتمد دائماً على التقييم الأكثر صرامة. لا تُغيّر أسلوبك بعد كل ملاحظة — انتظر حتى يتّفق المديران. وأضف شيئاً من العشوائية في عملية التقييم حتى لا يتمكّن أحد من التلاعب بالنظام.

المشكلة: لماذا يكذب الناقد (نحو الأعلى)

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

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

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

افتح في المختبر
شاهد كيف تتراكم المبالغة في التقدير مع خطوات التدريب. قيمة Q الحقيقية تبقى ثابتة بينما القيمة المقدَّرة تنجرف نحو الأعلى، فتسحب الممثّل نحو أفعال سيئة.
تستيقظ التجربة عند وصولك…

الإصلاح الأول: ناقدان توأمان — ثق دائماً بالأكثر تحفّظاً

الإصلاح الأوّل والأهم هو . يُدرّب TD3 شبكتَي ناقد مستقلتين Qθ1Q_{\theta_1} وQθ2Q_{\theta_2}. وحين يحتاج إلى حساب القيمة المستهدفة لتحديث بِلمان، يأخذ الحدّ الأدنى من تقديري الناقدين.

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

الفكرة كاستشارة طبيبَين: لو أخبرك أحدهما أن كل شيء ممتاز بينما لاحظ الثاني مؤشراً مقلقاً، الخيار العاقل هو التعامل بحذر. TD3 يتبع المنطق نفسه: بين تقديرين لقيمة Q، اعتمد دائماً على الأقل.

y=r+γmini=1,2Qθi(s,a~)y = r + \gamma \min_{i=1,2} Q_{\theta_i'}(s', \tilde{a}')
هدف التعلّم المزدوج المقتطع — جوهر TD3الهدف yy الذي يُدرَّب عليه كلا الناقدين يعتمد على الأقل من تقديري ناقدَي الهدف. rr هو المكافأة، γ\gamma معامل الخصم، ss' الحالة التالية، وa~\tilde{a}' فعل الهدف بعد إضافة الضجيج. كلا الناقدين يتدرّبان نحو هذا الهدف الواحد.
افتح في المختبر
قارن بين ناقد واحد وناقدين توأمين. اضغط «تدريب» لترى كيف يضع عامل الحدّ الأدنى سقفاً للمبالغة بينما ينجرف الناقد الوحيد نحو الأعلى.
تستيقظ التجربة عند وصولك…

الإصلاح الثاني: تأخير تحديث السياسة — دع الناقدين يستقرّان

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

حلّ TD3 بسيط: لا تُحدّث الممثّل (و) إلا مرة واحدة لكل dd تحديث للناقدين، وعملياً d=2d = 2. هذا يمنح الناقدين فرصة لإنتاج تقديرات أدقّ قبل أن يبني الممثّل قراراته عليها.

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

افتح في المختبر
الناقد يُحدَّث كل خطوة، لكن الممثّل لا يُحدَّث إلا كل d=2 خطوة. بدّل بين d=1 وd=2 لترى كيف يُنعّم التأخير مسار تعلّم الممثّل.
تستيقظ التجربة عند وصولك…

الإصلاح الثالث: تنعيم سياسة الهدف — طمس القمم الوهمية

الإصلاح الثالث هو تنعيم . عند حساب قيمة Q المستهدفة، يُضيف TD3 ضجيجاً عشوائياً مقتطعاً إلى الفعل الذي تختاره سياسة الهدف:

a~=πϕ(s)+ϵ,ϵclip(N(0,σ),c,c)\tilde{a}' = \pi_{\phi'}(s') + \epsilon, \quad \epsilon \sim \text{clip}(\mathcal{N}(0, \sigma), -c, c)

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

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

a~=πϕ(s)+clip(ϵ,c,c),ϵN(0,σ)\tilde{a}' = \pi_{\phi'}(s') + \text{clip}(\epsilon, -c, c), \quad \epsilon \sim \mathcal{N}(0, \sigma)
تنعيم سياسة الهدف — تنظيم الناقد عبر أهداف مُضطربةالضجيج ϵ\epsilon المُستخرَج من توزيع غاوسي يُقتطع إلى المجال [c,c][-c, c] ويُضاف إلى فعل سياسة الهدف. هذا يُموّه سطح دالة القيمة ويمنع الممثّل من استغلال قمم المبالغة الضيّقة. القيم الشائعة: σ=0.2\sigma = 0.2، c=0.5c = 0.5.
افتح في المختبر
فعّل التنعيم أو أوقفه لترى كيف يُموّه الضجيج القمم الحادة في سطح القيمة. بدون تنعيم، يستغل الممثّل الارتفاعات الضيقة.
تستيقظ التجربة عند وصولك…

الصورة الكاملة: خوارزمية TD3

يبني TD3 على DDPG بإضافة الإصلاحات الثلاثة معاً. حلقة التدريب تسير كالتالي:

  1. اسحب من الانتقالات (s,a,r,s)(s, a, r, s') من .
  2. احسب فعل الهدف المُضطرب: a~=πϕ(s)+clip(ϵ,c,c)\tilde{a}' = \pi_{\phi'}(s') + \text{clip}(\epsilon, -c, c).
  3. احسب الهدف: y=r+γmini=1,2Qθi(s,a~)y = r + \gamma \min_{i=1,2} Q_{\theta_i'}(s', \tilde{a}').
  4. حدّث كلا الناقدين بتصغير : L(θi)=E[(yQθi(s,a))2]\mathcal{L}(\theta_i) = \mathbb{E}[(y - Q_{\theta_i}(s,a))^2].
  5. كل dd خطوة، حدّث الممثّل بالصعود على تدرّج السياسة: ϕJ(ϕ)=E[aQθ1(s,a)a=πϕ(s)ϕπϕ(s)]\nabla_\phi J(\phi) = \mathbb{E}[\nabla_a Q_{\theta_1}(s,a)|_{a=\pi_\phi(s)} \nabla_\phi \pi_\phi(s)].
  6. كل dd خطوة، نفّذ لجميع شبكات الهدف: θτθ+(1τ)θ\theta' \leftarrow \tau\theta + (1-\tau)\theta'.

الخوارزمية تستخدم البنية التحتية نفسها لـ DDPG — ذاكرة الإعادة وشبكات الهدف و — لكن التعديلات الثلاثة ترفع استقرارها وأداءها بشكل ملحوظ.

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

الفكرة في الكود

خطوة تدريب TD3 — الإصلاحات الثلاثة عملياًpython

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

import numpy as np

def td3_update(actor, critic1, critic2, target_actor, target_c1, target_c2,
               batch, step, d=2, tau=0.005, gamma=0.99, noise_std=0.2, noise_clip=0.5):
    """خطوة تدريب واحدة في TD3 مع الإصلاحات الثلاثة."""
    s, a, r, s_next, done = batch

    # ── الإصلاح 3: تنعيم سياسة الهدف ──
    noise = np.clip(np.random.randn(*a.shape) * noise_std, -noise_clip, noise_clip)
    a_target = np.clip(target_actor(s_next) + noise, -1.0, 1.0)

    # ── الإصلاح 1: التعلّم المزدوج المقتطع ──
    q1_target = target_c1(s_next, a_target)
    q2_target = target_c2(s_next, a_target)
    y = r + gamma * (1 - done) * np.minimum(q1_target, q2_target)  # خذ الأدنى!

    # حدّث كلا الناقدين نحو الهدف ذاته
    critic1.update(s, a, y)    # خسارة MSE: (y - Q1(s,a))^2
    critic2.update(s, a, y)    # خسارة MSE: (y - Q2(s,a))^2

    # ── الإصلاح 2: تأخير تحديث السياسة ──
    if step % d == 0:
        # الممثّل يعظّم Q1 فقط (وليس الحدّ الأدنى — Q1 فحسب)
        actor.update(s, critic1)   # صعود تدريجي على Q1(s, π(s))

        # تحديث ناعم لشبكات الهدف الثلاث
        for target, source in [(target_c1, critic1), (target_c2, critic2),
                               (target_actor, actor)]:
            target.soft_update(source, tau)  # θ' ← τθ + (1−τ)θ'

النتائج: تصدُّر جميع المعايير

اختُبر TD3 على سبع مهام تحكّم مستمر من بيئة OpenAI Gym عبر محاكي MuJoCo — تشمل HalfCheetah وHopper وWalker2d وAnt وReacher وInvertedPendulum وInvertedDoublePendulum. تفوّق على DDPG وSAC (في حينه) وPPO وغيرها من خطوط الأساس في كل بيئة.

أبرز ما كشفته :

  • الناقدان التوأمان وحدهما يُزيلان الجزء الأكبر من المبالغة في التقدير، لكنهما لا يكفيان لإصلاح الأداء بالكامل.
  • التحديث المتأخّر وحده يُساعد على تثبيت التعلّم، لكن أثره أصغر.
  • تنعيم الهدف وحده يعمل كمُنظِّم ويُعزّز المتانة.
  • الثلاثة معاً يحقّقون أفضل النتائج — الإصلاحات متكاملة وليست زائدة عن بعضها.

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

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

لماذا تتكامل هذه الإصلاحات

كل إصلاح يستهدف حلقة مختلفة في سلسلة الفشل نفسها:

مبالغة في التقدير ← أهداف خاطئة ← ناقد سيء ← ممثّل سيء ← مبالغة أكبر

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

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

الإرث: من DDPG إلى التحكّم المستمر الحديث

  1. 2015

    DDPG (ليليكراب وآخرون)

    أول خوارزمية ممثّل-ناقد عميقة نجحت في التحكّم المستمر. أدخلت شبكات الهدف وذاكرة الإعادة لتثبيت التدريب، لكنها عانت من تحيّز المبالغة في التقدير وحساسية شديدة للمعاملات الفائقة.

  2. 2016

    Double DQN (فان هاسلت وآخرون)

    عالج مشكلة المبالغة في التقدير ضمن التعلّم بالقيمة للأفعال المنفصلة عبر فصل اختيار الفعل عن تقييمه. TD3 نقل هذه الفكرة إلى إطار الممثّل-الناقد ذي الأفعال المستمرة.

  3. 2018

    TD3 (هذه الورقة)

    ثلاثة إصلاحات — ناقدان توأمان، تأخير التحديث، تنعيم الهدف — تُعالج مجتمعةً مشكلة المبالغة في التقدير في بنية الممثّل-الناقد. تصدّرت جميع معايير MuJoCo.

  4. 2018

    SAC (هارنويا وآخرون)

    الممثّل-الناقد المرن تبنّى فكرة الناقدين التوأمين من TD3 وأضاف تنظيم الإنتروبيا القصوى لدعم السياسات العشوائية. أصبح الخوارزمية المهيمنة في التحكّم المستمر إلى جانب TD3.

  5. 2019

    TD3 يصبح المعيار المرجعي

    باتت كل ورقة تقريباً في التحكّم المستمر بالتعلّم المعزّز تُقارن أداءها بـ TD3 كمعيار مرجعي أساسي. ونمط الناقدين التوأمين تحوّل إلى خيار معماري شبه تلقائي.

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

المرجعFujimoto, van Hoof, Meger. Addressing Function Approximation Error in Actor-Critic Methods. ICML, 2018.

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