Articulo de referencia

Neuroevolución de topologías de aumento

NeuroEvolution of Augmenting Topologies ( NEAT ) es un algoritmo genético (AG) para generar redes neuronales artificiales evolutivas (una técnica de neuroevolución ) desarrollad...

NeuroEvolution of Augmenting Topologies ( NEAT ) es un algoritmo genético (AG) para generar redes neuronales artificiales evolutivas (una técnica de neuroevolución ) desarrollado por Kenneth Stanley y Risto Miikkulainen en 2002 en la Universidad de Texas en Austin . Altera tanto los parámetros de ponderación como las estructuras de las redes, buscando un equilibrio entre la aptitud de las soluciones evolucionadas y su diversidad. Se basa en la aplicación de tres técnicas clave: el seguimiento de genes con marcadores históricos para permitir el cruce entre topologías, la aplicación de la especiación (la evolución de las especies) para preservar las innovaciones y el desarrollo incremental de topologías a partir de estructuras iniciales simples ("complejización").

Actuación

En tareas de control simples, el algoritmo NEAT a menudo llega a redes efectivas más rápidamente que otras técnicas neuroevolutivas contemporáneas y métodos de aprendizaje por refuerzo , a partir de 2006. [ 1 ] [ 2 ]

Algoritmo

Tradicionalmente, la topología de una red neuronal la elige un experimentador humano, y los valores de los pesos de conexión efectivos se aprenden mediante un proceso de entrenamiento. Esto puede dar lugar a un proceso de ensayo y error para determinar una topología adecuada. NEAT es un ejemplo de red neuronal artificial con topología y pesos evolutivos (TWEANN), que intenta aprender simultáneamente los valores de los pesos y una topología apropiada para una red neuronal.

Para codificar la red en un fenotipo para el algoritmo genético (AG), NEAT utiliza un esquema de codificación directa, lo que significa que cada conexión y neurona se representa explícitamente. Esto contrasta con los esquemas de codificación indirecta, que definen reglas que permiten construir la red sin representar explícitamente cada conexión y neurona, lo que resulta en una representación más compacta.

El enfoque NEAT comienza con una red neuronal de alimentación directa, similar a un perceptrón , compuesta únicamente por neuronas de entrada y de salida. A medida que la evolución avanza mediante pasos discretos, la complejidad de la topología de la red puede aumentar, ya sea insertando una nueva neurona en una ruta de conexión o creando una nueva conexión entre neuronas (anteriormente desconectadas).

Convenciones en competencia

El problema de las convenciones en competencia surge cuando hay más de una forma de representar la información en un fenotipo. Por ejemplo, si un genoma contiene neuronas A , B y C y se representa como [ABC], si este genoma se cruza con un genoma idéntico (en términos de funcionalidad) pero ordenado [CBA], el cruce producirá descendientes con información faltante ([ABA] o [CBC]); de hecho, en este ejemplo se ha perdido 1/3 de la información. NEAT resuelve este problema rastreando el historial de genes mediante el uso de un número de innovación global que aumenta a medida que se agregan nuevos genes. Al agregar un nuevo gen, el número de innovación global se incrementa y se asigna a ese gen. Por lo tanto, cuanto mayor sea el número, más recientemente se agregó el gen. Para una generación particular, si ocurre una mutación idéntica en más de un genoma, a ambos se les asigna el mismo número; sin embargo, más allá de eso, el número de mutación permanecerá sin cambios indefinidamente.

Estos números de innovación permiten a NEAT emparejar genes que pueden cruzarse entre sí. [ 1 ]

Implementación

La implementación original de Ken Stanley se publica bajo la licencia GPL . Se integra con Guile , un intérprete de esquemas de GNU . Esta implementación de NEAT se considera el punto de partida básico convencional para las implementaciones del algoritmo NEAT.

Extensiones

rtNEAT

