บทนำสู่ deep reinforcement learning

Deep Reinforcement Learning ด้วย Python

Timothée Carayol

Principal Machine Learning Engineer, Komment

ทำไมต้องใช้ Deep Reinforcement Learning

 

  • RL แบบดั้งเดิมเหมาะกับงานที่มีมิติต่ำ

 

 

  • หลายแอปพลิเคชันมี state และ/หรือ action space มิติสูง

 

Agent สำรวจสภาพแวดล้อม Frozen Lake

Agent เล่นเกมคลาสสิก Space Invaders

Deep Reinforcement Learning ด้วย Python

ส่วนประกอบของ DRL

 

  1. แนวคิด Reinforcement Learning
  2. Deep Learning และ PyTorch

 

  • DRL ใช้แนวคิดเหล่านี้ร่วมกับ deep neural network

 

ภาพพิกเซลอาร์ตของพ่อครัวกำลังผสมส่วนผสม

Deep Reinforcement Learning ด้วย Python

กรอบแนวคิด RL

 

  • ขั้นตอน t:

 

กล่องใหญ่มีกล่องเล็กสองกล่องอยู่ภายใน ติดป้ายว่า "Agent" และ "Environment"

Deep Reinforcement Learning ด้วย Python

กรอบแนวคิด RL

 

  • ขั้นตอน t:
    • Agent สังเกต state $s_t$

 

ลูกศรสีแดงมีป้ายกำกับ State s_t ชี้จาก environment ไปยัง agent

Deep Reinforcement Learning ด้วย Python

กรอบแนวคิด RL

 

  • ขั้นตอน t:
    • Agent สังเกต state $s_t$
    • Agent เลือก action $a_t$

 

ลูกศรสีแดงมีป้ายกำกับ action a_t ชี้จาก agent ไปยัง environment ลูกศร state เปลี่ยนเป็นสีดำ

Deep Reinforcement Learning ด้วย Python

กรอบแนวคิด RL

 

  • ขั้นตอน t:
    • Agent สังเกต state $s_t$
    • Agent เลือก action $a_t$
  • ขั้นตอน t+1:
    • Environment ให้ reward $r_t$
    • State เปลี่ยนเป็น $s_{t+1}$

 

ลูกศร state s_t อัปเดตป้ายเป็น state s_t+1 และกลับมาเป็นสีแดง มีลูกศรสีแดงใหม่ติดป้าย reward r_t+1 ชี้จาก environment ไปยัง agent ลูกศร action เปลี่ยนเป็นสีดำ

Deep Reinforcement Learning ด้วย Python

กรอบแนวคิด RL

 

  • ขั้นตอน t:
    • Agent สังเกต state $s_t$
    • Agent เลือก action $a_t$
  • ขั้นตอน t+1:
    • Environment ให้ reward $r_t$
    • State เปลี่ยนเป็น $s_{t+1}$
  • ทำซ้ำจนกว่า episode จะสิ้นสุด

 

ภาพเดียวกับสไลด์ก่อนหน้า แต่ลูกศรทั้งหมดเป็นสีดำ

Deep Reinforcement Learning ด้วย Python

Policy $\pi(s_t)$

 

  • การ mapping จาก state ไปยัง action ที่อธิบายพฤติกรรมของ agent ใน state $s_t$ ที่กำหนด

 

  • Deterministic:
    • คืนค่า action ที่เลือก
  • Stochastic:
    • คืนค่าการกระจายของ action
    • Policy คือ probability distribution บน action ที่เป็นไปได้
Deep Reinforcement Learning ด้วย Python

Trajectory และ episode return

 

Trajectory tau: ลำดับของ state และ action ทั้งหมดใน episode; tau = ((s0, a0), (s1, a1), ... (sT, aT))

 

Episode return Rtau: reward รวม (แบบ discounted) ที่สะสมตลอด trajectory tau. Rtau = ผลรวมของ gamma ยกกำลัง t คูณ r_t

Deep Reinforcement Learning ด้วย Python

การตั้งค่า environment

env = gym.make("ALE/SpaceInvaders-v5")

# Define neural network architecture class Network(nn.Module): def __init__(self, dim_inputs, dim_outputs): super(Network, self).__init__() self.linear = nn.Linear(dim_inputs, dim_outputs) def forward(self, x): return self.linear(x)
# Instantiate network network = Network(dim_inputs, dim_outputs)
# Instantiate optimizer optimizer = optim.Adam(network.parameters(), lr=0.0001)
Deep Reinforcement Learning ด้วย Python

ลูปพื้นฐาน

for episode in range(1000):
  state, info = env.reset()
  done = False

while not done:
action = select_action(network, state)
next_state, reward, terminated, truncated, _ = ( env.step(action)) done = terminated or truncated
loss = calculate_loss(network, state, action, next_state, reward, done) optimizer.zero_grad() loss.backward() optimizer.step()
state = next_state

 

  • ลูปนอก: วนซ้ำผ่าน episode
  • ลูปใน: วนซ้ำผ่านแต่ละขั้นตอน
    • เลือก action
    • สังเกต state และ reward ใหม่
    • คำนวณ loss และอัปเดต network
    • อัปเดต state
  • (Loss?)
Deep Reinforcement Learning ด้วย Python

ถัดไป

 

 

  • DRL มีประสิทธิภาพสูง!
  • แนวทาง value-based และ policy-based
  • DQN และการปรับปรุง
  • วิธี policy gradient

ผู้เรียน DataCamp ดำน้ำลึกเพื่อเรียนรู้ Deep Reinforcement Learning

Deep Reinforcement Learning ด้วย Python

มาฝึกกันเถอะ!

Deep Reinforcement Learning ด้วย Python

Preparing Video For Download...