W jaki sposób utrata DQN pochodzi z równania Bellmana (lub jest przez nie motywowana teoretycznie) i jaki ma związek z aktualizacją Q-learningu?

Dec 10 2020

Robię projekt dotyczący uczenia się ze wzmocnieniem. Zaprogramowałem agenta używającego DDQN. Istnieje wiele samouczków na ten temat, więc implementacja kodu nie była taka trudna.

Jednak mam problemy ze zrozumieniem, jak należy wymyślić tego rodzaju algorytmy, wychodząc od równania Bellmana i nie znajduję dobrego, zrozumiałego wyjaśnienia dotyczącego tego wyprowadzenia / ścieżki rozumowania.

Więc moje pytania to:

  1. W jaki sposób strata w trenowaniu DQN wynika z (lub teoretycznie motywowana) równaniem Bellmana?
  2. Jaki jest związek ze zwykłą aktualizacją Q-learningu?

Zgodnie z moimi obecnymi notatkami równanie Bellmana wygląda następująco

$$Q_{\pi} (s,a) = \sum_{s'} P_{ss'}^a (r_{s,a} + \gamma \sum_{a'} \pi(a'|s') Q_{\pi} (s',a')) \label{1}\tag{1} $$

co, w moim rozumieniu, jest wyrażeniem rekurencyjnym, które mówi: Para stan-działanie daje nagrodę równą sumie wszystkich możliwych stanów $s'$ z prawdopodobieństwem dojścia do tego stanu po podjęciu działań $a$ (oznaczony jako $P_{ss'}^a$, co oznacza, że ​​środowisko działa na agenta) razy nagroda, jaką agent otrzymał za podjęcie działania $a$ uroczyście $s$ + zdyskontowana suma prawdopodobieństwa różnych możliwych działań $a'$ razy nagroda stanu, para akcji $s',a'$.

Iteracja Q-Learning (etap pośredni) jest często określana jako:

$$Q^{new}(s,a) \leftarrow Q(s,a) + \alpha (r + \gamma \max_a Q(s',a') - Q(s,a)) \label{2}\tag{2}$$

co oznacza, że ​​nowy stan, nagroda za działanie to stara wartość Q + współczynnik uczenia się, $\alpha$razy różnica czasowa, $(r + \gamma \max_a Q(s',a') - Q(s,a))$, która składa się z rzeczywistej nagrody, jaką agent otrzymał + współczynnik dyskontowy pomnożony przez funkcję Q tej nowej pary stan-działanie minus stara funkcja Q.

Równanie Bellmana można przekształcić w regułę aktualizacji, ponieważ algorytm, który używa tej reguły aktualizacji, jest zbieżny, zgodnie z tą odpowiedzią .

W przypadku (D) DQN, $Q(s,a)$ jest szacowany przez nasz NN, który prowadzi do działania $a$ i otrzymujemy $r$ i $s'$.

Potem się karmimy $s$ jak również $s'$do naszego NN (z Double DQN wprowadzamy je do różnych NN). Plik$\max_a Q(s',a')$jest wykonywana na wyjściu naszej docelowej sieci. Ta wartość q jest następnie mnożona przez$\gamma$ i $r$jest dodawany do produktu. Następnie ta suma zastępuje wartość q z innego NN. Ponieważ ten podstawowy NN został wyprowadzony$Q(s,a)$ ale powinien był wypisać $r + \gamma \max_a Q(s',a')$ trenujemy podstawową NN, aby zmieniała wagi, tak aby była bliższa tej czasowej różnicy docelowej.

Odpowiedzi

2 DavidIreland Dec 10 2020 at 07:28

Zwykle definiuje się równanie Bellmana w RL $$v_\pi(s) = \sum_a \pi(a|s) \sum_{s', r} p(s', r|s, a)\left[r + v_\pi(s')\right] = \mathbb{E}_{s' \sim p, a \sim \pi}\left[r(s, a) + v_\pi(s')\right] \; .$$Sposób, w jaki to napisałeś, jest poprawny, ale pomyślałem, że zwrócę na to uwagę. Niezależnie od tego, twoja intuicja jest poprawna, ponieważ wyraża rekurencyjną relację, która jest wartością twojego obecnego stanu$s$ jest równa sumie oczekiwanej nagrody z tego stanu oraz oczekiwanej wartości stanu, do którego się przechodzisz.

W rzeczywistości wdrażasz aktualizację Q-learning w Deep Q-Learning. Funkcja strat, którą minimalizujesz w DQN, to$$ L(\theta) = \mathbb{E}_{(s,a,r,s')\sim U(D)}\left[\left( r + \gamma \max_{a'}Q(s', a'; \theta^-) - Q(s, a; \theta)\right)^2 \right]\;$$ gdzie $U(D)$ oznacza jednolicie losowo z bufora powtórek $D$ i $\theta$ są parametrami sieci (sieć parametryzuje funkcję Q) i $\theta^-$ są poprzednią iteracją parametrów, które są aktualizowane co $c$ odcinki pomagające w konwergencji sieci.

Jak widać, funkcja straty minimalizuje błąd „błędu Bellmana” z równania 2. Zastanówmy się, dlaczego tak jest.

Podana aktualizacja TD stopniowo przesuwa wartość Q dla $(s, a)$ w kierunku $r + \max_a Q(s', a)$ - w końcu tego chcemy, ponieważ ostatecznie zbiega się do optymalnej funkcji Q.

Teraz pomyślmy o przypadku Deep Q-learning. Chcemy, aby nasza sieć była zbliżona$Q(s, a)$ a więc jeśli trenujemy sieć, korzystając ze straty MSE, z $r + \max_a Q(s', a)$ jako nasz cel, wówczas nasza sieć będzie stopniowo przesuwać się w kierunku przewidywania $r + \max_aQ(s', a)$ (co ponownie dałoby nam optymalne wartości Q dla par stan-akcja), podobnie jak w przypadku aktualizacji TD.

Zakłada się, że wiesz, jak działa szkolenie sieci neuronowych, więc jeśli nie, polecam zadać / wyszukać odpowiednie pytanie, które to wyjaśnia.