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.
L'algorithme consiste à générer plusieurs épisodes
en utilisant la politique courante π(·|·, θ) où
- les instants sont 0, 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))
sont les actions choisies (par exemple, aller à droite, à gauche, en haut, .... à droite)
sont les récompenses obtenues par l'agent (par exemple, 1€, -3€, ... 4€).
Considérons un tel épisode
. Plus précisément,
est l'état initial. Puis, l'agent choisit une action
selon la distribution de probabilité
. Puis l'agent reçoit une récompense
et va dans l'état
. Puis, l'agent choisit une action
selon la distribution de probabilité
, etc.
L'algorithme modifie la politique courante en fonction de l'expérience acquise pendant l'épisode
. 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 :
.
Plus généralement, on considère un gain où les récompenses sont réajustées avec un facteur de dévaluation
:

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

où
est un taux d'apprentissage, et où
est le vecteur gradient de
(vecteur gradient sur les variables
). Le taux d'apprentissage
est compris entre 0 et 1. Les valeurs limites s'interprètent de la façon suivante : si
, alors le vecteur
n'est pas mis à jour et l'agent n'apprend pas ; si
, 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
et G. Ce vecteur gradient
est égal à :
.
Donnons une explication intuitive de la mise à jour. Supposons que G est positif. Ainsi, il est plus souhaitable de jouer
dans l'état
. Autrement on aimerait modifier θ afin d'augmenter
. La mise à jour renforce bien cela. En effet, si la première composante de
est positive, cela veut dire que si on augmente
, alors la probabilité
augmente. Et la mise à jour augmente bien
. Si la première composante de
est négative, c'est décroitre
qui augmente
, et la mise à jour décroit
. Si G est négatif, la mise à jour de θ diminue
.
Entrée : politique différentiable π(·|·, θ) de paramétrisation θ, taux d'apprentissage α > 0
Sortie : paramètre de la politique θ optimisé
Initialisation θ
Pour chaque épisode :
Générer
en suivant la politique π(·|·, θ)
Pour chaque étape de chaque épisode t = 0, 1, ..., T-1:
Retourner θ