Huấn luyện thuật toán PPO
Bây giờ bạn sẽ dùng vòng lặp huấn luyện A2C quen thuộc để huấn luyện thuật toán PPO.
Vòng lặp này chưa khai thác hết lợi thế của hàm mục tiêu thay thế có cắt (clipped surrogate objective), nên hiệu quả sẽ khó vượt trội A2C; mục tiêu chính là minh họa các khái niệm về hàm mục tiêu thay thế có cắt và entropy bonus mà bạn đã học.
Bài tập này là một phần của khóa học
Deep Reinforcement Learning bằng Python
Hướng dẫn bài tập
- Loại bỏ entropy bonus khỏi hàm mất mát của actor, dùng giá trị 0.01 cho tham số \(c_{entropy}\).
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
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)