โปรดค้นหา NLE ที่บ้านใหม่ที่ github.com/heiner/nle
NetHack Learning Environment (NLE) คือสภาพแวดล้อมการเรียนรู้แบบเสริมกำลังที่นำเสนอที่ NeurIPS 2020 NLE ใช้ NetHack 3.6.6 และออกแบบมาเพื่อมอบอินเทอร์เฟซ RL มาตรฐานให้กับเกม และมาพร้อมกับงานที่ทำหน้าที่เป็นขั้นตอนแรกในการประเมินตัวแทน ในสภาพแวดล้อมใหม่นี้
NetHack เป็นหนึ่งในวิดีโอเกมที่เก่าแก่ที่สุดและมีอิทธิพลมากที่สุดในประวัติศาสตร์ และยังเป็นหนึ่งในเกมโร๊คไลค์ที่ยากที่สุดที่มนุษย์เล่นอยู่ในปัจจุบัน มันถูกสร้างขึ้นตามขั้นตอน เต็มไปด้วยเอนทิตีและไดนามิก และโดยรวมแล้วเป็นสภาพแวดล้อมที่ท้าทายอย่างมากสำหรับตัวแทน RL ที่ล้ำสมัยในปัจจุบัน ในขณะที่มีราคาถูกกว่ามากเมื่อเปรียบเทียบกับการทดสอบที่ท้าทายอื่นๆ เราปรารถนาที่จะกำหนดให้ NetHack เป็นหนึ่งในความท้าทายถัดไปสำหรับการวิจัยด้านการตัดสินใจและการเรียนรู้ของเครื่องผ่าน NLE
คุณสามารถอ่านเพิ่มเติมเกี่ยวกับ NLE ได้ในรายงานของ NeurIPS 2020 และเกี่ยวกับ NetHack ใน README ดั้งเดิมที่ nethack.org และบนวิกิ NetHack
เราขอขอบคุณ ngoodger ที่ใช้ NLE Language Wrapper ซึ่งแปลการสังเกตที่ไม่ใช่ภาษาจากงาน NetHack ให้เป็นภาษาที่คล้ายคลึงกัน การดำเนินการยังสามารถระบุได้ในรูปแบบข้อความซึ่งจะถูกแปลงเป็นการดำเนินการแบบไม่ต่อเนื่องของ NLE
ขณะนี้โค้ด NetHack Learning Dataset (NLD) มาพร้อมกับ NLE
ทำให้ผู้ใช้สามารถโหลดชุดข้อมูลขนาดใหญ่ที่มีอยู่ใน Dungeons and Data: ชุดข้อมูล NetHack ขนาดใหญ่ ในขณะเดียวกันก็สร้างและโหลดชุดข้อมูลของตนเองด้วย
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
เราได้จัดทำภาพนักเทียบท่าบางส่วน โปรดดู README ที่เกี่ยวข้อง
หลังการติดตั้ง คุณสามารถลองใช้งานต่างๆ ที่ให้มาดังต่อไปนี้:
>> > 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
Tim & Heiner จาก 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},
}
หากคุณใช้ NLD หรือชุดข้อมูลในงานใดๆ ของคุณ โปรดอ้างอิง:
@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}
}