Pętla treningowa DRL
Aby agent mógł wielokrotnie doświadczać środowiska, trzeba skonfigurować pętlę treningową.
Większość algorytmów DRL opiera się na tej wspólnej strukturze:
- Iteracja przez epizody
- Iteracja przez kroki w ramach każdego epizodu
- W każdym kroku: wybór akcji, obliczenie straty i aktualizacja sieci
Dysponujesz funkcjami pomocniczymi select_action() i calculate_loss(), które umożliwiają uruchomienie kodu. Do dyspozycji masz również Network i optimizer zdefiniowane w poprzednim ćwiczeniu.
To ćwiczenie jest częścią kursu
Głębokie uczenie ze wzmocnieniem w Pythonie
Instrukcje do ćwiczenia
- Upewnij się, że pętla zewnętrzna (po epizodach) wykonuje dokładnie dziesięć iteracji.
- Upewnij się, że pętla wewnętrzna (po krokach) działa aż do zakończenia epizodu.
- Wykonaj akcję wybraną przez
select_action()w środowiskuenv. - Na końcu każdej iteracji pętli wewnętrznej zaktualizuj stan przed rozpoczęciem kolejnego kroku.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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.")