openai gym で環境を作って、今いろいろな設定やエージェントを試しています。dqn_cartpole の例 ( https://github.com/wau/keras-rl2/blob/master/examples/dqn_cartpole.py ) のエージェントから始めました。ある時点で、NaN 値が原因で q 値の計算が失敗しました。以下の設定にトレースバックと小さな変更を追加しました。
dqn_cartpole の例と比較した私の設定:
Dense Layer: 16,16,16 の代わりに 256, 64, 16 を選びました
policy = BoltzmannQPolicy()
dqn = DQNAgent(model=model, nb_actions=nb_actions, memory=memory, nb_steps_warmup=50000, target_model_update=1e-2, policy=policy)
dqn.compile(Adam(lr=1e-3), metrics=['mae'])
dqn.fit(env, nb_steps=500000, visualize=False, verbose=2)
• エラー前の最後のトレーニング エピソード: 497280/500000: エピソード: 2960、期間: 13.926 秒、エピソード ステップ: 168、1 秒あたりのステップ数: 12、エピソード報酬: 47056.579、平均報酬: 280.099 [-10229.000, 8998.000]、平均アクション: 45.298 [0.000, 96.000]、損失: 60564033920565248.000000、mae: 3245972224.000000、mean_q: 3358134016.000000
Traceback (most recent call last):
File "~environment.py", line 125, in
dqn.fit(env, nb_steps=500000, visualize=False, verbose=2)
File "~\python_env\lib\site-packages\rl\core.py", line 169, in fit
action = self.forward(observation)
File "~\python_env\lib\site-packages\rl\agents\dqn.py", line 227, in forward
action = self.policy.select_action(q_values=q_values)
File "~\python_env\lib\site-packages\rl\policy.py", line 227, in select_action
action = np.random.choice(range(nb_actions), p=probs)
File "mtrand.pyx", line 928, in numpy.random.mtrand.RandomState.choice
ValueError: probabilities contain NaN
を使用している場合、このエラーは発生しませんEpsGreedyQPolicy
。NaN が生成される理由とそれを回避する方法を理解する可能性はありますか?