Introductie tot policy gradient

Deep Reinforcement Learning in Python

Timothée Carayol

Principal Machine Learning Engineer, Komment

Introductie tot Policymethoden in DRL

 

Q-learning:

  • Leer de actie-waardefunctie Q

Een Q-netwerk, met de staat als input en de actiewaardes als output

  • Policy: kies de actie met hoogste waarde

 

Policy learning:

  • Leer de policy direct

Een policy-netwerk, met de staat als input en de actieprobabilities als output

Deep Reinforcement Learning in Python

Policy learning

 

  • Kan stochastisch zijn
  • Werkt met continue ruimtes
  • Optimaliseert direct de doelstelling
  • Hoge variantie
  • Minder sample-efficiënt

 

  • In Deep-Q learning: policies zijn deterministisch

 

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

  • Kansverdeling voor $a_t$ in staat $s_t$, met:
    • $a_t$, $s_t$: actie en staat op stap $t$
    • $\theta$: policy-parameters (netwerkgewichten)
Deep Reinforcement Learning in Python

Het policy-netwerk (discrete acties)

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

Een tabel die vier mogelijke acties koppelt aan hun index en kans. Actie 'up' heeft index 0 en kans 0.21; actie 'right' heeft index 1 en kans 0.02; actie 'down' heeft index 2 en kans 0.74; actie 'left' heeft index 3 en kans 0.03.

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

action = action_dist.sample()
Deep Reinforcement Learning in Python

De doelfunctie

 

  • Policy moet de verwachte opbrengst maximaliseren

    • Aannemende dat de agent $\pi_\theta$ volgt
    • Door de policy-parameter $\theta$ te optimaliseren
  • Doelfunctie:

Een vergelijking: J(pi theta) = Verwachte waarde over trajecten tau die pi theta volgen van R_tau, waar R_tau de episode-opbrengst is

 

  • Om $J$ te maximaliseren: gradiënt nodig t.o.v. $\theta$:

Gradiënt van J(pi_theta) t.o.v. theta

Deep Reinforcement Learning in Python

De doelfunctie

 

  • Policy moet de verwachte opbrengst maximaliseren

    • Aannemende dat de agent $\pi_\theta$ volgt
    • Door de policy-parameter $\theta$ te optimaliseren
  • Doelfunctie:

De definitie van J(pi theta), ongewijzigd t.o.v. de vorige slide

 

  • Om $J$ te maximaliseren: gradiënt nodig t.o.v. $\theta$:

Gradiënt van J(pi_theta) t.o.v. theta heet de policy gradient

Deep Reinforcement Learning in Python

De policy gradient-stelling

 

  • Geeft een hanteerbare uitdrukking voor $\nabla_\theta J(\pi_\theta)$
  • Verwachting over trajecten die $\pi_\theta$ volgen
    • Verzamel trajecten en observeer de opbrengsten

 

De policy gradient-stelling: Gradiënt van J(pi_theta) t.o.v. theta is gelijk aan de verwachting over trajecten tau die pi_theta volgen van...

Deep Reinforcement Learning in Python

De policy gradient-stelling

 

  • Geeft een hanteerbare uitdrukking voor $\nabla_\theta J(\pi_\theta)$
  • Verwachting over trajecten die $\pi_\theta$ volgen
    • Verzamel trajecten en observeer de opbrengsten
  • Voor elk traject: neem opbrengst $R_\tau$

 

De policy gradient-stelling: Gradiënt van J(pi_theta) t.o.v. theta is gelijk aan de verwachting over trajecten tau die pi_theta volgen van de episode-opbrengst vermenigvuldigd met...

Deep Reinforcement Learning in Python

De policy gradient-stelling

 

  • Geeft een hanteerbare uitdrukking voor $\nabla_\theta J(\pi_\theta)$
  • Verwachting over trajecten die $\pi_\theta$ volgen
    • Verzamel trajecten en observeer de opbrengsten
  • Voor elk traject: neem opbrengst $R_\tau$
  • Vermenigvuldig met de som van gradiënten van log-kansen van gekozen acties
  • Intuïtie: duw theta in richtingen die de kans op alle acties in een ‘goede’ episode vergroten

 

De policy gradient-stelling: Gradiënt van J(pi_theta) t.o.v. theta is gelijk aan de verwachting over trajecten tau die pi_theta volgen van de episode-opbrengst vermenigvuldigd met de som van de gradiënten van log-actieprobabilities, gesommeerd over alle acties in het traject.

Deep Reinforcement Learning in Python

 

Een gif van een Pong-spel

Deep Reinforcement Learning in Python

Laten we oefenen!

Deep Reinforcement Learning in Python

Preparing Video For Download...