DQN med Experience Replay
Nu ska du introducera Experience Replay för att träna en agent med ett Deep Q Network. Du använder samma Lunar Lander-miljö som när du byggde ditt grundläggande DQN.
Vid varje steg, i stället för att enbart använda lärdomarna från den senaste övergången för att uppdatera nätverket, gör Experience Replay-bufferten det möjligt för agenten att lära sig från en slumpmässig batch av nyliga erfarenheter. Det förbättrar avsevärt agentens förmåga att lära känna miljön.
Klasserna QNetwork och ReplayBuffer från tidigare övningar finns tillgängliga och har instansierats enligt följande:
q_network = QNetwork(8, 4)replay_buffer = ReplayBuffer(10000)
Funktionen describe_episode() finns också tillgänglig för att beskriva mätvärden i slutet av varje episod.
Den här övningen är en del av kursen
Djup förstärkningsinlärning i Python
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
step = 0
episode_reward = 0
while not done:
step += 1
q_values = q_network(state)
action = torch.argmax(q_values).item()
next_state, reward, terminated, truncated, _ = env.step(action)
done = terminated or truncated
# Store the latest experience in the replay buffer
replay_buffer.____
state = next_state
episode_reward += reward
describe_episode(episode, reward, episode_reward, step)