Usando Algoritmos Geneticos en Redes Neuronales (Generation5.org)

Inteligencia Artificial

Este ensayo es una introducción muy básica a cómo usar algoritmos genéticos para ayudar a entrenar redes neuronales. También he escrito un programa que enseña como usar algoritmos genéticos para optimizar una red neuronal para acompañar este ensayo que usa algoritmos genéticos para hacer evolucionar una red XOR.


Haciendo evolucionar los pesos


Este es el uso más común de un algoritmo genético en conjunción con una red neuronal. Ya que los algoritmos genéticos son excelentes en la búsqueda en un espacio de estados, la búsqueda de los pesos para una red neuronal es una aplicación ideal.

Simplemente construye una algoritmo genético que haga evolucionar una cadena de numeros en coma flotante (dentro del rango que especifiques) que puedan ser usados como pesos para la red. El mayor problema al usar un GA es especificar el rango de pesos. Como normalmente no conocemos el rango podemos hacer una estimación, y usar un sistema de prueba y error para corregir/optimizar los pesos. Generalmente los pesos de las redes no deben ser demasiado grandes - por ejemplo, los pesos de la red XOR no se hacen mayores de 3 en valor absoluto .

Otro problema con los algoritmos genéticos y redes neuronales es figurarse el método apropiado para reproducir y cruzar los pesos. Todo depende de como hayas configurado los pesos. Volviendo a nuestro ejemplo de la red XOR, la red es pequeña y los pesos son fácilmente representables en una tabla de 3x3.

Imagen:Generation5.xorweights.gif

m_fWeights[3][3]

0 0 0
0 0 0
0 0 0

Para este tipo de configuración, intercambio grupos de pesos. En el programa XORGA, selecciono dos ejemplos de población, uno de la mitad con valor de error bajo (LE), y el otro de la mitad con valor de mayor error (HE). Entonces le doy a HE los pesos de LE para la capa final (los pesos azules en el diagrama superior), y lo retornamos a la población.

Aún así si tu red neuronal es mucho más complicada, entonces tu representación de pesos no será así de sencilla. De todas maneras decidas como decidas hacerlo, es recomendable que mantengas los pesos agrupados, de otra manera los pesos resultantes no valdrán más que si fueran aleatorios.

La mutación es un operador genético que debes considerar. En el programa de ejemplo, existe una posibilidad de mutación alta (10%), y entonces los pesos son alterados en un valor entre -1 y 1.

Cuando usarlo

Los algoritmos genéticos son una opción, pero no son siempre de ninguna opción la mejor opción. El algoritmo genético es mucho más lento que la propagación hacia atrás (back-propagation) cuando se aplica al problema XOR.  El GA consigue mejores resultados que el ejemplo de BP usado:

Back-Propagation:
0,0 = 0.0494681
0,1 = 0.955633
1,0 = 0.942529
1,1 = 0.0433488

Genetic Algorithm:
0 xor 0 = 2.47602e-005
0 xor 1 = 0.997028
1 xor 0 = 0.999292
1 xor 1 = 0.010474


El algoritmo genético encuentra resultados más exactos, pero el algoritmo de propagación hacia atrás es casi instantáneo, cuando el algoritmo genético tardará entre 5 y 20 segundos (usando un ordenador a 233Mhz).


Haciendo evolucionar la Arquitectura


Una gran cantidad de investigación se ha centrado en usar técnicas evolutivas para hacer evolucionar la mejor arquitectura (de forma parecida a nuestros propios cerebros). Un método sencillo es usar una matriz booleana de NxN, donde N es el número de neuronas en la red. Cualquier lugar de la matriz hace referencia a una conexión entre la neurona X y la neurona Y. Por ejemplo, para red XOR:

Imagen:Generation5.xornumber.gif

1 2 3 4 5
1 0 0 1 1 0
2 0 0 1 1 0
3 0 0 0 0 1
4 0 0 0 0 1
5 0 0 0 0 0


Este es un método muy simple, y se convierte en ineficiente para las grandes redes a las que la optimización se aplica. Para más información ver el libro de Melanie Mitchell An Introduction to Genetic Algorithms.


Conclusiones


Estos son sólo dos usos de los GAs en las redes neuronales - otras áreas incluyen minimizar funciones, evitar mínimos locales y otras técnicas de "ajuste".
Recuerda que se puede hacer evolucionar cualquier parámetro mediante un algoritmo genético, pero cuanto afectará el rendimiento de la red varia de un parámetro a otro - los pesos son obviamente los más importantes. Recuerda, usa solo algoritmos genéticos cuando otros métodos de entrenamiento resulten ineficientes, poco prácticos o creas que los GAs proveerán una ventaja sobre los otros métodos.

Submitted: 31/05/2000

Article content copyright © James Matthews, 2000.


Obtenido de "http://vidaartificial.com/index.php?title=Usando_Algoritmos_Geneticos_en_Redes_Neuronales_%28Generation5.org%29"

Esta página ha sido visitada 5.578 veces. Esta página fue modificada por última vez el 03:58 9 ene, 2006.


Categorías: Inteligencia Artificial | Algoritmos Genéticos | Generation5.org
Versión para imprimir | Disclaimers