1

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.

+0

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

+0

Est-ce que vous faites l'étape de la normalisation, ou simplement ajouter aux poids? – NKN

+0

@NKN merci, votre étape de normalisation aide. Encore nouveau à ce sujet, j'aurais aimé qu'il y ait plus de documentation là-dessus. – Tjorriemorrie

Répondre

1

vous avez besoin d'une normalisation dans chaque essai. Cela permettra de garder les poids dans une fourchette délimitée. (par exemple [0,1]). De cette façon, vous ajoutez les poids à chaque fois, vous augmentez simplement les poids et cela serait inutile après le premier essai.

je ferais quelque chose comme ceci:

self.weights[i] += (self.alpha * theta * Fsa[i]) 
normalize(self.weights[i],wmin,wmax) 

ou voir l'exemple suivant (de la littérature de RL):

enter image description here

Vous devez écrire la fonction de normalisation par vous-même si;

+0

Pourriez-vous s'il vous plaît donner la source de la littérature? Je voudrais en lire plus à ce sujet. – Tjorriemorrie

+0

Je suggère ce livre: http://books.google.it/books?hl=fr&id=UGUqcl8_T9QC&oi=fnd&pg=PP1&dq=reinforcement+learning+linear+function+approximation+lucian&ots=Xk47TPU8Ww&sig=88QfOYsStxB4gT1BByZqd5h97sQ&redir_esc=y#v = onepage & q = renforcement% 20learning% 20linear% 20function% 20approximation% 20lucian & f = false – NKN

Questions connexes