Entrenando una Red Neuronal

Entradas Archivos Wallpaper Problemas

Introducción

Esta entrada habla sobre el algoritmo NEAT que no solo hace que la red aprenda los pesos si no también su arquitectura

NeuroEvolution of Augmenting Topologies (NEAT)

En una red NEAT se usa dags (directed acyclic graphs) para representar las redes neuronales, un dags en un grafo en el cual no hay ciclos, este tipos de redes no están totalmente conectadas, por lo que se usa ordenamiento topologico para determinar el orden en el que se llevarán a cabo las operaciones, pues se ordenan los nodos de acuerdo a su antecesor de tal manera que el descendiente siempre vaya después del precedente

Ordenamiento Topologico Grafo Ordenado

La justificacion para este acercamiento surge del analisis de como la estructura de una red neuronal afecta el comportamiento de esta y aunque una red neuronal totalmente conectada puede aproximar cualquier función, la topologia afecta en la rapidez y prescicion de esta

Luego las operaciones son las normales, siguiendo el orden definido a cada nodo de entrada se le asigna un valor según el valor de entrada, se le suma un sesgo y luego se le es aplicado una función de activacion, luego a cada valor de cada nodo es multiplicado por el peso de su connecion con el siguiente nodo correspondiente y este valor es sumado a el valor de entrada del siguiente nodo

Entrenamiento

El objetivo de este entrenarmiento es dad una poblacion de N elementos crear una poblaciónn de N+1 candidatos que funcionen mejor que la poblacion anterior, consiste en tres etapas:

Evaluación

A cada agente/candidato hace la tarea que le hes asignada y se le asigna una evaluacion según una función de fitness la cual evalua al agente en dicha tarea

Selección

Se selecciona a x% de agentes de la población que hallan tenido la mejor puntuacion y se agregan a la siguiente poblacion sin ningún cambio

Mutación

El siguiente porcentaje de la poblacion es escojido con una probabilidad según su evaluacion, además de sufrir alguna mutacion, ya sea una nueva conneccion, un nuevo nodo o una modficacion a los pesos

Evaluacion

En este ejemplo se tomo como función de aptitud (fitness) cuanto tiempo en segúndos podian mantener en equilibrio un pendulo sobre una linea y cada agente tiene 100 segúndos para intentar tener la mayor puntuacion, los valores de salida es la velocidad del carro y los valores de entrada son la posición, la dirección en x, la dirección en y la velocidad angular

Cambios a la función de aptitud

En la experimentacion se encontro que aunque se cumplia con el propósito de mantener el pendulo en equilibrio este oscilaba mucho, por lo que se penso en cambiar la función de aptitud a ahora tomar en cuenta la velocidad angular del pendulo. En este caso se encontro que se logro estabilizar el movimiento del carro

Fuentes

How to train simple AIs How to train simple AIs to balance a double pendulum

@article{stanley:ec02, title={Evolving Neural Networks Through Augmenting Topologies}, author={Kenneth O. Stanley and Risto Miikkulainen}, volume={10}, journal={Evolutionary Computation}, number={2}, pages={99-127}, url=“http://nn.cs.utexas.edu/?stanley:ec02", year={2002} }