REINFORCE

En intelligence artificielle, plus précisément en apprentissage automatique, REINFORCE est un algorithme d'apprentissage par renforcement qui applique directement une méthode de gradient sur la politique. C'est une méthode policy-gradient qui s'oppose aux méthodes qui optimisent la valeur (comme le Q-learning). Il est introduit par Ronald Williams en 1992[1].

Représentation d'une politique

Considérons un système, par exemple un robot qui se déplace sur une grille. Le système est dans un certain état. Par exemple, un état peut être la position du robot sur la grille. Les actions du robot sont par exemple : aller à gauche, aller à droite, aller en haut, aller en bas ou rester sur place. Une politique est une fonction quelconque π {\displaystyle \pi } qui à chaque état s {\displaystyle s} du système associe une distribution de probabilité sur les actions. On note π ( a | s ) {\displaystyle \pi (a|s)} la probabilité d'exécuter l'action a {\displaystyle a} dans l'état s {\displaystyle s} . Dans l'algorithme REINFORCE, on représente une politique avec un vecteur θ {\displaystyle \in } R d {\displaystyle \mathbb {R} ^{d}} . Pour souligner que la politique dépend du vecteur θ {\displaystyle \theta } , on la note π(·[Quoi ?], θ). Les nombres dans le vecteur θ {\displaystyle \theta } sont des paramètres dans une expression analytique qui représente la politique. On écrit π ( a | s , θ ) {\displaystyle \pi (a|s,\theta )} la probabilité d'exécution de l'action a {\displaystyle a} dans l'état s {\displaystyle s} , quand il s'agit de la politique paramétrisée par le vecteur θ {\displaystyle \theta } .

Exemple

Par exemple, considérons un robot où l'état s est représenté par sa position (x1(s), x2(s)) dans le plan. On peut imaginer que la probabilité d'exécuter l'action a dans l'état s est donnée par

