كيف يلعب الذكاء الاصطناعي دور "الأفعى"



دعنا نتحدث عن الشبكة العصبية التي تستخدم التعلم العميق والتعلم المعزز للعب Snake. سوف تجد الكود على Github ، وتحليل الأخطاء ، والعروض التوضيحية للذكاء الاصطناعي والتجارب عليه تحت الخفض.



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



تعزيز التعلم



المبدأ بسيط. يتعلم الوكيل من خلال التفاعل مع البيئة. يختار فعلًا ويتلقى استجابة من البيئة في شكل حالات (أو ملاحظات) ومكافآت. تستمر هذه الدورة بشكل مستمر أو حتى يتم مقاطعتها. ثم تبدأ حلقة جديدة. يبدو من الناحية التخطيطية كما يلي:





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



التعلم العميق المعزز



يستخدم التعلم العميق الشبكات العصبية لتوليد مخرجات من المدخلات. باستخدام طبقة مخفية واحدة فقط ، يمكن للتعلم العميق تكبير أي ميزة. كيف تعمل؟ الشبكة العصبية عبارة عن طبقات بها عقد. الطبقة الأولى هي طبقة بيانات الإدخال. تقوم الطبقة الثانية المخفية بتحويل البيانات باستخدام الأوزان ووظيفة التنشيط. الطبقة الأخيرة هي طبقة التنبؤ.





كما يوحي الاسم ، التعلم المعزز العميق هو مزيج من التعلم العميق والتعلم المعزز. يتعلم الوكيل كيفية التنبؤ بأفضل إجراء لحالة معينة باستخدام الحالات كمدخلات ، وقيم الإجراءات كمخرجات ، والمكافآت لضبط الأوزان في الاتجاه الصحيح. لنكتب ثعبان باستخدام التعلم المعزز العميق.





تحديد الإجراءات والمكافآت والشروط



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



إذا التقطت Snake تفاحة ، فستكون مكافأتها 10 نقاط. إذا مات الأفعى ، اطرح 100 نقطة من الجائزة. لمساعدة الوكيل ، أضف نقطة واحدة عندما يتحرك الثعبان بالقرب من التفاحة واطرح نقطة واحدة عندما يتحرك الثعبان بعيدًا عن التفاحة.



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





خلق البيئة والوكيل



من خلال إضافة طرق إلى برنامج Snake ، نخلق بيئة تعليمية معززة. الأساليب هي كما يلي: reset(self)، step(self, action)و get_state(self). بالإضافة إلى ذلك ، من الضروري حساب المكافأة في كل خطوة من خطوات الوكيل. ألق نظرة على run_game(self).



يعمل الوكيل مع شبكة Deep Q للعثور على أفضل إجراء. معلمات النموذج أدناه:



# epsilon sets the level of exploration and decreases over time
params['epsilon'] = 1
params['gamma'] = .95
params['batch_size'] = 500
params['epsilon_min'] = .01
params['epsilon_decay'] = .995
params['learning_rate'] = 0.00025
params['layer_sizes'] = [128, 128, 128]


إذا كنت مهتمًا بالاطلاع على الكود ، فيمكنك العثور عليه على GitHub .



وكيل يلعب الأفعى



والآن - السؤال الرئيسي! هل سيتعلم الوكيل اللعب؟ دعونا نرى كيف تتفاعل مع البيئة. فيما يلي الألعاب الأولى. الوكيل لا يفهم شيئًا:





أول تفاحة! لكن لا يزال يبدو أن الشبكة العصبية لا تعرف ما تفعله.





يجد أول تفاحة ... ثم يضرب الحائط. بداية الشوط الرابع عشر:







يتعلم الوكيل: طريقه إلى التفاحة ليس الأقصر ، لكنه يجد التفاحة. فيما يلي اللعبة الثلاثين:





بعد 30 لعبة فقط ، يتجنب Snake الاصطدام مع نفسه ويجد طريقًا سريعًا إلى التفاحة.



هيا نلعب مع الفضاء



قد يكون من الممكن تغيير مساحة الولاية وتحقيق أداء مشابه أو أفضل. فيما يلي الخيارات الممكنة.



  1. لا توجد اتجاهات: لا تخبر الوكيل بالاتجاهات التي يتحرك فيها الثعبان.
  2. الحالة مع الإحداثيات: استبدل موضع التفاحة (أعلى ، يمين ، أسفل ، و / أو يسار) بإحداثيات التفاحة (س ، ص) والثعبان (س ، ص). تكون قيم الإحداثيات على مقياس من 0 إلى 1.
  3. حالة الاتجاه 0 أو 1.
  4. حالة الجدار فقط: تقارير فقط إذا كان هناك جدار. لكن ليس حول مكان وجود الجسم: أسفل ، فوق ، يمين أو يسار.




