Melatih algoritma REINFORCE
Anda siap melatih Lunar Lander menggunakan REINFORCE! Yang perlu Anda lakukan adalah mengimplementasikan loop pelatihan REINFORCE, termasuk perhitungan loss REINFORCE.
Mengingat langkah-langkah perhitungan loss tersebar di dalam loop dalam dan luar, kali ini Anda tidak akan menggunakan fungsi calculate_loss().
Ketika episode selesai, Anda dapat menggunakan kedua kuantitas tersebut untuk menghitung loss.
Sebagai referensi, berikut adalah ekspresi untuk fungsi loss REINFORCE:
Anda akan kembali menggunakan fungsi describe_episode() untuk mencetak kemajuan agen pada setiap episode.
Latihan ini adalah bagian dari kursus
Deep Reinforcement Learning dengan Python
Petunjuk latihan
- Tambahkan log probabilitas dari aksi yang dipilih ke log probabilitas episode.
- Tambahkan return episode dengan reward terdiskon pada langkah saat ini.
- Hitung loss episode REINFORCE.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
for episode in range(50):
state, info = env.reset()
done = False
episode_reward = 0
step = 0
episode_log_probs = torch.tensor([])
R = 0
while not done:
step += 1
action, log_prob = select_action(policy_network, state)
next_state, reward, terminated, truncated, _ = env.step(action)
done = terminated or truncated
episode_reward += reward
# Append to the episode action log probabilities
episode_log_probs = torch.cat((____, ____))
# Increment the episode return
R += (____ ** step) * ____
state = next_state
# Calculate the episode loss
loss = ____ * ____.sum()
optimizer.zero_grad()
loss.backward()
optimizer.step()
describe_episode(episode, reward, episode_reward, step)