見出し画像

dm_hard_eight:DeepMind HardEightタスクスイート

以下の記事を参考に書いてます。

dm_hard_eight: DeepMind Hard Eight Task Suite

1. 概要

DeepMind Hard Eightタスク」は、報酬獲得が困難なハードモード強化学習環境です。部分的な状態観測からの行動や長期記憶が求められます。
これらのタスクは、事前にパッケージ化されたDockerコンテナを介して提供されます。このパッケージは、これらのDockerコンテナを実行するためのサポートコードで構成されています。dm_env Pythonインターフェースを介してタスク環境と対話します。使用可能なタスク、行動、観察の詳細については、ドキュメントを参照してください。

画像1

2. 要件

DeepMind Hard Eightタスク」はLinuxで実行することを目的としており、MacおよびWindowsでは公式にはサポートされていません。ただし、原則として、どのプラットフォームでも実行できます。Windowsでは、WSL内からPythonコードを実行する必要がある場合があります。

dm_hard_eightには、Docker、Python 3.6.1以降、およびSSE4.2をサポートするx86-64CPUが必要です。Python2の動作バージョンを維持しようとはしていません。

【注意】Python環境の競合を軽減するために、Python仮想環境を使用することをお勧めします。

◎ Dockerのダウンロードとインストール

・Linux : Docker-CE
・Mac : Docker Desktop for Mac
・WindowsDocker Desktop for Windows

3. インストール

GitHubリポジトリのローカルコピーを複製することで、dm_hard_eightをインストールできます。

$ git clone https://github.com/deepmind/dm_hard_eight.git
$ pip install ./dm_hard_eight

examplesの依存関係をインストールするには、次のコマンドを実行します。

$ pip install ./dm_hard_eight[examples]

4. 使い方

dm_hard_eightをインストールしたら、dm_envインスタンスをインスタンス化するには、次のコマンドを実行します。

import dm_hard_eight

settings = dm_hard_eight.EnvironmentSettings(seed=123,
    level_name='ball_room_navigation_cubes')
env = dm_hard_eight.load_from_docker(settings)

4. タスク

「Hard-Eightタスクスイート」には、次のタスクが含まれています。

・use_object_knock_down : 論文ではBaseballと呼ぶ。
・drawbridge_max3fork_safe_randomwall : 論文ではDrawbridgeと呼ぶ。
・ball_room_navigation_cubes : 論文ではNavigation Cubes と呼ぶ。
・slot_colored_block : 論文ではPush Blocksと呼ぶ。
・sensorhidden_color_novary_greywall : 論文ではRemember Sensor と呼ぶ。
・throw_across : 論文ではThrow Acrossと呼ぶ。
・reach_wall : 論文ではWall Sensorと呼ぶ。
・Reach_wall_require_stack : 論文ではWall Sensor Stackと呼ぶ。

タスクの詳細については、付属のR2D3の論文を参照してください。
タスクのビデオはhttps://deepmind.com/research/publications/r2d3で見ることができます。

5. 行動

環境は次の行動を提供します。

・MOVE_BACK_FORWARD : range [-1.0, 1.0]
・STRAFE_LEFT_RIGHT : range [-1.0, 1.0]
・LOOK_DOWN_UP : range [-1.0, 1.0]
・LOOK_LEFT_RIGHT : range [-1.0, 1.0]
・HAND_ROTATE_AROUND_FORWARD : range [-1.0, 1.0]
・HAND_ROTATE_AROUND_RIGHT : range [-1.0, 1.0]
・HAND_ROTATE_AROUND_UP : range [-1.0, 1.0]
・HAND_PUSH_PULL : range [-10.0, 10.0]
・HAND_GRIP : range [0.0, 1.0]

各行動はダブルスカラーです。ステップごとに各行動の値を送信することは必須ではありませんが、行動は「スティッキー」であることに注意してください。つまり、行動の値は、新しい値が提供されたときにのみ変更されます。

env = dm_hard_eight.load_from_docker(settings)
env.reset()
env.step({'STRAFE_LEFT_RIGHT': -1.0}) # Result: strafe Left.
env.step({'MOVE_BACK_FORWARD': 1.0}) # Result: strafe left & move backward.

env.step({'STRAFE_LEFT_RIGHT': 0.0,
         'MOVE_BACK_FORWARD': 0.0}) # Result: stationary.

6. 観察

環境は次の観察を提供します。

・RGB_INTERLEAVED : 一人称RGBカメラ観察。 幅と高さはEnvironmentSettingsで調整できるが、観察には常に固定の4:3アスペクト比がある。
・ACCELERATION : アバターの「加速度」ベクトル(メートル/秒^ 2)。コンポーネントは、アバターが向いている方向に対して(右、上、前)方向で測定される。これは、3つのフロートのベクトルとして表される。
・HAND_FORCE : 最大握力の一部としての力は、手が操作しているオブジェクトに適用される。オブジェクトを保持している場合、これはアバターがオブジェクトをドロップするのにどれだけ近いかを表す。これは、0から1の間の値を持つfloatとして表される。
・HAND_IS_HOLDING : アバターがオブジェクトを保持している場合は1に設定し、それ以外の場合は0に設定する。
・HAND_DISTANCE : 顔からの手の距離。最小距離と最大距離の割合として表される。オブジェクトを保持していない場合は0、それ以外の場合は0〜1。
・Score : エージェントの累積スコア。

7. 設定可能な環境設定

◎ 必須属性
・seed : 環境の乱数ジェネレーターを初期化するためのシード。
・level_name : 最初のセクションに表示されるロードするレベルの名前。

◎ オプション属性
・width : 目的のRGB観測の幅(ピクセル単位)。デフォルトは96。
・height : 目的のRGB観測の高さ(ピクセル単位)。デフォルトは72。
・num_action_repeats:step()の呼び出しで提供された行動を使用して環境をステップ実行する回数。



この記事が気に入ったらサポートをしてみませんか?