NEAT con Hindsight Experience Replay
NEAT con Hindsight Experience Replay
Después de implementar NEAT en Unity hace unas semanas, intenté pensar en formas de mejorar su rendimiento.
Recuerdo haber leído sobre una técnica novedosa utilizada en algoritmos de aprendizaje por refuerzo conocida como Hindsight Experience Replay. Con esta técnica, se rastrean y aprenden los estados fallidos que un agente alcanza como si fueran éxitos.
Al principio, no le di mucha importancia. Debido al método de especiación que emplea NEAT, una población es capaz de buscar en un dominio en muchas direcciones diferentes. Esto significa que las experiencias recopiladas por una especie al buscar en una área del dominio no serían aplicables a los genomas fuera de esa especie. Sin embargo, entonces tuve una idea: ¿qué pasaría si cada especie mantuviera una lista separada de experiencias?
Inmediatamente me puse a probar mis ideas.
Entorno de Pruebas
Se configura un entorno de la siguiente manera:
- Presentando SafeCoder
- Aprendizaje de por vida en el borde
- Una IA escanea los ojos para detectar el Parkinson años antes del d...

Los agentes aparecen en la parte inferior izquierda y deben llegar a la estrella en la parte superior izquierda. Los agentes solo pueden saltar lo suficientemente alto como para aterrizar en las dos plataformas inferiores.
El agente se ve así.

Como entrada, el agente recibe (normalizado):
La diferencia entre la posición de la meta y la posición del agente
La posición del agente
La velocidad en y del agente
Si el agente está en el suelo y puede saltar o no
El resultado de 16 rayos en un círculo alrededor del agente, que devuelven la distancia a la plataforma más cercana que alcanzan.
Como salida, el agente proporciona:
Una salida para moverse a la izquierda (<0.5) o a la derecha (>0.5)
Una salida para saltar o no (>0.5)
Configuración
El 25% de cada generación se creó mediante reproducción asexual. La porción de la generación creada con cruzamiento tiene un 35% de probabilidad de mutación. Los dos mejores genomas de cada especie permanecieron sin cambios y había un 5% de probabilidad de que ocurriera un cruzamiento entre especies. Había 2000 genomas en la generación inicial para asegurarse de que la población comenzara con suficientes miembros capaces de subir a la primera plataforma, pero las generaciones posteriores solo tenían 500 genomas. Una población se considera fallida si no encuentra un agente que llegue a la estrella dentro de 500 generaciones.
Hindsight Experience Replay requirió un poco de ajuste para funcionar con NEAT, pero finalmente elegí una estrategia que se veía así:
Muestrear metas/experiencias (la última plataforma en la que estuvo el genoma, para asegurarse de que las metas no estén flotando en el aire) de cada genoma al final de una generación que cumpla los siguientes criterios:
- La muestra está unos saltos por encima del punto de inicio, para que no se tomen muestras en la parte inferior.
- La muestra está a cierta distancia de cada otra meta que se ha muestreado para la especie del genoma dado.
Las metas se agregan a la especie de cada genoma para que cada especie mantenga una lista separada de metas.
Cuando se crea una nueva generación, se asignan dos metas de la lista de metas a cada especie de manera que las metas con la tasa de éxito más alta sean las menos propensas a ser asignadas. Hay que tener en cuenta que las metas recién muestreadas se consideran que tienen una tasa de éxito del 0%. Luego, cada generación se evalúa tres veces, una vez para la meta real y dos veces para las metas muestreadas.
La aptitud se calcula con los siguientes dos valores:
(distancia_inicial-distancia_más_cercana)/distancia_inicial
para recompensar al agente por acercarse a la meta
(distancia_inicial-distancia_final)/distancia_final
para recompensar al agente por mantenerse cerca de la meta.
Si un agente permanece en la parte inferior durante demasiado tiempo, se elimina de la simulación y recibe una penalización. Esto es principalmente para acelerar la evaluación.
Para NEAT con HER, la recompensa se eleva al cubo para amplificar las diferencias entre soluciones buenas y malas. Estos valores pueden ser negativos si el agente se aleja de la meta.

Resultados
NEAT estándar con solo una recompensa de distancia tuvo un mal desempeño en este problema, fallando seis de cada diez veces. NEAT depende en gran medida de una serie de mutaciones coincidentes al principio para encontrar el camino correcto y resolver el problema. Sin embargo, cuando no lo logra, queda atrapado en un mínimo local donde sube las plataformas a la izquierda pero no puede avanzar más.
NEAT estándar no puede subir más alto
Por otro lado, NEAT con HER tiene un desempeño razonable. Resuelve el problema en una mediana de 149 generaciones (Stddev: 90) y no falla ni una vez, aunque en su peor intento tardó 415 generaciones. Curiosamente, NEAT con HER se desarrolló como una búsqueda de novedad: a medida que las muestras anteriores se volvían más raras debido al método de asignación, los agentes se vieron obligados a explorar áreas nuevas y más difíciles de alcanzar del entorno. Es importante destacar que el objetivo objetivo pareció haberse encontrado por casualidad, aunque más entrenamiento podría enseñar a los agentes cómo llegar a cualquier punto en el entorno sin memorizar una secuencia de pasos.
Los objetivos muestreados promueven la exploración y disminuyen la probabilidad de convergencia prematura.
Sin embargo, es importante no exagerar este logro. Utilizando una función de recompensa que recompensa a los agentes en función de su valor y, NEAT estándar resuelve esto en una mediana de 94 generaciones (Stddev: 36) y menos tiempo de evaluación, pero falla una vez.
Conclusiones
NEAT con HER puede promover modestamente la generalización y el éxito en problemas difíciles sin manipular manualmente una función de aptitud. Sin embargo, esto conlleva un costo de mayor tiempo de evaluación y una convergencia más lenta en comparación con una función de aptitud diseñada inteligentemente. Curiosamente, es posible entrenar agentes de esta manera sin un objetivo explícito en absoluto. Por supuesto, cada especie aún debe tener al menos un objetivo de muestra para poder entrenar, pero más allá de eso, la estrategia de muestreo y asignación promueve la exploración del dominio con o sin un objetivo explícito.