π ( a | s , θ ) = e x 1 ( s ) θ 1 , a + x 2 ( s ) θ 2 , a a e x 1 ( s ) θ 1 , a + x 2 ( s ) θ 2 , a {\displaystyle \pi (a|s,\theta )={\frac {e^{x_{1}(s)\theta _{1,a}+x_{2}(s)\theta _{2,a}}}{\sum _{a'}e^{x_{1}(s)\theta _{1,a'}+x_{2}(s)\theta _{2,a'}}}}}

où le vecteur θ est la collection de tous les paramètres θ1,a, θ2,a pour toutes les actions a.

Principe REINFORCE Monte Carlo policy gradient

On donne ici la version de REINFORCE expliquée dans la page 328 du livre de Reinforcement Learning: An Introduction de Sutton et Barto [2]. Le vecteur θ de paramètres de la politique est initialisé aléatoirement. En d'autres termes, l'algorithme démarre avec une politique choisie aléatoirement dans l'espace des politiques paramétrées par θ. L'algorithme effectue plusieurs épisodes. Durant chaque épisode, l'agent suit la politique π(·|·, θ). À la fin de chaque épisode, on analyse ce qu'il s'est passé et on ajuste le vecteur paramètre θ de la politique.

Génération d'un épisode

L'algorithme consiste à générer plusieurs épisodes S 0 , A 0 , R 1 , . . . , S T 1 , A T 1 , R T {\displaystyle S_{0},A_{0},R_{1},...,S_{T-1},A_{T-1},R_{T}} en utilisant la politique courante π(·|·, θ) où

  • les instants sont 0, 1, ..., T {\displaystyle T}
  • S 0 , S 1 , . . . , S T 1 {\displaystyle S_{0},S_{1},...,S_{T-1}} sont les états à l'instant 0, 1, ..., T-1 (par exemple, les positions d'un robot dans le plan comme (0, 1), (1, 1), (0, 1), (0, 2), .... (3, 4))
  • A 0 , A 1 , . . . , A T 1 {\displaystyle A_{0},A_{1},...,A_{T-1}} sont les actions choisies (par exemple, aller à droite, à gauche, en haut, .... à droite)
  • R 1 , . . . , R T {\displaystyle R_{1},...,R_{T}} sont les récompenses obtenues par l'agent (par exemple, 1€, -3€, ... 4€).

Considérons un tel épisode S 0 , A 0 , R 1 , . . . , S T 1 , A T 1 , R T {\displaystyle S_{0},A_{0},R_{1},...,S_{T-1},A_{T-1},R_{T}} . Plus précisément, S 0 {\displaystyle S_{0}} est l'état initial. Puis, l'agent choisit une action A 0 {\displaystyle A_{0}} selon la distribution de probabilité π ( S 0 , θ ) {\displaystyle \pi (\cdot \mid S_{0},\theta )} . Puis l'agent reçoit une récompense R 1 {\displaystyle R_{1}} et va dans l'état S 1 {\displaystyle S_{1}} . Puis, l'agent choisit une action A 2 {\displaystyle A_{2}} selon la distribution de probabilité π ( S 1 , θ ) {\displaystyle \pi (\cdot \mid S_{1},\theta )} , etc.

Mise à jour des paramètres de la politique

L'algorithme modifie la politique courante en fonction de l'expérience acquise pendant l'épisode S 0 , A 0 , R 1 , . . . , S T 1 , A T 1 , R T {\displaystyle S_{0},A_{0},R_{1},...,S_{T-1},A_{T-1},R_{T}} . Autrement dit, il s'agit de mettre à jour les poids θ. À chaque étape t de l'épisode, on calcule le gain G à partir de l'étape t. Il s'agit du total des récompenses depuis cette étape t jusqu'à la fin de épisode. Cela permet de ne considérer que les récompenses futures et présentes. Autrement dit :

G = k = t + 1 T R k {\displaystyle G=\sum _{k=t+1}^{T}R_{k}} .

Plus généralement, on considère un gain où les récompenses sont réajustées avec un facteur de dévaluation γ {\displaystyle \gamma }  :

G = k = t + 1 T γ k t 1 R k {\displaystyle G=\sum _{k=t+1}^{T}\gamma ^{k-t-1}R_{k}}

Ce calcul de G permet de réajuster θ de la façon suivante :

θ := θ + α γ t G l n ( π ( A t | S t , θ ) ) {\displaystyle \theta :=\theta +\alpha \gamma ^{t}G\nabla ln(\pi (A_{t}|S_{t},\theta ))}

α {\displaystyle \alpha } est un taux d'apprentissage, et où l n ( π ( A t | S t , θ ) ) {\displaystyle \nabla ln(\pi (A_{t}|S_{t},\theta ))} est le vecteur gradient de l n ( π ( A t | S t , θ ) ) {\displaystyle ln(\pi (A_{t}|S_{t},\theta ))} (vecteur gradient sur les variables θ {\displaystyle \theta } ). Le taux d'apprentissage α {\displaystyle \alpha } est compris entre 0 et 1. Les valeurs limites s'interprètent de la façon suivante : si α = 0 {\displaystyle \alpha =0} , alors le vecteur θ {\displaystyle \theta } n'est pas mis à jour et l'agent n'apprend pas ; si α = 1 {\displaystyle \alpha =1} , l'agent oublie tout ce qu'il a appris jusqu'à présent. Ainsi, le vecteur θ est mis à jour pour chaque étape de l'épisode à partir de son ancienne valeur à laquelle on ajoute le vecteur gradient du logarithme de la politique pondéré par le taux d'apprentissage α {\displaystyle \alpha } et G. Ce vecteur gradient l n ( π ( A t | S t , θ ) ) {\displaystyle \nabla ln(\pi (A_{t}|S_{t},\theta ))} est égal à :

l n ( π ( A t | S t , θ ) ) = π ( A t | S t , θ ) π ( A t | S t , θ ) {\displaystyle \nabla ln(\pi (A_{t}|S_{t},\theta ))={\frac {\nabla \pi (A_{t}|S_{t},\theta )}{\pi (A_{t}|S_{t},\theta )}}} .

Donnons une explication intuitive de la mise à jour. Supposons que G est positif. Ainsi, il est plus souhaitable de jouer A t {\displaystyle A_{t}} dans l'état S t {\displaystyle S_{t}} . Autrement on aimerait modifier θ afin d'augmenter π ( A t | S t , θ ) {\displaystyle \pi (A_{t}|S_{t},\theta )} . La mise à jour renforce bien cela. En effet, si la première composante de π ( A t | S t , θ ) {\displaystyle \nabla \pi (A_{t}|S_{t},\theta )} est positive, cela veut dire que si on augmente θ 1 {\displaystyle \theta _{1}} , alors la probabilité π ( A t | S t , θ ) {\displaystyle \pi (A_{t}|S_{t},\theta )} augmente. Et la mise à jour augmente bien θ 1 {\displaystyle \theta _{1}} . Si la première composante de π ( A t | S t , θ ) {\displaystyle \nabla \pi (A_{t}|S_{t},\theta )} est négative, c'est décroitre θ 1 {\displaystyle \theta _{1}} qui augmente π ( A t | S t , θ ) {\displaystyle \nabla \pi (A_{t}|S_{t},\theta )} , et la mise à jour décroit θ 1 {\displaystyle \theta _{1}} . Si G est négatif, la mise à jour de θ diminue π ( A t | S t , θ ) {\displaystyle \pi (A_{t}|S_{t},\theta )} .

Pseudo Code REINFORCE Monte Carlo policy gradient

Entrée : politique différentiable π(·|·, θ) de paramétrisation θ, taux d'apprentissage α > 0
Sortie : paramètre de la politique θ optimisé
Initialisation θ 
  
    
      
        
      
    
    {\displaystyle \in }
  
 
  
    
      
        
          
            R
          
          
            d
          
        
      
    
    {\displaystyle \mathbb {R} ^{d}}
  

Pour chaque épisode : 
      Générer 
  
    
      
        
          S
          
            0
          
        
        ,
        
          A
          
            0
          
        
        ,
        
          R
          
            1
          
        
        ,
        .
        .
        .
        ,
        
          S
          
            T
            
            1
          
        
        ,
        
          A
          
            T
            
            1
          
        
        ,
        
          R
          
            T
          
        
      
    
    {\displaystyle S_{0},A_{0},R_{1},...,S_{T-1},A_{T-1},R_{T}}
  
 en suivant la politique π(·|·, θ)     
      Pour chaque étape de chaque épisode t = 0, 1, ..., T-1:
           
  
    
      
        G
        :=
        
          
          
            k
            =
            t
            +
            1
          
          
            T
          
        
        
          γ
          
            k
            
            t
            
            1
          
        
        
          R
          
            k
          
        
      
    
    {\displaystyle G:=\sum _{k=t+1}^{T}\gamma ^{k-t-1}R_{k}}
  

           
  
    
      
        θ
        :=
        θ
        +
        α
        
          γ
          
            t
          
        
        G
        
        l
        n
        (
        π
        (
        
          A
          
            t
          
        
        
          |
        
        
          S
          
            t
          
        
        ,
        θ
        )
        )
      
    
    {\displaystyle \theta :=\theta +\alpha \gamma ^{t}G\nabla ln(\pi (A_{t}|S_{t},\theta ))}
  

Retourner θ

REINFORCE avec ligne conductrice

On donne ici la version de REINFORCE avec ligne conductrice donnée page 330[C'est-à-dire ?] de [2] . La ligne directrice est un peu comme[style à revoir] un fil d 'Ariane dans le labyrinthe contrairement à la méthode Actor-Critic. Ici, nous utilisons la fonction état-valeur comme ligne directrice. Alors que dans REINFORCE Monte Carlo classique où la mise à jour est θ = θ + α γ t G l n ( π ( A t | S t , θ ) ) {\displaystyle \theta =\theta +\alpha \gamma ^{t}G\nabla ln(\pi (A_{t}|S_{t},\theta ))} , ici, la mise à jour devient θ = θ + α γ t ( G v ( S t , w ) ) l n ( π ( A t | S t , θ ) ) {\displaystyle \theta =\theta +\alpha \gamma ^{t}(G-v(S_{t},w))\nabla ln(\pi (A_{t}|S_{t},\theta ))} v ( S t , w ) {\displaystyle v(S_{t},w)} est l'approximation de la valeur de l'état S t {\displaystyle S_{t}} , approximation paramétrée par le vecteur poids w {\displaystyle w} . En d'autres termes, l'impact de la récompense est réajustée en fonction de la valeur v ( S t , w ) {\displaystyle v(S_{t},w)} . Au lieu de pondérer le vecteur gradient par G, on le pondère désormais par G v ( S t , w ) {\displaystyle G-v(S_{t},w)} [pas clair].

Le squelette de l'algorithme est similaire. En plus d'initialiser le vecteur θ de paramètres de la politique, on initialise aussi un vecteur de poids ω de la fonction état-valeur aléatoirement. Le calcul de G permet de réajuster θ et mais aussi ω. La mise à jour de ω s'effectue avec une méthode de gradient, où le vecteur gradient est aussi pondéré par G v ( S t , w ) {\displaystyle G-v(S_{t},w)} .

À la fin, on obtient le paramètre de la politique et ainsi que le paramètre de la fonction état-valeur réajustés.

Entrée : politique différentiable de paramétrisation π(a|s, θ),
         fonction état-valeur v(s,w), taux d'apprentissage α > 0 , α' > 0
Sortie : paramètre de la politique θ optimisé et poids de la fonction état-valeur w optimisé
Initialisation θ 
  
    
      
        
      
    
    {\displaystyle \in }
  
 
  
    
      
        
          
            R
          
          
            d
          
        
      
    
    {\displaystyle \mathbb {R} ^{d}}
  
, w 
  
    
      
        
      
    
    {\displaystyle \in }
  
 
  
    
      
        
          
            R
          
          
            d
          
        
      
    
    {\displaystyle \mathbb {R} ^{d}}
  
  
Pour chaque épisode : 
      Générer 
  
    
      
        
          S
          
            0
          
        
        ,
        
          A
          
            0
          
        
        ,
        
          R
          
            1
          
        
        ,
        .
        .
        .
        ,
        
          S
          
            T
            
            1
          
        
        ,
        
          A
          
            T
            
            1
          
        
        ,
        
          R
          
            T
          
        
      
    
    {\displaystyle S_{0},A_{0},R_{1},...,S_{T-1},A_{T-1},R_{T}}
  
 en suivant la politique π(a|s, θ)     
      Pour chaque étape de chaque épisode t = 0, 1, .., T-1:
           
  
    
      
        G
        =
        
          
          
            k
            =
            t
            +
            1
          
          
            T
          
        
        
          γ
          
            k
            
            t
            
            1
          
        
        
          R
          
            k
          
        
      
    
    {\displaystyle G=\sum _{k=t+1}^{T}\gamma ^{k-t-1}R_{k}}
  
    
           
  
    
      
        ω
        =
        ω
        +
        α
        (
        G
        
        v
        (
        
          S
          
            t
          
        
        ,
        w
        )
        )
        
        v
        (
        
          S
          
            t
          
        
        ,
        w
        )
      
    
    {\displaystyle \omega =\omega +\alpha (G-v(S_{t},w))\nabla v(S_{t},w)}
  

           
  
    
      
        θ
        =
        θ
        +
        α
        
          γ
          
            t
          
        
        (
        G
        
        v
        (
        
          S
          
            t
          
        
        ,
        w
        )
        )
        
        l
        n
        (
        π
        (
        
          A
          
            t
          
        
        
          |
        
        
          S
          
            t
          
        
        ,
        θ
        )
        )
      
    
    {\displaystyle \theta =\theta +\alpha \gamma ^{t}(G-v(S_{t},w))\nabla ln(\pi (A_{t}|S_{t},\theta ))}
  

Retourner θ, w

Notes et références

  1. (en) Ronald J. Williams, « Simple statistical gradient-following algorithms for connectionist reinforcement learning », Machine Learning, vol. 8, no 3,‎ , p. 229–256 (ISSN 1573-0565, DOI 10.1007/BF00992696).
  2. a et b (en) Richard S. Sutton et Andrew G. Barto, Reinforcement Learning: An Introduction, A Bradford Book, coll. « Adaptive Computation and Machine Learning series », (ISBN 978-0-262-03924-6, lire en ligne).
  • icône décorative Portail de l'informatique théorique