Ich gehe davon aus, dass dies getan wurde, um die Rechenzeit zu verkürzen. Andernfalls müssten wir den q-Wert für jede Aktion ermitteln und dann den besten auswählen.
Abgesehen von einer geringfügigen Erhöhung (aufgrund des zusätzlichen Speichers, der von zwei Netzwerken verwendet wird) hat dies keinen wirklichen Einfluss auf die Rechenzeit. Sie könnten die Ergebnisse des Zielnetzwerks zwischenspeichern, aber es würde sich für die meisten Umgebungen wahrscheinlich nicht lohnen, und ich habe keine Implementierung gesehen, die dies tut.
Vermisse ich etwas
Dies hat mit der Stabilität des Q-Learning-Algorithmus bei Verwendung der Funktionsnäherung (dh des neuronalen Netzwerks) zu tun. Die Verwendung eines separaten Zielnetzwerks, das alle paar Schritte mit einer Kopie der zuletzt erlernten Parameter aktualisiert wird, trägt dazu bei, dass das Bootstrapping das System nicht numerisch dominiert und die geschätzten Q-Werte divergieren.
Stellen Sie sich vor, einer der Datenpunkte (at S, A, R, S'
) führt zu einer derzeit schlechten Überschätzung Q(S', A')
, um sich zu verschlechtern. Vielleicht S', A'
wurde es noch nicht einmal besucht, oder der Wert von R
bisher gesehen ist zufällig zufällig überdurchschnittlich hoch. Wenn ein Beispiel von (S,A)
mehrmals in der Erfahrungswiederholung aufgetaucht ist, wird es jedes Mal wieder schlechter, da das Update auf Q(S,A)
basiert auf R + max_a Q(S',a)
. Durch das Festlegen des Zielnetzwerks wird der Schaden begrenzt, den solche Überschätzungen verursachen können, sodass das lernende Netzwerk Zeit hat, sich zu konvergieren und mehr von seiner anfänglichen Verzerrung zu verlieren.
In dieser Hinsicht hat die Verwendung eines separaten Zielnetzwerks einen sehr ähnlichen Zweck, die Wiedergabe zu erleben. Es stabilisiert einen Algorithmus, der ansonsten Probleme bei der Konvergenz hat.
Es ist auch möglich, DQN mit "doppeltem Lernen" zu haben, um ein separates Problem anzugehen: Maximierungsbias. In diesem Fall sehen Sie möglicherweise DQN-Implementierungen mit 4 neuronalen Netzen.