带有经验回放的 DQN
现在,您将引入经验回放(Experience Replay),使用深度 Q 网络来训练智能体。您将继续使用构建基础版 DQN 时使用的同一个 Lunar Lander 环境。
在每一步中,与其只用最新一次状态转移的学习来更新网络,经验回放缓冲区会让智能体从一批随机抽取的近期经验中学习。这将显著提升其对环境的学习能力。
来自前面练习的 QNetwork 和 ReplayBuffer 类已为您提供,并按如下方式实例化:
q_network = QNetwork(8, 4)replay_buffer = ReplayBuffer(10000)
函数 describe_episode() 也再次可用,用于在每个回合结束时描述各项指标。
本练习是课程的一部分
Python 中的深度强化学习
交互式实操练习
通过完成这段示例代码来试试这个练习。
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)