Tensorflowのサンプル試し(倒立振子問題05)
■条件を変えての続き2。
前回のある程度あたりを付けた条件から、もう少し条件を絞って試す。
今回は、隠れ層(64,)、(80,)、(96,)、学習率0.0005、0.0008、0.001で、バッチ128、リプレイバッファの最大長2000、初期データ収集ステップ数3000、トレーニングステップ数5000として実施した。
同じ条件で3回行った結果が下。
隠れ層 | 学習率 | バッチ | 5000回目の損失 | 結果(20回のうちの最大、最小) | 5000回目の損失 | 結果(20回のうちの最大、最小) | 5000回目の損失 | 結果(20回のうちの最大、最小) |
(64,) | 0.0005 | 128 | 3862.6704 | 82 - 461 | 1.8175 | 20 - 57 | 25366.1875 | 8 - 11 |
0.0008 | 3053.8608 | 8 - 11 | 381349.8750 | 8 - 10 | 7673.1528 | 8 - 10 | ||
0.001 | 355634.7500 | 42 - 172 | 81862.8750 | 59 - 182 | 447190.7812 | 8 - 11 | ||
(80,) | 0.0005 | 21386.0156 | 83 - 399 | 3380.2959 | 8 - 10 | 1572.2673 | 16 - 23 | |
0.0008 | 80915.1250 | 8 - 11 | 12153.7305 | 8 - 11 | 330539.9375 | 8 - 10 | ||
0.001 | 1405770.1250 | 8 - 10 | 515030.6875 | 70 - 304 | 481977.8125 | 8 - 11 | ||
(96,) | 0.0005 | 3084.3149 | 8 - 11 | 335332.6875 | 8 - 11 | 4.1898 | 21 - 53 | |
0.0008 | 500617.7500 | 9 - 10 | 486502.8750 | 9 - 10 | 389268.3438 | 8 - 10 | ||
0.001 | 1151396.0000 | 8 - 10 | 763704.6875 | 8 - 10 | 4.2605 | 27 - 387 |
この辺りの条件なら良好な結果が得られると思ったけど、同じ条件でも繰り返し行った時に必ず良好な結果が得られるわけではなかった。倒立振子問題に取り組む際の始めの条件は、ランダムな要素が入っているはずなので、うまくいかない所に収束することもあると思うけど、設定した条件が適切なものなのか、単純に偶然から良好な結果が出ているのか、どうすれば判断できるかなー。一つの目安としては損失が小さいものはそれなり良好な結果が出そう(赤字部分とか)。
同じ条件でトレーニング数を変えて何度か試した。隠れ層 (64,)、学習率 0.0005、バッチ 128でトレーニング数を1000、5000、10000として5回ずつ行った。
トレーニング数 | 最後の損失 | 結果(20回のうちの最大、最小) |
1000 | 41.8427 | 15 - 21 |
97.7999 | 9 - 11 | |
31.5471 | 8 - 10 | |
32.7286 | 8 - 10 | |
240.9511 | 8 - 11 | |
5000 | 5847.4463 | 68 - 182 |
1553.1791 | 8 - 10 | |
1564.4640 | 68 - 211 | |
34043.9297 | 8 - 11 | |
8000.1201 | 57 - 136 | |
10000 | 240225.4375 | 8 - 10 |
8409.8691 | 53 - 204 | |
6135.1592 | 8 - 10 | |
690024.3750 | 8 - 11 | |
8992.4863 | 8 - 10 |
繰り返し試してみると、思ったより良好な結果になる頻度が少ない。こうなると今まで出てきた結果が本当に良好な結果であったか疑わしい。もし、ランダムに作成している初期値が結果に大きな影響を与えるなら、そこの条件も合わせた上でパラメータ調整をしないと良好な結果が出るパラメータか判断できないと思う。どうしたらいいか少し考えたい。