นโยบายและฟังก์ชันมูลค่าสถานะ

Reinforcement Learning with Gymnasium ใน Python

Fouad Trad

Machine Learning Engineer

นโยบาย

  • เป้าหมายของ RL → กำหนดนโยบายที่มีประสิทธิภาพ
  • ระบุการกระทำในแต่ละสถานะเพื่อเพิ่ม return สูงสุด

ภาพแสดงแผนที่ขนาดใหญ่

Reinforcement Learning with Gymnasium ใน Python

ตัวอย่าง Grid World

  • Agent มุ่งไปยังเพชรโดยหลีกเลี่ยงภูเขา
  • 9 สถานะ
  • การเคลื่อนที่แบบ deterministic

action_numbers_green.png

ภาพแสดงสภาพแวดล้อมแบบกริด 9 ช่อง มี 2 ช่องเป็นภูเขา และ 1 ช่องเป็นเพชร

Reinforcement Learning with Gymnasium ใน Python

ตัวอย่าง Grid World - รางวัล

  • กำหนดตามสถานะ:
    • เพชร: +10

ภาพแสดงว่าการเคลื่อนที่จากช่องใกล้เคียงไปยังเพชรได้รับรางวัล +10

Reinforcement Learning with Gymnasium ใน Python

ตัวอย่าง Grid World - รางวัล

  • กำหนดตามสถานะ:
    • เพชร: +10
    • ภูเขา: -2

ภาพแสดงว่าการกระทำที่นำไปสู่ภูเขาได้รับรางวัล -2

Reinforcement Learning with Gymnasium ใน Python

ตัวอย่าง Grid World - รางวัล

  • กำหนดตามสถานะ:
    • เพชร: +10
    • ภูเขา: -2
    • สถานะอื่น: -1

ภาพแสดงว่าการเคลื่อนที่อื่น ๆ ได้รับรางวัล -1

Reinforcement Learning with Gymnasium ใน Python

ตัวอย่าง Grid World: นโยบาย

# 0: left, 1: down, 2: right, 3: up
policy = {
    0:1, 1:2, 2:1, 
    3:1, 4:3, 5:1,
    6:2, 7:3
}

state, info = env.reset() terminated = False while not terminated: action = policy[state] state, reward, terminated, _, _ = env.step(action)

ภาพแสดงนโยบายด้วยลูกศรแทนทิศทางการเคลื่อนที่ระหว่างสถานะ

Reinforcement Learning with Gymnasium ใน Python

ฟังก์ชันมูลค่าสถานะ

  • ประเมินคุณค่าของสถานะ
  • ผลตอบแทนที่คาดหวังเมื่อเริ่มจากสถานะหนึ่งตามนโยบาย

ภาพแสดงสูตรฟังก์ชันมูลค่าสถานะในรูปของ discounted return เมื่อเริ่มที่สถานะ s และทำตามนโยบาย

Reinforcement Learning with Gymnasium ใน Python

ตัวอย่าง Grid World: มูลค่าสถานะ

ภาพแสดงนโยบายด้วยลูกศรแทนทิศทางการเคลื่อนที่ระหว่างสถานะ

  • 9 สถานะ → มูลค่าสถานะ 9 ค่า
  • discount factor: $\gamma = 1$
Reinforcement Learning with Gymnasium ใน Python

มูลค่าของสถานะเป้าหมาย

ภาพแสดง agent ในสถานะเป้าหมาย

  • เมื่อเริ่มที่สถานะเป้าหมาย agent จะไม่เคลื่อนที่
  • $V(goal \, state) = 0$

ภาพแสดงว่ามูลค่าของสถานะเป้าหมายเท่ากับ 0

Reinforcement Learning with Gymnasium ใน Python

มูลค่าของสถานะ 5

ภาพแสดง agent ในสถานะ 5

  • เริ่มที่สถานะ 5 agent เคลื่อนไปยังเป้าหมาย
  • $V(5) = 10$

ภาพแสดงว่ามูลค่าของสถานะ 5 เท่ากับ 10

Reinforcement Learning with Gymnasium ใน Python

มูลค่าของสถานะ 2

ภาพแสดง agent ในสถานะ 2

  • เริ่มที่สถานะ 2 รางวัล: $-1, 10$
  • $ V(2) = (1 \times -1) + (1 \times 10) = 9$

ภาพแสดงว่ามูลค่าของสถานะ 2 เท่ากับ 9

Reinforcement Learning with Gymnasium ใน Python

มูลค่าสถานะทั้งหมด

ภาพแสดงมูลค่าสถานะทั้งหมดของสภาพแวดล้อม 9 สถานะ

Reinforcement Learning with Gymnasium ใน Python

สมการ Bellman

  • สูตรแบบ recursive
  • คำนวณมูลค่าสถานะ

ภาพแสดงสมการ Bellman ในรูปผลรวมของรางวัลทันทีของสถานะปัจจุบันกับมูลค่า discounted ของสถานะถัดไป

Reinforcement Learning with Gymnasium ใน Python

การคำนวณมูลค่าสถานะ

def compute_state_value(state):

if state == terminal_state: return 0
action = policy[state]
_, next_state, reward, _ = env.unwrapped.P[state][action][0]
return reward + gamma * compute_state_value(next_state)

ภาพแสดงสมการ Bellman ในรูปผลรวมของรางวัลทันทีของสถานะปัจจุบันกับมูลค่า discounted ของสถานะถัดไป

Reinforcement Learning with Gymnasium ใน Python

การคำนวณมูลค่าสถานะ

terminal_state = 8
gamma = 1

V = {state: compute_state_value(state) for state in range(num_states)}
print(V)
{0: 1, 1: 8, 2: 9, 
 3: 2, 4: 7, 5: 10, 
 6: 3, 7: 5, 8: 0}

ภาพแสดงมูลค่าสถานะทั้งหมดของสภาพแวดล้อม 9 สถานะ

Reinforcement Learning with Gymnasium ใน Python

การเปลี่ยนนโยบาย

# 0: left, 1: down, 2: right, 3: up
policy_two = {
    0:2, 1:2, 2:1,
    3:2, 4:2, 5:1,
    6:2, 7:2
}

V_2 = {state: compute_state_value(state) for state in range(num_states)} print(V_2)

ภาพแสดงนโยบายด้วยลูกศรแทนทิศทางการเคลื่อนที่ระหว่างสถานะ

Reinforcement Learning with Gymnasium ใน Python

การเปรียบเทียบนโยบาย

มูลค่าสถานะของนโยบาย 1

{0: 1, 1: 8, 2: 9, 
 3: 2, 4: 7, 5: 10, 
 6: 3, 7: 5, 8: 0}

ภาพแสดงมูลค่าสถานะของนโยบาย 1

มูลค่าสถานะของนโยบาย 2

{0: 7, 1: 8, 2: 9, 
 3: 7, 4: 9, 5: 10, 
 6: 8, 7: 10, 8: 0}

ภาพแสดงมูลค่าสถานะของนโยบาย 2

Reinforcement Learning with Gymnasium ใน Python

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

Reinforcement Learning with Gymnasium ใน Python

Preparing Video For Download...