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, l’initialisation de 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 puis é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 se répètent jusqu’à ce que la politique cesse de changer.

Reinforcement Learning avec Gymnasium en Python

Itération de politique

  • Processus itératif pour trouver la politique optimale

Image montrant le flux de l’itération de politique : initialiser, puis alterner entre évaluer et améliorer jusqu’à obtenir la 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 indiquant 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

  • Combine évaluation et amélioration en une é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

  • Combine évaluation et 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

  • Combine évaluation et 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

  • Combine évaluation et 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 via 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

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

Image montrant qu’une fois le processus itératif terminé, 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 actions et valeurs optimales

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

Calcul des 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...