Interpretar métricas de entrenamiento
Lo que se explica en esta página sé que funciona para el entrenamientos hechos con el algoritmo RSL-RL, que es el que utilizo en mis proyectos.
Aunque los conceptos generales son aplicables a otros algoritmos (SKRL, RL-Games, etc.), hay detalles que pueden variar, y no garantizo que todo sea aplicable exactamente igual en proyectos que usen otros algoritmos de entrenamiento.
Métricas
Durante los entrenamientos, por la salida de la consola se pueden ver muchos datos del tipo:
Learning iteration 3/1000
Computation: 52403 steps/s (collection: 0.075s, learning 0.048s)
Mean action noise std: 0.97
Mean value_function loss: 208.1630
Mean surrogate loss: -0.0014
Mean entropy loss: 2.7780
Mean reward: 66.40
Mean episode length: 30.30
--------------------------------------------------------------------------------
Total timesteps: 25600
Iteration time: 0.12s
Time elapsed: 00:00:00
ETA: 00:03:51Estos datos representan métricas que, bien interpretadas, pueden ayudar a entender el estado del entrenamiento. Esto es especialmente interesante cuando estamos ejecutando un entrenamiento sin la interfaz gráfica y no podemos comprobar visualmente cómo está yendo el entrenamiento.
Interpretación
Definiciones
Learning iteration
Cantidad de iteraciones de aprendizaje completadas. No confundir con el número de episodios.
No mide el progreso del entrenamiento directamente, pero indica qué punto del entrenamiento estamos.
Computation
steps/s: Rendimiento de la simulación. Si hay pocos steps/s puede ser que estemos tratando de simular demasiados entornos en paralelo. Disminuye si mantenemos activado el entorno gráfico.
collection: Tiempo recolectando datos del entorno
learning: Tiempo entrenando la red neuronal
Mean action noise std
Mide la media del ruido en la exploración de soluciones. Si el valor es alto significa que existe mucha exploración, si es bajo indica una política más determinista con una baja exploración.
En un aprendizaje estable, generalmente la media del ruido comienza teniento un valor alto (cercano a 1.0) y baja lentamente con el tiempo. Si se queda con un valor muy alto puede significar que la política no está consiguiendo converger en una solución. Si el valor cae rápidamente significa que la política converge rápidamente en una solución y que el entrenamiento puede estancarse.
Mean value_function loss
En la mayoría de algoritmos modernos de aprendizaje por refuerzo existen 2 roles distintos: actor y crítico. El actor es a lo que nos referimos cuando hablamos de "la política": Recibe observaciones y devuelve acciones. El crítico se encarga de estimar cómo de buena es la situación actual a partir de las observaciones, con el fin de guiar y estabilizar el aprendizaje.
El valor de mean value_function loss mide el error del crítico (cómo de mal estima el valor esperado de los estados). Un valor alto al principio del entrenamiento es normal. Su valor absoluto no importa, ya que depende de la escala del reward. Lo que importa es la tendencia:
Si baja con el tiempo: Indica que el crítico aprende
Si oscila en el tiempo: Puede ser un comportamiento normal, pero hay que vigilarlo
Si crece sin parar: Puede indicar un mal diseño de las recompensas
Mean surrogate loss
Indica cuánto cambia la política en cada actualización y sirve para detectar inestabilidad en el entrenamiento. Valores pequeños indican actualizaciones estables. Valores grandes pueden significar actualizaciones agresivas de la política, lo que puede provocar un colapso del entrenamiento.
Mean entropy loss
Mide el nivel de aleatoriedad de la política. Suele comenzar con uin valor alto al comienzo del entrenamiento y bajar lentamente a medida que el entrenamiento avanza.
Un valor alto indica una política más estocástica (ante la misma observación no siempre devuelve la misma acción). Un valor bajo indica una política más determinista (ante la misma observación siempre devuelve la misma acción).
Si la entropía siempre mantiene un valor alto, la política no aprende porque sigue probando cosas al azar. Si cae muy rápido, el aprendizaje se atasca porque la política deja de intentar cosas nuevas.
Mean reward
Es la métrica más observada. Mide la recompensa media por paso, promediada sobre todos los entornos ejecutados en paralelo. Su valor no dice nada por si solo, sólamente tiene sentido interpretar la evolución de su valor:
Si sube con el tiempo: La política está aprendiendo
Si se estanca: La política ha llegado a una solución local
Si baja tras subir: La política se degrada
Durante un entrenamiento es bastante normal observar cómo hay periodos donde el valor de la media de recompensas cae, para después volver a subir. Esto ocurre porque en el proceso de exploración, por azar la política puede entrar en un espacio de soluciones que no le beneficia. En muchos casos, es cuestión de tiempo para que el algoritmo salga solo de ese espacio de soluciones y encuentre uno más favorable.
Mean episode length
Mide la duración media de los episodios antes de que el entorno termine (done), ya sea por una condicion de fallo o por alcanzar el timeout.
Depende del tipo de robot que se esté entrenando, pero por lo general tiene un valor al principio del entrenamiento (el robot no sabe lo que tiene que hacer y las condiciones de done se cumplen rapidamente). Después suele aumentar con el tiempo, a medida que el robot aprende a evitar las condiciones de terminación. Y termina estabilizandose cerca del máximo, cuando la mayoría de episodios alcanzan el timeout.
Total timesteps
Mide el número total de pasos de simulación. Sirve principalmente para comparar entrenamientos.
Análisis de entrenamientos con Tensorboard
Poder interpretar las métricas que devuelve el output de la consola está bien, pero estando en pleno siglo XXI hay opciones bastante mejores. De hecho, el propio entorno de Python de Isaac Lab integra TensorBoard, una herramienta que permite analizar de forma gráfica los logs que se van guardando automáticamente durante los entrenamientos.
Para utilizar esta herramienta basta con ejecutar el comando:
~/IsaacLab/isaaclab.sh -p -m tensorboard.main --logdir logs/rsl_rl/simplerobot_direct/
Esto lanza un servidor local y muestra por consola una URL a la que podremos acceder desde el navegador. Al abrirla, se desplegará la interfaz de TensorBoard.

Las gráficas que más utilizo para evaluar cómo está evolucionando un entrenamiento y decidir qué checkpoint conservar una vez finaliza son train/mean_episode_length y train/mean_reward.
A la hora de elegir un checkpoint, suelo buscar el primero que alcanza valores altos y estables en ambas métricas, ya que normalmente indica un comportamiento consistente sin llegado al overfitting.
Last updated