Tensorforce 基本 : モジュール仕様 (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 04/24/2020 (0.5.4)
* 本ページは、Tensorforce の以下のドキュメントを翻訳した上で適宜、補足説明したものです:
- Basics : Module specification
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
基本 : モジュール仕様
下で表される仕様選択肢のいずれかにより、エージェントは Agent.create(agent=…) を通してインスタンス化されます (agent は type 引数として作用します)。2 番目の引数 environment としてアプリケーション Environment 実装を渡すことが推奨されます、これはエージェントの対応する states, actions と max_episode_timesteps 引数を自動的に抽出します。
モジュールをどのように指定するか
モジュール type と引数を持つ辞書
Agent.create(... policy=dict(network=dict(type='layered', layers=[dict(type='dense', size=32)])), memory=dict(type='replay', capacity=10000), ... )
JSON 仕様ファイル (plus 追加引数)
Agent.create(... policy=dict(network='network.json'), memory=dict(type='memory.json', capacity=10000), ... )
モジュールパス (plus 追加引数)
Agent.create(... policy=dict(network='my_module.TestNetwork'), memory=dict(type='tensorforce.core.memories.Replay', capacity=10000), ... )
Callable or Type (plus 追加引数)
Agent.create(... policy=dict(network=TestNetwork), memory=dict(type=Replay, capacity=10000), ... )
デフォルトモジュール: only arguments or first argument
Agent.create(... policy=dict(network=[dict(type='dense', size=32)]), memory=dict(capacity=10000), ... )
静的 vs 動的ハイパーパラメータ
Tensorforce はエージェント/モジュール引数 (プリミティブ型: bool/int/long/float) の間を識別します、これは層サイズ、or アーキテクチャ内の値のような、学習率のような、 TensorFlow モデル・アーキテクチャのいずれかの部分を指定します。前者はエージェント初期化の一部として静的に定義されるところ、後者は後で動的に調整できます。これらの動的ハイパーパラメータはドキュメントのタイプ仕様の一部としてパラメータにより示され、そして例えば、減衰する学習率を指定するような定数値の代わりに パラメータモジュール が割り当てられます。
サンプル: 探求を指数関数的に減衰する
Agent.create(... exploration=dict( type='decaying', unit='timesteps', decay='exponential', initial_value=0.1, decay_steps=1000, decay_rate=0.5 ), ... )
サンプル: 線形に範囲 (= horizon) を増やす
Agent.create(... reward_estimation=dict(horizon=dict( type='decaying', dtype='long', unit='episodes', decay='polynomial', initial_value=10.0, decay_steps=1000, final_value=50.0, power=1.0 ), ... )
以上