En 2003, Stanley ideó una extensión de NEAT que permite que la evolución ocurra en tiempo real, en lugar de mediante la iteración de generaciones, como hacen la mayoría de los algoritmos genéticos. La idea básica consiste en someter a la población a una evaluación constante con un temporizador de "vida útil" para cada individuo. Cuando expira el temporizador de una red, se examina su medida de aptitud actual para determinar si se encuentra entre las más bajas de la población; de ser así, se descarta y se reemplaza por una nueva red creada a partir de dos progenitores con alta aptitud. Se establece un temporizador para la nueva red y se la incorpora a la población para que participe en las evaluaciones continuas.

La primera aplicación de rtNEAT es un videojuego llamado Neuro-Evolving Robotic Operatives, o NERO. En la primera fase del juego, los jugadores despliegan robots en un entorno controlado y los entrenan según una doctrina táctica específica. Una vez entrenados varios robots, una segunda fase permite a los jugadores enfrentarlos en una batalla contra robots entrenados por otros jugadores, para comprobar la eficacia de su entrenamiento.

Poda por fases

Una extensión del algoritmo NEAT de Ken Stanley, desarrollada por Colin Green, añade la poda periódica de las topologías de red de las soluciones candidatas durante el proceso de evolución. Esta adición respondió a la preocupación de que el crecimiento automatizado ilimitado generaría una estructura innecesaria.

HiperNEAT

HyperNEAT está especializado en el desarrollo de estructuras a gran escala. Se basa originalmente en la teoría CPPN y es un campo de investigación activo.

cgNEAT

El NEAT de generación de contenido (cgNEAT) desarrolla contenido personalizado para videojuegos basado en las preferencias del usuario. El primer videojuego en implementar cgNEAT es Galactic Arms Race , un juego de disparos espaciales en el que las armas únicas del sistema de partículas evolucionan según las estadísticas de uso del jugador. [ 3 ] Cada arma del sistema de partículas del juego está controlada por un CPPN evolucionado , de forma similar a la técnica de evolución del programa de arte interactivo NEAT Particles .

odNEAT

odNEAT es una versión en línea y descentralizada de NEAT diseñada para sistemas multi-robot. [ 4 ] odNEAT se ejecuta a bordo de los propios robots durante la ejecución de tareas para optimizar continuamente los parámetros y la topología de los controladores basados ​​en redes neuronales artificiales. De esta forma, los robots que ejecutan odNEAT tienen el potencial de adaptarse a condiciones cambiantes y aprender nuevos comportamientos a medida que realizan sus tareas. El proceso evolutivo en línea se implementa según un modelo de islas distribuidas físicamente. Cada robot optimiza una población interna de soluciones candidatas (variación intra-isla), y dos o más robots intercambian soluciones candidatas cuando se encuentran (migración inter-isla). De esta forma, cada robot es potencialmente autosuficiente y el proceso evolutivo capitaliza el intercambio de controladores entre múltiples robots para una síntesis más rápida de controladores efectivos.

Véase también

Referencias

  1. 1 2 Kenneth O. Stanley y Risto Miikkulainen (2002). "Evolución de redes neuronales mediante topologías aumentadas". Evolutionary Computation 10 (2): 99-127
  2. Matthew E. Taylor, Shimon Whiteson y Peter Stone (2006). "Comparación de métodos evolutivos y de diferencia temporal en un dominio de aprendizaje por refuerzo". GECCO 2006: Actas de la Conferencia de Computación Genética y Evolutiva.
  3. Erin J. Hastings, Ratan K. Guha y Kenneth O. Stanley (2009). "Generación automática de contenido en el videojuego Galactic Arms Race". IEEE Transactions on Computational Intelligence and AI in Games, volumen 4, número 1, páginas 245-263, Nueva York: IEEE Press, 2009.
  4. Silva, Fernando; Urbano, Paulo; Correia, Luís; Christensen, Anders Lyhne (2015-09-15). "odNEAT: Un algoritmo para la evolución en línea descentralizada de controladores robóticos". Evolutionary Computation . 23 (3): 421– 449. doi : 10.1162/evco_a_00141 . hdl : 10071/10504 . PMID 25478664 . S2CID 20815070 .  

