Je construis une voiture autonome télécommandée pour le plaisir. J'utilise un Raspberry Pi comme ordinateur de bord; et j'utilise divers plug-ins, tels qu'un appareil photo Raspberry Pi et des capteurs de distance, pour obtenir des informations sur l'environnement de la voiture. J'utilise OpenCV pour transformer les images vidéo en tenseurs, et j'utilise TensorFlow de Google pour construire un réseau neuronal alambiqué pour apprendre les limites et les obstacles de la route. Ma question principale est la suivante: devrais-je utiliser un apprentissage supervisé pour apprendre à conduire la voiture ou dois-je fournir des objectifs et des sanctions et faire un apprentissage par renforcement (c.-à-d. Arriver au point B aussi vite que possible sans rien heurter et rester dans les limites de la route)? Voici une liste des avantages et des inconvénients que j'ai trouvés.
Professionnels de l'apprentissage supervisé:
- Les entrées de l'algorithme d'apprentissage sont assez simples. La voiture apprend à associer les mesures de distance du tenseur de trame vidéo et du capteur avec le déplacement des roues avant, arrière et angulaire
- Je peux plus ou moins apprendre à la voiture à conduire exactement comme je veux (sans sur-ajustement, bien sûr)
- J'ai déjà fait des tonnes de problèmes d'apprentissage supervisé auparavant, et cette approche semble convenir à mes compétences existantes
Contre apprentissage supervisé:
- Il n'est pas clair comment enseigner la vitesse, et la bonne vitesse est assez arbitraire tant que la voiture ne va pas si vite qu'elle s'écarte de la route. Je suppose que je pouvais conduire vite pendant l'entraînement, mais cela semble être une approche grossière. Peut-être que je pourrais ajouter manuellement une variable constante pendant la formation qui correspond à la vitesse de cette session de formation, puis lorsque l'algorithme d'apprentissage est déployé, je règle cette variable en fonction de la vitesse que je veux?
Avantages de l'apprentissage par renforcement:
- Si je construis ma voiture dans le but spécifique de faire la course avec les voitures autonomes d'autres personnes, l'apprentissage par renforcement semble être le moyen naturel de dire à ma voiture "d'arriver le plus vite possible"
- J'ai lu que RL est parfois utilisé pour les drones autonomes, donc en théorie, cela devrait être plus facile dans les voitures car je n'ai pas à me soucier des montées et descentes
Renforcement de l'apprentissage contre:
Je pense que l'apprentissage par renforcement nécessiterait beaucoup de capteurs supplémentaires, et franchement, ma voiture longue ne dispose pas de beaucoup d'espace à l'intérieur, étant donné qu'elle doit également contenir une batterie, le Raspberry Pi et une planche à pain
La voiture se comportera de manière très irrégulière au début, à tel point qu'elle se détruit peut-être. Cela peut également prendre un temps déraisonnablement long à apprendre (par exemple, des mois ou des années)
- Je ne peux pas incoporer des règles explicites plus tard, par exemple, m'arrêter à un feu rouge de jouet. Avec un apprentissage supervisé, j'ai pu incorporer de nombreux algorithmes SL (par exemple, un classificateur Haar Cascade pour identifier les feux de stop) dans un moteur de règles configurable qui est évalué entre chaque image vidéo. Le moteur de règles serait ainsi en mesure de remplacer l'algorithme SL de conduite s'il voyait un feu rouge d'arrêt même si le feu stop ne faisait pas partie de la formation de l'algorithme de conduite. RL semble trop continu pour le faire (c.-à-d., Ne s'arrêter qu'à l'état terminal)
- Je n'ai pas beaucoup d'expérience avec l'apprentissage par renforcement appliqué, bien que je veuille vraiment l'apprendre malgré
la source
Réponses:
Je vous suggère d'essayer une approche hybride:
la source