ลูปการฝึก DRL
เพื่อให้ agent สามารถเรียนรู้จากสภาพแวดล้อมได้ซ้ำ ๆ จำเป็นต้องสร้างลูปการฝึกขึ้นมา
อัลกอริทึม DRL ส่วนใหญ่มีโครงสร้างหลักร่วมกัน ดังนี้:
- วนลูปผ่านแต่ละ episode
- วนลูปผ่านแต่ละขั้นตอนภายใน episode
- ในแต่ละขั้นตอน ให้เลือก action คำนวณค่า loss และอัปเดตเครือข่าย
มีฟังก์ชัน select_action() และ calculate_loss() เตรียมไว้ให้แล้วเพื่อให้โค้ดทำงานได้ รวมถึง Network และ optimizer ที่กำหนดไว้จากแบบฝึกหัดก่อนหน้าก็พร้อมใช้งานเช่นกัน
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Deep Reinforcement Learning ด้วย Python
คำแนะนำการฝึกหัด
- ให้ลูปด้านนอก (วนผ่าน episode) ทำงานทั้งหมดสิบ episode
- ให้ลูปด้านใน (วนผ่านขั้นตอน) ทำงานจนกว่า episode จะสิ้นสุด
- ดำเนิน action ที่
select_action()เลือกในสภาพแวดล้อมenv - เมื่อสิ้นสุดการวนซ้ำในลูปด้านใน ให้อัปเดต state ก่อนเริ่มขั้นตอนถัดไป
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
env = gym.make("LunarLander-v2")
# Run ten episodes
for episode in ____:
state, info = env.reset()
done = False
# Run through steps until done
while ____:
action = select_action(network, state)
# Take the action
next_state, reward, terminated, truncated, _ = ____
done = terminated or truncated
loss = calculate_loss(network, state, action, next_state, reward, done)
optimizer.zero_grad()
loss.backward()
optimizer.step()
# Update the state
state = ____
print(f"Episode {episode} complete.")