Revolución IA

La Inteligencia Artificial está llamada a protagonizar la próxima Revolución tecnológica

Inicio Sobre Revolucionia Temas Para saber más Contacto

Back-Propagation: modificaciones comunes

Fernando P.    15/12/2017

Temas:  Fundamentos

En una serie de artículos anteriores describíamos los fundamentos del algoritmo Back-Propagation para entrenar perceptrones multicapa o, de forma más genérica, redes neuronales artificiales orientadas hacia adelante y también dedicamos otro artículo a las posibles estrategias para entrenamiento.

Siendo el algoritmo Back-Propagation una implementación de un proceso general de optimización de una función multivariable según un esquema de descenso del gradiente, tenemos todos los problemas asociados a este tipo de técnicas, sobre todo relativos a la velocidad de convergencia. En este artículo describimos un par de modificaciones del algoritmo que ayudan en este sentido.

Optimización usando descenso del gradiente
El descenso de gradiente es una técnica que, a grandes rasgos, consiste en partir de un punto arbitrario del dominio de la función objetivo e ir moviéndose por el mismo, a base de movimientos discretos, buscando siempre un dirección de descenso del gradiente de la función. Si la función tiene mínimos locales terminaremos localizando uno de ellos con esta técnica.

Los problemas aparecen cuando la función objetivo tiene una forma muy complicada, con variaciones grandes y repetitivas en regiones pequeñas del dominio. Al movernos usando pasos discretos, corremos el riesgo de que, en el espacio entre dos pasos, la función haya cambiado mucho, con lo que terminaremos despistados, yendo hacia adelante y hacia atrás, o incluso puede suceder que haya un mínimo local en ese espacio tan pequeño.

El teoría, si el tamaño de los movimientos discretos que realizamos es lo suficientemente pequeño (en el límite hacia cero) podremos seguir el gradiente de la función sin problemas. Pero movimientos pequeños suponen que podemos necesitar cantidades enormes de iteraciones (tiempo) para llegar a un mínimo local a nada que este no se halle muy cerca de nuestro punto inicial.

Es decir, tenemos una disyuntiva entre ser capaces de seguir con precisión los vaivenes de la función o poder localizar un mínimo local en un tiempo razonable.

Este problema se presenta habitualmente con redes neuronales artificiales porque el elevado número de variables que tiene la función de coste que optimizamos (los pesos sobre las conexiones entre neuronas) hace que esta función tenga tendencia a ser muy complicada.

Back-Propagation usando término de momento Back-Propagation con término de momento
Una modificación muy común al algoritmo Back-Propagation consiste en alterar la Regla Delta Generalizada para añadir un nuevo término que haga más robusto el proceso de convergencia del algoritmo.

El término que añadimos se denomina momento, por analogía con el concepto de inercia en Física.

Se trata de dotar al proceso de convergencia de una especie de inercia que evite que el algoritmo se despiste si se encuentra con zonas del dominio en las que la función de coste es muy complicada en escalas menores que el tamaño de paso que usamos (velocidad de aprendizaje en la Regla Delta Generalizada).

Con la modificación de momento, la Regla Delta Generalizada queda así:

Δw(t) = -η⋅∂E(t) / ∂w + α⋅Δw(t-1)

Donde  t  es la iteración actual,  E  es la función de coste de la red
w  es un peso cualquiera de la red y  α  es un coeficiente entre 0 y 1

Es decir, si en la iteración actual nos hemos metido en una zona complicada de la función de coste y el gradiente varía de forma aparentemente caótica, usamos el gradiente de la iteración anterior como factor de inercia que nos siga empujando en la dirección que, en prinicipio, nos conviene.

Naturalmente, cuanto más grande es  α  más inercia tiene el proceso. Elegir este valor viene a ser un proceso de ensayo y error, como sucede con la velocidad de aprendizaje  η.

Una ventaja de usar un término de momento es que la elección de la velocidad de aprendizaje ya no es tan complicado, porque el factor de inercia que añadimos tiende a corregir errores derivados de valores altos de la velocidad de aprendizaje. De alguna forma, el término de momento tiene tendencia a centrar el proceso de convergencia en una dirección clara de descenso del gradiente y evita un comportamiento errático del proceso.

