التعلم المعزز2016متوسط8 دقيقة قراءة
التعلّم المعزّز العميق بأسلوب Q المزدوج
Deep Reinforcement Learning with Double Q-Learning
van Hasselt, H. · Guez, A. · Silver, D. — AAAI
المشكلة
نجحت DQN في تحقيق أداء بمستوى البشر على عشرات من ألعاب Atari، لكن تبيّن أن تقديراتها لقيم Q كانت مُضخَّمة بشكل منهجي. المشكلة أن عملية max تقوم بدورين في آنٍ واحد: تختار أفضل فعل وتقيّمه في الوقت ذاته، وكلاهما يعتمد على التقديرات المشوَّشة نفسها. هذا الاقتران يولّد انحيازاً تصاعدياً يُضخّم القيم ويُزعزع ، وقد يدفع العميل نحو سياسات أسوأ ممّا يمكنه تحقيقه فعلياً.
الإسهام
الفكرة الأساسية في Double DQN هي فصل مهمّة الاختيار عن مهمّة التقييم. الشبكة الحالية (online) تختار أفضل فعل، (target) تقدّر قيمته. هذا التعديل لا يتعدّى سطراً واحداً في حساب الهدف، لكنه يُزيل الجزء الأكبر من التضخّم في التقديرات ويُنتج سياسات أفضل على معيار Atari، دون أي تكلفة حوسبية إضافية لأن DQN تملك شبكة هدف بالفعل.
الأثر
صار Double DQN تحسيناً أساسياً يُضاف تلقائياً لكل عميل حديث يعمل بأسلوب القيم. Rainbow (2018) يتضمّنه كأحد مكوّناته الستة، ومبدأ فصل الاختيار عن التقييم انتقل إلى التحكم في الفضاءات المستمرة عبر TD3. الورقة أثبتت أن تعديلاً بسيطاً مستنداً إلى فكرة نظرية عمرها عقد من الزمن يمكن أن يُحدث فرقاً جوهرياً في نظام تعلّم معزّز عميق، وفتحت الباب لموجة من التحسينات المركّزة على DQN.
تخيّل مسابقة مواهب يتولّى فيها حكم واحد ترشيح الفائز وتقييمه في آنٍ واحد. لو كان انطباعه عن المتسابق C مشوَّشاً بالإيجاب، سيرشّحه بسبب ذلك التشويش — ثم يمنحه درجة عالية للسبب نفسه. مع تكرار الجولات، تتصاعد درجات الفائزين باستمرار حتى لو لم يتحسّن أداء أحد فعلياً.
ما يفعله Double DQN هو توزيع المهمّتين: حكم يرشّح، وحكم آخر يقيّم. بهذه الطريقة لا يستطيع تشويش حكم الترشيح أن يُضخّم التقييم، فتبقى الدرجات صادقة.
المشكلة: شبكة DQN تبالغ في تقدير قيم Q
في ، يتعلّم دالة تقدّر إجمالي المستقبلية عند اتخاذ الفعل في . عند التحديث، نحسب هدفاً يعتمد على أقصى قيمة بين الأفعال المتاحة في الحالة التالية:
المشكلة في عملية max تحديداً. حتى لو كان التشويش في تقدير كل فعل متمركزاً حول الصفر، فإن اختيار الأعلى بين عدة تقديرات مشوَّشة يميل دائماً نحو الأعلى — لأنك تختار التقدير الذي «حالفه الحظ» في التشويش. هذا هو ما يُسمّى .
DQN فاقمت المشكلة بالجمع بين — الذي يُدخل خطأ التقريب — وبين الذي يُمرّر ذلك الخطأ من تقدير إلى آخر. النتيجة: قيم Q مرتفعة على الورق لكنها لا تعكس الأداء الحقيقي.
لماذا تضرّ المبالغة في التقدير بعملية التعلّم
ليست مجرد رقم خاطئ على الشاشة — بل تُفسد العميل فعلياً من ثلاث جهات:
-
اضطراب التدريب. القيم المتضخّمة تولّد أخطاء TD كبيرة تجعل أوزان الشبكة تتأرجح بعنف، فيصعب الوصول إلى .
-
اختيارات خاطئة للأفعال. إذا تضخّم تقدير الفعل A أكثر من B، يختار العميل A حتى لو كان B هو الأفضل فعلياً. بمعنى آخر، السياسة تنحرف نحو أفعال دون المستوى الأمثل.
-
تراكم الخطأ. لأن تعلّم Q يعتمد على التمهيد الذاتي — أي يستخدم تقديراً لتحديث تقدير آخر — فإن المبالغة في حالة واحدة تنتشر إلى كل الحالات التي تسبقها، مُحدثةً تراكماً متصاعداً يشبه كرة الثلج.
الحل: فصل الاختيار عن التقييم
الفكرة الأصلية لـ (van Hasselt, 2010) استخدمت جدولين مستقلين لقيم Q: واحد للاختيار وآخر للتقييم، ويُختار بينهما عشوائياً. لكن DQN تملك أصلاً شبكتين: الشبكة الحالية التي تُحدَّث كل خطوة، وشبكة الهدف وهي نسخة بطيئة تُزامَن دورياً. الفكرة الذكية: لنستفد منهما!
- الشبكة الحالية تختار الفعل الأفضل:
- شبكة الهدف تقيّم ذلك الفعل:
هذا هو كامل التعديل — سطر واحد في حساب الهدف:
تخيّل الأمر كـخزنة بمفتاحين: الشبكة الحالية تحمل مفتاح الاختيار، وشبكة الهدف تحمل مفتاح التقييم. لا يمرّ أي تقدير إلا إذا توافق المفتاحان، فلا تستطيع شبكة بمفردها أن تُضخّم النتيجة.
مقارنة جنباً إلى جنب: هدف DQN مقابل هدف Double DQN
الفرق الوحيد بين الخوارزميتين هو طريقة حساب الهدف. كل ما عدا ذلك — ، بنية الشبكة، حلقة التدريب — يظلّ كما هو تماماً.
التعديل في الشيفرة البرمجية
مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.
import torch
def dqn_target(reward, next_state, gamma, target_net):
"""DQN العادي: شبكة الهدف تختار وتقيّم معاً."""
with torch.no_grad():
# الشبكة نفسها تختار وتقيّم — مبالغة في التقدير!
max_q = target_net(next_state).max(dim=1).values
return reward + gamma * max_q
def double_dqn_target(reward, next_state, gamma, online_net, target_net):
"""Double DQN: الشبكة الحالية تختار، وشبكة الهدف تقيّم."""
with torch.no_grad():
# الخطوة 1: الشبكة الحالية تختار أفضل فعل
best_actions = online_net(next_state).argmax(dim=1, keepdim=True)
# الخطوة 2: شبكة الهدف تقيّم ذلك الفعل
q_values = target_net(next_state).gather(1, best_actions).squeeze()
return reward + gamma * q_values
# هذا كل شيء. عملية argmax واحدة + gather واحدة بدلاً من max واحدة.
# كل شيء آخر في حلقة تدريب DQN يبقى كما هو تماماً.لماذا تبالغ الأعظمية في التقدير؟ نظرة أعمق
لتوضيح الفكرة رياضياً: لنفترض أن لدينا فعل وكلها بقيمة حقيقية ، لكن كل تقدير يحمل تشويشاً من توزيع . القيمة المتوقعة لأعلى تقدير بين الجميع هي:
هذه القيمة موجبة دائماً وتكبر كلّما زاد التشويش أو زاد عدد الأفعال . ليس الأمر خللاً برمجياً — بل هي خاصية رياضية تنشأ حتماً عند أخذ الحدّ الأعلى من تقديرات مشوَّشة.
التعلّم المزدوج يكسر هذه الحلقة باستخدام مقدِّر مستقل للتقييم. حين يكون تشويش الاختيار غير مرتبط بتشويش التقييم، يختفي الانحياز الموجب.
النتائج على ألعاب Atari
اختبر van Hasselt وزملاؤه Double DQN على كامل الألعاب الـ49 من ورقة DQN الأصلية، وجاءت النتائج واضحة:
-
دقة التقديرات. قيم Q في Double DQN كانت أقرب بكثير إلى العوائد الحقيقية. بعض الألعاب كانت DQN تبالغ فيها بـ5 إلى 10 أضعاف، بينما تقديرات Double DQN جاءت قريبة جداً من الواقع.
-
سياسات أفضل. رغم أن قيم Q كانت أقل عددياً، حقّق Double DQN نتائج لعب أعلى في أغلب الألعاب — ممّا يؤكد أن الدقة في التقدير تترجَم مباشرةً إلى قرارات أفضل.
-
استقرار أعلى. منحنيات التدريب كانت أكثر سلاسة، مع حالات أقل من الانهيار المفاجئ الذي يفقد فيه العميل ما تعلّمه.
خوارزمية Double DQN الكاملة
الخوارزمية مطابقة تماماً لـDQN ما عدا حساب الهدف. إليك حلقة التدريب بالكامل:
- راقب الحالة ، واختر الفعل بأسلوب على الشبكة الحالية
- نفّذ ، واحصل على المكافأة والحالة التالية
- خزّن الانتقال في
- اسحب عشوائية من الانتقالات
- احسب أهداف Double DQN: الشبكة الحالية تختار، وشبكة الهدف تقيّم
- حدّث أوزان الشبكة الحالية بـ على خسارة TD
- كل خطوة، انسخ أوزان الشبكة الحالية إلى شبكة الهدف
الخطوات 1–4 و6–7 هي DQN الأصلية. الخطوة 5 فقط هي التي تختلف.
موقع Double DQN في الصورة الأكبر
Double DQN جزء من سلسلة تحسينات استهدفت نقاط ضعف DQN واحدةً تلو الأخرى:
- DQN (2015) — الأساس: تعلّم Q العميق مع إعادة تشغيل الخبرات وشبكة الهدف.
- Double DQN (2016) — يعالج تضخّم التقديرات بفصل الاختيار عن التقييم.
- Dueling DQN (2016) — يفصل قيمة الحالة عن ، ممّا يحسّن التعميم.
- إعادة التشغيل ذات الأولوية (2016) — تُكرّر الانتقالات الأهم بوتيرة أعلى.
- Rainbow (2018) — يجمع ستة تحسينات في عميل واحد، ويُثبت أنها متكاملة لا متعارضة.
2010
التعلّم المزدوج بأسلوب Q (جدولي)
استخدم van Hasselt جدولين مستقلين لقيم Q، يُختار عشوائياً أيّهما يتولّى الاختيار وأيّهما يتولّى التقييم. أثبت أن هذا الأسلوب يُزيل انحياز المبالغة في الحالة الجدولية.
2015
DQN — تحكّم بمستوى البشر
جمع Mnih وفريقه بين تعلّم Q العميق وإعادة تشغيل الخبرات وشبكة الهدف، فحقّقوا أداءً بمستوى البشر في 49 لعبة Atari. نُشر العمل في Nature.
2016
Double DQN
نقل van Hasselt وGuez وSilver فكرة المقدِّر المزدوج إلى DQN. تعديل من سطر واحد بلا تكلفة إضافية، لكنّه أحدث تحسّناً جوهرياً في دقة القيم وجودة السياسات.
2016
Dueling DQN
قسّم Wang وفريقه الشبكة إلى فرعين: واحد لقيمة الحالة وآخر لميزة الفعل. التعديل مستقل عن Double DQN ويُدمجان معاً في العادة.
2018
Rainbow
دمج Hessel وفريقه ستة تحسينات لـDQN — المزدوج، والمبارزة، وإعادة التشغيل ذات الأولوية، والخطوات المتعددة، والتوزيعي، والشبكات المشوَّشة — في عميل واحد تصدّر نتائج Atari.
2018
TD3
وسّع Fujimoto وفريقه مبدأ التقدير المزدوج ليشمل الأفعال المستمرة، باستخدام ناقدَيْن توأمين يتبعان الفلسفة نفسها في مقاومة التضخّم.
الرؤية الجوهرية
المرجعvan Hasselt, Guez, Silver. Deep Reinforcement Learning with Double Q-Learning. AAAI, 2016.
مصطلحات هذه الورقة
- Q-Learning المزدوجDouble Q-Learning
- الشبكة العميقة لتعلم الجودةDeep Q-Network (DQN)
- المبالغة في التقديرOverestimation
- انحياز التعظيمMaximization Bias
- شبكة الهدفTarget Network
- إعادة تشغيل التجاربExperience Replay
- دالة قيمة الفعل المتخذAction-Value Function (Q-Function)
- معادلة بيلمان الرياضيةBellman Equation
- الاستكشاف (تجربة أفعال جديدة)Exploration