このプロジェクトは、強化学習用に最適化されたインフラストラクチャを提供します。 OpenAI ジム インターフェイスを複数の並列環境に拡張し、エージェントを TensorFlow に実装してバッチ計算を実行できるようにします。開始点として、近接ポリシー最適化の最適化された実装である BatchPPO を提供します。
研究でこのプロジェクトのコードを使用する場合は、TensorFlow Agents の論文を引用してください。
@article { hafner2017agents ,
title = { TensorFlow Agents: Efficient Batched Reinforcement Learning in TensorFlow } ,
author = { Hafner, Danijar and Davidson, James and Vanhoucke, Vincent } ,
journal = { arXiv preprint arXiv:1709.02878 } ,
year = { 2017 }
}
依存関係: Python 2/3、TensorFlow 1.3+、Gym、ruamel.yaml
リポジトリのクローンを作成し、次のように入力して PPO アルゴリズムを実行します。
python3 -m agents.scripts.train --logdir=/path/to/logdir --config=pendulum
使用するアルゴリズムは構成で定義されており、ここで開始されるpendulum
含まれている PPO 実装を使用します。 agents/scripts/configs.py
で事前定義された設定をさらに確認してください。
以前に開始した実行を再開する場合は、最後のコマンドに--timestamp=<time>
フラグを追加し、実行のディレクトリ名にタイムスタンプを指定します。
メトリクスを視覚化するには、別の端末から TensorBoard を起動し、ブラウザでhttp://localhost:2222
を指定します。
tensorboard --logdir=/path/to/logdir --port=2222
ビデオをレンダリングし、OpenAI Gym 統計を収集してスコアボードにアップロードするには、次のように入力します。
python3 -m agents.scripts.visualize --logdir=/path/to/logdir/ < time > - < config > --outdir=/path/to/outdir/
このプロジェクトは、新しい強化学習のアイデアを簡単に実装できる出発点としてリリースされます。コードを変更する場合は、次のファイルから始めるとよいでしょう。
ファイル | コンテンツ |
---|---|
scripts/configs.py | タスクとアルゴリズムを指定する実験構成。 |
scripts/networks.py | ニューラル ネットワーク モデル。 |
scripts/train.py | トレーニング設定を含む実行可能ファイル。 |
algorithms/ppo/ppo.py | PPO アルゴリズムの TensorFlow グラフ。 |
単体テストと lint を実行するには、次のように入力します。
python2 -m unittest discover -p " *_test.py "
python3 -m unittest discover -p " *_test.py "
python3 -m pylint agents
さらに質問がある場合は、Github で問題を開いてください。
効率的なアルゴリズム実装のために TensorFlow と完全に統合された OpenAI Gym 環境用のバッチ インターフェイスが含まれています。これは、次のコア コンポーネントを通じて実現されます。
agents.tools.wrappers.ExternalProcess
は、外部プロセス内に OpenAI Gym 環境を構築する環境ラッパーです。 step()
およびreset()
の呼び出しと属性へのアクセスはプロセスに転送され、結果を待ちます。これにより、Python のグローバル インタープリタ ロックによる制限を受けることなく、複数の環境を並行して実行できます。agents.tools.BatchEnv
OpenAI Gym インターフェイスを環境のバッチに拡張します。これは、 step()
がアクションのバッチを受け取り、観察、報酬、完了フラグ、および情報オブジェクトのバッチを返す複数の OpenAI Gym 環境を結合します。個々の環境が外部プロセス内に存在する場合、それらは並行してステップ実行されます。agents.tools.InGraphBatchEnv
バッチ環境を TensorFlow グラフに統合し、そのstep()
とreset()
関数を操作としてアクセスできるようにします。観察、最後のアクション、報酬、および完了フラグの現在のバッチは変数に保存され、テンソルとして利用可能になります。agents.tools.simulate()
グラフ内バッチ環境のステップと強化学習アルゴリズムを 1 つのオペレーションに融合し、トレーニング ループ内で呼び出されます。これにより、セッション呼び出しの数が減り、将来のアルゴリズムをトレーニングする簡単な方法が提供されます。すべてのコードを理解するには、TensorFlow の制御フロー操作、特にtf.cond()
、 tf.scan()
、およびtf.control_dependencies()
についてよく理解してください。
これは Google の公式製品ではありません。