Itération de politique et itération de valeur

Reinforcement Learning avec Gymnasium en Python

Fouad Trad

Machine Learning Engineer

Itération de politique

  • Processus itératif pour trouver la politique optimale

Image montrant la première étape : initialiser la politique.

Reinforcement Learning avec Gymnasium en Python

Itération de politique

  • Processus itératif pour trouver la politique optimale

Image montrant deux étapes : initialiser et évaluer une politique.

Reinforcement Learning avec Gymnasium en Python

Itération de politique

  • Processus itératif pour trouver la politique optimale

Image montrant trois étapes : initialiser, évaluer et améliorer la politique.

Reinforcement Learning avec Gymnasium en Python

Itération de politique

  • Processus itératif pour trouver la politique optimale

Image montrant que l'évaluation et l'amélioration de la politique se répètent jusqu'à ce que la politique ne change plus.

Reinforcement Learning avec Gymnasium en Python

Itération de politique

  • Processus itératif pour trouver la politique optimale

Image montrant le déroulement : initialiser une politique, alterner entre évaluer et améliorer, pour obtenir une politique optimale.

Reinforcement Learning avec Gymnasium en Python

Monde en grille

policy = {
    0:1, 1:2, 2:1, 
    3:1, 4:3, 5:1,
    6:2, 7:3
}

Image montrant la politique avec des flèches représentant le déplacement dans chaque état.

Reinforcement Learning avec Gymnasium en Python

Évaluation de politique

def policy_evaluation(policy):

V = {state: compute_state_value(state, policy) for state in range(num_states)}
return V
Reinforcement Learning avec Gymnasium en Python

Amélioration de politique

def policy_improvement(policy):

improved_policy = {s: 0 for s in range(num_states-1)}
Q = {(state, action): compute_q_value(state, action, policy) for state in range(num_states) for action in range(num_actions)}
for state in range(num_states-1): max_action = max(range(num_actions), key=lambda action: Q[(state, action)]) improved_policy[state] = max_action
return improved_policy
Reinforcement Learning avec Gymnasium en Python

Itération de politique

def policy_iteration():

policy = {0:1, 1:2, 2:1, 3:1, 4:3, 5:1, 6:2, 7:3}
while True: V = policy_evaluation(policy) improved_policy = policy_improvement(policy)
if improved_policy == policy: break policy = improved_policy
return policy, V
Reinforcement Learning avec Gymnasium en Python

Politique optimale

policy, V = policy_iteration()
print(policy, V)
{0: 2, 1: 2, 2: 1, 
 3: 1, 4: 2, 5: 1, 
 6: 2, 7: 2} 

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

optimal.png

Reinforcement Learning avec Gymnasium en Python

Itération de valeur

  • Regroupe l'évaluation et l'amélioration en une seule étape
    • Calcule la fonction de valeur d'état optimale
    • En déduit la politique

Image montrant la première étape : initialiser les valeurs d'état V à zéro.

Reinforcement Learning avec Gymnasium en Python

Itération de valeur

  • Regroupe l'évaluation et l'amélioration en une étape.
    • Calcule la fonction de valeur d'état optimale
    • En déduit la politique

Image montrant une étape supplémentaire : calculer les valeurs Q à partir de la table V.

Reinforcement Learning avec Gymnasium en Python

Itération de valeur

  • Regroupe l'évaluation et l'amélioration en une étape.
    • Calcule la fonction de valeur d'état optimale
    • En déduit la politique

Image montrant une étape supplémentaire : mettre à jour V en choisissant la meilleure action dans chaque état.

Reinforcement Learning avec Gymnasium en Python

Itération de valeur

  • Regroupe l'évaluation et l'amélioration en une étape.
    • Calcule la fonction de valeur d'état optimale
    • En déduit la politique

Image montrant que le calcul des valeurs Q à partir de V et la mise à jour de V se répètent jusqu'à stabilisation de V.

Reinforcement Learning avec Gymnasium en Python

Itération de valeur

  • Regroupe l'évaluation et l'amélioration en une étape.
    • Calcule la fonction de valeur d'état optimale
    • En déduit la politique

Image montrant qu'une fois l'itération terminée, on obtient la politique optimale et V.

Reinforcement Learning avec Gymnasium en Python

Implémenter l'itération de valeur

V = {state: 0 for state in range(num_states)}
policy = {state:0 for state in range(num_states-1)}
threshold = 0.001

while True: new_V = {state: 0 for state in range(num_states)}
for state in range(num_states-1): max_action, max_q_value = get_max_action_and_value(state, V)
new_V[state] = max_q_value policy[state] = max_action
if all(abs(new_V[state] - V[state]) < thresh for state in V): break V = new_V
Reinforcement Learning avec Gymnasium en Python

Obtenir les meilleures actions et valeurs

def get_max_action_and_value(state, V):
    Q_values = [compute_q_value(state, action, V) for action in range(num_actions)]

max_action = max(range(num_actions), key=lambda a: Q_values[a])
max_q_value = Q_values[max_action]
return max_action, max_q_value
Reinforcement Learning avec Gymnasium en Python

Calculer les valeurs Q

def compute_q_value(state, action, V):
    if state == terminal_state:
        return None
    _, next_state, reward, _ = env.P[state][action][0]
    return reward + gamma * V[next_state]
Reinforcement Learning avec Gymnasium en Python

Politique optimale

print(policy, V)
{0: 2, 1: 2, 2: 1, 
 3: 1, 4: 2, 5: 1, 
 6: 2, 7: 2} 

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

Image montrant les valeurs d'état de la politique optimale.

Reinforcement Learning avec Gymnasium en Python

Passons à la pratique !

Reinforcement Learning avec Gymnasium en Python

Preparing Video For Download...