Former un neural network avec l’apprentissage par renforcement

Je connais les bases des réseaux neuronaux d’anticipation et comment les former à l’aide de l’algorithme de rétro-propagation, mais je recherche un algorithme que je peux utiliser pour former un ANN en ligne avec l’apprentissage par renforcement.

Par exemple, je voudrais résoudre le problème de pivotement du pôle panier avec un ANN. Dans ce cas, je ne sais pas ce qui devrait être fait pour contrôler le pendule, je sais seulement à quel point je suis proche de la position idéale. Je dois apprendre l’ANN basé sur la récompense et la punition. Ainsi, l’apprentissage supervisé n’est pas une option.

Une autre situation est quelque chose comme le jeu du serpent , où les commentaires sont retardés et limités aux objectives et aux anti-objectives, plutôt que de récompenser.

Je peux penser à certains algorithmes pour la première situation, comme l’algorithme d’alpinisme ou d’algorithmes génétiques, mais je suppose qu’ils seraient tous les deux lents. Ils pourraient également être applicables dans le second scénario, mais incroyablement lents et peu propices à l’apprentissage en ligne.

Ma question est simple: existe-t-il un algorithme simple pour former un réseau neuronal artificiel avec apprentissage par renforcement? Je m’intéresse principalement aux situations de récompense en temps réel, mais si un algorithme pour les situations basées sur des objectives est disponible, encore mieux.

    Il existe des documents de recherche sur le sujet:

    • Apprentissage par renforcement efficace grâce à la topologie évolutive des réseaux neuronaux (2002)
    • Apprentissage par renforcement à l’aide de réseaux de neurones, avec des applications à la commande moteur
    • Réseau neuronal d’apprentissage par renforcement au problème de l’évitement d’obstacle robotique autonome

    Et du code:

    • Exemples de code pour l’apprentissage du renforcement du réseau neuronal.

    Ce ne sont que quelques-uns des meilleurs résultats de recherche Google sur le sujet. Les deux premiers articles semblent plutôt bons, même si je ne les ai pas lus personnellement. Je pense que vous trouverez encore plus d’informations sur les réseaux neuronaux avec l’apprentissage par renforcement si vous effectuez une recherche rapide sur Google Scholar.

    Si le résultat qui conduit à une récompense est réintroduit dans le réseau, vous renforcerez le réseau proportionnellement à la récompense. Ceci n’est pas directement applicable aux récompenses négatives, mais je peux imaginer deux solutions qui produiront des effets différents:

    1) Si vous avez un ensemble de récompenses dans une plage rmin-rmax, redimensionnez-les à 0-(rmax-rmin) afin qu’elles soient toutes non négatives. Plus la récompense est grande, plus le renforcement est fort.

    2) Pour une récompense négative -r , propagez une sortie aléatoire r fois, à condition qu’elle soit différente de celle qui mène à la récompense négative. Cela non seulement renforcera les résultats souhaitables, mais diffusera ou évitera également les mauvais résultats.