Programar una línea siguiendo al robot con aprendizaje de refuerzo

15

Estoy considerando programar una línea que siga al robot usando algoritmos de aprendizaje de refuerzo. La pregunta que estoy considerando es cómo puedo hacer que el algoritmo aprenda a navegar por cualquier ruta arbitraria.

Después de seguir el Libro de Sutton y Barto para el aprendizaje de refuerzo, resolví un problema de ejercicio que involucraba una pista de carreras donde el agente del automóvil aprendió a no salir de la pista y regular su velocidad. Sin embargo, ese problema de ejercicio hizo que el agente aprendiera a navegar la pista en la que se entrenó.

¿Está en el ámbito del aprendizaje de refuerzo hacer que un robot navegue por caminos arbitrarios? ¿El agente tiene que tener absolutamente un mapa del circuito o ruta de la carrera? ¿Qué parámetros podría usar para mi espacio de estado?

Lord Loh
fuente
1
No sé cómo, pero estoy seguro de que es posible enseñarle a mantenerse dentro de un camino, independientemente de su forma. El objetivo de la enseñanza en este caso debería ser qué decisión local toma el robot en función de sus aportes inmediatos (o quizás algo de historia). De esta manera, no importa cuál sea la forma del camino, ya que todas las decisiones son locales.
Shahbaz
@Shahbaz: ¿Qué sugieres que use para el espacio de estado?
Lord Loh
En realidad no estoy seguro. Aunque estudié IA en la universidad, ese nunca fue mi campo de trabajo / investigación. ¡La respuesta que ha aceptado parece razonable!
Shahbaz
¿Estás usando una respuesta para probar Markdown? Puede escribir lo que quiera y ver la representación inmediata debajo de él, y luego no publicarlo.
Shahbaz

Respuestas:

8

Una de las medidas clave de cualquier algoritmo de aprendizaje automático es su capacidad de generalizar (es decir, aplicar lo que ha aprendido a escenarios no vistos anteriormente). Los aprendices de refuerzo (RL) pueden generalizar bien, pero esta habilidad es en parte una función de la formulación del espacio de estado en mi experiencia. Esto significa que si puede encontrar la configuración correcta, el alumno RL no necesitará un mapa del circuito de carrera.

Esto deja la pregunta de qué parámetros usar. Sin saber más acerca de los sensores disponibles en su robot, solo puedo especular. Mi primera inclinación es tratar de codificar la orientación relativa de la línea y el robot (es decir, si el robot tiende hacia la derecha, la izquierda o simplemente se mueve en paralelo con la línea). Hacerlo daría como resultado un pequeño espacio de estado agradable. Aunque no es estrictamente necesario, sería una implementación rápida y sencilla. Además, si el robot no se va a mover a una velocidad constante, entonces puede ayudar codificar la velocidad de los robots, ya que el robot deberá reaccionar más rápidamente cuando se mueva a velocidades más altas.

DaemonMaker
fuente
Sin el mapa, el espacio de estado es justo lo que el robot puede sentir desde su posición inmediata. Hasta cierto punto, el mapa es solo una forma de "mirar hacia adelante". El comportamiento aprendido en el escenario sin mapa será esencialmente "hacer lo mismo que antes pero ir más lento porque no sabemos dónde están los giros esta vez". (Presumiblemente, podrás decir dónde están los bordes de la pista).
Ian
Una política nos dice qué control aplicar dado un estado. Si el espacio de estado está bien formulado para el agente RL, entonces los escenarios claramente diferentes pueden tener el mismo aspecto en el espacio de estado y producir el mismo comportamiento. Esto se llama generalización y es deseable cuando se hace correctamente. El robot tendrá una velocidad máxima basada en la velocidad de su bucle de control. El comportamiento aprendido no necesariamente será disminuir la velocidad. Si la recompensa está inversamente relacionada con el tiempo de ejecución, el agente estaría inclinado a maximizar su velocidad con respecto a la velocidad de su ciclo de control.
DaemonMaker
0

No estoy seguro de qué tipo de robot tiene, pero he estado haciendo la línea de rescate robocup durante algunos años. Me di cuenta de que si quieres seguir bien una línea, usar PID es una buena opción. Déjame expandirme en esto. Si imagina dos sensores de luz a cada lado de la línea, desearía que tuvieran el mismo valor para que la línea esté en el medio. Luego puede usar la diferencia entre el valor de los dos sensores para cambiar el porcentaje de giro del robot. Con esta técnica, es posible hacer que un robot siga una línea a velocidades extraordinarias. Me gusta que hayas estado pensando en hacer que el robot aprenda a mejorar sus habilidades de rastreo de línea. Lo que se me ocurrió es comenzar con sus valores PID iniciales más altos de lo que desea que sean y usar un sensor giroscópico para medir la frecuencia de oscilación del robot mientras rastrea la línea. A partir de ahí, puede crear su propia función para determinar cuánto bajar sus valores para obtener un sistema estable, esto no es exactamente inteligencia artificial más como un algoritmo de optimización automatizado, pero bueno, tengo 18 años y aprendí a codificar desde el Internet. Espero que esto ayude. Si tiene alguna consulta, envíeme un correo electrónico, esta no es mi dirección de correo electrónico principal, por lo que no la revisaré regularmente. [email protected]

Omar Quaye
fuente