カスタムGym環境作成(14) - 学習率と報酬の調整

前回記事で山超えのコースを学習・攻略しようとしましたが、うまく学習できませんでした。

[橋を渡るコースを山でふさいだマップイメージ]

今回は、学習率と報酬を調整してマップ攻略を目指します。

学習率と報酬の調整

学習率と報酬をいろいろと変更してみて、最終的には下記のように設定し攻略することができました。

  • 学習率を1に設定(train6.py 25行目のlearning_rateオプションで設定)
  • ゴール時の報酬を2000に変更(env6.py 92行目を修正)

[ソース]

train6.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# 警告を非表示
import os
import warnings
warnings.simplefilter('ignore')
import tensorflow as tf
tf.get_logger().setLevel("ERROR")

import gym
from env6 import MyEnv

from stable_baselines.common.vec_env import DummyVecEnv
from stable_baselines import ACKTR
from stable_baselines.bench import Monitor

# ログフォルダの作成
log_dir = './logs/'
os.makedirs(log_dir, exist_ok=True)

# 環境の生成
env = MyEnv()
env = Monitor(env, log_dir, allow_early_resets=True)
env = DummyVecEnv([lambda: env])

# モデルの生成
model = ACKTR('MlpPolicy', env, verbose=1, learning_rate=1)

# モデルの学習
model.learn(total_timesteps=128000)

# モデルの保存
model.save('model6')

# モデルのテスト
state = env.reset()
total_reward = 0
while True:
# 環境の描画
env.render()

# モデルの推論
action, _ = model.predict(state)

# 1ステップの実行
state, reward, done, info = env.step(action)
total_reward += reward
print('reward:', reward, 'total_reward', total_reward)
print('-----------')

print('')
# エピソード完了
if done:
# 環境の描画
print('total_reward:', total_reward)
break

実行結果(ログ)は以下のようになります。

[実行結果]

