このリンクからTensorFlowのコードを自分で実行することもできますし(PyTorch版はこのリンク)、実行せずにコードを見続けることもできます。 これまでの部分より少しコードが長いので、ここでは最も重要な部分のみを紹介します。
ここで、CartPoleの環境を紹介します。 この環境の可視化と実行には、OpenAI Gymを使用しています。 目標は、ポールを垂直に保つために、カートを左右に移動させることです。 ポールの傾きが垂直軸から15度以上傾くと、エピソードが終了し、やり直しになります。 ビデオ1では、この環境でランダムにアクションを起こし、いくつかのエピソードを実行する例を示しています。
DQNアルゴリズムを実装するために、まずメイン (main_nn) とターゲット (target_nn) DNNを作成することから始めることにします。 ターゲット ネットワークはメイン ネットワークのコピーになりますが、重みのコピーは独自に作成します。 また、オプティマイザーと損失関数も必要です。
次に、経験リプレイバッファを作成し、経験をバッファに追加して、後でトレーニング用にサンプリングする.
これは表示される結果です:
Episode 0/1000. Epsilon: 0.99. Reward in last 100 episodes: 14.0 Episode 50/1000. Epsilon: 0.94. Reward in last 100 episodes: 22.2 Episode 100/1000. Epsilon: 0.89. Reward in last 100 episodes: 23.3 Episode 150/1000. Epsilon: 0.84. Reward in last 100 episodes: 23.4 Episode 200/1000. Epsilon: 0.79. Reward in last 100 episodes: 24.9 Episode 250/1000. Epsilon: 0.74. Reward in last 100 episodes: 30.4 Episode 300/1000. Epsilon: 0.69. Reward in last 100 episodes: 38.4 Episode 350/1000. Epsilon: 0.64. Reward in last 100 episodes: 51.4 Episode 400/1000. Epsilon: 0.59. Reward in last 100 episodes: 68.2 Episode 450/1000. Epsilon: 0.54. Reward in last 100 episodes: 82.4 Episode 500/1000. Epsilon: 0.49. Reward in last 100 episodes: 102.1 Episode 550/1000. Epsilon: 0.44. Reward in last 100 episodes: 129.7 Episode 600/1000. Epsilon: 0.39. Reward in last 100 episodes: 151.7 Episode 650/1000. Epsilon: 0.34. Reward in last 100 episodes: 173.0 Episode 700/1000. Epsilon: 0.29. Reward in last 100 episodes: 187.3 Episode 750/1000. Epsilon: 0.24. Reward in last 100 episodes: 190.9 Episode 800/1000. Epsilon: 0.19. Reward in last 100 episodes: 194.6 Episode 850/1000. Epsilon: 0.14. Reward in last 100 episodes: 195.9 Episode 900/1000. Epsilon: 0.09. Reward in last 100 episodes: 197.9 Episode 950/1000. Epsilon: 0.05. Reward in last 100 episodes: 200.0 Episode 1000/1000. Epsilon: 0.05. Reward in last 100 episodes: 200.0
今、エージェントはCartPole環境に対する報酬を最大化することを学習したので、結果を視覚化して、200フレームにわたってポールのバランスを維持できるようになったことを見るために、エージェントにもう1回環境との相互作用をさせることにします。
このリンクからTensorFlowコードを自分で実行できます(またはこのリンクからPyTorchバージョンも)
。