DRL のトレーニングループ
エージェントが環境を繰り返し体験できるように、トレーニングループを構築します。
多くの DRL アルゴリズムに共通する基本構造は次のとおりです。
- エピソードをループする
- 各エピソード内でステップをループする
- 各ステップで、行動を選択し、損失を計算し、ネットワークを更新する
コードが動作するように、プレースホルダーの select_action() と calculate_loss() 関数が用意されています。前の演習で定義した Network と optimizer も利用できます。
この演習はコースの一部です
Pythonで学ぶDeep Reinforcement Learning
演習の手順
- 外側のループ(エピソード単位)が 10 エピソード実行されるようにしてください。
- 内側のループ(ステップ単位)は、そのエピソードが完了するまで実行されるようにしてください。
select_action()で選択した行動を、env環境で実行します。- 内側のループの各反復の最後で、次のステップを始める前に状態を更新してください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
env = gym.make("LunarLander-v2")
# Run ten episodes
for episode in ____:
state, info = env.reset()
done = False
# Run through steps until done
while ____:
action = select_action(network, state)
# Take the action
next_state, reward, terminated, truncated, _ = ____
done = terminated or truncated
loss = calculate_loss(network, state, action, next_state, reward, done)
optimizer.zero_grad()
loss.backward()
optimizer.step()
# Update the state
state = ____
print(f"Episode {episode} complete.")