Fonctions d’action-valeur

Reinforcement Learning avec Gymnasium en Python

Fouad Trad

Machine Learning Engineer

Fonctions d’action-valeur (Q-valeurs)

  • Retour attendu de :
    • En partant d’un état $s$
    • En effectuant l’action $a$
    • En suivant la politique
  • Estime l’attrait des actions dans chaque état

Image montrant la formule pour calculer la q-valeur pour un état et une action, Q(s,a), comme la somme de la récompense immédiate après l’action et de la valeur actualisée du nouvel état pour une politique donnée.

Reinforcement Learning avec Gymnasium en Python

Monde en grille

Image montrant l’environnement personnalisé avec 2 montagnes et un diamant.

  • Valeurs d’état

Image montrant les valeurs d’état calculées précédemment pour tous les états.

Reinforcement Learning avec Gymnasium en Python

Q-valeurs - état 4

Image montrant l’agent à l’état 4.

  • Agent né à l’état 4

Image montrant les valeurs d’état calculées précédemment pour tous les états.

Reinforcement Learning avec Gymnasium en Python

Q-valeurs - état 4

Image montrant les 4 actions possibles en état 4 avec leurs récompenses.

  • L’agent peut aller haut, bas, gauche, droite

Image montrant les valeurs d’état calculées précédemment pour tous les états.

Reinforcement Learning avec Gymnasium en Python

État 4 - action bas

Image montrant l’agent descendant de l’état 4 vers l’état 7.

  • Récompense : -2, valeur d’état : 5

Image montrant les valeurs d’état calculées précédemment pour tous les états.

Reinforcement Learning avec Gymnasium en Python

État 4 - action bas

Image montrant l’agent descendant de l’état 4 vers l’état 7, et la q-valeur correspondante de 3.

  • $Q(4, \text{bas}) = -2 + 1 \times 5 = 3$

Image montrant les valeurs d’état calculées précédemment pour tous les états.

Reinforcement Learning avec Gymnasium en Python

État 4 - action gauche

Image montrant l’agent allant à gauche depuis l’état 4 vers l’état 3, et la q-valeur correspondante de 1.

  • $Q(4, \text{gauche}) = -1 + 1 \times 2 = 1$

Image montrant les valeurs d’état calculées précédemment pour tous les états.

Reinforcement Learning avec Gymnasium en Python

État 4 - action haut

Image montrant l’agent montant de l’état 4 vers l’état 1, et la q-valeur correspondante de 7.

  • $Q(4, \text{haut}) = -1 + 1 \times 8 = 7$

Image montrant les valeurs d’état calculées précédemment pour tous les états.

Reinforcement Learning avec Gymnasium en Python

État 4 - action droite

Image montrant l’agent allant à droite depuis l’état 4 vers l’état 5, et la q-valeur correspondante de 9.

  • $Q(4, \text{droite}) = -1 + 1 \times 10 = 9$

Image montrant les valeurs d’état calculées précédemment pour tous les états.

Reinforcement Learning avec Gymnasium en Python

Toutes les Q-valeurs

Image montrant les q-valeurs calculées pour toutes les paires état-action.

Reinforcement Learning avec Gymnasium en Python

Calcul des Q-valeurs

def compute_q_value(state, action):

if state == terminal_state: return None
_, next_state, reward, _ = env.unwrapped.P[state][action][0] return reward + gamma * compute_state_value(next_state)

Image montrant la formule pour calculer la q-valeur pour un état et une action, Q(s,a), comme la somme de la récompense immédiate après l’action et de la valeur actualisée du nouvel état pour une politique donnée.

Reinforcement Learning avec Gymnasium en Python

Calcul des Q-valeurs

Q = {(state, action): compute_q_value(state, action)
     for state in range(num_states) 
     for action in range(num_actions)}

print(Q)
Reinforcement Learning avec Gymnasium en Python

Calcul des Q-valeurs

{(0, 0): 0, (0, 1): 1, (0, 2): 7, (0, 3): 0, 
 (1, 0): 0, (1, 1): 5, (1, 2): 8, (1, 3): 7, 
 (2, 0): 7, (2, 1): 9, (2, 2): 8, (2, 3): 8, 
 (3, 0): 1, (3, 1): 2, (3, 2): 5, (3, 3): 0, 
 (4, 0): 1, (4, 1): 3, (4, 2): 9, (4, 3): 7, 
 (5, 0): 5, (5, 1): 10, (5, 2): 9, (5, 3): 8, 
 (6, 0): 2, (6, 1): 2, (6, 2): 3, (6, 3): 1, 
 (7, 0): 2, (7, 1): 3, (7, 2): 10, (7, 3): 5, 
 (8, 0): None, (8, 1): None, (8, 2): None, (8, 3): None}

Image montrant les q-valeurs calculées pour toutes les paires état-action.

Reinforcement Learning avec Gymnasium en Python

Améliorer la politique

Image montrant les q-valeurs calculées pour toutes les paires état-action.

Reinforcement Learning avec Gymnasium en Python

Améliorer la politique

  • Pour chaque état, choisir l’action avec la Q-valeur la plus élevée

Image montrant les q-valeurs calculées pour toutes les paires état-action, avec la q-valeur maximale encerclée pour chaque état.

Reinforcement Learning avec Gymnasium en Python

Améliorer la politique

Image montrant l’ancienne politique et ses Q-valeurs correspondantes Ancienne politique

Image montrant la nouvelle politique en prenant l’action menant à la q-valeur maximale.

Reinforcement Learning avec Gymnasium en Python

Améliorer la politique

improved_policy = {}


for state in range(num_states-1): max_action = max(range(num_actions), key=lambda action: Q[(state, action)])
improved_policy[state] = max_action
print(improved_policy)
{0: 2, 1: 2, 2: 1, 
 3: 2, 4: 2, 5: 1, 
 6: 2, 7: 2}
Reinforcement Learning avec Gymnasium en Python

Passons à la pratique !

Reinforcement Learning avec Gymnasium en Python

Preparing Video For Download...