يرجى العثور على NLE في منزلها الجديد على github.com/heiner/nle
بيئة التعلم NetHack (NLE) هي بيئة التعلم المعزز التي تم تقديمها في NeurIPS 2020. تعتمد NLE على NetHack 3.6.6 وهي مصممة لتوفير واجهة RL قياسية للعبة، وتأتي مع المهام التي تعمل كخطوة أولى لتقييم الوكلاء على هذه البيئة الجديدة.
تعد NetHack واحدة من أقدم ألعاب الفيديو وأكثرها تأثيرًا في التاريخ، فضلاً عن كونها واحدة من أصعب ألعاب روجلايك التي يلعبها البشر حاليًا. لقد تم إنشاؤها من الناحية الإجرائية، وهي غنية بالكيانات والديناميكيات، وتمثل بيئة صعبة للغاية بشكل عام لوكلاء RL الحاليين، في حين أنها أرخص بكثير في التشغيل مقارنة بوحدات الاختبار الصعبة الأخرى. من خلال NLE، نرغب في جعل NetHack أحد التحديات التالية للبحث في مجال صنع القرار والتعلم الآلي.
يمكنك قراءة المزيد عن NLE في ورقة NeurIPS 2020، وعن NetHack في ملف README الأصلي، على nethack.org، وعلى موقع NetHack wiki.
نشكر ngoodger على تنفيذ NLE Language Wrapper الذي يترجم الملاحظات غير اللغوية من مهام NetHack إلى تمثيلات لغوية مماثلة. يمكن أيضًا توفير الإجراءات بشكل اختياري في نموذج نصي يتم تحويله إلى إجراءات منفصلة لـ NLE.
يأتي كود NetHack Learning Dataset (NLD) الآن مع NLE
، مما يسمح للمستخدمين بتحميل مجموعات البيانات واسعة النطاق الموجودة في Dungeons and Data: A Large-Scale NetHack Dataset، مع إنشاء وتحميل مجموعات البيانات الخاصة بهم أيضًا.
import nle . dataset as nld
if not nld . db . exists ():
nld . db . create ()
# NB: Different methods are used for data based on NLE and data from NAO.
nld . add_nledata_directory ( "/path/to/nld-aa" , "nld-aa-v0" )
nld . add_altorg_directory ( "/path/to/nld-nao" , "nld-nao-v0" )
dataset = nld . TtyrecDataset ( "nld-aa-v0" , batch_size = 128 , ...)
for i , mb in enumerate ( dataset ):
foo ( mb ) # etc...
للحصول على معلومات حول كيفية تنزيل NLD-AA وNLD-NAO، راجع مستند مجموعة البيانات هنا.
بخلاف ذلك، يمكنك الاطلاع على دفتر ملاحظات Colab التعليمي هنا.
افتح طلب سحب لإضافة الأوراق.
يعد البدء ببيئات NLE أمرًا بسيطًا للغاية، بشرط أن يكون الشخص على دراية ببيئات الصالة الرياضية / RL الأخرى.
يتطلب NLE تثبيت python>=3.5
و cmake>=3.15
وإتاحته عند إنشاء الحزمة وفي وقت التشغيل.
على نظام التشغيل MacOS ، يمكن للمرء استخدام Homebrew
على النحو التالي:
$ brew install cmake
على توزيعة Ubuntu 18.04 العادية، يمكن تثبيت cmake
والتبعيات الأخرى عن طريق القيام بما يلي:
# Python and most build deps
$ sudo apt-get install -y build-essential autoconf libtool pkg-config
python3-dev python3-pip python3-numpy git flex bison libbz2-dev
# recent cmake version
$ wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2> /dev/null | sudo apt-key add -
$ sudo apt-add-repository ' deb https://apt.kitware.com/ubuntu/ bionic main '
$ sudo apt-get update && apt-get --allow-unauthenticated install -y
cmake
kitware-archive-keyring
بعد ذلك، يتعلق الأمر بتهيئة بيئتك. ننصح باستخدام بيئة conda لهذا:
$ conda create -y -n nle python=3.8
$ conda activate nle
$ pip install nle
ملاحظة: إذا كنت ترغب في توسيع/تطوير NLE، يرجى تثبيت الحزمة على النحو التالي:
$ git clone https://github.com/facebookresearch/nle --recursive
$ pip install -e " .[dev] "
$ pre-commit install
لقد قدمنا بعض صور عامل الإرساء. يرجى الاطلاع على الملف التمهيدي ذي الصلة.
بعد التثبيت، يمكن للمرء تجربة أي من المهام المتوفرة على النحو التالي:
>> > import gym
>> > import nle
>> > env = gym . make ( "NetHackScore-v0" )
>> > env . reset () # each reset generates a new dungeon
>> > env . step ( 1 ) # move agent '@' north
>> > env . render ()
يأتي NLE أيضًا مع عدد قليل من البرامج النصية التي تسمح بالحصول على بعض إصدارات البيئة واللعب بمساحة الحركة:
# Play NetHackStaircase-v0 as a human
$ python -m nle.scripts.play
# Use a random agent
$ python -m nle.scripts.play --mode random
# Play the full game using directly the NetHack internal interface
# (Useful for debugging outside of the gym environment)
$ python -m nle.scripts.play --env NetHackScore-v0 # works with random agent too
# See all the options
$ python -m nle.scripts.play --help
لاحظ أنه يمكن أيضًا تشغيل nle.scripts.play
باستخدام nle-play
، إذا تم تثبيت الحزمة بشكل صحيح.
بالإضافة إلى ذلك، يتم تجميع وكيل TorchBeast في nle.agent
مع نموذج بسيط لتوفير نقطة بداية للتجارب:
$ pip install " nle[agent] "
$ python -m nle.agent.agent --num_actors 80 --batch_size 32 --unroll_length 80 --learning_rate 0.0001 --entropy_cost 0.0001 --use_lstm --total_steps 1000000000
ارسم متوسط العائد خلال آخر 100 حلقة:
$ python -m nle.scripts.plot
averaged episode return
140 +---------------------------------------------------------------------+
| + + ++-+ ++++++++++++++++++++++++|
| : : ++++++++||||||||||||||||||||||||
120 |-+...........:.............:...+-+.++++|||||||||||||||||||||||||||||||
| : +++++++++++++++||||||||||AAAAAAAAAAAAAAAAAAAAAA|
| +++++++++++++||||||||||||||AAAAAAAAAAAA|||||||||||||||||||
100 |-+......+++++|+|||||||||||||||||||||||AA||||||||||||||||||||||||||||||
| +++|||||||||||||||AAAAAAAAAAAAAA|||||||||||+++++++++++++++++++|
| ++++|||||AAAAAAAAAAAAAA||||||||||||++++++++++++++-+: |
80 |-++++|||||AAAAAA|||||||||||||||||||||+++++-+...........:...........+-|
| ++|||||AAA|||||||||||||||++++++++++++-+ : : |
60 |++||AAAAA|||||+++++++++++++-+............:.............:...........+-|
|++|AA||||++++++-|-+ : : : |
|+|AA|||+++-+ : : : : |
40 |+|A+++++-+...:.............:.............:.............:...........+-|
|+AA+-+ : : : : |
|AA-+ : : : : |
20 |AA-+.........:.............:.............:.............:...........+-|
|++-+ : : : : |
|+-+ : : : : |
0 |-+...........:.............:.............:.............:...........+-|
|+ : : : : |
|+ + + + + |
-20 +---------------------------------------------------------------------+
0 2e+08 4e+08 6e+08 8e+08 1e+09
steps
نحن نرحب بالمساهمات في NLE. إذا كنت مهتمًا بالمساهمة، فيرجى الاطلاع على هذه الوثيقة.
NLE هو شوكة مباشرة لـ NetHack وبالتالي يحتوي على تعليمات برمجية تعمل على العديد من مستويات التجريد المختلفة. يتراوح هذا من منطق اللعبة منخفض المستوى، إلى الإدارة ذات المستوى الأعلى لألعاب nethack المتكررة، وأخيرًا إلى ربط هذه الألعاب ببيئة Python gym
.
إذا كنت تريد معرفة المزيد حول بنية nle
وكيفية عملها تحت الغطاء، فاطلع على مستند البنية. قد تكون هذه نقطة بداية مفيدة لأي شخص يتطلع إلى المساهمة في عناصر المستوى الأدنى من NLE.
تيم وهاينر من Facebook AI Research يتحدثان عن إضفاء الطابع الديمقراطي على أبحاث التعلم المعزز.
إذا كنت تستخدم NLE في أي من أعمالك، يرجى ذكر:
@inproceedings{kuettler2020nethack,
author = {Heinrich K{"{u}}ttler and
Nantas Nardelli and
Alexander H. Miller and
Roberta Raileanu and
Marco Selvatici and
Edward Grefenstette and
Tim Rockt{"{a}}schel},
title = {{The NetHack Learning Environment}},
booktitle = {Proceedings of the Conference on Neural Information Processing Systems (NeurIPS)},
year = {2020},
}
إذا كنت تستخدم الرابطة الوطنية من أجل الديمقراطية أو مجموعات البيانات في أي من أعمالك، فيرجى ذكر ما يلي:
@article{hambro2022dungeons,
title={Dungeons and Data: A Large-Scale NetHack Dataset},
author={Hambro, Eric and Raileanu, Roberta and Rothermel, Danielle and Mella, Vegard and Rockt{"a}schel, Tim and K{"u}ttler, Heinrich and Murray, Naila},
journal={Advances in Neural Information Processing Systems},
volume={35},
pages={24864--24878},
year={2022}
}