2.3 BACKPROPAGATION

2.3.3.4 Algoritmo de Levenberg - Marquardt:[] Este algoritmo es una modificación del método de Newton, el que fue diseñado para minimizar funciones que sean la suma de los cuadrados de otras funciones no lineales; es por ello que el algoritmo de Levenberg - Marquardt, tiene un excelente desempeño en el entrenamiento de redes neuronales donde el rendimiento de la red esté determinado por el error medio cuadrático.

El método de Newton para optimizar el rendimiento e(x) es:

(2.3.48)

(2.3.49)

Si asumimos que e(x) es una suma de funciones cuadráticas:

(2.3.50)

El gradiente puede ser escrito entonces en forma matricial:

(2.3.51)

Donde J(x) es la matriz Jacobiana.

Ajustando el método de Newton, obtenemos el algoritmo de Levenberg Marquardt

(2.3.52)

o

(2.3.53)

La nueva constante determina la tendencia el algoritmo, cuando se incrementa, este algoritmo se aproxima al algoritmo de pasos descendientes para ratas de aprendizaje muy pequeñas; cuando se decrementa este algoritmo se convierte en el método de Gauss - Newton

El algoritmo comienza con un valor pequeño para , por lo general 0.01, si en ese paso no se alcanza el valor para e(x) entonces el paso es repetido con multiplicado por un factor . Si se ha escogido un valor pequeño de paso en la dirección de paso descendiente, e(x) debería decrecer. Si un paso produce un pequeño valor para e(x), entonces el algoritmo tiende al método de Gauss - Newton, el que se supone garantiza una rápida convergencia. Este algoritmo genera un compromiso entre la velocidad del método de Gauss-Newton y la garantía de convergencia del método de paso descendiente.

Los elementos de la matriz Jacobiana necesarios en el algoritmo de Levenberg-Marquardt son de este estilo:

(2.3.54)

Donde x es el vector de parámetros de la red, que tiene la siguiente forma:

(2.3.55)

Para utilizar este algoritmo en las aplicaciones para redes multicapa, se redefinirá el término sensitividad de forma que sea más simple hallarlo en cada iteración.

(2.3.56)

Donde h=(q-1)SM + k

Con la sensitividad definida de esta manera, los términos de la matriz Jacobiana pueden ser calculados más fácilmente:

(2.3.57)

y para las ganancias:

(2.3.58)

De esta forma, cuando la entrada pQ ha sido aplicada a la red y su correspondiente salida aMQ ha sido computada, el algoritmo Backpropagation de Levenberg-Marquardt es inicializado con:

(2.3.59)

Cada columna de la matriz SMQ debe ser propagada inversamente a través de la red para producir una fila de la matriz Jacobiana. Las columnas pueden también ser propagadas conjuntamente de la siguiente manera:

(2.3.60)

La matrices sensitividad total para cada capa en el algoritmo de Levenberg-Marquardt son formadas por la extensión de las matrices computadas para cada entrada:

(2.3.61)

Para cada nueva entrada que es presentada a la red, los vectores de sensitividad son propagados hacia atrás, esto se debe a que se ha calculado cada error en forma individual, en lugar de derivar la suma al cuadrado de los errores. Para cada entrada aplicada a la red habrá SM errores, uno por cada elemento de salida de la red y por cada error se generara una fila de la matriz Jacobiana.

Este algoritmo puede resumirse de la siguiente manera:

  1. Se presentan todas las entradas a la red, se calculan las correspondientes salidas y cada uno de los errores según
  2. (2.3.62)

    se calcula después, la suma de los errores cuadrados para cada entrada e(x)

  3. Se calculan las sensitividades individuales y la matriz sensitividad total y con estas, se calculan los elementos de la matriz Jacobiana.
  4. Se obtiene
  5. Se recalcula la suma de los errores cuadrados usando . Si esta nueva suma es más pequeña que el valor calculado en el paso 1 entonces se divide por , se calcula y se regresa al paso 1. Si la suma no se reduce entonces se multiplica por
y se regresa al paso 3.

El algoritmo debe alcanzar convergencia cuando la norma del gradiente de

(2.3.63)

sea menor que algún valor predeterminado, o cuando la suma de los errores cuadrados ha sido reducida a un error que se haya trazado como meta.

El comportamiento de este algoritmo se visualiza en la figura 2.3.12, la cual muestra la trayectoria de convergencia con y

Figura 2.3.12 Trayectoria del algoritmo Levenberg-Marquardt

Como puede verse, este algoritmo converge en menos iteraciones que cualquier método discutido anteriormente, por supuesto requiere mucha más computación por iteración, debido a que implica el cálculo de matrices inversas. A pesar de su gran esfuerzo computacional sigue siendo el algoritmo de entrenamiento más rápido para redes neuronales cuando se trabaja con un moderado número de parámetros en la red, si el número de parámetros es muy grande utilizarlo resulta poco práctico.