Descubriendo AWS DeepRacer: Entrenando tu Primer Modelo
Guillermo Ruiz
Posted on November 14, 2023
En el blog anterior hemos explorado la naturaleza de AWS DeepRacer, una plataforma educativa para experimentar con aprendizaje por refuerzo, detallando sus componentes y profundizando en aspectos técnicos que influyen en el entrenamiento de modelos de IA.
En el blog de hoy, mi compañero Germán Arrocha y un servidor, te guiaremos paso a paso en el proceso de entrenar tu primer modelo con AWS DeepRacer. Al finalizar, habrás adquirido las habilidades necesarias para:
1/ Utilizar AWS DeepRacer para construir y enseñar a un modelo basado en las reglas del aprendizaje por refuerzo.
2/ Utilizar AWS DeepRacer para evaluar y comprender el funcionamiento de tu modelo entrenado.
3/ Utilizar AWS DeepRacer para mejorar la función de recompensa de tu modelo, optimizando así su proceso de aprendizaje de manera más efectiva.
Comencemos!
Tarea 1: Creando nuestro modelo
Sigue los siguientes pasos para crear un modelo y empezar:
1/ Accede a la consola de AWS.
2/En el menú de Servicios, selecciona Machine Learning > AWS DeepRacer.
3/ En el panel de navegación izquierdo, elije Sus modelos.
5/ En la sección Detalles de entrenamiento, ingresa un nombre para tu modelo. En nuestro ejemplo: DeepRacerWinner.
6/ En la sección Simulación de entorno, elije A to Z Speedway. Este es el circuito más sencillo con el que empezaremos a entrenar nuestro modelo.
7/ Selecciona Sentido horario como dirección de la pista (Track direction > Clockwise)
8/ Le damos al botón Siguiente.
9/ Elige Contrarreloj (Time trial) como tipo de carrera. Puedes aprender más sobre todos los tipos de carreras disponibles aquí.
10/ Elige PPO como algoritmo de entrenamiento.
Nota: El algoritmo PPO (Proximal Policy Optimization) es una técnica de aprendizaje por refuerzo utilizada en inteligencia artificial (IA) y aprendizaje automático (ML). Es como tener un entrenador avanzado. Imagina que estás aprendiendo a jugar al fútbol y tienes un entrenador que te va dando consejos poco a poco, ajustando tu técnica de manera gradual. Así, mejoras constantemente sin sentirte agobiado por grandes cambios. PPO hace algo similar en el mundo de la inteligencia artificial: ayuda a los programas a mejorar en tareas, como jugar un videojuego, ajustando sus estrategias paso a paso para un aprendizaje más efectivo y estable. Puedes aprender más sobre los algoritmos de entrenamiento aquí.
11/ Expande la sección de Hiperparámetros.
Nota: Ajustar los Hiperparámetros es un tema avanzado (veremos un ejemplo práctico en otra entrada de blog). Para esta actividad y con el objetivo de obtener tantos puntos de datos como sea posible en tiempos de entrenamiento cortos, configuraremos lo siguiente:
- Tamaño del lote de descenso de gradiente: 32
- Número de épocas: 5
- Tasa de aprendizaje: 0.0003
- Entropía: 0.03
- Factor de descuento: 0.999
- Tipo de pérdida: Huber
- Número de episodios de experiencia entre cada iteración de actualización de políticas: 5
12/ Le damos al botón Siguiente.
13/ Bajo la sección Seleccionar espacio de acción, elige Espacio de acción discreto (Discrete action space).
Nota: En el aprendizaje por refuerzo, el espacio de acción se refiere al conjunto completo de movimientos o decisiones que un agente, como un coche en AWS DeepRacer, puede tomar en su entorno. Piensa en esto como el menú de maniobras que el coche puede elegir mientras navega en una pista. En AWS DeepRacer, puedes configurar este "menú" para que sea de tipo discreto (con opciones claramente definidas y separadas) o continuo (donde las acciones pueden variar de forma más fluida).
Durante el entrenamiento, el coche utiliza sus sensores simulados para recoger información del entorno y prueba diferentes acciones de este "menú" para ver cuáles le brindan los mejores resultados, tanto inmediatos como a largo plazo. A medida que el entrenamiento avanza, el coche explora más combinaciones de situaciones y acciones, lo que ayuda a mejorar su capacidad de tomar decisiones. Este proceso de prueba y error no solo enseña al coche qué hacer, sino que también influye en la estructura interna de su red neuronal (el cerebro del coche, por así decirlo). Una vez creado el modelo no se puede cambiar el número de acciones. Se pueden modificar sus valores (speed, steering angle, etc.), pero no poner o quitar acciones.
14/ Para nuestro modelo usaremos los valores predeterminados de Ángulo de dirección y Velocidad.
- Granularidad del ángulo de dirección: 5
- Ángulo máximo de dirección: 30
- Granularidad de la velocidad: 2
- Velocidad máxima: 1
15/ Le damos al botón Siguiente.
16/ Seleccionamos el vehículo original DeepRacer
17/ Le damos al botón Siguiente.
18/ NO modifiques el ejemplo de función de recompensa que aparece por defecto.
Nota: Ten en cuenta que la función de recompensa desempeña un papel esencial en el aprendizaje por refuerzo. Su propósito es motivar a tu vehículo autónomo (agente) a tomar acciones específicas mientras navega por la pista (entorno). De manera similar a cómo guiamos y desalentamos ciertos comportamientos en una mascota, esta herramienta te permite incentivar a tu vehículo a completar una vuelta lo más rápidamente posible y desincentivarlo de salirse de la pista o chocar con objetos. En este ejemplo, la función de recompensa se basa en la distancia del agente a la línea central de la pista; recompensa al agente con mayor puntaje cuando se encuentra más cerca del centro, alentándolo así a seguir la línea central con precisión. Para ello, utiliza el ancho de la pista y la distancia al centro como parámetros de entrada. Puedes obtener más información sobre ejemplos de funciones de recompensa aquí.
19/ En las Condiciones de Parada, selecciona 25 minutos.
20/ En la sección Enviar automáticamente a la carrera DeepRacer, desmarca la opción "Enviar este modelo a la siguiente carrera después de completar el entrenamiento".
21/ Elige Crear modelo para comenzar a crear el modelo y aprovisionar la instancia de trabajo de entrenamiento.
Nota: El proceso de inicialización tarda unos minutos en cambiar de "Inicializando" a "En progreso".
Inspecciona el entrenamiento después de que se haya aprovisionado la instancia de trabajo y se haya inicializado el entrenamiento del modelo. Observa el progreso para ver cómo tu agente intenta completar la pista en el simulador.
Tarea 2: Analizando la gráfica de Recompensa
Pasados los 25 minutos de entrenamiento, obtendremos una gráfica de recomepensa que muestra 3 líneas:
- La línea verde muestra la puntuación promedio que tu modelo ha obtenido a través de la función de recompensa. Debería aumentar con el tiempo a medida que tu modelo converja, lo que significa que la función de recompensa que creaste hace que el coche complete la vuelta.
- La línea azul muestra el porcentaje de finalización de la vuelta durante el entrenamiento, y es normal que esté por debajo del 100% porque el modelo está en modo de exploración durante el entrenamiento, lo que significa que está probando nuevas acciones para aprender cuál es el resultado.
- La línea roja representa la finalización promedio de la vuelta durante la evaluación.
La siguiente imagen muestra un modelo estable, ya que la línea roja está al 100% durante un varios puntos de datos. La línea verde también está creciendo, lo que significa que tenemos un modelo sólido.
22/ Ahora te toca a ti interpretar tu gráfico de recompensas. Puedes utilizar un editor de texto para escribir tu interpretación.
Tarea 3: Evaluando tu modelo
Una vez completado el entrenamiento, podemos evaluar nuestro modelo. Durante la evaluación, el modelo seleccionará la mejor acción en función de la entrada actual.
23/ Selecciona la pestaña Evaluación.
24/ Elije Iniciar evaluación.
25/ En el campo Tipo de carrera, agrega un nombre para la evaluación que estás realizando en tu modelo. Por ejemplo, 20231114EvalModelo.
26/Selecciona Prueba de tiempo.
27/ En Criterio de evaluación, elige A a Z Speedway y mantén el número de trials en 3.
28/ Selecciona Sentido de la pista como En sentido horario.
29/ En Envío de carrera virtual, volvemos a desmarcar la opción Enviar este modelo a la siguiente carrera después de completar el entrenamiento.
30/ Elije Iniciar evaluación. La evaluación es un proceso que llevará algunos minutos para completarse. Durante este tiempo, el sistema realizará una serie de acciones, como cargar el modelo entrenado, configurar el entorno de evaluación, ejecutar simulaciones y recopilar datos sobre el rendimiento del modelo. Este proceso puede variar en duración según la complejidad del modelo y la cantidad de simulaciones que se estén llevando a cabo.
31/ Verifica tus resultados de simulación y evaluación.
Tarea 4: Interpretando los resultados de la Evaluación
Durante la evaluación, nuestro modelo se incorporará al entorno de simulación y se evaluará su desempeño. Una vez que haya concluido la evaluación, se presentarán los resultados en forma de una tabla. En la Consola de AWS, encontrarás un control deslizante que te permite acceder a más campos de información de los que se muestran en la captura de pantalla que aparece a continuación. Uno de los campos más significativos es la columna Fuera de pista (Off-Track).
La columna Fuera de pista registra el número de veces que el vehículo se salió del trazado durante la simulación. Como se aprecia en este ejemplo, el modelo que estamos evaluando no se salió del trazado en ningún momento durante la evaluación, y los tiempos de vuelta son bastante uniformes, lo que indica que el modelo se comporta de manera estable.
Si quieres saber más sobre cómo entrenar y evaluar modelos, podrás encontrar más información aquí.
32/ Ahora te toca a ti interpretar los resultados de la evaluación. Utiliza tu editor de texto para escribir tu interpretación.
Tarea 5: Desarrollando una estrategia para mejorar el modelo
En esta tarea, te enfrentarás al desafío de mejorar tu modelo existente. Durante el proceso de entrenamiento, existen diversas estrategias que puedes emplear para optimizar el rendimiento de tu modelo. Entre las opciones disponibles se encuentran:
- Ajustar la función de recompensa
- Modificar los elementos de acción en el Espacio de Acción
- Afinar los hiperparámetros.
Una de las posibilidades es ajustar la función de recompensa, lo que puede implicar la inclusión de más parámetros o la modificación de cómo recompensas al modelo. Esto puede tener un impacto significativo en el comportamiento de tu vehículo autónomo.
Además, puedes explorar la variante de modificar los elementos de acción en el Espacio de Acción. Por ejemplo, puedes incrementar la velocidad de tu modelo si consideras que es estable pero no lo suficientemente rápido para cumplir con tus objetivos.
Por último, tienes la opción de afinar los hiperparámetros, lo que te permite controlar cómo el modelo aprende nuevas experiencias en relación con el conocimiento previo. Debes abordar estos ajustes de manera sistemática, cambiando solo un aspecto a la vez. Este enfoque te permitirá evaluar de manera efectiva si las modificaciones realizadas han mejorado o no el rendimiento del modelo.
Es importante recordar que cada cambio en el modelo puede tener un impacto en su comportamiento, por lo que es fundamental llevar un registro de las modificaciones realizadas y sus efectos. Te recomendamos utilizar tu editor de texto para ir registrando las modificaciones.
Tarea 6: Mejorando tu modelo y la función de recompensa
Para aprovechar el entrenamiento previo, puedes iniciar el nuevo entrenamiento clonando el modelo que acabamos de entrenar, transmitiendo el conocimiento previamente adquirido. Puedes seguir este patrón para gradualmente agregar más características a la función de recompensa y entrenar tu vehículo AWS DeepRacer.
En esta tarea, realizaremos un cambio a la vez (función de recompensa, elementos de acción, hiperparámetros o circuito) para comprender sus efectos en el modelo. Si realizas varios cambios a la vez, será difícil identificar cuál fue exitoso.
33/ En la esquina superior derecha de la página, haz clic en Acciones para abrir el menú desplegable. Elige Clonar.
34/ En Detalles del entrenamiento, agrega un nombre para el nuevo modelo. Por ejemplo, ModeloClonado.
35/ En Simulación del entorno, elige A to Z Speedway.
36/ Selecciona En sentido horario como la dirección de la pista.
37/ Haz clic en Siguiente.
38/ En Tipo de carrera, elige Prueba de tiempo.
Nota: Es importante destacar que al clonar un modelo, no tienes la capacidad de modificar el algoritmo subyacente en sí. El algoritmo del modelo clonado permanece igual al modelo original del cual se clonó.
La principal flexibilidad que obtenemos al clonar un modelo radica en la capacidad de ajustar los hiperparámetros específicos para adaptar el comportamiento del modelo a tus necesidades. Sin embargo, en nuestro ejemplo, vamos a mantener los hiperparámetros tal como están, lo que significa que estamos evaluando cómo un modelo idéntico al original se desempeña en el mismo entorno.
39/ Haz clic en Siguiente.
40/ No cambies ningún parámetro en Definir espacio de acción discreto.
41/ Haz clic en Siguiente.
42/ En la configuración del vehículo con sensores, selecciona El vehículo DeepRacer original.
43/ Haz clic en Siguiente.
44/ En la sección de Función de recompensa, modifica el código de ejemplo para mejorar tu función de recompensa.
Aquí, debes multiplicar la recompensa por la velocidad, lo que significa que mayores velocidades llevarán a más puntos de recompensa y, en última instancia, vueltas más rápidas.
- Después de la línea 8, agrega speed = params['speed']
- Después de la línea 24, inserta un espacio y agrega reward = speed*reward
45/ En Condiciones de Parada, establece 25 como el tiempo máximo.
46/ En la sección Enviar automáticamente a la carrera DeepRacer, desmarca la opción Enviar este modelo a la siguiente carrera después de completar el entrenamiento.
47/ Haz clic en Crear modelo.
Nota: El proceso de inicialización tarda unos minutos en cambiar de Inicializando a En progreso.
48/ Observa el gráfico de recompensas y el flujo de video de la simulación para seguir el progreso de tu entrenamiento. Puedes elegir el botón de actualización junto al gráfico de recompensas periódicamente para refrescar el gráfico de recompensas hasta que el entrenamiento esté completo.
49/ Compara el nuevo gráfico de recompensas con el gráfico de recompensas obtenido en la Tarea 2. Utiliza tu editor de texto para registrar tu análisis.
50/ Evalúa tu nuevo modelo.
50/ Compara los dos modelos y decide cuál es mejor y por qué. Utiliza tu editor de texto para registrar tus resultados y análisis.
Conclusiones
A través de diversas tareas, hemos aprendido a entrenar y mejorar modelos en AWS DeepRacer. Comenzamos con la configuración inicial y la observación de resultados, luego exploramos estrategias para ajustar modelos y finalmente aprendimos a clonar modelos y mejorar sus funciones de recompensa.
En definitiva, hemos adquirido conocimientos clave para mejorar la eficacia y el rendimiento de los vehículos autónomos en entornos de simulación.
Nos vemos en el siguiente tutorial!
Posted on November 14, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.