Deep Reinforcement Learning bằng Python
Timothée Carayol
Principal Machine Learning Engineer, Komment

for episode in range(num_episodes):# 1. Khởi tạo tậpwhile not done:# 2. Chọn hành động# 3. Thực thi và lấy trạng thái, phần thưởng kế# 4. Cộng phần thưởng (chiết khấu) vào tổng lợi tức# 5. Cập nhật trạng thái# 6. Tính loss# 7. Cập nhật mạng chính sách bằng hạ dốc
from torch.distributions import Categorical def select_action(policy_network, state): action_probs = policy_network(state)action_dist = Categorical(action_probs)action = action_dist.sample()log_prob = action_dist.log_prob(action)return action.item(), log_prob.reshape(1)action, log_prob = select_action( policy_network, state)
Chỉ số hành động được lấy mẫu: 1
Log-prob của hành động đã lấy mẫu: -1.38
Nhắc lại định lý gradient theo chính sách:


Trong Python:
episode_returnepisode_log_probsloss = -episode_return * episode_log_probs.sum()
for episode in range(50): state, info = env.reset(); done = False; step = 0; episode_log_probs = torch.tensor([])R = 0while not done: step += 1 action, log_prob = select_action(policy_network, state)next_state, reward, terminated, truncated, _ = env.step(action) done = terminated or truncatedR += (gamma ** step) * rewardepisode_log_probs = torch.cat((episode_log_probs, log_prob))state = next_stateloss = - R * episode_log_probs.sum()optimizer.zero_grad(); loss.backward(); optimizer.step()
Deep Reinforcement Learning bằng Python