Github: https://github.com/reinforceio/tensorforce
TensorForce:強化学習のためのTensorFlowライブラリ
前書き
TensorForceは、オープンソースの強化学習ライブラリであり、明確なAPI、読みやすさ、モジュール化を提供し、研究と実践の両方で強化学習ソリューションを導入しています。 TensorForceはTensorFlowの上に構築され、Python 2.7および> 3.5と互換性があり、任意のタイプのシミュレーションまたはアプリケーション環境と互換性がある複数の状態入力および多次元アクションをサポートします。
TensorForceはまた、すべての強化学習ロジックを制御フローを含むTensorFlowグラフに移動することを目指しています。 これにより、ホスト言語(Python)の依存関係が軽減され、他の言語やコンテキストで使用できる移植可能な計算グラフが可能になり、パフォーマンスが向上します。
アーキテクチャの詳細については、ブログでもご覧いただけます 。 問題が発生した場合や質問がある場合は、 TensorForce FAQもお読みください。
最後に、最新のアップデートノート(UPDATE_NOTES.md)を読んで、プロジェクトの進化の仕組み、特に主要なAPIの最新情報を入手してください。
既存のライブラリとの主な違いは、非シミュレーション環境での使用を容易にする環境、エージェント、および更新ロジックの厳密な分離です。 さらに、研究コードは、特定のベンチマークに取り組むために使用されてきた固定ネットワークアーキテクチャに依存することがよくあります。 TensorForceは、(ほとんど)全てをオプションで構成可能でなければならず、特に新しいモデルですばやく試すことができるようにバリューファンクションテンプレート構成を使用するという考えで構築されています。 TensorForceの目標は、現代のソフトウェアサービスアーキテクチャに統合された開業医の強化学習フレームワークを提供することです。
TensorForceは、既存のコードを継続的に改善するとともに、発生した新しい開発を反映するために、積極的に維持管理され、開発されています。 目的はあらゆる新しいトリックを含むのではなく、安定していると証明する方法を採用することです。
特徴
TensorForceは現在、OpenAI Gym API、OpenAI Universe、DeepMindラボ、ALEおよびMazeエクスプローラと統合されています。 以下のアルゴリズムが利用可能です(すべてのポリシーメソッドは、連続/離散の両方であり、限定されたアクションにはベータ版を使用しています)。
- 分散型TensorFlowまたはマルチスレッドランナーを使用したA3Cは、現在、さまざまなエージェントで使用可能な一般的なモデルの一部として使用されています。 – 紙
- トラストリージョンポリシー最適化(TRPO) –
trpo_agent
– ペーパー - ノーマライズアドバンテージ機能(NAF) –
naf_agent
– 論文 - DQN –
dqn_agent
– 用紙 - ダブルDQN –
ddqn_agent
– 用紙 - NステップDQN –
dqn_nstep_agent
- バニラポリシーグラジエント(VPG / REINFORCE) –
vpg_agent
– paper - Actor-criticモデル – 任意のポリシー勾配モデルの
baseline
経由(次のリストを参照) – 論文 - デモンストレーションによる深いQ学習(DQFD) – 論文
- PPO(Proximal Policy Optimization) –
ppo_agent
– ペーパー - 健全性チェックのためのランダムで定数のエージェント:
random_agent
、constant_agent
他のヒューリスティックとそれぞれの設定キーは、賢明なところでオンにすることができます:
- 一般化された効果の推定 –
gae_lambda
– 論文 - 優先度の高い再生 – メモリタイプの
prioritized_replay
再生 – 紙 - バインドされた連続アクションは、ガウスの代わりにBetaディストリビューションにマッピングされます
- ベースライン/アクター評論モード:生の状態(
states
)またはネットワーク出力(network
)に基づく。 MLP(mlp
)、CNN(cnn
)またはカスタムネットワーク(custom
)。 モードstates
特別な場合:状態ごとのベースライン+リニアコンビネーションレイヤー(baseline=dict(state1=..., state2=..., etc)
)。 - 一般的な純粋なTensorFlowオプティマイザ。ほとんどのモデルは、自然勾配と進化的オプティマイザで使用できます。
- 前処理モード:
normalize
、standardize
、grayscale
、sequence
、clip
、divide
、image_resize
- 探査モード:
constant
、linear_decay
、epsilon_anneal
、epsilon_decay
、ornstein_uhlenbeck
インストール
TensorForceの最新の安定版をPyPIにアップロードしました。 インストールするには、次のコマンドを実行します。
pip install tensorforce
GitHubの最新バージョンを使用する場合は、次のコマンドを使用します。
git clone git@github.com:reinforceio/tensorforce.git
cd tensorforce
pip install -e .
TensorForceはGoogleの Tensorflow上に構築されています 。 インストールコマンドは、 tensorflow
またはtensorflow-gpu
インストールされていることを前提としています。 Tensorforceには、バージョン1.5以降のTensorflowが必要です。
あるいは、以下のコマンドを使用してテンソルフローの依存関係をインストールすることもできます。
tensorflow
(cpu)を使用してtensorflow
をインストールするには、次のコマンドを使用します。
# PyPI install
pip install tensorforce[tf]
# Local install
pip install -e .[tf]
tensorflow-gpu
(gpu)を使用してtensorflow-gpu
をインストールするには、次のようにします。
# PyPI install
pip install tensorforce[tf_gpu]
# Local install
pip install -e .[tf_gpu]
TensorForceを更新するには、PyPIバージョンにpip install --upgrade tensorforce
を使用pip install --upgrade tensorforce
か、GitHubリポジトリをクローンした場合はtensorforceディレクトリでgit pull
を実行します。 デフォルトのインストールスクリプトにOpenAI Gym / Universe / DeepMindラボは含まれていないことに注意してください。 必要に応じて、通常はpip経由でインストールしてください。
例とドキュメント
クイックスタートについては、提供された設定を使用してサンプルスクリプトの1つを実行することができます。たとえば、CartPoleでTRPOエージェントを実行するには、examplesフォルダから実行します。
python examples/openai_gym.py CartPole-v0 -a examples/configs/ppo.json -n examples/configs/mlp2_network.json
ドキュメントはReadTheDocsで入手できます。 pytest
{.sourceCode}を実行することでメインディレクトリから実行できる最小限の環境でモデルを検証するテストもあります。
エージェントの作成と使用
事前に定義されたシミュレーションランナーを使用せずにTensorForceをライブラリとして使用するには、ライブラリをインストールしてインポートし、次にエージェントを作成し、以下のように使用します(すべてのオプションパラメータのドキュメントを参照)。
from tensorforce.agents import PPOAgent
# Create a Proximal Policy Optimization agent
agent = PPOAgent(
states=dict(type='float', shape=(10,)),
actions=dict(type='int', num_actions=10),
network=[
dict(type='dense', size=64),
dict(type='dense', size=64)
],
batching_capacity=1000,
step_optimizer=dict(
type='adam',
learning_rate=1e-4
)
)
# Get new data from somewhere, e.g. a client to a web app
client = MyClient('http://127.0.0.1', 8080)
# Poll new state from client
state = client.get_state()
# Get prediction from agent, execute
action = agent.act(state)
reward = client.execute(action)
# Add experience, agent automatically updates model according to batch size
agent.observe(reward=reward, terminal=False)
ベンチマーク
我々は、 reinforcementio / tensorforce-benchmarkでアルゴリズム実装をベンチマークするための別個のリポジトリを提供します 。
ベンチマーク用のDockerコンテナ(CPUおよびGPU)が利用可能です。
これは、VPG、TRPO、およびPPOを比較した、 CartPole-v0
サンプル出力です。
詳細については、 テンソルフォースベンチマークリポジトリを参照してください。
コミュニティと貢献
TensorForceはreinforcement.ioによって開発されました。reinforcement.ioは、強化学習ソフトウェアインフラストラクチャを提供することに焦点を当てた新しいプロジェクトです。 質問があればcontact@reinforce.ioまでお問い合わせください 。
最初にGitHubの問題としてバグレポートや機能ディスカッションを行ってください。
デベロッパーチャットも参加できます。 参加にあたっては、TensorForceをどのように使用しているかについての基本的な詳細を提供していただきたいので、アプリケーションやコミュニティについてもっと学ぶことができます。 この短いフォームを記入して、チャットにあなたを連れて行きます。
引用する
学術研究でTensorForceを使用する場合、次のように引用することができれば幸いです。
@misc{schaarschmidt2017tensorforce,
author = {Schaarschmidt, Michael and Kuhnle, Alexander and Fricke, Kai},
title = {TensorForce: A TensorFlow library for applied reinforcement learning},
howpublished={Web page},
url = {https://github.com/reinforceio/tensorforce},
year = {2017}
}
Islandman93、sven1977、Mazecreator、wasfname、lefnire、trickmeyer、mkempers、mryellow、ImpulseAdventure、HassamSheikh、vwxyzjn、beflix、janislavjankov、tms1337、perara、butchcom、yellowbee686など、オープンソースの貢献者にも非常に感謝しています。 、tomhennigan、neitzal、BorisSchaeling、ngoodger、ekerazha、Davidnet、AdamStelmaszczyk、10nagachika、petrbel、Kismuz。