บทนำสู่ Policy Gradient

Deep Reinforcement Learning ด้วย Python

Timothée Carayol

Principal Machine Learning Engineer, Komment

บทนำสู่วิธี Policy ใน DRL

 

Q-learning:

  • เรียนรู้ฟังก์ชัน action value Q

Q-network ที่รับ state เป็น input และส่งออก action values

  • Policy: เลือก action ที่มีค่าสูงสุด

 

Policy learning:

  • เรียนรู้ policy โดยตรง

Policy network ที่รับ state เป็น input และส่งออกความน่าจะเป็นของ action

Deep Reinforcement Learning ด้วย Python

Policy learning

 

  • เป็น stochastic ได้
  • รองรับ continuous spaces
  • ปรับ optimize ตาม objective โดยตรง
  • Variance สูง
  • ประสิทธิภาพการใช้ตัวอย่างต่ำกว่า

 

  • ใน Deep-Q learning: policy เป็น deterministic

 

$\pi_\theta(a_t | s_t)$:

  • การแจกแจงความน่าจะเป็นของ $a_t$ ใน state $s_t$ โดย:
    • $a_t$, $s_t$: action และ state ที่ step $t$
    • $\theta$: พารามิเตอร์ของ policy (น้ำหนักของ network)
Deep Reinforcement Learning ด้วย Python

Policy network (discrete actions)

class PolicyNetwork(nn.Module):
  def __init__(self, state_size, action_size):
    super(PolicyNetwork, self).__init__()
    self.fc1 = nn.Linear(state_size, 64)
    self.fc2 = nn.Linear(64, 64)
    self.fc3 = nn.Linear(64, action_size)

  def forward(self, state):
    x = torch.relu(self.fc1(torch.tensor(state)))
    x = torch.relu(self.fc2(x))
    action_probs = torch.softmax(self.fc3(x), dim=-1)
    return action_probs

action_probs = policy_network(state) print('Action probabilities:', action_probs)
Action probabilities: tensor([0.21, 0.02, 0.74, 0.03])

ตารางที่แสดง action 4 รายการพร้อม index และความน่าจะเป็น: 'up' index 0 ความน่าจะเป็น 0.21; 'right' index 1 ความน่าจะเป็น 0.02; 'down' index 2 ความน่าจะเป็น 0.74; 'left' index 3 ความน่าจะเป็น 0.03

action_dist = (
    torch.distributions.Categorical(action_probs))

action = action_dist.sample()
Deep Reinforcement Learning ด้วย Python

ฟังก์ชัน objective

 

  • Policy ต้องเพิ่ม expected returns ให้สูงสุด

    • โดยสมมติว่า agent ดำเนิน $\pi_\theta$
    • ด้วยการ optimize พารามิเตอร์ $\theta$
  • ฟังก์ชัน objective:

สมการ: J(pi theta) = ค่าคาดหวังเหนือ trajectory tau ที่ดำเนิน pi theta ของ R_tau ซึ่ง R_tau คือผลตอบแทนรวมของ episode

 

  • หากต้องการ maximize $J$: ต้องคำนวณ gradient เทียบกับ $\theta$:

Gradient ของ J(pi_theta) เทียบกับ theta

Deep Reinforcement Learning ด้วย Python

ฟังก์ชัน objective

 

  • Policy ต้องเพิ่ม expected returns ให้สูงสุด

    • โดยสมมติว่า agent ดำเนิน $\pi_\theta$
    • ด้วยการ optimize พารามิเตอร์ $\theta$
  • ฟังก์ชัน objective:

นิยามของ J(pi theta) เหมือนกับสไลด์ก่อนหน้า

 

  • หากต้องการ maximize $J$: ต้องคำนวณ gradient เทียบกับ $\theta$:

Gradient ของ J(pi_theta) เทียบกับ theta เรียกว่า policy gradient

Deep Reinforcement Learning ด้วย Python

ทฤษฎีบท policy gradient

 

  • ให้นิพจน์ที่คำนวณได้สำหรับ $\nabla_\theta J(\pi_\theta)$
  • ค่าคาดหวังเหนือ trajectory ที่ดำเนิน $\pi_\theta$
    • เก็บ trajectory และสังเกต returns

 

ทฤษฎีบท policy gradient: Gradient ของ J(pi_theta) เทียบกับ theta เท่ากับค่าคาดหวังเหนือ trajectory tau ที่ดำเนิน pi_theta ของ...

Deep Reinforcement Learning ด้วย Python

ทฤษฎีบท policy gradient

 

  • ให้นิพจน์ที่คำนวณได้สำหรับ $\nabla_\theta J(\pi_\theta)$
  • ค่าคาดหวังเหนือ trajectory ที่ดำเนิน $\pi_\theta$
    • เก็บ trajectory และสังเกต returns
  • สำหรับแต่ละ trajectory: พิจารณา return $R_\tau$

 

ทฤษฎีบท policy gradient: Gradient ของ J(pi_theta) เทียบกับ theta เท่ากับค่าคาดหวังเหนือ trajectory tau ที่ดำเนิน pi_theta ของผลตอบแทนรวมของ episode คูณด้วย...

Deep Reinforcement Learning ด้วย Python

ทฤษฎีบท policy gradient

 

  • ให้นิพจน์ที่คำนวณได้สำหรับ $\nabla_\theta J(\pi_\theta)$
  • ค่าคาดหวังเหนือ trajectory ที่ดำเนิน $\pi_\theta$
    • เก็บ trajectory และสังเกต returns
  • สำหรับแต่ละ trajectory: พิจารณา return $R_\tau$
  • คูณด้วยผลรวมของ gradient ของ log probability ของ action ที่เลือก
  • แนวคิด: ปรับ theta ในทิศทางที่เพิ่มความน่าจะเป็นของทุก action ใน episode ที่ "ดี"

 

ทฤษฎีบท policy gradient: Gradient ของ J(pi_theta) เทียบกับ theta เท่ากับค่าคาดหวังเหนือ trajectory tau ที่ดำเนิน pi_theta ของผลตอบแทนรวมของ episode คูณด้วยผลรวมของ gradient ของ log probability ของ action โดยรวมทุก action ใน trajectory

Deep Reinforcement Learning ด้วย Python

 

ภาพเคลื่อนไหวของเกม Pong

Deep Reinforcement Learning ด้วย Python

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

Deep Reinforcement Learning ด้วย Python

Preparing Video For Download...