REINFORCE algoritmasını eğitme
REINFORCE kullanarak Lunar Lander’ını eğitmeye hazırsın! Tek yapman gereken, REINFORCE eğitim döngüsünü, REINFORCE kayıp (loss) hesaplamasıyla birlikte uygulamak.
Kayıp hesaplama adımları hem iç hem dış döngüye yayıldığı için bu sefer calculate_loss() işlevini kullanmayacaksın.
Bölüm tamamlandığında, bu iki niceliği kullanarak kaybı hesaplayabilirsin.
Referans için, REINFORCE kayıp fonksiyonunun ifadesi şöyle:
Her bölümde aracının nasıl ilerlediğini yazdırmak için yine describe_episode() işlevini kullanacaksın.
Bu egzersiz
Python ile Deep Reinforcement Learning
kursunun bir parçasıdırEgzersiz talimatları
- Seçilen eylemin log olasılığını bölümün log olasılıklarına ekle.
- Bölüm getirisini, mevcut adımın iskonto edilmiş ödülüyle artır.
- REINFORCE bölüm kaybını hesapla.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
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)