J'essaie d'utiliser un réseau neuronal afin d'approximer la valeur Q dans l'apprentissage Q comme dans les questions sur l'apprentissage Q à l'aide des réseaux de neurones . Comme suggéré dans la première réponse, j'utilise une fonction d'activation linéaire pour la couche de sortie, tandis que j'utilise toujours la fonction d'activation sigmoïde dans les couches cachées (2, bien que je puisse changer cela plus tard). J'utilise également un NN unique qui renvoie une sortie pour chaque action comme conseillé.
Cependant, l'algorithme est toujours divergent pour le simple problème d'équilibrage chariot-pôle. Donc, je crains que ma mise à jour Q soit incorrecte. Après l'initialisation, ce que j'ai fait à chaque étape est le suivant:
- Calculez utilisant la propagation directe du NN pour toutes les actions.
- Sélectionnez une nouvelle action, , atterrissez dans un nouvel état .
- Calculez utilisant la propagation directe du NN pour toutes les actions.
- Définissez le vecteur d'erreur sur
- Rétropropage de l'erreur via le NN afin de mettre à jour les matrices de poids.
Quelqu'un pourrait-il me signaler où je me suis trompé?
En outre, pensez-vous que je devrais également inclure un terme de biais dans la couche d'entrée et la première couche cachée (c'est-à-dire pour les fonctions sigmoïdes)? Cela fera-t-il une difference?
Merci d'avance pour votre aide. Je peux aider à clarifier la question ou partager le code si nécessaire.
la source