Úvod do policy gradient

Deep Reinforcement Learning v Pythonu

Timothée Carayol

Principal Machine Learning Engineer, Komment

Úvod do policy metod v DRL

 

Q-learning:

  • Učení funkce hodnoty akce Q

Q-síť se stavem jako vstupem a hodnotami akcí jako výstupem

  • Policy: vybrat akci s nejvyšší hodnotou

 

Učení policy:

  • Přímé učení policy

Síť policy se stavem jako vstupem a pravděpodobnostmi akcí jako výstupem

Deep Reinforcement Learning v Pythonu

Učení policy

 

  • Může být stochastická
  • Zvládá spojité prostory
  • Přímá optimalizace účelové funkce
  • Vysoký rozptyl
  • Nižší vzorková efektivita

 

  • V Deep-Q learningu: policy jsou deterministické

 

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

  • Rozdělení pravděpodobnosti pro $a_t$ ve stavu $s_t$, kde:
    • $a_t$, $s_t$: akce a stav v kroku $t$
    • $\theta$: parametry policy (váhy sítě)
Deep Reinforcement Learning v Pythonu

Síť policy (diskrétní akce)

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

Tabulka mapující každou ze čtyř možných akcí na její index a pravděpodobnost. Akce 'nahoru' má index 0 a pravděpodobnost 0,21; akce 'vpravo' má index 1 a pravděpodobnost 0,02; akce 'dolů' má index 2 a pravděpodobnost 0,74; akce 'vlevo' má index 3 a pravděpodobnost 0,03.

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

action = action_dist.sample()
Deep Reinforcement Learning v Pythonu

Účelová funkce

 

  • Policy musí maximalizovat očekávané výnosy

    • Za předpokladu, že agent sleduje $\pi_\theta$
    • Optimalizací parametru policy $\theta$
  • Účelová funkce:

Rovnice: J(pi theta) = Očekávaná hodnota přes trajektorie tau sledující pi theta z R_tau, kde R_tau je výnos epizody

 

  • Maximalizace $J$: potřebný gradient vzhledem k $\theta$:

Gradient J(pi_theta) vzhledem k theta

Deep Reinforcement Learning v Pythonu

Účelová funkce

 

  • Policy musí maximalizovat očekávané výnosy

    • Za předpokladu, že agent sleduje $\pi_\theta$
    • Optimalizací parametru policy $\theta$
  • Účelová funkce:

Definice J(pi theta), stejná jako na předchozím snímku

 

  • Maximalizace $J$: potřebný gradient vzhledem k $\theta$:

Gradient J(pi_theta) vzhledem k theta se nazývá policy gradient

Deep Reinforcement Learning v Pythonu

Věta o policy gradientu

 

  • Poskytuje tractable výraz pro $\nabla_\theta J(\pi_\theta)$
  • Očekávání přes trajektorie sledující $\pi_\theta$
    • Sbírání trajektorií a pozorování výnosů

 

Věta o policy gradientu: Gradient J(pi_theta) vzhledem k theta se rovná očekávání přes trajektorie tau sledující pi_theta z...

Deep Reinforcement Learning v Pythonu

Věta o policy gradientu

 

  • Poskytuje tractable výraz pro $\nabla_\theta J(\pi_\theta)$
  • Očekávání přes trajektorie sledující $\pi_\theta$
    • Sbírání trajektorií a pozorování výnosů
  • Pro každou trajektorii: uvažujeme výnos $R_\tau$

 

Věta o policy gradientu: Gradient J(pi_theta) vzhledem k theta se rovná očekávání přes trajektorie tau sledující pi_theta z výnosu epizody vynásobeného...

Deep Reinforcement Learning v Pythonu

Věta o policy gradientu

 

  • Poskytuje tractable výraz pro $\nabla_\theta J(\pi_\theta)$
  • Očekávání přes trajektorie sledující $\pi_\theta$
    • Sbírání trajektorií a pozorování výnosů
  • Pro každou trajektorii: uvažujeme výnos $R_\tau$
  • Násobení součtem gradientů log-pravděpodobností vybraných akcí
  • Intuice: posunutí theta tak, aby se zvýšila pravděpodobnost všech akcí v "dobré" epizodě

 

Věta o policy gradientu: Gradient J(pi_theta) vzhledem k theta se rovná očekávání přes trajektorie tau sledující pi_theta z výnosu epizody vynásobeného součtem gradientů log-pravděpodobností akcí, přes všechny akce v trajektorii.

Deep Reinforcement Learning v Pythonu

 

GIF zobrazující hru Pong

Deep Reinforcement Learning v Pythonu

Pojďme procvičovat!

Deep Reinforcement Learning v Pythonu

Preparing Video For Download...