Úvod do hlubokého Q učení

Deep Reinforcement Learning v Pythonu

Timothée Carayol

Principal Machine Learning Engineer, Komment

Co je hluboké Q učení?

 

 

Obrázek znázorňující Q(stav, akce); stav je reprezentován Zemí a akce joystickem

Deep Reinforcement Learning v Pythonu

Opakování Q učení

 

Funkce hodnoty akce Q_pi(s,a): součet budoucích odměn, pokud je v stavu s provedena akce a za předpokladu, že je následně dodržována politika pi. Q_pi(s,a) = očekávaná hodnota budoucích trajektorií při politice pi, za podmínky s_t=s a a_t=a

 

 

  • Znalost $Q$ umožňuje optimální politiku: $$ \pi(s_t) = {\arg\max}_a Q(s_t, a) $$

  • Cíl Q učení: postupně naučit $Q$

Deep Reinforcement Learning v Pythonu

Opakování Q učení

Bellmanova rovnice (v Q učení) v deterministickém prostředí: Q_pi(s_t, a_t) = odměna r_t+1 + diskontní faktor gamma * maximum přes a_t+1 hodnoty Q_pi(s_t+1, a_t+1)

Cíl temporálních rozdílů, tzv. TD-cíl, Q-cíl nebo cílová Q-hodnota: pravá strana Bellmanovy rovnice, používaná jako cílová hodnota pravidla aktualizace Q učení. r_t+1 + gamma * maximum přes a_t+1 hodnoty Q_pi(s_t+1, a_t+1)

  • Bellmanova rovnice: rekurzivní vzorec pro $Q$
  • Pravá strana Bellmanovy rovnice: „TD-cíl"
  • Použití TD-cíle z Bellmanovy rovnice k aktualizaci $\hat{Q}$ po každém kroku

Pravidlo aktualizace Q učení: Q_new = (1-alpha) Q_old + alpha * TD-cíl

Deep Reinforcement Learning v Pythonu

Q-síť

Q-tabulka se 4 stavy a 4 akcemi, tedy 16 buňkami

Deep Reinforcement Learning v Pythonu

Q-síť

Q-tabulka s 9 stavy a 4 akcemi, tedy 36 buňkami

Deep Reinforcement Learning v Pythonu

Q-síť

Q-tabulka s desítkami stavů a 4 akcemi, přibližně ~100 buňkami

Deep Reinforcement Learning v Pythonu

Q-síť

  • Základem hlubokého Q učení je neuronová síť

Ilustrace plně propojené neuronové sítě se dvěma skrytými vrstvami

Deep Reinforcement Learning v Pythonu

Q-síť

  • Základem hlubokého Q učení je neuronová síť

Ilustrace plně propojené neuronové sítě se dvěma skrytými vrstvami; obrázek Země z předchozího snímku vstupuje do vstupní vrstvy

Deep Reinforcement Learning v Pythonu

Q-síť

  • Základem hlubokého Q učení je neuronová síť mapující stav na Q-hodnoty

Ilustrace z předchozího snímku; každý uzel výstupní vrstvy odpovídá akci znázorněné směrem joysticku. Nahoru = akce 0, vpravo = 1, dolů = 2, vlevo = 3.

  • Síť aproximující funkci hodnot akcí se nazývá „Q-síť"
  • Q-sítě se běžně používají v algoritmech hlubokého Q učení, např. DQN.
Deep Reinforcement Learning v Pythonu

Implementace Q-sítě

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)
  • Vstupní dimenze je určena stavem
  • Výstupní dimenze je určena počtem možných akcí

  • V tomto příkladu:

    • 2 skryté vrstvy s 64 uzly každá
    • Aktivační funkce ReLU
Deep Reinforcement Learning v Pythonu

Pojďme si procvičit!

Deep Reinforcement Learning v Pythonu

Preparing Video For Download...