Introduction aux gradients de politique

Deep Reinforcement Learning en Python

Timothée Carayol

Principal Machine Learning Engineer, Komment

Introduction aux méthodes par politique en DRL

 

Q-learning :

  • Apprendre la fonction de valeur d'action Q

Un réseau Q, avec l'état en entrée et les valeurs d'action en sortie

  • Politique : choisir l'action à plus forte valeur

 

Apprentissage de politique :

  • Apprendre la politique directement

Un réseau de politique, avec l'état en entrée et les probabilités d'action en sortie

Deep Reinforcement Learning en Python

Apprentissage de politique

 

  • Peut être stochastique
  • Gère les espaces continus
  • Optimise directement l'objectif
  • Forte variance
  • Moins efficace en échantillons

 

  • En Deep-Q learning : politiques déterministes

 

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

  • Distribution de probabilité de $a_t$ dans l'état $s_t$, avec :
    • $a_t$, $s_t$ : action et état à l'étape $t$
    • $\theta$ : paramètres de la politique (poids du réseau)
Deep Reinforcement Learning en Python

Le réseau de politique (actions discrètes)

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

Un tableau faisant correspondre chaque action parmi quatre à son indice et sa probabilité. L'action « up » a l'indice 0 et la probabilité 0,21 ; l'action « right » a l'indice 1 et la probabilité 0,02 ; l'action « down » a l'indice 2 et la probabilité 0,74 ; l'action « left » a l'indice 3 et la probabilité 0,03.

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

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

La fonction objectif

 

  • La politique doit maximiser le rendement attendu

    • En supposant que l'agent suit $\pi_\theta$
    • En optimisant le paramètre de politique $\theta$
  • Fonction objectif :

Une équation : J(pi theta) = espérance sur les trajectoires tau suivant pi theta de R_tau, où R_tau est le retour de l'épisode

 

  • Pour maximiser $J$ : besoin du gradient par rapport à $\theta$ :

Gradient de J(pi_theta) par rapport à theta

Deep Reinforcement Learning en Python

La fonction objectif

 

  • La politique doit maximiser le rendement attendu

    • En supposant que l'agent suit $\pi_\theta$
    • En optimisant le paramètre de politique $\theta$
  • Fonction objectif :

La définition de J(pi theta), inchangée par rapport à la diapo précédente

 

  • Pour maximiser $J$ : besoin du gradient par rapport à $\theta$ :

Le gradient de J(pi_theta) par rapport à theta est appelé gradient de politique

Deep Reinforcement Learning en Python

Le théorème du gradient de politique

 

  • Donne une expression traitable pour $\nabla_\theta J(\pi_\theta)$
  • Espérance sur les trajectoires suivant $\pi_\theta$
    • Recueillir des trajectoires et observer les retours

 

Le théorème du gradient de politique : le gradient de J(pi_theta) par rapport à theta est égal à l'espérance sur les trajectoires tau suivant pi_theta de...

Deep Reinforcement Learning en Python

Le théorème du gradient de politique

 

  • Donne une expression traitable pour $\nabla_\theta J(\pi_\theta)$
  • Espérance sur les trajectoires suivant $\pi_\theta$
    • Recueillir des trajectoires et observer les retours
  • Pour chaque trajectoire : considérer le retour $R_\tau$

 

Le théorème du gradient de politique : le gradient de J(pi_theta) par rapport à theta est égal à l'espérance sur les trajectoires tau suivant pi_theta du retour d'épisode multiplié par...

Deep Reinforcement Learning en Python

Le théorème du gradient de politique

 

  • Donne une expression traitable pour $\nabla_\theta J(\pi_\theta)$
  • Espérance sur les trajectoires suivant $\pi_\theta$
    • Recueillir des trajectoires et observer les retours
  • Pour chaque trajectoire : considérer le retour $R_\tau$
  • Multiplier par la somme des gradients des log‑probabilités des actions choisies
  • Intuition : ajuster $\theta$ pour accroître la probabilité de toutes les actions prises dans un « bon » épisode

 

Le théorème du gradient de politique : le gradient de J(pi_theta) par rapport à theta est égal à l'espérance sur les trajectoires tau suivant pi_theta du retour d'épisode multiplié par la somme des gradients des log‑probabilités d'action, sommée sur toutes les actions de la trajectoire.

Deep Reinforcement Learning en Python

 

Un gif représentant une partie de Pong

Deep Reinforcement Learning en Python

Passons à la pratique !

Deep Reinforcement Learning en Python

Preparing Video For Download...