---------------------------------
| explained_variance | 2.03e-06 |
| fps                | 31       |
| nupdates           | 1        |
| policy_entropy     | 1.39     |
| policy_loss        | -406     |
| total_timesteps    | 20       |
| value_loss         | 1.37e+05 |
---------------------------------
---------------------------------
| ep_len_mean        | 201      |
| ep_reward_mean     | -322     |
| explained_variance | 0        |
| fps                | 948      |
| nupdates           | 100      |
| policy_entropy     | 0.0541   |
| policy_loss        | -0.00449 |
| total_timesteps    | 2000     |
| value_loss         | 0.218    |
---------------------------------
---------------------------------
| ep_len_mean        | 201      |
| ep_reward_mean     | -258     |
| explained_variance | 0.00392  |
| fps                | 1099     |
| nupdates           | 200      |
| policy_entropy     | 0.388    |
| policy_loss        | -0.0641  |
| total_timesteps    | 4000     |
| value_loss         | 0.0191   |
---------------------------------
---------------------------------
| ep_len_mean        | 201      |
| ep_reward_mean     | -269     |
| explained_variance | -0.0365  |
| fps                | 1158     |
| nupdates           | 300      |
| policy_entropy     | 1.35     |
| policy_loss        | -0.052   |
| total_timesteps    | 6000     |
| value_loss         | 0.002    |
---------------------------------
---------------------------------
| ep_len_mean        | 201      |
| ep_reward_mean     | -409     |
| explained_variance | -4.18    |
| fps                | 1188     |
| nupdates           | 400      |
| policy_entropy     | 1.35     |
| policy_loss        | -0.00553 |
| total_timesteps    | 8000     |
| value_loss         | 5.43e-05 |
---------------------------------
----------------------------------
| ep_len_mean        | 201       |
| ep_reward_mean     | -466      |
| explained_variance | -0.000672 |
| fps                | 1207      |
| nupdates           | 500       |
| policy_entropy     | 1.32      |
| policy_loss        | -55.1     |
| total_timesteps    | 10000     |
| value_loss         | 3.66e+03  |
----------------------------------
----------------------------------
| ep_len_mean        | 201       |
| ep_reward_mean     | -498      |
| explained_variance | -3.39e+04 |
| fps                | 1219      |
| nupdates           | 600       |
| policy_entropy     | 1.31      |
| policy_loss        | -0.00111  |
| total_timesteps    | 12000     |
| value_loss         | 0.00047   |
----------------------------------
---------------------------------
| ep_len_mean        | 201      |
| ep_reward_mean     | -512     |
| explained_variance | -37      |
| fps                | 1228     |
| nupdates           | 700      |
| policy_entropy     | 1.29     |
| policy_loss        | -0.0169  |
| total_timesteps    | 14000    |
| value_loss         | 3.5e-05  |
---------------------------------
----------------------------------
| ep_len_mean        | 201       |
| ep_reward_mean     | -512      |
| explained_variance | -1.11e-05 |
| fps                | 1235      |
| nupdates           | 800       |
| policy_entropy     | 1.28      |
| policy_loss        | -57.6     |
| total_timesteps    | 16000     |
| value_loss         | 3.66e+03  |
----------------------------------
---------------------------------
| ep_len_mean        | 201      |
| ep_reward_mean     | -482     |
| explained_variance | -7       |
| fps                | 1240     |
| nupdates           | 900      |
| policy_entropy     | 1.36     |
| policy_loss        | -0.0157  |
| total_timesteps    | 18000    |
| value_loss         | 5.22e-06 |
---------------------------------
---------------------------------
| ep_len_mean        | 201      |
| ep_reward_mean     | -476     |
| explained_variance | -4.79    |
| fps                | 1244     |
| nupdates           | 1000     |
| policy_entropy     | 1.32     |
| policy_loss        | -0.0135  |
| total_timesteps    | 20000    |
| value_loss         | 1.72e-06 |
---------------------------------
---------------------------------
| ep_len_mean        | 201      |
| ep_reward_mean     | -490     |
| explained_variance | -461     |
| fps                | 1246     |
| nupdates           | 1100     |
| policy_entropy     | 1.38     |
| policy_loss        | -0.0131  |
| total_timesteps    | 22000    |
| value_loss         | 1.42e-06 |
---------------------------------
---------------------------------
| ep_len_mean        | 201      |
| ep_reward_mean     | -518     |
| explained_variance | -20.4    |
| fps                | 1248     |
| nupdates           | 1200     |
| policy_entropy     | 1.38     |
| policy_loss        | -0.0222  |
| total_timesteps    | 24000    |
| value_loss         | 6.51e-05 |
---------------------------------
---------------------------------
| ep_len_mean        | 201      |
| ep_reward_mean     | -531     |
| explained_variance | -22.4    |
| fps                | 1250     |
| nupdates           | 1300     |
| policy_entropy     | 1.37     |
| policy_loss        | -0.015   |
| total_timesteps    | 26000    |
| value_loss         | 2.2e-06  |
---------------------------------
---------------------------------
| ep_len_mean        | 201      |
| ep_reward_mean     | -480     |
| explained_variance | -0.00395 |
| fps                | 1251     |
| nupdates           | 1400     |
| policy_entropy     | 1.34     |
| policy_loss        | -79.9    |
| total_timesteps    | 28000    |
| value_loss         | 5.28e+03 |
---------------------------------
---------------------------------
| ep_len_mean        | 201      |
| ep_reward_mean     | -450     |
| explained_variance | -3.2     |
| fps                | 1252     |
| nupdates           | 1500     |
| policy_entropy     | 1.3      |
| policy_loss        | -0.0117  |
| total_timesteps    | 30000    |
| value_loss         | 3.33e-06 |
---------------------------------
---------------------------------
| ep_len_mean        | 201      |
| ep_reward_mean     | -426     |
| explained_variance | 0.413    |
| fps                | 1253     |
| nupdates           | 1600     |
| policy_entropy     | 1.35     |
| policy_loss        | -0.0134  |
| total_timesteps    | 32000    |
| value_loss         | 1.12e-06 |
---------------------------------
---------------------------------
| ep_len_mean        | 201      |
| ep_reward_mean     | -392     |
| explained_variance | -0.00011 |
| fps                | 1254     |
| nupdates           | 1700     |
| policy_entropy     | 1.27     |
| policy_loss        | -22      |
| total_timesteps    | 34000    |
| value_loss         | 970      |
---------------------------------
---------------------------------
| ep_len_mean        | 201      |
| ep_reward_mean     | -377     |
| explained_variance | 1.26e-05 |
| fps                | 1255     |
| nupdates           | 1800     |
| policy_entropy     | 1.27     |
| policy_loss        | -124     |
| total_timesteps    | 36000    |
| value_loss         | 7.82e+03 |
---------------------------------
---------------------------------
| ep_len_mean        | 201      |
| ep_reward_mean     | -377     |
| explained_variance | 0.000336 |
| fps                | 1256     |
| nupdates           | 1900     |
| policy_entropy     | 1.32     |
| policy_loss        | 59.4     |
| total_timesteps    | 38000    |
| value_loss         | 4.07e+03 |
---------------------------------
---------------------------------
| ep_len_mean        | 201      |
| ep_reward_mean     | -364     |
| explained_variance | 0.000371 |
| fps                | 1257     |
| nupdates           | 2000     |
| policy_entropy     | 1.35     |
| policy_loss        | 116      |
| total_timesteps    | 40000    |
| value_loss         | 7.81e+03 |
---------------------------------
---------------------------------
| ep_len_mean        | 201      |
| ep_reward_mean     | -359     |
| explained_variance | -1.94    |
| fps                | 1257     |
| nupdates           | 2100     |
| policy_entropy     | 1.38     |
| policy_loss        | -0.0157  |
| total_timesteps    | 42000    |
| value_loss         | 4.23e-06 |
---------------------------------
---------------------------------
| ep_len_mean        | 201      |
| ep_reward_mean     | -336     |
| explained_variance | 0.494    |
| fps                | 1258     |
| nupdates           | 2200     |
| policy_entropy     | 1.38     |
| policy_loss        | -0.0175  |
| total_timesteps    | 44000    |
| value_loss         | 8.93e-06 |
---------------------------------
---------------------------------
| ep_len_mean        | 201      |
| ep_reward_mean     | -313     |
| explained_variance | 0.071    |
| fps                | 1259     |
| nupdates           | 2300     |
| policy_entropy     | 1.38     |
| policy_loss        | -0.0205  |
| total_timesteps    | 46000    |
| value_loss         | 2.63e-05 |
---------------------------------
---------------------------------
| ep_len_mean        | 201      |
| ep_reward_mean     | -318     |
| explained_variance | -3.05    |
| fps                | 1259     |
| nupdates           | 2400     |
| policy_entropy     | 1.38     |
| policy_loss        | -0.0126  |
| total_timesteps    | 48000    |
| value_loss         | 1.01e-05 |
---------------------------------
---------------------------------
| ep_len_mean        | 201      |
| ep_reward_mean     | -308     |
| explained_variance | -0.223   |
| fps                | 1260     |
| nupdates           | 2500     |
| policy_entropy     | 1.37     |
| policy_loss        | -0.0161  |
| total_timesteps    | 50000    |
| value_loss         | 4.16e-06 |
---------------------------------
---------------------------------
| ep_len_mean        | 201      |
| ep_reward_mean     | -304     |
| explained_variance | -0.795   |
| fps                | 1260     |
| nupdates           | 2600     |
| policy_entropy     | 1.37     |
| policy_loss        | -0.0182  |
| total_timesteps    | 52000    |
| value_loss         | 1.62e-05 |
---------------------------------
---------------------------------
| ep_len_mean        | 201      |
| ep_reward_mean     | -300     |
| explained_variance | -0.311   |
| fps                | 1261     |
| nupdates           | 2700     |
| policy_entropy     | 1.38     |
| policy_loss        | -0.0186  |
| total_timesteps    | 54000    |
| value_loss         | 1.6e-05  |
---------------------------------
---------------------------------
| ep_len_mean        | 199      |
| ep_reward_mean     | -264     |
| explained_variance | 0.0573   |
| fps                | 1261     |
| nupdates           | 2800     |
| policy_entropy     | 1.38     |
| policy_loss        | -0.0212  |
| total_timesteps    | 56000    |
| value_loss         | 3.45e-05 |
---------------------------------
---------------------------------
| ep_len_mean        | 199      |
| ep_reward_mean     | -226     |
| explained_variance | -3.36    |
| fps                | 1262     |
| nupdates           | 2900     |
| policy_entropy     | 1.36     |
| policy_loss        | -0.0107  |
| total_timesteps    | 58000    |
| value_loss         | 1.11e-05 |
---------------------------------
---------------------------------
| ep_len_mean        | 199      |
| ep_reward_mean     | -221     |
| explained_variance | -0.187   |
| fps                | 1262     |
| nupdates           | 3000     |
| policy_entropy     | 1.38     |
| policy_loss        | -0.0219  |
| total_timesteps    | 60000    |
| value_loss         | 4.85e-05 |
---------------------------------
---------------------------------
| ep_len_mean        | 199      |
| ep_reward_mean     | -215     |
| explained_variance | -5.68    |
| fps                | 1262     |
| nupdates           | 3100     |
| policy_entropy     | 1.36     |
| policy_loss        | -0.0262  |
| total_timesteps    | 62000    |
| value_loss         | 0.000103 |
---------------------------------
---------------------------------
| ep_len_mean        | 198      |
| ep_reward_mean     | -170     |
| explained_variance | 0.000507 |
| fps                | 1263     |
| nupdates           | 3200     |
| policy_entropy     | 1.38     |
| policy_loss        | 119      |
| total_timesteps    | 64000    |
| value_loss         | 7.81e+03 |
---------------------------------
---------------------------------
| ep_len_mean        | 198      |
| ep_reward_mean     | -175     |
| explained_variance | -0.506   |
| fps                | 1263     |
| nupdates           | 3300     |
| policy_entropy     | 1.38     |
| policy_loss        | -0.0174  |
| total_timesteps    | 66000    |
| value_loss         | 1.03e-05 |
---------------------------------
---------------------------------
| ep_len_mean        | 197      |
| ep_reward_mean     | -145     |
| explained_variance | 3.67e-05 |
| fps                | 1263     |
| nupdates           | 3400     |
| policy_entropy     | 1.38     |
| policy_loss        | 20.5     |
| total_timesteps    | 68000    |
| value_loss         | 1.44e+03 |
---------------------------------
---------------------------------
| ep_len_mean        | 196      |
| ep_reward_mean     | -114     |
| explained_variance | -1.71    |
| fps                | 1263     |
| nupdates           | 3500     |
| policy_entropy     | 1.37     |
| policy_loss        | -0.0166  |
| total_timesteps    | 70000    |
| value_loss         | 1.17e-05 |
---------------------------------
---------------------------------
| ep_len_mean        | 196      |
| ep_reward_mean     | -66.8    |
| explained_variance | -1.37    |
| fps                | 1263     |
| nupdates           | 3600     |
| policy_entropy     | 1.38     |
| policy_loss        | -0.0194  |
| total_timesteps    | 72000    |
| value_loss         | 2.63e-05 |
---------------------------------
---------------------------------
| ep_len_mean        | 195      |
| ep_reward_mean     | -11.9    |
| explained_variance | -3.93    |
| fps                | 1264     |
| nupdates           | 3700     |
| policy_entropy     | 1.37     |
| policy_loss        | -0.0467  |
| total_timesteps    | 74000    |
| value_loss         | 0.000802 |
---------------------------------
---------------------------------
| ep_len_mean        | 196      |
| ep_reward_mean     | 5.91     |
| explained_variance | -1.15    |
| fps                | 1264     |
| nupdates           | 3800     |
| policy_entropy     | 1.38     |
| policy_loss        | -0.0054  |
| total_timesteps    | 76000    |
| value_loss         | 6.35e-05 |
---------------------------------
---------------------------------
| ep_len_mean        | 193      |
| ep_reward_mean     | 73       |
| explained_variance | -1.33    |
| fps                | 1264     |
| nupdates           | 3900     |
| policy_entropy     | 1.36     |
| policy_loss        | -0.0216  |
| total_timesteps    | 78000    |
| value_loss         | 5.23e-05 |
---------------------------------
---------------------------------
| ep_len_mean        | 189      |
| ep_reward_mean     | 255      |
| explained_variance | -2.78    |
| fps                | 1264     |
| nupdates           | 4000     |
| policy_entropy     | 1.29     |
| policy_loss        | -0.0768  |
| total_timesteps    | 80000    |
| value_loss         | 0.00266  |
---------------------------------
---------------------------------
| ep_len_mean        | 189      |
| ep_reward_mean     | 278      |
| explained_variance | 0.157    |
| fps                | 1264     |
| nupdates           | 4100     |
| policy_entropy     | 1.37     |
| policy_loss        | -0.0131  |
| total_timesteps    | 82000    |
| value_loss         | 1.75e-05 |
---------------------------------
---------------------------------
| ep_len_mean        | 170      |
| ep_reward_mean     | 707      |
| explained_variance | 0.000953 |
| fps                | 1264     |
| nupdates           | 4200     |
| policy_entropy     | 0.94     |
| policy_loss        | 1.01e+03 |
| total_timesteps    | 84000    |
| value_loss         | 2.01e+06 |
---------------------------------
---------------------------------
| ep_len_mean        | 137      |
| ep_reward_mean     | 1.21e+03 |
| explained_variance | 0.471    |
| fps                | 1263     |
| nupdates           | 4300     |
| policy_entropy     | 0.83     |
| policy_loss        | -0.0847  |
| total_timesteps    | 86000    |
| value_loss         | 0.114    |
---------------------------------
---------------------------------
| ep_len_mean        | 68.7     |
| ep_reward_mean     | 1.86e+03 |
| explained_variance | 0.00681  |
| fps                | 1263     |
| nupdates           | 4400     |
| policy_entropy     | 0.517    |
| policy_loss        | 74.5     |
| total_timesteps    | 88000    |
| value_loss         | 1.03e+06 |
---------------------------------
---------------------------------
| ep_len_mean        | 23.5     |
| ep_reward_mean     | 1.97e+03 |
| explained_variance | 0.00852  |
| fps                | 1262     |
| nupdates           | 4500     |
| policy_entropy     | 0.211    |
| policy_loss        | 59.4     |
| total_timesteps    | 90000    |
| value_loss         | 3.15e+06 |
---------------------------------
---------------------------------
| ep_len_mean        | 21.2     |
| ep_reward_mean     | 1.98e+03 |
| explained_variance | 0.0106   |
| fps                | 1261     |
| nupdates           | 4600     |
| policy_entropy     | 0.149    |
| policy_loss        | 20.5     |
| total_timesteps    | 92000    |
| value_loss         | 2.26e+06 |
---------------------------------
---------------------------------
| ep_len_mean        | 22.6     |
| ep_reward_mean     | 1.96e+03 |
| explained_variance | 0.0142   |
| fps                | 1260     |
| nupdates           | 4700     |
| policy_entropy     | 0.141    |
| policy_loss        | 399      |
| total_timesteps    | 94000    |
| value_loss         | 2.72e+06 |
---------------------------------
---------------------------------
| ep_len_mean        | 20.8     |
| ep_reward_mean     | 1.98e+03 |
| explained_variance | 0.011    |
| fps                | 1260     |
| nupdates           | 4800     |
| policy_entropy     | 0.104    |
| policy_loss        | 7.25     |
| total_timesteps    | 96000    |
| value_loss         | 1.78e+06 |
---------------------------------
---------------------------------
| ep_len_mean        | 20.4     |
| ep_reward_mean     | 1.98e+03 |
| explained_variance | 0.0091   |
| fps                | 1260     |
| nupdates           | 4900     |
| policy_entropy     | 0.0783   |
| policy_loss        | 5.12     |
| total_timesteps    | 98000    |
| value_loss         | 1.99e+06 |
---------------------------------
---------------------------------
| ep_len_mean        | 20.4     |
| ep_reward_mean     | 1.98e+03 |
| explained_variance | 0.00713  |
| fps                | 1260     |
| nupdates           | 5000     |
| policy_entropy     | 0.115    |
| policy_loss        | -0.78    |
| total_timesteps    | 100000   |
| value_loss         | 1.28e+06 |
---------------------------------
---------------------------------
| ep_len_mean        | 20.4     |
| ep_reward_mean     | 1.98e+03 |
| explained_variance | 0.0218   |
| fps                | 1259     |
| nupdates           | 5100     |
| policy_entropy     | 0.0424   |
| policy_loss        | 0.498    |
| total_timesteps    | 102000   |
| value_loss         | 1.57e+06 |
---------------------------------
---------------------------------
| ep_len_mean        | 20.1     |
| ep_reward_mean     | 1.98e+03 |
| explained_variance | 0.00849  |
| fps                | 1259     |
| nupdates           | 5200     |
| policy_entropy     | 0.0179   |
| policy_loss        | -0.0378  |
| total_timesteps    | 104000   |
| value_loss         | 1.72e+05 |
---------------------------------
---------------------------------
| ep_len_mean        | 20.1     |
| ep_reward_mean     | 1.98e+03 |
| explained_variance | 0.0211   |
| fps                | 1259     |
| nupdates           | 5300     |
| policy_entropy     | 0.024    |
| policy_loss        | 0.205    |
| total_timesteps    | 106000   |
| value_loss         | 1.26e+06 |
---------------------------------
---------------------------------
| ep_len_mean        | 20.1     |
| ep_reward_mean     | 1.98e+03 |
| explained_variance | 0.039    |
| fps                | 1259     |
| nupdates           | 5400     |
| policy_entropy     | 0.0104   |
| policy_loss        | 0.972    |
| total_timesteps    | 108000   |
| value_loss         | 2.55e+06 |
---------------------------------
---------------------------------
| ep_len_mean        | 20       |
| ep_reward_mean     | 1.98e+03 |
| explained_variance | 0.0334   |
| fps                | 1259     |
| nupdates           | 5500     |
| policy_entropy     | 0.00561  |
| policy_loss        | 0.349    |
| total_timesteps    | 110000   |
| value_loss         | 2.52e+06 |
---------------------------------
---------------------------------
| ep_len_mean        | 20       |
| ep_reward_mean     | 1.98e+03 |
| explained_variance | 0.0375   |
| fps                | 1259     |
| nupdates           | 5600     |
| policy_entropy     | 0.0026   |
| policy_loss        | 0.306    |
| total_timesteps    | 112000   |
| value_loss         | 2.62e+06 |
---------------------------------
---------------------------------
| ep_len_mean        | 20       |
| ep_reward_mean     | 1.98e+03 |
| explained_variance | 0.0361   |
| fps                | 1258     |
| nupdates           | 5700     |
| policy_entropy     | 0.00159  |
| policy_loss        | 0.145    |
| total_timesteps    | 114000   |
| value_loss         | 2.61e+06 |
---------------------------------
---------------------------------
| ep_len_mean        | 20       |
| ep_reward_mean     | 1.98e+03 |
| explained_variance | 0.0308   |
| fps                | 1258     |
| nupdates           | 5800     |
| policy_entropy     | 0.00105  |
| policy_loss        | 0.089    |
| total_timesteps    | 116000   |
| value_loss         | 2.6e+06  |
---------------------------------
---------------------------------
| ep_len_mean        | 20       |
| ep_reward_mean     | 1.98e+03 |
| explained_variance | 0.0279   |
| fps                | 1258     |
| nupdates           | 5900     |
| policy_entropy     | 0.000787 |
| policy_loss        | 0.0623   |
| total_timesteps    | 118000   |
| value_loss         | 2.59e+06 |
---------------------------------
---------------------------------
| ep_len_mean        | 21.8     |
| ep_reward_mean     | 1.96e+03 |
| explained_variance | -0.983   |
| fps                | 1258     |
| nupdates           | 6000     |
| policy_entropy     | 0.135    |
| policy_loss        | -8.94    |
| total_timesteps    | 120000   |
| value_loss         | 919      |
---------------------------------
---------------------------------
| ep_len_mean        | 36.1     |
| ep_reward_mean     | 1.8e+03  |
| explained_variance | 0.0285   |
| fps                | 1258     |
| nupdates           | 6100     |
| policy_entropy     | 0.202    |
| policy_loss        | 2.62     |
| total_timesteps    | 122000   |
| value_loss         | 8.08e+05 |
---------------------------------
---------------------------------
| ep_len_mean        | 21.1     |
| ep_reward_mean     | 1.98e+03 |
| explained_variance | 0.0263   |
| fps                | 1258     |
| nupdates           | 6200     |
| policy_entropy     | 0.0413   |
| policy_loss        | 0.446    |
| total_timesteps    | 124000   |
| value_loss         | 9.49e+05 |
---------------------------------
---------------------------------
| ep_len_mean        | 20.3     |
| ep_reward_mean     | 1.98e+03 |
| explained_variance | 0.0725   |
| fps                | 1257     |
| nupdates           | 6300     |
| policy_entropy     | 0.0795   |
| policy_loss        | 1.3      |
| total_timesteps    | 126000   |
| value_loss         | 2.49e+06 |
---------------------------------
---------------------------------
| ep_len_mean        | 20.6     |
| ep_reward_mean     | 1.98e+03 |
| explained_variance | 0.0398   |
| fps                | 1256     |
| nupdates           | 6400     |
| policy_entropy     | 0.0273   |
| policy_loss        | 1.16     |
| total_timesteps    | 128000   |
| value_loss         | 2.37e+06 |
---------------------------------
☆山山山   山
  川川山山 G