La ventaja de no depender tanto de la velocidad de aprendizaje es que podemos elegir un valor relativamente alto, lo que significará movimientos largos de una iteración a otra y con ello tendremos la posibilidad de llegar o, al menos, acercarnos a un mínimo local de la función de coste con pocas iteraciones.

Back-Propagation usando desvanecimiento de pesos
Otro problema que se plantea habitualmente a la hora de crear y entrenar una red con el algoritmo Back-Propagation consiste en que es fácil crear una red demasiado grande en la que haya pesos que apenas influyen en el comportamiento de la misma, pero que nos generan una carga computacional considerable en el proceso del algoritmo Back-Propagation.

En general, no es deseable tener una red sobredimensionada, genera más problemas que ventajas. Pero no hay formas exactas de conocer cómo debemos dimensionar una red para un problema dado. Es un tema complejo que merece un artículo aparte.

Si estamos en la situación de tener una red que podría estar sobredimensionada, nos interesaría conocer qué pesos no son relevantes en la misma para poder fijarlos a cero y sacarlos de todo el proceso de cálculo del algoritmo Back-Propagation.

Una forma de conseguir esto consiste en la modificación del algoritmo denominada desvanecimiento de pesos. Al igual que con el término de momento, consiste en una modificación a la Regla Delta Generalizada que, en este caso, tiene la siguiente forma:

Δw(t) = -η⋅∂E(t) / ∂w - ρ⋅Δw(t)

Donde  t  es la iteración actual,  E  es la función de coste de la red
w  es un peso cualquiera de la red y  ρ  es un coeficiente entre 0 y 1

La modificación propuesta funciona empujando cada peso a valor cero en cada iteración, de forma que sólo los pesos que son relevantes en la red y tienen un gradiente significativo para la función de coste conseguirán zafarse de ese empuje y se mantendrán a valor distinto de cero. Los pesos que son poco relevantes tendrán tendencia a estar muy cerca de cero y podrán ser identificados fácilmente.

El factor  ρ  modula la fuerza con la que forzamos el desvanecimiento de los pesos, cuanto más grande sea, más pesos tenderán a desvanecerse en la función de coste. Al igual que sucede con la modificación usando término de momento, la elección de un valor adecuado para  ρ  vendrá determinado por ensayo y error.

Esta modificación al algoritmo nos puede ayudar a acelerar la convergencia del algoritmo en cuanto que puede aliviar la carga computacional del mismo si identificamos pesos que se desvanecen y los sacamos de la red.

Recomendaciones sobre ambas modificaciones
En general, no es buena idea aplicar ambas modificaciones a la vez al algoritmo Back-Propagation. Se puede probar que ambas modificaciones son eficaces con los coeficientes adecuados, pero sumar ambas modificaciones puede dar lugar a efectos extraños.

El desvanecimiento de pesos nos puede servir para identificar una red sobredimensionada, que es un problema distinto al problema de convergencia normal asociado al descenso de gradiente.

Lo ideal es usar el desvanecimiento de pesos para detectar sobredimensionamiento con objeto de poder redimensionar la red a un tamaño más pequeño y entonces usar la modificación con el término de momento de forma que consigamos velocidad por el lado de haber simplificado la red y por la posibilidad de usar velocidades de aprendizaje altas que serán compensadas por el factor de inercia introducido.



La técnica general del descenso de gradiente para problemas de optimización suele tener problemas de convergencia que se pueden mitigar con modificaciones a la idea base. Algunas de estas modificaciones son aplicables al algoritmo Back-Propagation



Para saber más:

Libro de Russell Reed y Robert J Marks dedicado a redes neuronales artificiales orientadas hacia adelante. El capítulo 5 introduce el algoritmo Back-Propagation e introduce las dos modificaciones descritas aquí, para las que tiene una discusión muy detallada en sucesivos capítulos del libro.



 

Inicio Powered by NetBSD
 
HTML5
 
En general, todo el contenido de este sitio web es original, salvo referencias o enlaces a otros sitios web y citas o reproducciones expresamente presentadas como tales.

No está permitida la reproducción ni la copia del contenido de este sitio web sin el permiso expreso de la propiedad del mismo.

Este sitio web no utiliza cookies ni ningún otro mecanismo para almacenar información en los navegadores de los visitantes ni para realizar seguimiento de los mismos.

2017,2018 Revolucionia.net
Sobre Revolucionia
Temas
Para saber más
Contacto