Introduction au Deep Q Learning

Deep Reinforcement Learning en Python

Timothée Carayol

Principal Machine Learning Engineer, Komment

Qu'est-ce que le Deep Q Learning ?

 

 

Une image représentant Q(state, action), avec l'état représenté par la Terre et l'action par un manche à balai de jeu

Deep Reinforcement Learning en Python

Rappel : Q-Learning

 

Fonction valeur d'action Q_pi(s,a) : somme des récompenses futures si l'action a est prise dans l'état s, en supposant que la politique pi est suivie ensuite. Q_pi(s,a) = valeur espérée sur les trajectoires futures, étant donné que la politique pi est suivie, de R_tau sachant s_t=s et a_t=a

 

 

  • Connaître $Q$ permet une politique optimale : $$ \pi(s_t) = {\arg\max}_a Q(s_t, a) $$

  • Objectif du Q-learning : apprendre $Q$ au fil du temps

Deep Reinforcement Learning en Python

Rappel : Q-Learning

Équation de Bellman (en Q-learning) dans un environnement déterministe : Q_pi(s_t, a_t) = récompense r_t+1 + taux d'actualisation gamma * max sur a_t+1 de Q_pi(s_t+1, a_t+1))

Cible à différence temporelle, alias TD-target, Q-target ou valeur cible de Q : correspond au côté droit de l'équation de Bellman, utilisée comme valeur cible pour la mise à jour du Q-learning. r_t+1 + gamma * max sur a_t+1 de Q_pi(s_t+1, a_t+1))

  • Équation de Bellman : formule récursive pour $Q$
  • Côté droit de l'équation de Bellman : « TD-target »
  • Utiliser le TD-target de Bellman pour mettre à jour $\hat{Q}$ à chaque étape

Règle de mise à jour du Q-learning : Q_new = (1-alpha) Q_old + alpha * TD-target

Deep Reinforcement Learning en Python

Le Q-Network

Un tableau Q avec 4 états et 4 actions, donc 16 cases à remplir

Deep Reinforcement Learning en Python

Le Q-Network

Un tableau Q avec 9 états et 4 actions, donc 36 cases à remplir

Deep Reinforcement Learning en Python

Le Q-Network

Un tableau Q avec des dizaines d'états et 4 actions, soit environ 100 cases à remplir

Deep Reinforcement Learning en Python

Le Q-Network

  • Au cœur du Deep Q Learning : un réseau de neurones

Illustration d'un réseau de neurones entièrement connecté avec deux couches cachées

Deep Reinforcement Learning en Python

Le Q-Network

  • Au cœur du Deep Q Learning : un réseau de neurones

Illustration d'un réseau de neurones entièrement connecté avec deux couches cachées, où l'image de la Terre de la diapositive précédente alimente la couche d'entrée

Deep Reinforcement Learning en Python

Le Q-Network

  • Au cœur du Deep Q Learning : un réseau de neurones qui associe l'état aux valeurs Q

L'illustration de la diapositive précédente, avec chaque nœud de la couche de sortie associé à une action représentée par une direction du manche. Haut = action 0, droite = 1, bas = 2, gauche = 3.

  • Un réseau qui approxime la fonction valeur d'action s'appelle un « Q-network »
  • Les Q-networks sont courants en Deep Q Learning, p. ex. dans DQN.
Deep Reinforcement Learning en Python

Implémenter le Q-network

class QNetwork(nn.Module):

def __init__(self, state_size, action_size): super(QNetwork, self).__init__()
self.fc1 = nn.Linear(state_size, 64) self.fc2 = nn.Linear(64, 64) self.fc3 = nn.Linear(64, action_size)
def forward(self, state): x = torch.relu(self.fc1(torch.tensor(state))) x = torch.relu(self.fc2(x)) return self.fc3(x)
q_network = QNetwork(8, 4)
optimizer = optim.Adam(q_network.parameters(), lr=0.0001)
  • Dimension d'entrée déterminée par l'état
  • Dimension de sortie déterminée par le nombre d'actions possibles

  • Dans cet exemple :

    • 2 couches cachées de 64 nœuds chacune
    • Fonction d'activation ReLU
Deep Reinforcement Learning en Python

Passons à la pratique !

Deep Reinforcement Learning en Python

Preparing Video For Download...