Introducere în Deep Q Learning

Deep Reinforcement Learning în Python

Timothée Carayol

Principal Machine Learning Engineer, Komment

Ce este Deep Q Learning?

 

 

O imagine reprezentând Q(stare, acțiune), cu starea reprezentată ca Pământul și acțiunea ca un joystick

Deep Reinforcement Learning în Python

Recapitulare Q-Learning

 

Funcția valoare-acțiune Q_pi(s,a): suma recompenselor viitoare dacă acțiunea a este luată în starea s, presupunând că politica pi este urmată ulterior. Q_pi(s,a) = valoarea așteptată a traiectoriilor viitoare, dată politica pi, de la s_t=s și a_t=a

 

 

  • Cunoașterea $Q$ permite politica optimă: $$ \pi(s_t) = {\arg\max}_a Q(s_t, a) $$

  • Scopul Q-learning: învățarea $Q$ în timp

Deep Reinforcement Learning în Python

Recapitulare Q-Learning

Ecuația Bellman (în Q-learning) într-un mediu determinist: Q_pi(s_t, a_t) = recompensa r_t+1 + rata de actualizare gamma * maximul față de a_t+1 al Q_pi(s_t+1, a_t+1))

Ținta de diferență temporală, aka TD-target, Q-target sau valoarea Q țintă: partea dreaptă a ecuației Bellman, utilizată ca valoare țintă în regula de actualizare Q-learning. r_t+1 + gamma * maximul față de a_t+1 al Q_pi(s_t+1, a_t+1))

  • Ecuația Bellman: formulă recursivă pentru $Q$
  • Partea dreaptă a ecuației Bellman: „TD-target"
  • Utilizarea TD-target din ecuația Bellman pentru a actualiza $\hat{Q}$ după fiecare pas

Regula de actualizare Q-learning: Q_nou = (1-alpha) Q_vechi + alpha * TD-target

Deep Reinforcement Learning în Python

Rețeaua Q

Un tabel Q cu 4 stări și 4 acțiuni, deci 16 celule de completat

Deep Reinforcement Learning în Python

Rețeaua Q

Un tabel Q cu 9 stări și 4 acțiuni, deci 36 de celule de completat

Deep Reinforcement Learning în Python

Rețeaua Q

Un tabel Q cu zeci de stări și 4 acțiuni, aproximativ ~100 de celule de completat

Deep Reinforcement Learning în Python

Rețeaua Q

  • La baza Deep Q Learning: o rețea neuronală

Ilustrație a unei rețele neuronale complet conectate cu două straturi ascunse

Deep Reinforcement Learning în Python

Rețeaua Q

  • La baza Deep Q Learning: o rețea neuronală

Ilustrația din diapozitivul anterior, cu imaginea Pământului alimentând stratul de intrare

Deep Reinforcement Learning în Python

Rețeaua Q

  • La baza Deep Q Learning: o rețea neuronală care mapează stările la valori Q

Ilustrația anterioară, cu fiecare nod din stratul de ieșire asociat unei acțiuni ca direcție pe joystick. Sus = acțiunea 0, 1 = dreapta, jos = 2, stânga = 3.

  • O rețea care aproximează funcția valoare-acțiune se numește „rețea Q"
  • Rețelele Q sunt utilizate frecvent în algoritmii Deep Q Learning, precum DQN.
Deep Reinforcement Learning în Python

Implementarea rețelei Q

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)
  • Dimensiunea de intrare determinată de stare
  • Dimensiunea de ieșire determinată de numărul de acțiuni posibile

  • În acest exemplu:

    • 2 straturi ascunse cu câte 64 de noduri
    • Funcție de activare ReLU
Deep Reinforcement Learning în Python

Să exersăm!

Deep Reinforcement Learning în Python

Preparing Video For Download...