chart-fftInterpretar métricas de entrenamiento

circle-exclamation

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:51

Estos 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

Entrenamiento estable

  • reward sube o se estabiliza

  • episode length sube

  • entropy baja lentamente

  • value loss baja o se estabiliza

Entrenamiento estancado

  • reward plano

  • entropy muy baja

  • episode length no mejora

Entrenamiento degradándose

  • reward baja tras haber sido alto

  • episode length cae

  • entropy sube o se vuelve errática

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

circle-info

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