Wie wird der DQN-Verlust aus der Bellman-Gleichung abgeleitet (oder theoretisch motiviert) und wie hängt er mit dem Q-Learning-Update zusammen?

Dec 10 2020

Ich mache ein Projekt zum Reinforcement Learning. Ich habe einen Agenten programmiert, der DDQN verwendet. Es gibt viele Tutorials dazu, daher war die Code-Implementierung nicht so schwierig.

Ich habe jedoch Probleme zu verstehen, wie man diese Art von Algorithmen entwickeln sollte, wenn man von der Bellman-Gleichung ausgeht, und ich finde keine gut verständliche Erklärung für diese Ableitung / diesen Denkweg.

Meine Fragen sind also:

  1. Wie wird der Verlust zum Trainieren des DQN aus der Bellman-Gleichung abgeleitet (oder theoretisch motiviert)?
  2. Wie hängt es mit dem üblichen Q-Learning-Update zusammen?

Nach meinen aktuellen Notizen sieht die Bellman-Gleichung so aus

$$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} $$

Dies ist nach meinem Verständnis ein rekursiver Ausdruck, der besagt: Das State-Action-Paar gibt eine Belohnung, die der Summe aller möglichen Zustände entspricht $s'$ mit der Wahrscheinlichkeit, nach dem Ergreifen von Maßnahmen in diesen Zustand zu gelangen $a$ (bezeichnet als $P_{ss'}^a$Dies bedeutet, dass die Umgebung auf den Agenten einwirkt.) mal die Belohnung, die der Agent durch das Ergreifen von Maßnahmen erhalten hat $a$ im Zustand $s$ + abgezinste Summe der Wahrscheinlichkeit der verschiedenen möglichen Aktionen $a'$ mal die Belohnung des Staates, Aktionspaar $s',a'$.

Die Q-Learning-Iteration (Zwischenschritt) wird häufig bezeichnet als:

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

was bedeutet, dass der neue Zustand, Aktionsbelohnung, der alte Q-Wert + Lernrate ist, $\alpha$mal den zeitlichen Unterschied, $(r + \gamma \max_a Q(s',a') - Q(s,a))$Dies besteht aus der tatsächlichen Belohnung, die der Agent erhalten hat, + einem Rabattfaktor multipliziert mit der Q-Funktion dieses neuen Zustands-Aktions-Paares abzüglich der alten Q-Funktion.

Die Bellman-Gleichung kann in eine Aktualisierungsregel konvertiert werden, da ein Algorithmus, der diese Aktualisierungsregel verwendet, konvergiert, wie in dieser Antwort angegeben .

Im Fall von (D) DQN, $Q(s,a)$ wird von unserer NN geschätzt, die zu einer Aktion führt $a$ und wir erhalten $r$ und $s'$.

Dann füttern wir $s$ ebenso gut wie $s'$in unser NN (mit Double DQN geben wir sie in verschiedene NNs ein). Das$\max_a Q(s',a')$wird am Ausgang unseres Zielnetzwerks durchgeführt. Dieser q-Wert wird dann mit multipliziert$\gamma$ und $r$wird dem Produkt hinzugefügt. Dann ersetzt diese Summe den q-Wert vom anderen NN. Da wird dieser Basis-NN ausgegeben$Q(s,a)$ sollte aber ausgegeben haben $r + \gamma \max_a Q(s',a')$ Wir trainieren das Basis-NN, um die Gewichte so zu ändern, dass es näher an dieser zeitlichen Zieldifferenz ausgegeben wird.

Antworten

2 DavidIreland Dec 10 2020 at 07:28

Die Bellman-Gleichung in RL wird normalerweise definiert $$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] \; .$$Die Art, wie Sie es geschrieben haben, ist richtig, aber ich dachte nur, ich würde darauf hinweisen. Unabhängig davon ist Ihre Intuition insofern richtig, als sie eine rekursive Beziehung ausdrückt, so dass der Wert Ihres aktuellen Zustands$s$ ist gleich der Summe der erwarteten Belohnung aus diesem Zustand plus dem erwarteten Wert des Zustands, in den Sie übergehen.

Sie implementieren das Q-Learning-Update tatsächlich in Deep Q-Learning. Die Verlustfunktion, die Sie in DQN minimieren, ist$$ 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]\;$$ wo $U(D)$ bezeichnet gleichmäßig zufällig aus dem Wiedergabepuffer $D$ und $\theta$ sind Ihre Netzwerkparameter (das Netzwerk parametrisiert die Q-Funktion) und $\theta^-$ sind eine vorherige Iteration der Parameter, die alle aktualisiert werden $c$ Episoden zur Unterstützung der Konvergenz des Netzwerks.

Wie Sie sehen können, minimiert die Verlustfunktion den Fehler "Bellman-Fehler" aus Ihrer Gleichung 2. Lassen Sie uns darüber nachdenken, warum dies so ist.

Das von Ihnen bereitgestellte TD-Update verschiebt schrittweise den Q-Wert für $(s, a)$ gegenüber $r + \max_a Q(s', a)$ - das ist es doch, was wir wollen, da es schließlich zur optimalen Q-Funktion konvergiert.

Lassen Sie uns nun über den Fall Deep Q-Learning nachdenken. Wir möchten, dass sich unser Netzwerk annähert$Q(s, a)$ und wenn wir das Netzwerk mit dem MSE-Verlust trainieren, mit $r + \max_a Q(s', a)$ Als unser Ziel wird sich unser Netzwerk allmählich in Richtung Vorhersage verlagern $r + \max_aQ(s', a)$ (was uns wiederum optimale Q-Werte für State-Action-Paare geben würde), genau wie beim TD-Update.

Dies setzt voraus, dass Sie wissen, wie das Training neuronaler Netze funktioniert. Wenn Sie dies nicht tun, würde ich empfehlen, eine relevante Frage zu stellen / zu suchen, die dies erklärt.