Python में Deep Reinforcement Learning
Timothée Carayol
Principal Machine Learning Engineer, Komment
for episode in range(1000):
state, info = env.reset()
done = False
while not done:
# Action selection
action = select_action(network, state)
next_state, reward, terminated, truncated, _ = (
env.step(action))
done = terminated or truncated
# Loss calculation
loss = calculate_loss(network, state, action,
next_state, reward, done)
optimizer.zero_grad()
loss.backward()
optimizer.step()
state = next_state
def select_action(q_network, state):# Feed state to network to obtain Q-valuesq_values = q_network(state)# Obtain index of action with highest Q-value action = torch.argmax(q_values).item()return action
0.12 के साथ
Q-values: [-0.01, 0.08, 0.12, -0.07]चुनी गई action: 2, q-value 0.12



def calculate_loss( q_network, state, action, next_state, reward, done):q_values = q_network(state)current_state_q_value = q_values[action]next_state_q_value = q_network(next_state).max()target_q_value = reward + gamma * next_state_q_value * (1-done)loss = nn.MSELoss()( current_state_q_value, target_q_value)return loss
$Q(s_t, a_t)$
$\max_a Q(s_{t+1}, a)$
$r_{t+1} + \gamma \max_a Q(s_{t+1}, a)$
$$\left(Q(s_t, a_t) - (r_{t+1} + \gamma \max_a Q(s_{t+1}, a)\right)^2$$
describe_episode(episode, reward, episode_reward, step)
| एपिसोड 1 | अवधि: 84 स्टेप्स | रिटर्न: -871.38 | क्रैश्ड || एपिसोड 2 | अवधि: 53 स्टेप्स | रिटर्न: -452.68 | क्रैश्ड || एपिसोड 3 | अवधि: 57 स्टेप्स | रिटर्न: -414.22 | क्रैश्ड | | एपिसोड 4 | अवधि: 54 स्टेप्स | रिटर्न: -475.09 | क्रैश्ड || एपिसोड 5 | अवधि: 67 स्टेप्स | रिटर्न: -532.31 | क्रैश्ड | | एपिसोड 6 | अवधि: 53 स्टेप्स | रिटर्न: -407.00 | क्रैश्ड | | एपिसोड 7 | अवधि: 52 स्टेप्स | रिटर्न: -380.45 | क्रैश्ड | | एपिसोड 8 | अवधि: 55 स्टेप्स | रिटर्न: -380.75 | क्रैश्ड | | एपिसोड 9 | अवधि: 88 स्टेप्स | रिटर्न: -688.68 | क्रैश्ड | | एपिसोड 10 | अवधि: 76 स्टेप्स | रिटर्न: -338.06 | क्रैश्ड |
Python में Deep Reinforcement Learning