In Q-Learning verwenden Sie bei jedem Schritt Beobachtungen und Belohnungen, um Ihre Q-Wert-Funktion zu aktualisieren:
Q.t + 1( st, eint) = Q.t(st, eint) + α [ R.t + 1+ γmaxein'Q.t( st + 1, ein') - Q.t(st, eint) ]
Sie sagen zu Recht, dass das neuronale Netzwerk nur eine Funktionsnäherung für die q-Wert-Funktion ist.
Im Allgemeinen ist der Approximationsteil nur ein standardmäßiges überwachtes Lernproblem. Ihr Netzwerk verwendet (s, a) als Eingabe und die Ausgabe ist der q-Wert. Wenn die q-Werte angepasst werden, müssen Sie diese neuen Beispiele im Netzwerk trainieren. Dennoch werden Sie einige Probleme finden, wenn Sie korrelierte Stichproben verwenden und SGD darunter leiden wird.
Wenn Sie sich das DQN-Papier ansehen, sehen die Dinge etwas anders aus. In diesem Fall setzen sie Samples in einen Vektor (Erfahrungswiedergabe). Um das Netzwerk zu unterrichten, werden Tupel aus dem Vektor abgetastet und anhand dieser Informationen gebootet, um einen neuen q-Wert zu erhalten, der dem Netzwerk beigebracht wird. Wenn ich Lehren sage, meine ich das Anpassen der Netzwerkparameter mithilfe des stochastischen Gradientenabfalls oder Ihres bevorzugten Optimierungsansatzes. Indem Sie die Proben nicht in der Reihenfolge unterrichten, in der sie von der Richtlinie erfasst werden, dekorrelieren Sie sie und dies hilft beim Training.
Um eine Entscheidung über den Zustand zu treffen , wählen Sie schließlich die Aktion aus, die den höchsten q-Wert liefert:s
ein∗( s ) = a r gm a xein Q ( s , a )
Wenn Ihre Q-Wert-Funktion vollständig gelernt wurde und die Umgebung stationär ist, ist es in Ordnung, an dieser Stelle gierig zu sein. Während des Lernens wird jedoch erwartet, dass Sie erkunden. Es gibt verschiedene Ansätze, die grau sind, eine der einfachsten und gebräuchlichsten Methoden.ε