Estoy construyendo un auto con control remoto para divertirme. Estoy usando una Raspberry Pi como computadora de a bordo; y estoy usando varios complementos, como una cámara Raspberry Pi y sensores de distancia, para obtener información sobre los alrededores del automóvil. Estoy usando OpenCV para convertir los cuadros de video en tensores, y estoy usando TensorFlow de Google para construir una red neuronal enrevesada para aprender los límites y obstáculos de la carretera. Mi pregunta principal es, ¿debería utilizar el aprendizaje supervisado para enseñar a conducir el automóvil o debería proporcionar objetivos y sanciones y hacer un aprendizaje de refuerzo (es decir, llegar al punto B lo más rápido posible sin golpear nada y permanecer dentro de los límites de la carretera)? A continuación se muestra una lista de los pros y los contras que se me ocurrieron.
Profesionales de aprendizaje supervisados:
- Las entradas al algoritmo de aprendizaje son bastante sencillas. El automóvil aprende a asociar las lecturas de distancia del tensor de cuadro de video y del sensor con el desplazamiento de la rueda hacia adelante, hacia atrás y angular
- Puedo enseñarle más o menos al automóvil a conducir exactamente como quiero (sin sobreajustar, por supuesto)
- He hecho toneladas de problemas de aprendizaje supervisado antes, y este enfoque parece adaptarse cómodamente a mi conjunto de habilidades existente
Contras de aprendizaje supervisado:
- No está claro cómo enseñar la velocidad, y la velocidad correcta es bastante arbitraria siempre que el automóvil no vaya tan rápido que se desvíe de la carretera. Supongo que podría conducir rápido durante el entrenamiento, pero esto parece un enfoque burdo. ¿Tal vez podría agregar manualmente una variable constante durante el entrenamiento que corresponda a la velocidad de esa sesión de entrenamiento, y luego, cuando se implementa el algoritmo de aprendizaje, configuro esta variable de acuerdo con la velocidad que quiero?
Profesionales de aprendizaje por refuerzo:
- Si construyo mi automóvil con el propósito específico de competir con autos autónomos de otras personas, el aprendizaje de refuerzo parece ser la forma natural de decirle a mi automóvil que "llegue lo más rápido posible"
- He leído que RL a veces se usa para drones autónomos, por lo que en teoría debería ser más fácil en los automóviles porque no tengo que preocuparme por subir y bajar
Contrastes de aprendizaje de refuerzo:
Siento que el aprendizaje de refuerzo requeriría muchos sensores adicionales, y, francamente, mi automóvil de un pie de largo no tiene mucho espacio en el interior teniendo en cuenta que también necesita una batería, la Raspberry Pi y una placa de pruebas.
El auto se comportará de manera muy errática al principio, tanto que tal vez se destruya solo. También puede tomar un tiempo excesivamente largo para aprender (por ejemplo, meses o años)
- No puedo incorporar reglas explícitas más adelante, por ejemplo, parar en un semáforo en rojo. Con el aprendizaje supervisado, podría incorporar numerosos algoritmos SL (por ejemplo, un clasificador Haar Cascade para identificar semáforos) en un motor de reglas configurables que se evalúa entre cada cuadro de video. De este modo, el motor de reglas podría anular el algoritmo SL de conducción si viera un semáforo en rojo, aunque el semáforo podría no haber sido parte del entrenamiento del algoritmo de conducción. RL parece demasiado continuo para hacer esto (es decir, detenerse solo en el estado terminal)
- No tengo mucha experiencia con el aprendizaje de refuerzo aplicado, aunque definitivamente quiero aprenderlo independientemente