8 ديسمبر 2025
Misraj AI
AI
الفكرة الأساسية لنظرية توزيع بيلمان هي طرح الأسئلة التالية. إذا كان بوسعنا نمذجة توزيع المكافآت المستقبلية الإجمالية، فلماذا نقتصر على القيمة المتوقعة (أي 𝑄 ( 𝑠 , 𝑎 ))؟ هناك العديد من الفوائد لتعلم...
الفكرة الأساسية لنظرية توزيع بيلمان هي طرح الأسئلة التالية. إذا كان بوسعنا نمذجة توزيع المكافآت المستقبلية الإجمالية، فلماذا نقتصر على القيمة المتوقعة (أي 𝑄 ( 𝑠 , 𝑎 ))؟ هناك العديد من الفوائد لتعلم التوزيع التقريبي بدلاً من توقعه التقريبي.
لنفترض أن أحد الركاب يقود سيارته إلى العمل كل صباح. نريد أن نصمم نموذجًا لإجمالي وقت التنقل في الرحلة. في الظروف العادية، تكون حركة المرور خالية وتستغرق الرحلة حوالي 30 دقيقة. ومع ذلك، تحدث حوادث المرور من حين لآخر (على سبيل المثال، حوادث السيارات، أو تعطل السيارة في منتصف الطريق السريع، وما إلى ذلك)، وإذا حدث ذلك، فسيؤدي ذلك عادةً إلى توقف حركة المرور وإضافة ساعة إلى الرحلة (أي 90 دقيقة). لنفترض أن حادث مروري مثل هذا يحدث مرة واحدة كل 5 أيام في المتوسط. إذا استخدمنا القيمة المتوقعة للنمذجة، وقت التنقل في الرحلة، فسيكون وقت التنقل المتوقع 30 + 60 / 5 = 42 دقيقة. ومع ذلك، فإننا نعلم أن مثل هذا الرقم المتوقع ليس ذا معنى كبير، لأنه يبالغ في تقدير وقت التنقل في معظم الأوقات، ويقلل بشكل كبير من وقت التنقل عندما تحدث حوادث المرور. إذا تعاملنا بدلاً من ذلك مع إجمالي وقت التنقل كمتغير عشوائي وقمنا بنمذجة توزيعه، فيجب أن يبدو على النحو التالي:
لاحظ أن توزيع وقت التنقل ثنائي النمط. ففي أغلب الأحيان تستغرق الرحلة 30 دقيقة في المتوسط، ولكن إذا وقع حادث مروري، فإن وقت التنقل يستغرق 90 دقيقة في المتوسط. ونظرا للصورة الكاملة للتوزيع، فمن الأفضل في المرة القادمة عندما نتوجه إلى العمل أن نبحث عن حالة المرور على الطريق السريع. فإذا تم الإبلاغ عن حادث مروري، فيمكننا اختيار ركوب الدراجة للذهاب إلى العمل، وهو ما يستغرق حوالي 60 دقيقة، وهو ما قد يوفر علينا 30 دقيقة!
في التعلم التعزيزي، نستخدم معادلة بيلمان لتقريب القيمة المتوقعة للمكافآت المستقبلية. وكما هو موضح في مثال وقت التنقل أعلاه، إذا كانت البيئة عشوائية بطبيعتها (وقوع حوادث مرورية) وتتبع المكافآت المستقبلية توزيعًا متعدد الوسائط (وقت تنقل موزع بشكل ثنائي الوسائط)، فإن اختيار الإجراءات بناءً على القيمة المتوقعة قد يؤدي إلى نتيجة دون المستوى الأمثل. في المثال أعلاه، إذا أدركنا أن حادثًا مروريًا قد وقع ومن المرجح أن يستغرق الوصول إلى المكتب 90 دقيقة، فسيكون الإجراء الأمثل هو ركوب الدراجة حتى لو كان وقت التنقل المتوقع لركوب الدراجة 60 دقيقة وهو أكبر من وقت التنقل المتوقع للقيادة (42 دقيقة).

