Cómo utilizar el aprendizaje por refuerzo en robótica.

El aprendizaje por refuerzo es un campo tan grande que realmente puede tomar muchos enfoques diferentes para aplicarlo a la robótica. Hablaré sobre dos que destacan el enfoque del científico informático frente al enfoque de los ingenieros de control.

Primero, consideremos tomar el enfoque de CS y ver la navegación de robots como un problema de aprendizaje de refuerzo. Entonces, para comenzar necesitamos definir nuestros estados, acciones y recompensas. Digamos que nuestro estado es una celda de cuadrícula x, y discreta en un mundo de cuadrícula típico. Nuestra acción puede ser las direcciones cardinales N, S, E, W. Y nuestra recompensa es solo un +1 cuando alcanzamos la celda objetivo y 0 en cualquier otra parte. El robot puede hacer la transición a cualquier celda de cuadrícula desocupada y si intentara ir a una celda de cuadrícula ocupada, simplemente no se movería. Para resolver este problema, podemos emplear el aprendizaje de Q tabular ya que es simple y un algoritmo de principiante necesario para entender. Ahora que hemos definido nuestro entorno, ¿cómo puede aprender nuestro robot? Bueno … comencemos con una versión simulada de tu robot primero.

Así, el robot simulado se inicializa en alguna posición de inicio y los episodios se ejecutan una y otra vez hasta que la política converge. Un episodio es el tiempo que tarda un robot en alcanzar la posición de gol desde la posición de inicio. Una vez que se alcanza la posición del objetivo, el robot se reinicializa al inicio. Durante un episodio, el robot realiza una serie de pasos (acciones en el entorno). Después de cada acción recibe alguna señal de recompensa. En cada paso del tiempo, el robot tendrá una tupla de sars y la utilizará para actualizar su estimación del valor de acción del estado Q (s, a). Lentamente, los valores de acción se actualizarán y se aprenderá la política óptima (el camino más corto hacia la meta).

Si implementas este algoritmo, verás que el robot toma muchos pasos para aprender la política óptima. Y este problema es bastante pequeño en comparación con la mayoría de los problemas de robótica. La principal barrera para aplicar los enfoques de robótica CS RL es la gran cantidad de experiencia del mundo real que necesitaría recopilar. Esta experiencia no solo es costosa en términos de tiempo, sino también en términos de seguridad, ya que el robot necesita aprender qué no hacer. Entonces, ¿cómo podemos esperar que los robots aprendan a caminar o hacer otras tareas complicadas? Una cosa a tener en cuenta es que el aprendizaje por refuerzo y el control óptimo suelen ser dos caras de la misma moneda. Y donde el CS RL falla, los conceptos del control óptimo pueden ayudar.

Lo primero que haremos es limitar el alcance del problema. Así que de vuelta en nuestro ejemplo de navegación, estábamos realmente preocupados por un camino desde una posición de inicio hasta una posición de objetivo. Entonces, si eso es lo único que nos importa, ¿realmente necesitamos aprender cuál es la acción óptima en cada estado en el espacio estatal cuando la gran mayoría de esos estados nunca serían visitados bajo la política óptima? Bueno no. Entonces, la gran idea detrás de los métodos de RL basados ​​en la trayectoria es que realmente estás aprendiendo una política óptima localmente en lugar de tratar de encontrar la política global óptima. Esto hace que el problema sea significativamente más pequeño y, por lo tanto, manejable para su aplicación en robots reales. Normalmente, los enfoques RL basados ​​en la trayectoria utilizarán algoritmos de búsqueda de políticas que parametrizan la política y buscan directamente en el espacio de políticas o en el espacio de parámetros. Este espacio es significativamente más pequeño que nuestro espacio de acción-estado (que suele ser infinito en robótica).

Como dije, es un espacio enorme … lo que haría sería comenzar con el aprendizaje por refuerzo en robótica: una encuesta. Entonces echa un vistazo a curso de David Silver RL. Y como más avanzado echa un vistazo al curso Deep RL Berkeley.

Entonces, sé que probablemente te he dado más información de la que estás buscando … y supongo que querías algo muy específico para probar, así que terminaré con eso.

Si eres nuevo en RL, mi primera sugerencia es olvidar la parte del robot por ahora y probar los algoritmos básicos de RL (Q learning, Actor Critic, Policy Gradients y encontrar una política con parámetros con los que te sientas cómodo). Yo usaría el gimnasio OpenAI como su plataforma de simulación. Con esto, estarás usando python y también puedes usar tensorflow o theano si decides usar redes neuronales (lo que harás en algún momento).

Si está buscando lanzar un algoritmo RL en un robot para decir que lo hizo … entonces el algoritmo dependerá en gran medida del robot que esté utilizando y de lo que quiera hacer con él. En cuyo caso podría darte ideas específicas si supiera lo que tienes.

Hola.

Echa un vistazo a este ejemplo en Youtube.

motoko aftermath – seguidor de línea de red neuronal, robot, Q-learning

Han utilizado el Aprendizaje de Refuerzos para entrenar una línea siguiendo a un robot. Utiliza un agente de Q-Learning para decidir los ángulos de rotación. Utiliza un sensor de línea que tiene 16 entradas para encontrar la curva que está por delante. Basado en esto, se elige una de las direcciones.