• No se han encontrado resultados

5.1 Conjuntos de terminales y funciones

5.1.3 Optimización de los pesos mediante el uso de AA.GG

Una vez el sistema ha sido configurado, bien sea mediante el uso de árboles o grafos como forma de codificación, es posible ampliarlo mediante un proceso de optimización de los pesos de las conexiones utilizando para ello un AG.

Este proceso es genérico y puede aplicarse para cualquier tipo de optimización de constantes en cualquier tipo de expresiones de PG [Cagnoni 2005]. En este caso, se utilizará en los valores de los pesos de las conexiones de las redes representadas por cada individuo de PG.

Para utilizar este proceso, se elimina del conjunto de funciones los operadores aritméticos. De esta forma, el proceso evolutivo se inicia de la misma forma; es decir, se crean las constantes iniciales de forma aleatoria en el rango seleccionado. Sin embargo, una vez evaluada esta población inicial, esta sufre un proceso de transformación: se toma un porcentaje Fsel de individuos de la población (los mejores) y, a cada uno de ellos, se le aplica un proceso de optimización de constantes. Este proceso de

RNA

2-Neurona 2-Neurona

2-Neurona

NE_1 NE_1

3-Neurona

NE_2 3-Neurona NE_4

NE_3 NE_2 NE_3 x1 x2 x3 x4

optimización se aplica, como se ha dicho, tras la creación de la primera población, pero también tras la ejecución de Nint generaciones tras la última aplicación.

El proceso de optimización que se aplica se basa en tomar los pesos de las conexiones del individuo (que representa una RNA) y optimizar estos valores. Esto se realiza mediante la creación de un AG con codificación real, en el que cada gen representa el valor de un peso. Este AG se ejecuta y, como consecuencia de ello, se genera un proceso evolutivo de refinamiento de los pesos de la red. Tras la ejecución del mismo, el individuo de PG, es decir, la red, tomará unos valores de pesos distintos, optimizados, con un valor de ajuste mejor.

La evaluación de cada individuo del AG es similar a la evaluación de cada individuo de PG. En el caso del AG se toma el cromosoma que representa los pesos de las conexiones, se establecen los valores de estos pesos en la red que está siendo optimizada, y se evalúa la misma con el conjunto de entrenamiento. Por lo tanto, el valor del ajuste devuelto es el mismo que se calcula para los individuos de PG.

De una forma más esquemática, el proceso de optimización de constantes aplicado es el siguiente:

1. Se crea un AG cuya longitud del cromosoma será la del número de pesos que

tiene la red representada por el individuo seleccionado. Cada uno de los genes representa un peso de la red.

2. Se inicializa la población del AG, de tamaño Nga individuos. Esto se realiza de la

siguiente forma:

9 Se introduce dentro de la población vacía el individuo representado

por los pesos ya conocidos del individuo de PG que se está optimizando. Igualmente, también se conoce su ajuste, con lo que también se establece, por lo que no hace falta evaluarlo. Es decir, se inserta como individuo inicial del AG el conjunto de pesos ya existente.

9 Se generan de forma aleatoria los Nga-1 individuos restantes de la

población y se evalúan. La función de evaluación será la explicada anteriormente, es decir, establecer como pesos de las conexiones los valores de los genes del individuo genético a evaluar y devolver

como ajuste el resultado de evaluar la red en el conjunto de entrenamiento.

3. Se ejecuta el algoritmo genético de forma tradicional. El algoritmo se ejecuta un

total de Ngagen generaciones o hasta que no hay cambio en el mejor ajuste durante 5 generaciones.

4. Una vez que finaliza la ejecución del algoritmo genético se toma, del mejor

individuo encontrado durante este proceso, los valores de los genes y se establecen en las correspondientes constantes del individuo de PG (es decir, en el árbol o grafo) que representan los pesos de la red. Es decir, las mejoras halladas por el AG se guardan dentro del individuo de PG. Por lo tanto, este proceso de optimización puede verse como una estrategia “lamarckiana” [Ku 1997] [Lamarck 1809], en el que los cambios realizados persisten. También se cambia el valor del ajuste de ese individuo de PG al ajuste del individuo del AG. Este proceso de optimización se realiza a un porcentaje pequeño (Fsel) de individuos de PG. Estos individuos tomados serán los mejores de la población, teniendo cuidado de no tomar ninguno que esté repetido. Una vez que ha finalizado la optimización, prosigue la ejecución del algoritmo de PG. Tras la ejecución de Nint generaciones de PG, este proceso se repite nuevamente con la población correspondiente de PG.

Por lo tanto, existen cuatro parámetros fundamentales que guían este proceso:

• Nint. Número de generaciones de PG que deben de pasar entre dos ejecuciones

del proceso de optimización.

• Fsel. Porcentaje de individuos de PG al cual se aplica la optimización.

• Nga. Tamaño de la población del AG.

• Ngagen. Número máximo de generaciones que se ejecuta el AG. El algoritmo se

para tras la ejecución de Ngagen generaciones, o tras 5 generaciones sin mejora en el mejor individuo. Experimentalmente se ha observado que este parámetro no ejerce ninguna influencia sobre el proceso, puesto que la mayoría de las veces no se alcanzan las Ngagen generaciones para parar el proceso porque siempre ocurren 5 generaciones sin mejora en el ajuste antes de llegar a ese punto, incluso para valores muy bajos de este parámetro (menores incluso que 15 ó 10). Si se toman

valores menores, lo que ocurre es que se paraliza la búsqueda de constantes antes de que esta finalice, con lo cual el proceso de optimización resulta incompleto.

Documento similar