Double DQN का प्रशिक्षण
अब आप double DQN लागू करने के लिए अपने DQN वाले कोड में बदलाव करेंगे.
Double DQN में DQN एल्गोरिदम में बहुत छोटा सा परिवर्तन चाहिए, लेकिन यह Q-value overestimation की समस्या काफी हद तक कम कर देता है और प्रायः DQN से बेहतर प्रदर्शन करता है.
यह अभ्यास पाठ्यक्रम का हिस्सा है
Python में Deep Reinforcement Learning
अभ्यास निर्देश
- Q-target की गणना के लिए अगले actions
online_network()से निकालें, और सही action व आकार अवश्य प्राप्त करें. - इन्हीं actions के लिए Q-values को
target_network()से अनुमानित करें, और सही मान व आकार सुनिश्चित करें.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
for episode in range(10):
state, info = env.reset()
done = False
step = 0
episode_reward = 0
while not done:
step += 1
total_steps += 1
q_values = online_network(state)
action = select_action(q_values, total_steps, start=.9, end=.05, decay=1000)
next_state, reward, terminated, truncated, _ = env.step(action)
done = terminated or truncated
replay_buffer.push(state, action, reward, next_state, done)
if len(replay_buffer) >= batch_size:
states, actions, rewards, next_states, dones = replay_buffer.sample(64)
q_values = online_network(states).gather(1, actions).squeeze(1)
with torch.no_grad():
# Obtain next actions for Q-target calculation
next_actions = ____.____.____
# Estimate next Q-values from these actions
next_q_values = ____.____.____
target_q_values = rewards + gamma * next_q_values * (1-dones)
loss = nn.MSELoss()(q_values, target_q_values)
optimizer.zero_grad()
loss.backward()
optimizer.step()
update_target_network(target_network, online_network, tau=.005)
state = next_state
episode_reward += reward
describe_episode(episode, reward, episode_reward, step)