Question

Je vais avoir du mal à trouver une bonne fonction de récompense pour le problème du pendule, la fonction je l'utilise: $ -x ^ 2 à 0,25 * (\ texte {} xdot ^ 2) $ qui est l'erreur quadratique à partir du haut. avec $ x $ représentant l'emplacement actuel du pendule et le texte $ \ {xdot} $ la vitesse angulaire.

Il faut beaucoup de temps avec cette fonction et parfois ne fonctionne pas. Quelqu'un a d'autres suggestions? J'ai cherché dans google mais n'a pas trouvé tout ce que je pouvais utiliser

Était-ce utile?

La solution

Vous pouvez utiliser la même fonction de récompense Openai de 'Pendule inversé utilise:

$ frais = - (\ Delta_ {2 \ pi} \ theta) ^ 2 - 0.1 (\ dot {\ theta}) ^ 2 - 0.001u ^ 2 $

où $ (\ Delta_ {2 \ pi} \ theta) $ est la différence entre la position angulaire actuelle et désirée effectuée en utilisant modulo 2 $ \ pi $. La variable $ u $ désigne le couple (l'action de votre agent RL). Le optimal est d'être aussi proche de zéro les coûts qu'il obtient.

L'idée ici est que vous avez un problème de contrôle dans lequel vous pouvez venir avec une « énergie » du second degré ou la fonction de coût qui vous indique le coût d'effectuer une action à chaque pas de temps unique. Dans cet article ( section p.33 5.2 ) vous peut trouver une description détaillée.

J'ai testé des algorithmes de RL dans cette fonction objective et je n'ai pas rencontré des problèmes de convergence dans les deux Matlab et Python. Si vous avez encore des problèmes nous faire savoir ce que l'approche genre de RL vous et comment vous mis en œuvre l'emplacement encodé du pendule.

it helps!

Autres conseils

Dans l'apprentissage de renforcement, vous devriez éviter de marquer les résultats provisoires basés sur des heuristiques. Contrairement à l'apprentissage supervisé, ou un algorithme de recherche, vous essayez de ne pas guider le comportement, juste récompense de bons résultats. Pour un pendule inversé un bon résultat pourrait tout simplement être « n'a pas diminué au cours de ce jour », bien qu'il n'y ait rien en soi mal avec une fonction de coût qui exprime le coût en termes de minimisation des différences d'un idéal, vous ne doivent prendre plus de soin avec les valeurs utilisées.

En supposant que vous utilisez l'actualisation et l'approche continue (non épisodique), alors la récompense peut être 0 pour « ne pas tomber » et -1 pour « il est tombé sur », suivi d'une nouvelle série / continuer. Vous pouvez vérifier si la chute en mesurant le pendule a atteint un certain grand angle à la verticale (par exemple 45 degrés ou plus).

Pour une approche épisodique, il est plus naturel d'avoir une « ok » et 0 pour l'état final « est tombé sur », bien que le 0 / -1 système fonctionne également. Cependant, vous voulez éviter d'avoir des valeurs négatives pour tout Etat qui est « ok », parce que c'est révélateur essentiellement l'agent de se dépêcher et mettre fin à l'épisode. Dans votre cas, la fin de l'épisode est mauvais, de sorte que vous ne voulez pas.

Si vous voulez récompenser la « perfection » dans votre approche épisodique, votre formule pourrait fonctionner mieux si vous avez ajouté un décalage positif, de sorte que l'agent a intérêt à poursuivre l'épisode si possible. Vous devez choisir une valeur telle que les états récupérables sont positifs.


Notez que l'analyse ci-dessus applique uniquement à certaines approches fondées sur l'épisode. Cela dépend essentiellement de ce que vous comptez comme un épisode, et si l'agent est en mesure de prendre une action qui se termine l'épisode.

Licencié sous: CC-BY-SA avec attribution
scroll top