Dans A2C, l'algorithme de l'acteur et du critique, les poids sont mis à jour via des équations :

Delta = erreur TD et

Theta = theta + alpha*delta*[Grad(log(PI(a|s,theta)))] et

W = w + bêta*delta*[Grad(V(s,w))]

Ma question est donc, lorsque vous utilisez des réseaux de neurones pour implémenter cela,

  1. comment sont calculés les gradients et

  2. Ai-je raison de dire que les poids sont mis à jour via les méthodes d'optimisation dans TensorFlow ou PyTorch ?

Merci, Jon

0
Jon 28 janv. 2020 à 02:51

1 réponse

Meilleure réponse

Je ne comprends pas très bien ce que vous entendez par mettre à jour avec w, mais je répondrai à la question pour theta en supposant qu'il désigne les paramètres du modèle d'acteur.

1) Les gradients peuvent être calculés de différentes manières, mais si vous vous concentrez sur PyTorch, vous pouvez appeler .backward() sur f(x)=alpha * delta * log(PI(a|s,theta), qui df/dx pour chaque paramètre x qui est enchaîné à f(x) via autograd.

2) Vous avez en effet raison de dire que les poids sont mis à jour via les méthodes d'optimisation de Pytorch (plus précisément, autograd). Cependant, pour terminer l'étape d'optimisation, vous devez appeler torch.optim.step avec n'importe quel optimiseur que vous souhaitez utiliser sur les paramètres du réseau (par exemple, les poids et les biais).

1
Jor 20 févr. 2020 à 23:44