山 三三 山 山
山 川川山   
  山  山山 
山 山 山 山 
山       
  山 山山 山
reward: [-1.] total_reward [-1.]
-----------

S山山山   山
☆ 川川山山 G
山 三三 山 山
山 川川山   
  山  山山 
山 山 山 山 
山       
  山 山山 山
reward: [-1.] total_reward [-2.]
-----------

☆山山山   山
  川川山山 G
山 三三 山 山
山 川川山   
  山  山山 
山 山 山 山 
山       
  山 山山 山
reward: [-1.] total_reward [-3.]
-----------

S山山山   山
☆ 川川山山 G
山 三三 山 山
山 川川山   
  山  山山 
山 山 山 山 
山       
  山 山山 山
reward: [-1.] total_reward [-4.]
-----------

S山山山   山
 ☆川川山山 G
山 三三 山 山
山 川川山   
  山  山山 
山 山 山 山 
山       
  山 山山 山
reward: [-1.] total_reward [-5.]
-----------

S山山山   山
  川川山山 G
山☆三三 山 山
山 川川山   
  山  山山 
山 山 山 山 
山       
  山 山山 山
reward: [-1.] total_reward [-6.]
-----------

S山山山   山
  川川山山 G
山 三三 山 山
山☆川川山   
  山  山山 