فيما يلي الرسوم البيانية للأداء لحالات مختلفة:





لنجد مساحة تسرع التعلم. يوضح الرسم البياني متوسط ​​إنجازات آخر 12 لعبة بحالات مختلفة.



من الواضح أنه عندما يكون لمساحة الدولة اتجاهات ، يتعلم الوكيل بسرعة ، ويحقق أفضل النتائج. لكن الفضاء مع الإحداثيات أفضل. ربما يمكنك تحقيق نتائج أفضل من خلال تدريب الشبكة لفترة أطول. قد يكون سبب التعلم البطيء هو عدد الحالات الممكنة: 20⁴ * 2⁴ * 4 = 1،024،000. دورة من 20 إلى 20 ، و 64 خيارًا للعقبات و 4 خيارات للعناوين الحالية. بالنسبة للمساحة المتغيرة الأصلية ، 3² * 2⁴ * 4 = 576. هذا أقل من 1700 مرة من 1،024،000 وبالطبع يؤثر على التعلم.



هيا نلعب بالجوائز



هل هناك منطق مكافأة داخلي أفضل؟ دعني أذكرك أن الأفعى تُمنح على النحو التالي:





أول خطأ. المشي في الدوائر



ماذا لو غيرت -1 إلى +1؟ هذا يمكن أن يبطئ منحنى التعلم ، لكن الأفعى لا تموت في النهاية. وهذا مهم جدا للعبة. يتعلم الوكيل بسرعة تجنب الموت.





في فترة زمنية واحدة ، يتلقى الوكيل نقطة واحدة للبقاء على قيد الحياة.



الخطأ الثاني. ضرب الحائط



دعونا نغير عدد النقاط لتمرير التفاحة إلى -1. دعنا نحدد مكافأة التفاحة نفسها على 100 نقطة. ماذا سيحدث؟ يتلقى الوكيل عقوبة لكل حركة ، فينتقل إلى التفاحة في أسرع وقت ممكن. يمكن أن يحدث هذا ، ولكن هناك خيار آخر.







يمشي الذكاء الاصطناعي على طول أقرب جدار لتقليل الخسائر.



تجربة



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



الخطأ رقم 3. لا خبرة هل الخبرة



حقًا بهذه الأهمية؟ دعنا نخرجها. وخذ 100 نقطة مقابل التفاحة. يوجد أدناه وكيل ليس لديه خبرة وقد لعب 2500 مباراة.





على الرغم من أن الوكيل لعب 2500 لعبة (!) ، إلا أنه لا يلعب الثعبان. تنتهي اللعبة بسرعة. وإلا لكانت 10000 لعبة تستغرق أيامًا. بعد 3000 لعبة لدينا 3 تفاحات فقط. بعد 10000 لعبة ، لا يزال التفاح 3. هل هو حظ أم نتيجة تعليمية؟



في الواقع ، الخبرة تساعد كثيرًا. على الأقل تجربة تأخذ في الاعتبار المكافآت ونوع المساحة. كم عدد الاعادة التي تحتاجها في كل خطوة؟ قد يكون الجواب مفاجأة. للإجابة على هذا السؤال ، دعنا نلعب مع المعلمة batch_size. في التجربة الأصلية ، تم تعيينه على 500. نظرة عامة على النتائج مع التجارب المختلفة:





200 لعبة بخبرات مختلفة: لعبة واحدة (بدون خبرة) ، 2 و 4 لعبة بمعدل 20 لعبة.



حتى مع وجود خبرة في لعبتين ، يتعلم الوكيل بالفعل اللعب. في الرسم البياني ترى التأثير batch_size، يتم تحقيق نفس الأداء لـ 100 لعبة إذا تم استخدام 4 بدلاً من 2. يعطي الحل الوارد في المقالة النتيجة. يتعلم الوكيل لعب Snake ويحقق نتائج جيدة ، حيث يجمع 40 إلى 60 تفاحة في 50 لعبة.



قد يقول القارئ اليقظ: الحد الأقصى لعدد التفاح في الثعبان هو 399. لماذا لا يفوز الذكاء الاصطناعي؟ الفرق بين 60 و 399 صغير في الواقع. وهذا صحيح. وتوجد مشكلة هنا: الثعبان لا يتجنب الاصطدامات عند الرجوع للخلف.







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



فهرس
[1] K. Hornik, M. Stinchcombe, H. White, Multilayer feedforward networks are universal approximators (1989), Neural networks 2.5: 359–366

[2] Mnih et al, Playing Atari with Deep Reinforcement Learning (2013)



صورة


, Level Up , - SkillFactory:





E







All Articles