การเลือก action ใน REINFORCE
เขียนฟังก์ชัน select_action สำหรับ REINFORCE ซึ่ง agent จะใช้ฟังก์ชันนี้เพื่อเลือก action ในทุกขั้นตอน
ใน DQN การ forward pass ของโครงข่ายจะคืนค่า Q-value แต่ใน REINFORCE จะคืนค่าความน่าจะเป็นของแต่ละ action ซึ่งสามารถสุ่ม action ได้โดยตรง
โหลด policy network และ state ไว้ในสภาพแวดล้อมของคุณแล้ว
torch.distributions.Categorical ถูก import มาในชื่อ Categorical
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Deep Reinforcement Learning ด้วย Python
คำแนะนำการฝึกหัด
- คำนวณความน่าจะเป็นของแต่ละ action ในรูปแบบ torch tensor
- สร้าง torch Distribution ที่สอดคล้องกับความน่าจะเป็นของแต่ละ action
- สุ่ม action จาก distribution ที่ได้
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
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}')