La mia ipotesi migliore è che sia stato fatto per ridurre il tempo di calcolo, altrimenti dovremmo scoprire il valore q per ogni azione e quindi selezionare quello migliore.
Non ha alcun impatto reale sul tempo di calcolo, se non un leggero aumento (dovuto alla memoria aggiuntiva utilizzata da due reti). Si potrebbe in cache i risultati della rete di destinazione suppongo, ma probabilmente non sarebbe valsa la pena per la maggior parte degli ambienti, e non ho visto un'implementazione che lo fa.
Mi sto perdendo qualcosa?
Ha a che fare con la stabilità dell'algoritmo Q-learning quando si usa l'approssimazione di funzioni (cioè la rete neurale). L'utilizzo di una rete di destinazione separata, aggiornata ogni tanti passaggi con una copia degli ultimi parametri appresi, aiuta a evitare che la tendenza alla fuga dal bootstrap dal dominio del sistema numericamente, facendo divergere i valori Q stimati.
Immagina che uno dei punti dati (at S, A, R, S'
) causi una sopravvalutazione attualmente scarsa per Q(S', A')
peggiorare. Forse S', A'
non è stato ancora visitato, o il valore di R
visto finora è superiore alla media, solo per caso. Se un campione di (S,A)
più volte viene riprodotto durante la riproduzione dell'esperienza, peggiorerebbe nuovamente ogni volta, poiché l'aggiornamento a Q(S,A)
si basa R + max_a Q(S',a)
. Riparare la rete di destinazione limita il danno che tali sovrastime possono fare, dando alla rete di apprendimento il tempo di convergere e perdere più del suo pregiudizio iniziale.
A questo proposito, l'utilizzo di una rete di destinazione separata ha uno scopo molto simile all'esperienza di riproduzione. Stabilizza un algoritmo che altrimenti ha problemi di convergenza.
È anche possibile avere DQN con "doppio apprendimento" per affrontare un problema separato: distorsione da massimizzazione. In tal caso potresti vedere implementazioni DQN con 4 reti neurali.