github.com/heiner/nle で NLE の新しい本拠地を見つけてください。
NetHack 学習環境 (NLE) は、NeurIPS 2020 で発表された強化学習環境です。NLE は NetHack 3.6.6 に基づいており、ゲームに標準の RL インターフェイスを提供するように設計されており、エージェントを評価するための最初のステップとして機能するタスクが付属しています。この新しい環境で。
NetHack は、歴史上最も古く、おそらく最も影響力のあるビデオゲームの 1 つであり、現在人間がプレイしている最も難しいローグライク ゲームの 1 つです。これは手続き的に生成され、エンティティとダイナミクスが豊富で、全体として現在の最先端の RL エージェントにとって非常に困難な環境であると同時に、他の困難なテストベッドと比較して実行コストがはるかに安価です。 NLE を通じて、NetHack を意思決定と機械学習の研究における次の課題の 1 つとして確立したいと考えています。
NLE の詳細については NeurIPS 2020 の論文で、NetHack についてはオリジナルの README、nethack.org、および NetHack wiki で読むことができます。
NetHack タスクからの非言語観察結果を同様の言語表現に変換する NLE Language Wrapper を実装してくれた ngoodger に感謝します。アクションは、オプションで 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 ノートブックをチェックしてください。
プル リクエストを開いてペーパーを追加します。
他のジム/RL 環境に慣れていれば、NLE 環境から始めるのは非常に簡単です。
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
いくつかの Docker イメージが提供されています。関連する 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 の下位レベルの要素に貢献したいと考えている人にとっては、出発点として役立つかもしれません。
Facebook AI Research の Tim & Heiner が強化学習研究の民主化について語ります。
何らかの仕事で 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}
}