Giới thiệu về policy gradient

Deep Reinforcement Learning bằng Python

Timothée Carayol

Principal Machine Learning Engineer, Komment

Giới thiệu về phương pháp Policy trong DRL

 

Q-learning:

  • Học hàm giá trị hành động Q

Một Q-network, với trạng thái là đầu vào và giá trị hành động là đầu ra

  • Policy: chọn hành động có giá trị cao nhất

 

Policy learning:

  • Học trực tiếp policy

Một policy network, với trạng thái là đầu vào và xác suất hành động là đầu ra

Deep Reinforcement Learning bằng Python

Học policy

 

  • Có thể ngẫu nhiên
  • Xử lý không gian liên tục
  • Tối ưu trực tiếp theo mục tiêu
  • Phương sai cao
  • Kém hiệu quả mẫu hơn

 

  • Trong Deep-Q learning: policy là xác định

 

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

  • Phân phối xác suất cho $a_t$ tại trạng thái $s_t$, với:
    • $a_t$, $s_t$: hành động và trạng thái tại bước $t$
    • $\theta$: tham số policy (trọng số mạng)
Deep Reinforcement Learning bằng Python

Policy network (hành động rời rạc)

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])

Một bảng ánh xạ bốn hành động có thể tới chỉ số và xác suất của chúng. Hành động 'up' có chỉ số 0 và xác suất 0.21; hành động 'right' có chỉ số 1 và xác suất 0.02; hành động 'down' có chỉ số 2 và xác suất 0.74; hành động 'left' có chỉ số 3 và xác suất 0.03.

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

action = action_dist.sample()
Deep Reinforcement Learning bằng Python

Hàm mục tiêu

 

  • Policy phải tối đa hóa lợi nhuận kỳ vọng

    • Giả sử tác tử theo $\pi_\theta$
    • Bằng cách tối ưu tham số policy $\theta$
  • Hàm mục tiêu:

Một phương trình: J(pi theta) = Kỳ vọng trên các quỹ đạo tau theo pi theta của R_tau, trong đó R_tau là tổng thưởng của tập

 

  • Để tối đa hóa $J$: cần gradient theo $\theta$:

Gradient của J(pi_theta) theo theta

Deep Reinforcement Learning bằng Python

Hàm mục tiêu

 

  • Policy phải tối đa hóa lợi nhuận kỳ vọng

    • Giả sử tác tử theo $\pi_\theta$
    • Bằng cách tối ưu tham số policy $\theta$
  • Hàm mục tiêu:

Định nghĩa J(pi theta), giữ nguyên như slide trước

 

  • Để tối đa hóa $J$: cần gradient theo $\theta$:

Gradient của J(pi_theta) theo theta được gọi là policy gradient

Deep Reinforcement Learning bằng Python

Định lý policy gradient

 

  • Cho biểu thức tính được cho $\nabla_\theta J(\pi_\theta)$
  • Kỳ vọng trên các quỹ đạo theo $\pi_\theta$
    • Thu thập quỹ đạo và quan sát tổng thưởng

 

Định lý policy gradient: Gradient của J(pi_theta) theo theta bằng kỳ vọng trên các quỹ đạo tau theo pi_theta của...

Deep Reinforcement Learning bằng Python

Định lý policy gradient

 

  • Cho biểu thức tính được cho $\nabla_\theta J(\pi_\theta)$
  • Kỳ vọng trên các quỹ đạo theo $\pi_\theta$
    • Thu thập quỹ đạo và quan sát tổng thưởng
  • Với mỗi quỹ đạo: xét tổng thưởng $R_\tau$

 

Định lý policy gradient: Gradient của J(pi_theta) theo theta bằng kỳ vọng trên các quỹ đạo tau theo pi_theta của tổng thưởng tập nhân với...

Deep Reinforcement Learning bằng Python

Định lý policy gradient

 

  • Cho biểu thức tính được cho $\nabla_\theta J(\pi_\theta)$
  • Kỳ vọng trên các quỹ đạo theo $\pi_\theta$
    • Thu thập quỹ đạo và quan sát tổng thưởng
  • Với mỗi quỹ đạo: xét tổng thưởng $R_\tau$
  • Nhân với tổng gradient của log xác suất các hành động đã chọn
  • Trực giác: chỉnh $\theta$ để tăng xác suất các hành động trong tập “tốt”

 

Định lý policy gradient: Gradient của J(pi_theta) theo theta bằng kỳ vọng trên các quỹ đạo tau theo pi_theta của tổng thưởng tập nhân với tổng các gradient của log xác suất hành động, cộng qua mọi hành động trong quỹ đạo.

Deep Reinforcement Learning bằng Python

 

Một ảnh gif minh họa trò chơi Pong

Deep Reinforcement Learning bằng Python

Ayo berlatih!

Deep Reinforcement Learning bằng Python

Preparing Video For Download...