• No se han encontrado resultados

Entrenamiento con optimizador global Algoritmo Genético

INTRODUCCIÓN: MOTIVACIÓN, CONTEXTO Y OBJETIVOS ESTRUCTURA

1.8 Entrenamiento con optimizador global Algoritmo Genético

Merece la pena detenerse un momento a recapitular sobre los métodos de optimización propuestos. Todos ellos comparten la naturaleza local en la búsqueda del mínimo. Es decir, tratan de encontrar el mínimo más cercano a la posición de cada iteración. Así, si la función de coste tuviera un solo mínimo, todos ellos ofrecerían la solución óptima. No obstante, de forma general, deberíamos considerar que la función de coste puede tener multitud de mínimos locales. En ese caso, los algoritmos presentados hasta ahora nos darían la posición del mínimo más cercano. Este valor podría ser suficiente en términos de precisión para dar por entrenada a una red MLP; pero también podría darse el caso de que el mínimo no

1.8 Entrenamiento con optimizador global. Algoritmo Genético

ofreciera la precisión requerida. En esas circunstancias, si dejamos al optimizador activo en su búsqueda, el resultado no mejorará, ya que el algoritmo habrá quedado atrapado en un mínimo local.

La práctica muestra que este problema es bastante habitual al entrenar redes MLP, por lo que se hace necesario pensar en estrategias y algoritmos que mitiguen sus efectos nocivos. Entre las soluciones que se pueden proponer está el uso de optimizadores globales. Los optimizadores globales pretenden encontrar el mínimo absoluto de una función dada. Suelen ser procesos iterativos con una componente estocástica alta. El número de iteraciones necesarias para alcanzar el mínimo suele ser varios órdenes de magnitud mayor que el número de iteraciones que necesita cualquiera de los métodos locales en converger. Además, no hay una regla que asegure que el valor encontrado sea el mejor posible. Pese a ello, a partir de su uso, se encuentra que los resultados que ofrecen aportan un ajuste bueno a la función de coste. En concreto, comentaremos la aplicación de los algoritmos genéticos en la fase de entrenamiento de una red MLP.

Los algoritmos genéticos (GAs, [29]) trabajan con una población de potenciales soluciones, aplicando el principio de supervivencia del mejor adaptado, para obtener (se espera) cada vez mejores aproximaciones a la solución buscada. En cada iteración, se genera un nuevo set de aproximaciones, de acuerdo al proceso de elegir a los individuos de la población según su error (ajuste o fitness) y transformarlos de acuerdo a ciertos operadores (mutación, cruce,…). Este proceso lleva a la evolución de los individuos que mejor se ajustan a la solución de una manera análoga a la selección natural.

El código general de todo GA puede resumirse como se muestra en el Algoritmo 2.3, presentado por Goldberg, [29], donde P representa a la población de individuos. Pasemos a comentar los aspectos más relevantes del algoritmo presentado.

La población se entiende como el conjunto de potenciales soluciones. Típicamente, el número de individuos en la población está entre 30 y 100, aunque esto depende del problema. La representación más común de los individuos, compuestos por cromosomas, es la representación binaria: cada individuo se compone de una cadena de 0s y 1s, haciendo uso del código binario. No obstante, hay otras opciones, como la codificación directa de los individuos como valores reales. De hecho, algunos autores, como Wright, [30], o Michalewicz, [31], atribuyen ciertas ventajas al uso de valores reales cuando se trata de optimizar funciones, ya que, por ejemplo, se incrementa la eficiencia, al no tener que pasar de binario a real.

Capítulo 1: Redes Neuronales Artificiales Algoritmo 2.3. Procedimiento GA Comenzar t=0 inicializar P(t) evaluar P(t) mientras no fin hacer t=t+1 seleccionar P(t) de P(t-1) producir pares en P(t) evaluar P(t) Si t>máximo o fitness<umbral Fin Fin hacer Fin Procedimiento GA