山 山 山 山 
山       
  山 山山 山
reward: [-1.] total_reward [-7.]
-----------

S山山山   山
  川川山山 G
山 三三 山 山
山 川川山   
 ☆山  山山 
山 山 山 山 
山       
  山 山山 山
reward: [-1.] total_reward [-8.]
-----------

S山山山   山
  川川山山 G
山 三三 山 山
山 川川山   
  山  山山 
山☆山 山 山 
山       
  山 山山 山
reward: [-1.] total_reward [-9.]
-----------

S山山山   山
  川川山山 G
山 三三 山 山
山 川川山   
  山  山山 
山 山 山 山 
山☆      
  山 山山 山
reward: [-1.] total_reward [-10.]
-----------

S山山山   山
  川川山山 G
山 三三 山 山
山 川川山   
  山  山山 
山 山 山 山 
山 ☆     
  山 山山 山
reward: [-1.] total_reward [-11.]
-----------

S山山山   山
  川川山山 G
山 三三 山 山
山 川川山   
  山  山山 
山 山 山 山 
山  ☆    
  山 山山 山
reward: [-1.] total_reward [-12.]
-----------

S山山山   山
  川川山山 G
山 三三 山 山
山 川川山   
  山  山山 
山 山 山 山 
山   ☆   
  山 山山 山
