MulaiMulai sekarang secara gratis

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

Lihat Kursus

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)
Edit dan Jalankan Kode