يمكن العثور على المواد التكميلية هنا https://github.com/sacktock/AMBS/blob/main/supplementary-material.pdf. ولا تتردد أيضًا في زيارة صحفنا هنا:
AMBS متوافق الآن مع Safety Gym
مستودع GitHub لـ "الحماية التقريبية القائمة على النموذج من أجل التعلم المعزز الآمن" و"الاستفادة من الحماية التقريبية القائمة على النموذج لضمانات السلامة الاحتمالية في البيئات المستمرة".
ومن خلال الاستفادة من النماذج العالمية لحماية النظرة المستقبلية، حصلنا على خوارزمية للأغراض العامة للتحقق من سلامة سياسات RL المستفادة. على وجه التحديد، نستخدم DreamerV3 لمحاكاة المستقبل (الآثار) المحتملة في الفضاء الكامن لنموذج الديناميكيات المستفادة، ونتحقق من كل من هذه الآثار ونقدر احتمالية ارتكاب انتهاك للسلامة في المستقبل القريب. إذا لم يكن هذا الاحتمال منخفضًا بدرجة كافية، فإننا نتجاوز السياسة المكتسبة بسياسة آمنة تم تدريبها لتقليل انتهاكات القيود.
في تجاربنا المفصلة في "الحماية التقريبية المستندة إلى النموذج للتعلم المعزز الآمن" تم تنفيذ جميع الوكلاء باستخدام JAX، على الرغم من أن التبعيات تتداخل في الغالب، إلا أنها قد تختلف قليلاً اعتمادًا على ما إذا كنت تقوم بتشغيل وكيل يعتمد على DreamerV3 أو وكيل يعتمد على الدوبامين.
نوصي بإنشاء بيئات كوندا منفصلة للوكلاء المعتمدين على DreamerV3 والوكلاء المعتمدين على الدوبامين.
conda create -n jax --clone base
conda create -n jax_dopamine --clone base
نشير إلى مستودع DreamerV3 للحصول على قائمة التبعيات المرتبطة بالوكلاء المستندين إلى DreamerV3. ونشير إلى google/dopamine للحصول على قائمة التبعيات المرتبطة بالعوامل المعتمدة على الدوبامين.
conda activate jax
pip install //DreamerV3 dependencies
conda activate jax_dopamine
pip install //dopamine dependencies
بدلاً من ذلك، استخدم ملفات المتطلبات الخاصة بنا، على الرغم من أننا نؤكد على أن تثبيت JAX المحدد المطلوب يعتمد على الأجهزة.
conda activate jax
pip install -r requirements_jax.txt
conda activate jax_dopamine
pip install -r requirements_jax_dopamine.txt
بالنسبة إلى الوكلاء المعتمدين على DreamerV3، انتقل إلى الدليل الفرعي ذي الصلة وقم بتشغيل train.py
. سيقوم الأمر التالي بتشغيل DreamerV3 مع AMBS على Seaquest لمدة 40 مليون إطار. يتم استخدام علامة --env.atari.labels
لتحديد تسميات الأمان: death
، early-surface
، out-of-oxygen
، ويحدد خيار xlarge
حجم النموذج ( xlarge
هو الخيار الافتراضي لألعاب atari).
cd dreamerV3-shield
python train.py --logdir ./logdir/seaquest/shield --configs atari xlarge --task atari_seaquest --env.atari.labels death early-surface out-of-oxygen --run.steps 10000000
يمكن تعيين بذرة عشوائية باستخدام علامة --seed
(الافتراضي 0).
بالنسبة للوكلاء المعتمدين على الدوبامين، انتقل إلى الدليل الفرعي للدوبامين وقم بتشغيل العامل المطلوب.
cd dopamine
python -um dopamine.discrete_domains.train --base_dir ./logdir/seaquest/rainbow --gin_files ./dopamine/jax/agents/full_rainbow/configs/full_rainbow_seaquest.gin
يمكن تعيين البذور العشوائية عن طريق تعديل ملف .gin المقابل (على سبيل المثال JaxFullRainbowAgent.seed=0)
للتخطيط للتشغيل نستخدم لوح الشد. انتقل إلى الدليل الفرعي ذي الصلة وابدأ في استخدام Tensorboard.
cd dreamerV3-shield
tensorboard --logdir ./logdir/seaquest
تم بناء Safety Gym على MuJoCo. للحصول على تفاصيل تثبيت MuJoCo نحيلك إلى هنا. تشمل المتطلبات الإضافية لـ Safety Gym ما يلي:
gym>=0.15.3
joblib>=0.14.0
mujoco_py>=2.0.2.7
numpy>=1.17.4
xmltodict>=0.12.0
إذا كنت قد اتبعت تعليمات الإعداد والتثبيت السابقة، فقد تكون هذه التبعيات قد استوفيت بالفعل.
لكي تعمل AMBS على Safety Gym، نحتاج إلى فرض عقوبات على سياسة المهام (غير المحمية). نحن نقدم تقنيات العقوبات الثلاثة التالية التي تساعد AMBS على التقارب مع سياسة تزيد من المكافأة وتلبي قيود السلامة في بيئات صالة الألعاب الرياضية الآمنة:
python train.py ./logdir/safetygym/PointGoal1/shield_penl --configs safetygym_vision large --task safetygym_Safexp-PointGoal1-v0 --penalty_coeff 1.0 --normalise_ret False --penl_critic_type vfunction --run.steps 500000
python train.py --logdir ./logdir/safetygym/PointGoal1/shield_plpg --configs safetygym_vision large --task safetygym_Safexp-PointGoal1-v0 --penalty_coeff 0.8 --plpg True --normalise_ret False --penl_critic_type vfunction --run.steps 500000
python train.py --logdir ./logdir/safetygym/PointGoal1/shield_copt --configs safetygym_vision large --task safetygym_Safexp-PointGoal1-v0 --penalty_coeff 1.0 --copt True --normalise_ret False --penl_critic_type vfunction --run.steps 500000
يمكن العثور على ورقتنا البحثية التي توضح هذه التقنيات هنا: http://arxiv.org/abs/2402.00816
نشير إلى المستودعات التالية التي تم تطوير الكود الخاص بنا منها: