Ma meilleure supposition que cela a été fait pour réduire le temps de calcul, sinon nous aurions à trouver la valeur q pour chaque action, puis sélectionner la meilleure.
Il n'a aucun impact réel sur le temps de calcul, hormis une légère augmentation (due à la mémoire supplémentaire utilisée par deux réseaux). Vous pouvez mettre en cache les résultats du réseau cible, je suppose, mais cela n'en vaudrait probablement pas la peine pour la plupart des environnements, et je n'ai pas vu d'implémentation qui le fasse.
Suis-je en train de manquer quelque chose?
Il s'agit de la stabilité de l'algorithme Q-learning lors de l'utilisation de l'approximation de fonction (ie le réseau neuronal). L'utilisation d'un réseau cible distinct, mis à jour à chaque étape avec une copie des derniers paramètres appris, aide à empêcher le biais incontrôlable de bootstrap de dominer le système numériquement, entraînant une divergence des valeurs Q estimées.
Imaginez que l'un des points de données (at S, A, R, S'
) provoque une surestimation actuellement médiocre pour l' Q(S', A')
aggravation. Peut-être S', A'
n'a -t- elle même pas encore été visitée, ou la valeur des R
vues jusqu'à présent est supérieure à la moyenne, juste par hasard. Si un échantillon de (S,A)
plusieurs fois apparaissait lors de la relecture d'expérience, cela empirerait à chaque fois, car la mise à jour de Q(S,A)
est basée sur R + max_a Q(S',a)
. La correction du réseau cible limite les dommages que de telles surestimations peuvent faire, donnant au réseau d'apprentissage le temps de converger et de perdre plus de son biais initial.
À cet égard, l'utilisation d'un réseau cible distinct a un objectif très similaire à l'expérience de la relecture. Il stabilise un algorithme qui, autrement, a des problèmes de convergence.
Il est également possible d'avoir un DQN avec "double apprentissage" pour résoudre un problème distinct: le biais de maximisation. Dans ce cas, vous pouvez voir des implémentations DQN avec 4 réseaux de neurones.