En apprentissage par renforcement, l'équation de Bellman décrit une façon de récompenser un agent suite à une action.
Avant tout, il est nécessaire de comprendre que dans un environnement donné, on définit :
Deux états différents au morpion
Pour choisir quelle action effectuer dans un état donné, on utilise un tableau de scores, appelé Q-table (Q pour Qualité) : c'est un tableau à double entrée qui, à chaque paire (état , action) associe un score, positif ou négatif.
Dans un état donné, on choisira alors l'action avec le plus grand score.
États | Actions | ||||||||
1 | 0.5 | 1 | -10 | 4 | 3 | -15 | 0.5 | 1 | |
-10 | 48 | -15 | 5 | -18 | 1 | 6 | 2 | -10 |
Dans cet exemple, on voit que les actions menant à une victoire sont mieux récompensées que les autres. Quant aux actions << interdites >>, elles sont fortement punies par un score négatif.
Dans le cas du morpion, la Q-Table contient au plus 39 x 9 = 177 147 cases. C'est beaucoup pour un humain, mais pas pour un ordinateur.
Cependant, dans le cas d'un jeu comme le puissance 4, il y a 7 actions possibles et un maximum théorique de 342 états, soit une Q-Table contenant au maximum 342 x 7 = 765932923920586514463 cases !
Le problème qui se pose alors est : comment remplir correctement et efficacement la Q-Table ? C'est là qu'intervient l'équation de Bellman.
L'équation de Bellman est une formule permettant de mettre à jour la Q-Table. La voici :
$$ Q(s,a) \leftarrow Q(s,a) + \alpha \left( R + \gamma \left( max_{a'} Q(s',a') - Q(s,a) \right)\right) $$
Quelques explications s'imposent :
On peut réecrire cette équation de la façon suivante :
$$ Q(s,a) \leftarrow (1 - \alpha) \times Q(s,a) + \alpha \times R + \alpha \gamma \times max_{a'} Q(s',a') $$
Un cas particulier est celui où $\alpha = 1$ : on << oublie >> le score précédent $Q(s,a)$, et on met à jour la Q-Table uniquement avec la récompense $R$ et le score << futur >> maximum $max_{a'} Q(s',a')$ :
$$ Q(s,a) \leftarrow R + \gamma \times max_{a'} Q(s',a') $$
Avec cette dernière formule, on voit bien le rôle de $~max_{a'} Q(s',a')$ : plus l'état $s'$ est intéressant pour gagner, plus ce maximum sera grand et la valeur de $Q(s,a)$ augmentée en conséquence, indiquant qu'effectuer l'action $a$ dans l'état $s$ est une bonne solution. Inversement, moins cet état est intéressant et moins $Q(s,a)$ augmentera.