Träna PPO-algoritmen
Nu ska du använda den välbekanta A2C-träningsloopen för att träna PPO-algoritmen.
Den här träningsloopen utnyttjar inte den klippta surrogatmålfunktionen fullt ut, vilket innebär att algoritmen inte bör prestera märkbart bättre än A2C. Den fungerar som en illustration av de koncept du lärt dig om den klippta surrogatmålfunktionen och entropibonusen.
Den här övningen är en del av kursen
Djup förstärkningsinlärning i Python
Övningsinstruktioner
- Ta bort entropibonusen från aktörförlusten och använd värdet 0,01 för parametern \(c_{entropy}\).
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
for episode in range(10):
state, info = env.reset()
done = False
episode_reward = 0
step = 0
while not done:
step += 1
action, action_log_prob, entropy = select_action(actor, state)
next_state, reward, terminated, truncated, _ = env.step(action)
episode_reward += reward
done = terminated or truncated
actor_loss, critic_loss = calculate_losses(critic, action_log_prob, action_log_prob,
reward, state, next_state, done)
# Remove the entropy bonus from the actor loss
actor_loss -= ____ * ____
actor_optimizer.zero_grad(); actor_loss.backward(); actor_optimizer.step()
critic_optimizer.zero_grad(); critic_loss.backward(); critic_optimizer.step()
state = next_state
describe_episode(episode, reward, episode_reward, step)