من الفوائد الواضحة الأخرى لنمذجة التوزيع بدلاً من القيمة المتوقعة أنه في بعض الأحيان، على الرغم من أن المكافآت المستقبلية المتوقعة لفعلين متطابقة، فقد تكون فروقهما مختلفة جدًا. إذا كنا نكره المخاطرة، فسيكون من الأفضل اختيار الفعل الذي يحتوي على تباين أصغر. باستخدام مثال وقت التنقل مرة أخرى، إذا كان لدينا فعلان للاختيار من بينهما القيادة أو ركوب القطار، فإن كلا الفعلين لهما نفس وقت التنقل المتوقع (أي 42 دقيقة)، ولكن ركوب القطار له تباين أصغر لأنه لا يتأثر بظروف المرور غير المتوقعة. يفضل معظم الناس ركوب القطار على القيادة.
اقترح بيلمار وآخرون (2017) تعلم توزيع القيمة (توزيع احتمالات العوائد) من خلال تعديل معادلة بيلمان. وقد أظهروا أن تعلم التوزيع الكامل للمكافآت بدلاً من متوسطها يؤدي إلى تحسينات في الأداء في ألعاب أتاري مقارنة بالإصدارات الحديثة من DQN.
إن تصنيف DQN المقترح (يُسمى أيضًا C51) له بنية تعتمد على DQN، ولكن طبقة الإخراج تتوقع توزيع العائدات لكل إجراء 𝑎 في الحالة 𝑠 بدلاً من متوسطه 𝑄𝜋 ( 𝑠 ، 𝑎 ). في الممارسة العملية، يتم تمثيل كل إجراء a بواسطة 𝑁 من الخلايا العصبية الإخراجية، والتي تشفر دعم توزيع العائدات. إذا أخذت العائدات قيمًا بين 𝑉𝑚𝑖𝑛 و𝑉𝑚𝑎𝑥 ، فيمكن للمرء أن يمثل توزيعها 𝑍 عن طريق أخذ 𝑁 "حاويات" منفصلة (تسمى ذرات في الورقة) في هذا النطاق. يوضح الشكل 2 كيف يمكن تمثيل توزيع العائدات بين -10 و10 باستخدام 21 ذرة.

