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
), ...
)
以上