L'apprentissage supervisé vs apprentissage de renforcement pour une auto simple, conduire la voiture rc

datascience.stackexchange https://datascience.stackexchange.com/questions/11126

Question

Je construis une voiture auto conduite télécommandée pour le plaisir. J'utilise un Raspberry Pi comme l'ordinateur de bord; et j'utilise différents modules d'extension, comme un des capteurs de caméra Raspberry Pi et la distance, pour les informations sur l'environnement de la voiture. J'utilise OpenCV pour transformer les images vidéo en tenseurs, et j'utilise la tensorflow de Google pour créer un réseau de neurones alambiquée pour apprendre les limites de la route et les obstacles. Ma question principale est, dois-je utiliser l'apprentissage supervisé pour enseigner la voiture à conduire ou devrais-je définir des objectifs et des sanctions et faire l'apprentissage de renforcement (i.e., obtenir au point B aussi vite que possible sans toucher quoi que ce soit et de rester dans les limites de la route)? Voici une liste des avantages et des inconvénients que je suis venu avec.

pros d'apprentissage supervisé:

  • Les entrées à l'algorithme d'apprentissage sont assez simples. La voiture apprend à associer les lectures de distance de tenseurs de trame vidéo et de capteur avec l'avant, vers l'arrière, et le déplacement angulaire roue
  • Je ne peux plus ou moins enseigner la voiture à conduire exactement ce que je veux (sans surapprentissage, bien sûr)
  • Je l'ai fait des tonnes de problèmes d'apprentissage supervisé avant, et cette approche semble tenir confortablement mes compétences existantes

contre d'apprentissage supervisé:

  • On ne sait pas comment la vitesse d'apprentissage, et la vitesse correcte est assez arbitraire aussi longtemps que la voiture ne va pas si vite qu'il bifurque sur la route. Je suppose que je pourrais rouler vite pendant l'entraînement, mais cela semble être une approche brute. Peut-être que je pourrais ajouter manuellement dans une variable constante au cours de la formation qui correspond à la vitesse pour cette session de formation, puis lorsque l'algorithme d'apprentissage est déployé, je mis cette variable en fonction de la vitesse que je veux?

avantages d'apprentissage par renforcement:

  • Si je construis ma voiture dans le but spécifique des courses de voitures auto conduite des autres, l'apprentissage de renforcement semble être le moyen naturel de dire à ma voiture « y arriver aussi vite que possible »
  • J'ai lu que RL est parfois utilisé pour les drones autonomes, donc en théorie, il devrait être plus facile dans les voitures parce que je n'ai pas à vous soucier de haut en bas

contre l'apprentissage par renforcement:

  • Je me sens comme l'apprentissage par renforcement, il faudrait beaucoup de capteurs supplémentaires, et franchement ma voiture à pied longue n'a pas beaucoup d'espace à l'intérieur considérant qu'il faut également tenir une batterie, le Raspberry Pi, et breadboard

  • La voiture se comporte très de façon erratique dans un premier temps, si bien que peut-être lui-même détruit. Il peut aussi prendre un temps déraisonnablement long d'apprendre (par exemple, des mois ou des années)

  • Je ne peux pas incoporate règles explicites par la suite, par exemple, arrêt à un feu rouge jouet. Avec l'apprentissage supervisé, je pourrais intégrer de nombreux algorithmes SL (par exemple, un classificateur Haar Cascade pour identifier) ??dans un feu rouge moteur de règles configurables qui obtient une évaluation entre chaque image vidéo. Le moteur de règles serait donc en mesure de passer outre l'algorithme SL conduite si elle a vu un feu rouge rouge, même si le feu rouge pourrait ne pas avoir fait partie de la formation de l'algorithme de conduite. RL semble trop à faire Continuous (ie., Arrêt seulement à l'état terminal)
  • Je n'ai pas beaucoup d'expérience avec l'apprentissage de renforcement appliquée, bien que je veux vraiment apprendre quel que soit
Était-ce utile?

La solution

Je vous suggère d'essayer une approche hybride:

  • Tout d'abord, former votre voiture à la mode supervisée par démonstration . Juste contrôler et utiliser vos commandes comme des étiquettes. Cela vous permettra d'obtenir tous les les avantages de SL.
  • Ensuite, affiner votre réseau de neurones en utilisant l'apprentissage de renforcement. Tu ne pas besoin de capteurs supplémentaires pour que: les récompenses peuvent être obtenues à partir capteurs de distance (de plus grandes distances = meilleure) et de la vitesse lui-même. Cela vous donnera les avantages de RL et former votre NN à l'objectif correct de la conduite rapide, tout en évitant les obstacles au lieu de l'objectif de vous imiter.
  • La combinaison des deux approches vous obtiendrez les avantages des deux SL et RL tout en évitant leurs inconvénients. RL ne démarre pas du comportement aléatoire, juste de petits écarts de ce que vous graduelles Tought le NN. Une approche similaire a été appliquée avec succès par Google DeepMind avec AlphaGo .
  • Vous pouvez toujours inclure des règles explicites sur le dessus de cela. Mettre en œuvre les avec une priorité élevée et appeler le NN seulement quand il n'y a pas de règle explicite situation actuelle. Cela rappelle la subsomption architecture .
Licencié sous: CC-BY-SA avec attribution
scroll top