Bibliografía

  • Kenneth O. Stanley y Risto Miikkulainen (2002). "Evolución de redes neuronales mediante topologías de aumento" ( PDF) . Computación evolutiva . 10 (2): 99– 127. CiteSeerX 10.1.1.638.3910 . doi : 10.1162/106365602320169811 . PMID 12180173. S2CID 498161 .   
  • Kenneth O. Stanley y Risto Miikkulainen (2002). "Aprendizaje por refuerzo eficiente mediante topologías de redes neuronales evolutivas" (PDF) . Actas de la Conferencia de Computación Genética y Evolutiva (GECCO-2002) .
  • Kenneth O. Stanley; Bobby D. Bryant y Risto Miikkulainen (2003). "Redes neuronales adaptativas evolutivas con y sin sinapsis adaptativas" (PDF) . Actas del Congreso IEEE de Computación Evolutiva de 2003 (CEC-2003) .
  • Colin Green (2004). Búsqueda por fases con NEAT: alternancia entre complejización y simplificación (Informe).
  • Kenneth O. Stanley; Ryan Cornelius; Risto Miikkulainen; Thomas D'Silva y Aliza Gold (2005). "Aprendizaje en tiempo real en el videojuego NERO" (PDF) . Actas de la Conferencia sobre Inteligencia Artificial y Entretenimiento Digital Interactivo (AIIDE 2005) Documentos de demostración .
  • Matthew E. Taylor; Shimon Whiteson y Peter Stone (2006). "Comparación de métodos evolutivos y de diferencia temporal en un dominio de aprendizaje por refuerzo" (PDF) . GECCO 2006: Actas de la Conferencia de Computación Genética y Evolutiva .
  • Shimon Whiteson y Daniel Whiteson (2007). "Optimización estocástica para la selección de colisiones en física de altas energías" (PDF) . IAAI 2007: Actas de la decimonovena Conferencia Anual sobre Aplicaciones Innovadoras de la Inteligencia Artificial . arXiv : hep-ex/0607012 . Bibcode : 2006hep.ex....7012W . Archivado del original (PDF) el 28 de octubre de 2015.

Implementaciones

  • Página de usuarios de NEAT en Wayback Machine (archivada el 5 de diciembre de 2023)
  • Grupo de Investigación sobre Complejidad Evolutiva de la UCF en Wayback Machine (archivado el 18/06/2024) – Antiguo grupo de investigación de Ken Stanley
  • NERO: Operativos Robóticos Neuroevolutivos : un ejemplo de aplicación de rtNEAT
  • GAR: Carrera armamentística galáctica : un ejemplo de aplicación de cgNEAT
  • Picbreeder en Wayback Machine (archivado el 25/07/2011) – Arte colaborativo en línea generado por CPPNs evolucionado con NEAT
  • EndlessForms en Wayback Machine (archivado el 14/11/2018) : una versión 3D de Picbreeder, donde se evolucionan interactivamente objetos 3D codificados con CPPN y evolucionados con NEAT.
  • Blog de BEACON: Introducción a la evolución: Neuroevolución en la Wayback Machine (archivado el 24/12/2024)
  • MarI/O - Aprendizaje automático para videojuegos , un vídeo de YouTube que muestra una implementación del aprendizaje NEAT para jugar a Super Mario World.
  • Gekko Quant: Evolución de redes neuronales mediante topologías de aumento en Wayback Machine (archivado el 10/02/2022) – Una serie de tutoriales visuales sobre NEAT, que incluye la resolución del problema clásico de equilibrio de postes utilizando NEAT en R.
  • La inteligencia artificial aprende el nivel de Mario en solo 34 intentos. NEAT explicado a través del programa MarI/O.