Mes SARSA avec gradient de descente continuent d'augmenter les poids de façon exponentielle. A l'étape 17 Episode 4 la valeur est déjà nanComment mettre à jour les poids dans l'approximation de la fonction avec l'apprentissage par renforcement?
Exception: Qa is nan
par exemple:
6) Qa:
Qa = -2.00890180632e+303
7) NEXT Qa:
Next Qa with west = -2.28577776413e+303
8) THETA:
1.78032402991e+303 <= -0.1 + (0.1 * -2.28577776413e+303) - -2.00890180632e+303
9) WEIGHTS (sample)
5.18266630725e+302 <= -1.58305782482e+301 + (0.3 * 1.78032402991e+303 * 1)
Je ne sais pas où chercher l'erreur que je fait. Voici quelques FWIW de code:
def getTheta(self, reward, Qa, QaNext):
""" let t = r + yQw(s',a') - Qw(s,a) """
theta = reward + (self.gamma * QaNext) - Qa
def updateWeights(self, Fsa, theta):
""" wi <- wi + alpha * theta * Fi(s,a) """
for i, w in enumerate(self.weights):
self.weights[i] += (self.alpha * theta * Fsa[i])
J'ai environ 183 fonctions binaires.
Une réponse est difficilement possible étant donné les informations fournies. Je voudrais essayer de réduire alpha/thêta, et regarder en détail sur les quantités concernées. – davidhigh
Est-ce que vous faites l'étape de la normalisation, ou simplement ajouter aux poids? – NKN
@NKN merci, votre étape de normalisation aide. Encore nouveau à ce sujet, j'aurais aimé qu'il y ait plus de documentation là-dessus. – Tjorriemorrie