Tensorflowのサンプル試し(倒立振子問題02)
■倒立振子問題の続き。
倒立振子のサンプルコードを生成して、この問題がどんな感じか見てみた。
キーボードから右と左を入力して、棒が倒れないように操作する。CartPole-v1では、物理法則をシミュレートする形となっているようなので、単純に右、左を交互に繰り返せば倒れないというものでもないらしい。実際に交互に入力しても20~30回程度で棒が倒れた。

Tensorflowでのコードも同様に右と左を入力している。
前回のコードに対して、パラメータを変更して結果を見てみる。ChatGPTに聞いて、下のようなパラメータが変更できることが分かったので、これらを変えて試してみたい。
・Qネットワークの隠れ層: fc_layer_params = (100,)
・学習率: optimizer = tf.keras.optimizers.Adam(learning_rate=1e-3)
・リプレイバッファの最大長: max_length=10000
・初期データ収集ステップ数: for _ in range(100)
・サンプルのバッチサイズ: sample_batch_size=64
・トレーニングステップ数: num_iterations = 5000
なお、評価エピソードは20回で確認する。
強化学習を実行すると、下のようにトレーニングが進むけど、損失は通常小さくなっていくものらしい。ので、下のような損失が大きくなる学習は正しくない。この辺りをパラメータ調整で正しいものにしていく。

このときの結果は、8~10回で棒が倒れている。入力内容を確認すると同じ方向への入力のみなので、明らかに棒を倒さない操作とはなっていない。