بالطبع، تكمن المشكلة الرئيسية في معرفة نطاق العائدات مسبقًا [ 𝑉𝑚𝑖𝑛 ، 𝑉𝑚𝑎𝑥 ] (يعتمد ذلك إلى حد كبير على اختيار معدل الخصم 𝛾
يمكنك استنتاج ذلك من تدريب خوارزمية أخرى مثل DQN مسبقًا. تخلص Dabney et al. (2017) من هذه المشكلة باستخدام الانحدار الكمي . في الورقة، اكتشف المؤلفون تجريبياً أن 51 هو العدد الأكثر كفاءة للذرات (ومن هنا جاء الاسم C51).
لنلاحظ 𝑧ᵢ هذه الذرات مع 1 ≤ 𝑖 < 𝑁 . احتمالية الذرة بأن يكون العائد المرتبط بزوج الحالة-الفعل ( 𝑠 , 𝑎 ) يقع داخل الصندوق المرتبط بالذرة هي ( , ). يمكن التنبؤ بهذه الاحتمالات بواسطة شبكة عصبية، عادةً باستخدام دالة سوفت ماكس على المخرجات ( , )
#حجم المثال التدريبي
BATCH_SIZE=32# حجم الإطار هو الموتر المدخل للنموذج.
العرض=84
الارتفاع=84
القنوات=4# عدد الدعم في معامل التوزيع المنفصل
ATOMS=51
# النطاق الذي تم استخلاص قيمة الدعم منه.
VMIN=-10
VMAX=10#عدد الإجراءات
ACTIONS=4 #env.action_space.n# حجم الخطوة بين الدعامات
DELTA_Z=(VMAX-VMIN)/(ATOMS-1)# معلمة التوزيع.
Z=np.linspace(VMIN,VMAX,ATOMS,dtype=np.float32)
النموذج له نفس بنية Mnih وما إلى ذلك 2015 ولكننا نطبق دالة softmax على طبقة الإخراج لحساب دالة mas الاحتمالية للتوزيع.
يأخذ الإخراج شكل (BatchSize,Actions*Atoms)، لذا نحاول العثور على التوزيع على كل إجراء.
نقوم بإعادة تشكيل الناتج ليصبح (BatchSize,Actions,Atoms) حتى نتمكن من تطبيق SoftMax على البعد الأخير. نقوم بإنشاء نموذج مخصص في TensroFlow، الكود بسيط للغاية كما يمكننا أن نرى أدناه.
سوف نقوم بإنشاء مجموعة ألعاب للاختبار. إنها ممارسة جيدة للقيام بها أثناء تطوير نموذج معقد.
آمل أن تجد هذه المقالة مفيدة وأنا آسف للغاية إذا كان هناك أي خطأ أو خطأ إملائي في المقالة، فلا تتردد في الاتصال بي، أو ترك تعليق لتصحيح الأمور.
خليل حنارة
مهندس ذكاء اصطناعي في مسراج
تواصل معنا لتكتشف كيف يمكن لتقنيات مسراج أن تغيّر طريقة عمل مؤسستك.
لتبدأ رحلتك لحلول أذكى
𝑝ᵢ ( 𝑠 , 𝑎 )= 𝑒 xp(θ ᵢ ( 𝑠 , 𝑎 ))/∑ⱼ=₁ exp(𝜃 ⱼ( 𝑠 , 𝑎 ))
توزيع العائدات 𝑍 هو ببساطة مجموع على الذرات (يمثله توزيع ديراك 𝛿𝑧ᵢ )
𝑍 θ( 𝑠 , 𝑎 )=∑ᵢ=₁ Pᵢ ( 𝑠 , 𝑎 )δ 𝑧ᵢ
إذا تم تقدير هذه الاحتمالات بشكل صحيح، فمن السهل حساب 𝑄 − 𝑣𝑎𝑙𝑢𝑒 كمتوسط التوزيع:
𝑄 θ( 𝑠 , 𝑎 )= 𝐸 [ 𝑍 θ( 𝑠 , 𝑎 )]=∑ᵢ=₁ P ᵢ ( 𝑠 , 𝑎 ) 𝑧ᵢ
يمكن بعد ذلك استخدام هذه 𝑄 − 𝑣𝑎𝑙𝑢𝑒𝑠 لاختيار الإجراء كما هو الحال في DQN العادية. تكمن المشكلة الآن في تعلم توزيع القيمة 𝑍 θ لإيجاد قاعدة التعلم / دالة الخسارة لـ 𝑝ᵢ ( 𝑠 ، 𝑎 ؛ θ). دعنا نفكر في انتقال واحد (s، a، r، s′) ونختار الإجراء الجشع a′ في s′ باستخدام السياسة الحالية 𝜋 θ. يمكن تقييم توزيع القيمة 𝑍 θ من خلال تطبيق عامل Bellman بشكل متكرر 𝑇
𝑇𝑍 θ( 𝑠 , 𝑎 )= 𝑅 ( 𝑠 , 𝑎 )+ 𝛾 ∗ 𝑍 θ( 𝑠 ′, 𝑎 ′)
حيث 𝑅 ( 𝑠 , 𝑎 ) هو توزيع المكافآت الفورية بعد أخذ (s,a)
هذا الاستخدام لمشغل Bellman هو نفسه كما هو الحال في التعلم 𝑄 :
𝑇𝑄 θ( 𝑠 , 𝑎 )= 𝐸 [ 𝑟 ( 𝑠 , 𝑎 )]+γ∗ 𝑄 θ( 𝑠 ′, 𝑎 ′)
في التعلم 𝑄 ، يتم تقليل الفرق (mse) بين 𝑇𝑄 θ( 𝑠 , 𝑎 ) و𝑄 θ ( 𝑠 , 𝑎 )، والتي هي توقعات (لذا فإننا نتعامل فقط مع القيم القياسية). هنا، سنقوم بتقليل المسافة الإحصائية بين التوزيعات 𝑇𝑍 θ( 𝑠 , 𝑎 )، 𝑍 θ( 𝑠 , 𝑎 ) نفسها، باستخدام على سبيل المثال تباعد KL ومقياس Wasserstein والتباين الكلي.

تكمن المشكلة في الغالب في أن التوزيعين 𝑇𝑍 θ( 𝑠 , 𝑎 ) و𝑍 θ ( 𝑠 , 𝑎 ) ليس لديهما نفس الدعم: بالنسبة لذرة معينة 𝑧ᵢ ، يمكن أن يكون لـ 𝑇𝑍 θ( 𝑠 , 𝑎 ) احتمال غير صفري 𝑝ᵢ ( 𝑠 , 𝑎 )، بينما يكون لـ 𝑍 θ( 𝑠 , 𝑎 ) احتمال صفري. بالإضافة إلى ذلك، يجب أن يساوي مجموع الاحتمالات 1، لذلك لا يمكن تحديث 𝑧ᵢ بشكل مستقل عن بعضها البعض.
هناك تغيير طفيف في دالة الجشع إبسيلون لأن النموذج لم يعد يُخرج دالة قيمة الفعل، فالإخراج الآن هو التوزيع على الإجراءات التي لدينا، لذا لتحديد الفعل الجشع، سنحسب متوسط التوزيع الإجمالي ثم نختار أفضل إجراء وفقًا للمتوسط.
يكون الناتج لمثال واحد هو (ACTIONS,ATOMS) لذلك نأخذ المجموع باستخدام دالة tf.reduce_sum على المحور الأخير. ثم نأخذ argmax على النتيجة.
الخوارزمية التصنيفية كما في ورقة Bellemare وما إلى ذلك 2017 هذه الوظيفة تجد توزيع قيمة الفعل كما وصفنا أعلاه يرجى قراءة التعليق لفهم أفضل.
سنستخدم الآن وظيفة خطوة التدريب الخاصة بنا على مجموعة البيانات اللعبة للتأكد من عدم وجود أخطاء في تنفيذنا.
الهدف، pred=لا شيء، لا شيء
الهدف، pred=خطوة التدريب (0.9)
الشكل أعلاه هو توزيع التحرك إلى اليسار لمثال واحد. إذا قمنا بتدريب النموذج على نفس الدفعة لمدة زمنية كافية، فيجب أن يكون التوزيعان متطابقين إذا سارت الأمور على ما يرام. بعد أن نقوم بالتدريب لمدة 200 عصر.

لا يمكنك التمييز بين التوزيعين وهذا يبدو جيدًا أليس كذلك؟