La función objetivo, por su parte, nos da la medida del ajuste de cada individuo al problema: cuanto mejor ajuste, mayor será la probabilidad de que dicho individuo sobreviva y sea utilizado para engendrar descendencia. Para mejorar la optimización, además de la función objetivo se suele usar una función de ajuste en la toma de decisiones, [32]. Esta función de ajuste depende de la función objetivo y de otros parámetros del problema. Se podría expresar como )) ( E ( g ) ( F w = av w (1.101)

donde F es la función de ajuste, y Eav es la función de coste en el entrenamiento de redes MLP. La función g será la que relacione F y Eav. Uno de los tipos más usuales de función de ajuste es ∑ = = N i av i j av j ind ) ( E ) ( E ) ( F 1 w w w (1.102)

donde Nind es el tamaño de la población y wi es el fenotipo (valor real) del individuo i. Son posibles otras opciones para F, como dependencia lineal entre F y Eav,.

La selección es el proceso que determina el número de veces, o ensayos (trials) que un individuo en particular se elige para generar descendencia (offspring). Para obtener dicho número, se suele recurrir a métodos probabilísticos, como el método de la ruleta. En el método de la ruleta, a cada individuo de la población se le asigna un intervalo del rango [0,1].

1.8 Entrenamiento con optimizador global. Algoritmo Genético

Después, se obtiene un valor del intervalo [0,1] de manera aleatoria, que determinará el individuo seleccionado. Dentro de este tipo de selección, encontramos el muestreo estocástico con reemplazamiento (SSR), el muestro estocástico con reemplazamiento parcial

(SSPR) y otras variantes, como el muestreo estocástico universal (SUS). El método SUS difiere en el SSR en que toma N puntos del intervalo [0,1] antes de tomar una decisión sobre el individuo a seleccionar.

La forma más sencilla de conseguir nuevos cromosomas es la recombinación (cross-over). Supongamos que tenemos los individuos x1 y x2, definidos como

[

100011011

]

1 , , , ,,, ,, x = (1.103)

[

011001010

]

2 ,,, ,, ,, x = (1.104)

donde la longitud de la cadena es 9 (en general, l). La recombinación consiste en encontrar un valor entero, k, de 0 a l-1, a partir del cual los dos individuos intercambiarán sus valores. Según nuestro ejemplo, (1.103) y (1.104), para k=4:

[

1000 401010

]

1 , , , , ,, ,, x = k= (1.105)

[

0110 411011

]

2 ,,, ,,, ,, x = k= (1.106)

La idea que subyace en la recombinación es que la capacidad de ajuste de un individuo está en sus cromosomas. Manteniendo la parte de los cromosomas que más interviene en la minimización del error, se obtendrá una descendencia mejor. La recombinación aquí expuesta es la más sencilla. También es posible encontrar esquemas de recombinación donde se intercambian varias zonas de cromosomas, incluso no adyacentes, [33], [34]. Otro tipo de recombinación famoso es la recombinación intermedia, [35], que produce la descendencia alrededor y entre los individuos padres.

Por otra parte, la mutación es la situación por la que un individuo al azar cambia el valor de un bit de 0 a 1, o viceversa.

Una vez que una nueva descendencia se ha creado, debemos volver al principio del bucle del algoritmo para proceder a su evaluación. El proceso de optimización termina si el número de iteraciones fijado se ha alcanzado o si el error obtenido se ha satisfecho.

Aunque las operaciones involucradas en el desarrollo de un GA se han expuesto basándonos en individuos binarios, es posible realizar toda la implementación con valores reales directamente, [30], [36]. Para el caso de entrenamiento de redes neuronales, cada individuo es un vector con los potenciales valores óptimos. Supongamos dos individuos w1 y w2, definidos como

(

w11,w12,...,w1n

)

1=

Capítulo 1: Redes Neuronales Artificiales

(

w12,w22,...,wn2

)

2=

w (1.108)

A partir de ellos obtenemos la siguiente descendencia, w’1 y w’2, por recombinación

(

w ,w ,...,w ,w ,...,w

)

'1= 11 12 1q q2+1 n2 w (1.109)

(

w ,w ,...,w ,w ,...,w

)

'2= 12 22 q2 1q+1 1n w (1.110)

donde q se debe elegir aleatoriamente por algún método de los comentados.

Por otra parte, la mutación con individuos reales se podría hacer modificando el valor de una componente del vector w1 o w2, elegida al azar, a otro valor aleatorio, [31], [38].