Introduktion till policy gradient

Djup förstärkningsinlärning i Python

Timothée Carayol

Principal Machine Learning Engineer, Komment

Introduktion till policymetoder inom DRL

 

Q-learning:

  • Lär in värdefunktionen Q

Ett Q-nätverk med tillståndet som indata och aktionsvärden som utdata

  • Policy: välj aktionen med högst värde

 

Policyinlärning:

  • Lär in policyn direkt

Ett policynätverk med tillståndet som indata och aktionssannolikheter som utdata

Djup förstärkningsinlärning i Python

Policyinlärning

 

  • Kan vara stokastisk
  • Hanterar kontinuerliga rum
  • Optimerar direkt mot målet
  • Hög varians
  • Lägre sampeleffektivitet

 

  • I Deep-Q-learning är policies deterministiska

 

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

  • Sannolikhetsfördelning för $a_t$ i tillstånd $s_t$, där:
    • $a_t$, $s_t$: aktion och tillstånd vid steg $t$
    • $\theta$: policyparametrar (nätverksvikter)
Djup förstärkningsinlärning i Python

Policynätverket (diskreta aktioner)

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

En tabell som mappar var och en av fyra möjliga aktioner till dess index och sannolikhet. Aktionen 'upp' har index 0 och sannolikhet 0,21; aktionen 'höger' har index 1 och sannolikhet 0,02; aktionen 'ner' har index 2 och sannolikhet 0,74; aktionen 'vänster' har index 3 och sannolikhet 0,03.

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

action = action_dist.sample()
Djup förstärkningsinlärning i Python

Målfunktionen

 

  • Policyn måste maximera förväntat avkastning

    • Förutsätter att agenten följer $\pi_\theta$
    • Genom att optimera policyparametern $\theta$
  • Målfunktion:

En ekvation: J(pi theta) = förväntat värde över trajektorier tau som följer pi theta av R_tau, där R_tau är avkastningen för episoden

 

  • För att maximera $J$: behövs gradienten med avseende på $\theta$:

Gradienten av J(pi_theta) med avseende på theta

Djup förstärkningsinlärning i Python

Målfunktionen

 

  • Policyn måste maximera förväntat avkastning

    • Förutsätter att agenten följer $\pi_\theta$
    • Genom att optimera policyparametern $\theta$
  • Målfunktion:

Definitionen av J(pi theta), oförändrad från föregående bild

 

  • För att maximera $J$: behövs gradienten med avseende på $\theta$:

Gradienten av J(pi_theta) med avseende på theta kallas policygradient

Djup förstärkningsinlärning i Python

Policygradientteoremet

 

  • Ger ett hanterbart uttryck för $\nabla_\theta J(\pi_\theta)$
  • Förväntan över trajektorier som följer $\pi_\theta$
    • Samla in trajektorier och observera avkastningarna

 

Policygradientteoremet: gradienten av J(pi_theta) med avseende på theta är lika med förväntan över trajektorier tau som följer pi_theta av...

Djup förstärkningsinlärning i Python

Policygradientteoremet

 

  • Ger ett hanterbart uttryck för $\nabla_\theta J(\pi_\theta)$
  • Förväntan över trajektorier som följer $\pi_\theta$
    • Samla in trajektorier och observera avkastningarna
  • För varje trajektoria: beakta avkastningen $R_\tau$

 

Policygradientteoremet: gradienten av J(pi_theta) med avseende på theta är lika med förväntan över trajektorier tau som följer pi_theta av episodens avkastning multiplicerad med...

Djup förstärkningsinlärning i Python

Policygradientteoremet

 

  • Ger ett hanterbart uttryck för $\nabla_\theta J(\pi_\theta)$
  • Förväntan över trajektorier som följer $\pi_\theta$
    • Samla in trajektorier och observera avkastningarna
  • För varje trajektoria: beakta avkastningen $R_\tau$
  • Multiplicera med summan av gradienterna för log-sannolikheterna för valda aktioner
  • Intuition: justera theta så att sannolikheten för alla aktioner i en "bra" episod ökar

 

Policygradientteoremet: gradienten av J(pi_theta) med avseende på theta är lika med förväntan över trajektorier tau som följer pi_theta av episodens avkastning multiplicerad med summan av gradienterna för log-aktionssannolikheterna, summerat över alla aktioner i trajektorian.

Djup förstärkningsinlärning i Python

 

En gif som visar ett spel av Pong

Djup förstärkningsinlärning i Python

Nu kör vi en övning!

Djup förstärkningsinlärning i Python

Preparing Video For Download...