始める無料で始める

Experience Replay を用いた DQN

ここでは、Experience Replay を導入して Deep Q Network を用いたエージェントの学習を行います。環境は、Barebone DQN を作成したときと同じ Lunar Lander を使います。

各ステップで、直近の遷移だけから学習してネットワークを更新するのではなく、Experience Replay バッファを使って、直近の経験からランダムに抽出したバッチで学習します。これにより、環境について学習する能力が大きく向上します。

前の演習で使った QNetworkReplayBuffer クラスは次のようにインスタンス化済みです。

  • q_network = QNetwork(8, 4)
  • replay_buffer = ReplayBuffer(10000)

各エピソードの最後に指標を表示するための describe_episode() 関数も引き続き利用できます。

この演習はコースの一部です

Pythonで学ぶDeep Reinforcement Learning

コースを見る

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

for episode in range(10):
    state, info = env.reset()
    done = False
    step = 0
    episode_reward = 0
    while not done:
        step += 1
        q_values = q_network(state)        
        action = torch.argmax(q_values).item()
        next_state, reward, terminated, truncated, _ = env.step(action)
        done = terminated or truncated
        # Store the latest experience in the replay buffer
        replay_buffer.____        
        state = next_state
        episode_reward += reward    
    describe_episode(episode, reward, episode_reward, step)
コードを編集して実行