Chọn hành động trong REINFORCE
Viết hàm select_action cho REINFORCE, hàm này sẽ được tác tử REINFORCE của bạn dùng để chọn hành động ở mỗi bước.
Trong DQN, lượt truyền xuôi của mạng trả về các giá trị Q; trong REINFORCE, nó trả về xác suất hành động, từ đó có thể lấy mẫu trực tiếp một hành động.
Một policy network và một state đã được nạp sẵn trong môi trường của bạn.
torch.distributions.Categorical đã được import với tên Categorical.
Bài tập này là một phần của khóa học
Deep Reinforcement Learning bằng Python
Hướng dẫn bài tập
- Lấy xác suất hành động dưới dạng một tensor của torch.
- Tạo đối tượng torch Distribution tương ứng với các xác suất hành động.
- Lấy mẫu một hành động từ phân phối đó.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
def select_action(policy_network, state):
# Obtain the action probabilities
action_probs = ____
print('Action probabilities:', action_probs)
# Instantiate the action distribution
action_dist = Categorical(____)
# Sample an action from the distribution
action = ____
log_prob = action_dist.log_prob(action)
return action.item(), log_prob.reshape(1)
state = torch.rand(8)
action, log_prob = select_action(policy_network, state)
print('Sampled action index:', action)
print(f'Log probability of sampled action: {log_prob.item():.2f}')