reward: [-1.] total_reward [-13.]
-----------

S山山山   山
  川川山山 G
山 三三 山 山
山 川川山   
  山  山山 
山 山 山 山 
山    ☆  
  山 山山 山
reward: [-1.] total_reward [-14.]
-----------

S山山山   山
  川川山山 G
山 三三 山 山
山 川川山   
  山  山山 
山 山 山 山 
山     ☆ 
  山 山山 山
reward: [-1.] total_reward [-15.]
-----------

S山山山   山
  川川山山 G
山 三三 山 山
山 川川山   
  山  山山 
山 山 山 山 
山      ☆
  山 山山 山
reward: [-1.] total_reward [-16.]
-----------

S山山山   山
  川川山山 G
山 三三 山 山
山 川川山   
  山  山山 
山 山 山 山☆
山       
  山 山山 山
reward: [-1.] total_reward [-17.]
-----------

S山山山   山
  川川山山 G
山 三三 山 山
山 川川山   
  山  山山☆
山 山 山 山 
山       
  山 山山 山
reward: [-1.] total_reward [-18.]
-----------

S山山山   山
  川川山山 G
山 三三 山 山
山 川川山  ☆
  山  山山 
山 山 山 山 
山       
  山 山山 山
reward: [-1.] total_reward [-19.]
-----------

