CommencezCommencez gratuitement

Mettre en œuvre la règle de mise à jour de Q-learning

Le Q-learning est un algorithme hors politique (off-policy) en reinforcement learning (RL) qui cherche la meilleure action à entreprendre étant donné l'état courant. Contrairement à SARSA, qui tient compte de la véritable prochaine action effectuée, le Q-learning met à jour ses valeurs Q en utilisant la récompense future maximale, peu importe l'action réellement prise. Cette différence permet au Q-learning d'apprendre la stratégie optimale tout en suivant une stratégie exploratoire, voire aléatoire. Votre tâche est d'implanter une fonction qui met à jour une table Q selon la règle du Q-learning. La règle de mise à jour du Q-learning est illustrée ci-dessous, et vous devez implanter une fonction qui met à jour une table Q en s'y conformant.

La bibliothèque NumPy a été importée sous le nom np.

Image montrant la formule mathématique de la règle de mise à jour du Q-learning.

Cette activité fait partie du cours

Reinforcement Learning avec Gymnasium en Python

Voir le cours

Instructions de l’exercice

  • Récupérez la valeur Q actuelle pour le couple état–action donné.
  • Déterminez la valeur Q maximale pour l'état suivant parmi toutes les actions possibles dans actions.
  • Mettez à jour la valeur Q pour le couple état–action courant à l'aide de la formule du Q-learning.
  • Mettez à jour la table Q Q, en supposant qu'un agent effectue l'action 0 dans l'état 0, reçoit une récompense de 5 et passe à l'état 1.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

actions = ['action1', 'action2'] 
def update_q_table(state, action, reward, next_state):
  	# Get the old value of the current state-action pair
    old_value = ____
    # Determine the maximum Q-value for the next state
    next_max = ____
    # Compute the new value of the current state-action pair
    Q[state, action] = ____

alpha = 0.1
gamma = 0.95
Q = np.array([[10, 8], [20, 15]], dtype='float32')
# Update the Q-table
____
print(Q)
Modifier et exécuter le code