Silakan temukan NLE di rumah barunya di github.com/heiner/nle
Lingkungan Pembelajaran NetHack (NLE) adalah lingkungan Pembelajaran Penguatan yang dipresentasikan di NeurIPS 2020. NLE didasarkan pada NetHack 3.6.6 dan dirancang untuk menyediakan antarmuka RL standar ke game, dan dilengkapi dengan tugas yang berfungsi sebagai langkah pertama untuk mengevaluasi agen pada lingkungan baru ini.
NetHack adalah salah satu videogame tertua dan paling berpengaruh dalam sejarah, serta salah satu roguelike tersulit yang saat ini dimainkan oleh manusia. Ini dihasilkan secara prosedural, kaya akan entitas dan dinamika, dan secara keseluruhan merupakan lingkungan yang sangat menantang bagi agen RL yang canggih saat ini, sekaligus jauh lebih murah untuk dijalankan dibandingkan dengan pengujian menantang lainnya. Melalui NLE, kami ingin menjadikan NetHack sebagai salah satu tantangan berikutnya dalam penelitian pengambilan keputusan dan pembelajaran mesin.
Anda dapat membaca lebih lanjut tentang NLE di makalah NeurIPS 2020, dan tentang NetHack di README aslinya, di nethack.org, dan di wiki NetHack.
Kami berterima kasih kepada ngoodger karena telah menerapkan NLE Language Wrapper yang menerjemahkan observasi non-bahasa dari tugas NetHack ke dalam representasi bahasa serupa. Tindakan juga dapat disediakan secara opsional dalam bentuk teks yang diubah menjadi tindakan Diskrit NLE.
Kode NetHack Learning Dataset (NLD) kini dikirimkan bersama NLE
, memungkinkan pengguna memuat kumpulan data berskala besar yang ditampilkan di Dungeons and Data: A Large-Scale NetHack Dataset, sekaligus membuat dan memuat kumpulan data mereka sendiri.
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...
Untuk informasi tentang cara mengunduh NLD-AA dan NLD-NAO, lihat dokumen kumpulan data di sini.
Jika tidak, periksa tutorial notebook Colab di sini.
Buka permintaan tarik untuk menambahkan kertas.
Memulai dengan lingkungan NLE sangatlah sederhana, asalkan seseorang sudah familiar dengan lingkungan gym/RL lainnya.
NLE memerlukan python>=3.5
, cmake>=3.15
untuk diinstal dan tersedia saat membuat paket, dan saat runtime.
Di MacOS , seseorang dapat menggunakan Homebrew
sebagai berikut:
$ brew install cmake
Pada distribusi Ubuntu 18.04 biasa, cmake
dan dependensi lainnya dapat diinstal dengan melakukan:
# 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
Setelah itu, tinggal mengatur lingkungan Anda. Kami menyarankan penggunaan lingkungan conda untuk ini:
$ conda create -y -n nle python=3.8
$ conda activate nle
$ pip install nle
CATATAN: Jika Anda ingin memperluas/mengembangkan NLE, silakan instal paketnya sebagai berikut:
$ git clone https://github.com/facebookresearch/nle --recursive
$ pip install -e " .[dev] "
$ pre-commit install
Kami telah menyediakan beberapa gambar buruh pelabuhan. Silakan lihat README yang relevan.
Setelah instalasi, seseorang dapat mencoba salah satu tugas yang disediakan sebagai berikut:
>> > 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 juga dilengkapi dengan beberapa skrip yang memungkinkan peluncuran lingkungan, dan bermain dengan ruang tindakan:
# 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
Perhatikan bahwa nle.scripts.play
juga dapat dijalankan dengan nle-play
, jika paket telah diinstal dengan benar.
Selain itu, agen TorchBeast digabungkan dalam nle.agent
bersama dengan model sederhana untuk memberikan titik awal eksperimen:
$ 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
Plot pengembalian rata-rata selama 100 episode terakhir:
$ 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
Kami menyambut kontribusi untuk NLE. Jika Anda tertarik untuk berkontribusi silakan lihat dokumen ini.
NLE adalah cabang langsung dari NetHack dan oleh karena itu berisi kode yang beroperasi pada berbagai tingkat abstraksi. Ini berkisar dari logika permainan tingkat rendah, hingga administrasi permainan nethack berulang tingkat tinggi, dan akhirnya pengikatan permainan ini ke lingkungan gym
Python.
Jika Anda ingin mempelajari lebih lanjut tentang arsitektur nle
dan cara kerjanya, lihat dokumen arsitektur. Ini mungkin menjadi titik awal yang berguna bagi siapa pun yang ingin berkontribusi pada elemen NLE tingkat rendah.
Tim & Heiner dari Facebook AI Research tentang demokratisasi penelitian pembelajaran penguatan.
Jika Anda menggunakan NLE dalam karya Anda, harap kutip:
@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},
}
Jika Anda menggunakan NLD atau kumpulan data dalam karya Anda, harap kutip:
@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}
}