S山山山   山
  川川山山 G
山 三三 山 山
山 川川山 ☆ 
  山  山山 
山 山 山 山 
山       
  山 山山 山
reward: [-1.] total_reward [-20.]
-----------

S山山山   山
  川川山山 G
山 三三 山☆山
山 川川山   
  山  山山 
山 山 山 山 
山       
  山 山山 山
reward: [-1.] total_reward [-21.]
-----------

S山山山   山
  川川山山☆G
山 三三 山 山
山 川川山   
  山  山山 
山 山 山 山 
山       
  山 山山 山
reward: [2000.] total_reward [1979.]
-----------

total_reward: [1979.]

スタート時に一度出戻りしますが、その後はまっすぐゴールに向かっています。

平均報酬をグラフ化

確認のために学習中の平均報酬推移をグラフにします。

400エピソードを超えたあたりからゴール報酬の2000を取得できるようになっていることが分かります。

調整内容のまとめ

報酬に関しては、ゴールまでの距離が遠くなるほど大きめの報酬にしないといけないと感じました。

ゴールの報酬が、ゴール地点から波紋のように広がっていくイメージです。


また学習率はエージェントの大胆さを調整しているイメージでした。

学習率が低い場合は、臆病な感じで近くに障害(今回の場合は川)があるとそこに近づこうとはせずにスタート位置付近から移動しようとしません。

逆に学習率を高く設定した場合は、大胆にいろいろ行動するようになり、(川に飛び込んでしまうこともありますが)最終的にゴールにたどり着くことができるようになりました。

カスタムGym環境に合わせ報酬も学習率も適切に設定する必要性を強く感じました。