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: estrategias para mejora del algoritmo

Fernando P.    24/01/2018

Temas:  Fundamentos

A lo largo de varios artículos hemos descrito el algoritmo Back-Propagation para el entrenamiento supervisado de perceptrones multicapa. Incluso lo hemos considerado desde el punto de vista de su rendimiento, visto como una implementación de la idea general de descenso del gradiente.

Pero entrenar perceptrones no es algo que siempre se pueda hacer sin problemas. No hay garantía de que vayamos a conseguir algo concreto y el algoritmo Back-Propagation no es algo mágico. Existen varias cuestiones que se pueden mejorar en cada implementación del algoritmo para problemas concretos. Se trata de cuestiones que no son imprescindibles para usar el algoritmo, pero que son importantes para resolver problemas complejos.

Aquí vamos a hacer un sumario de todas estas cuestiones de interés que nos van a permitir extraer todo el potencial del algoritmo. En artículos sucesivos se irán estudiando cada una de estas cuestiones de forma detallada.

Tiempo de entrenamiento
Cuando veíamos el rendimiento del algoritmo, decíamos que su complejidad algorítmica era del orden de  O(W), donde  W  es el número de pesos de la red.

Pero esta complejidad se refiere a la actualización de los pesos en una iteración y en un caso del conjunto de entrenamiento. Igual que ocurre en optimización clásica, es normal que el algoritmo necesite muchas iteraciones para localizar un mínimo local de la función de error y, por otro lado, la cantidad de operaciones que vamos a necesitar para actualizar los pesos en una iteración viene dada por el número de casos del conjunto de entrenamiento.

Teniendo en cuenta todo esto, es fácil que el tiempo total de entrenamiento de una red usando el algoritmo Back-Propagation escale en el orden de  O(W3).

No se trata de una complejidad exponencial pero ciertamente es fácil que el entrenamiento de una red de cierto tamaño llegue a ser bastante lento.
Back-Propagation: estrategias para mejora del algoritmo
Este problema de velocidad no es exclusivo del algoritmo Back-Propagation. En optimización clásica es facil tropezarse con problemas que cuestan mucho de resolver incluso con algoritmos refinados.

La ventaja del algoritmo Back-Propagation es que contamos con bastante información sobre la estructura del problema (la arquitectura de la red) y tenemos bastantes factores sobre los que se puede actuar para tratar de reducir el tiempo de entrenamiento. Es una ventaja de la complejidad de las redes neuronales artificiales.

Aceleración de la convergencia y optimización global
Existen varias técnicas que pueden aplicarse al algoritmo base para acelerar su convergencia. Ya hemos visto algunas modificaciones, como pueden ser la adición de un término de momento y la técnica de desvanecimiento de pesos.

Estas modificaciones son de concepto sencillo pero hay algunas variaciones sobre ellas, sobre todo relacionadas con el factor de velocidad de aprendizaje.

No hemos tratado apenas la elección de la velocidad de aprendizaje que aparece en la Regla Delta Generalizada. Se trata de una cuestión muy importante porque condiciona la velocidad de cambio de los pesos de la red.

Velocidades de aprendizaje pequeñas nos darán una evolución muy precisa pero muy lenta de los pesos de la red. Velocidades más grandes pueden acelerar la convergencia si la función de error no es muy complicada, con variaciones grandes en espacios muy pequeños, en caso contrario el comportamiento del proceso de aprendizaje será errático.

La elección de la velocidad de aprendizaje también se puede usar para dotar al algoritmo de la posibilidad de no centrarse demasiado en una zona concreta de la función de error para poder intentar localizar el mejor mínimo local posible. Se trata de lo que se llama optimización global, que es una extensión a la optimización clásica, no exenta de dificultades.

Tampoco hemos tratado con detalle la cuestión de la inicialización de los valores de los pesos de la red. Es una cuestión importante porque una elección adecuada de los pesos puede hacer que el proceso de convergencia resulte muy sencillo y rápido.

Uso de mayor información sobre la función de error
El algoritmo Back-Propagation es una implementación de la idea del descenso del gradiente, que es un paradigma muy usado en optimización clásica. Pero existen otros algoritmos muy refinados en optimización clásica que pueden hacer uso de información adicional sobre su función objetivo, como pueden ser derivadas de órden superior y especialmente la matriz hessiana de esa función objetivo (función de error en nuestro caso).

Es posible hacer uso de este tipo de aproximaciones en vez de usar la idea simple de la Regla Delta Generalizada, intentando mantener el flujo general del algoritmo Back-Propagation. No es algo sencillo pero puede dar buenos resultados en problemas muy grandes o especialmente difíciles.

Otra forma de aprovechar mejor la función de error consiste en elegir bien el conjunto de entrenamiento. Un conjunto de entrenamiento grande complica mucho la función de error si usamos entrenamiento Batch y tampoco beneficia a la velocidad de entrenamiento usando entrenamiento On-Line. Necesitamos un conjunto de entrenamiento lo más pequeño posible que incluya todas las variaciones necesarias para que la red aprenda a generalizar.

Con la elección del conjunto de entrenamiento tenemos otro posible elemento sobre el que actuar para mejorar la velocidad de entrenamiento de la red.

Buen diseño de la red
Naturalmente, el diseño de la red es un factor de la máxima importancia para obtener buenos resultados. El tipo de red más común son los perceptrones multicapa, o redes orientadas hacia adelante. Pero hay variaciones exóticas sobre este concepto a las que se puede aplicar el algoritmo y que pueden ir bien en determinadas situaciones.

En general, la situación más común se dará con el uso de un perceptrón multicapa para el que debemos elegir su tamaño, tanto en capas como en neuronas por capa. Una red demasiado grande no generaliza y otra demasiado pequeña no podrá aprender a generalizar para abarcar todas las clases que debe representar.

Ya hemos hablado del problema de la sobreparametrizacion. Para resolverlo existen técnicas que permiten descartar conexiones o neuronas de una red que no tienen efecto en el entrenamiento de la misma.

También existen técnicas que nos permiten ir construyendo la red a medida que necesita mayor capacidad de representación o de clasificación.

Es importante ver que el algoritmo Back-Propagation no puede cambiar la estructura de una red. Una vez diseñada, el algoritmo sólo va a buscar valores óptimos para los pesos. Pero si el diseño de la red no es adecuado puede que estos valores no existan o sean muy difíciles de localizar.

Problemas inherentes a las redes neuronales artficiales
Aparte de todas las cuestiones vistas, hay algunos problemas que son inherentes a las redes neuronales artficiales y que no tienen porqué aparecer en problemas de optimización clásica.

El diseño de la salida de las neuronas en forma de función de activación no lineal es una fuente potencial de muchos problemas porque algunas de estas funciones saturan con facilidad (como la función Logística).

No es raro que muchas neuronas de una red tengan tendencia a saturarse, con lo que las derivadas de la función de error respecto a los pesos tienden a cero y el algoritmo se paraliza y no es capaz de cambiar los pesos. Este problema se denomina parálisis de red y es un problema grave de las redes neuronales artficiales para el que existen algunas técnicas de detección, con objeto de poder reiniciar el algoritmo y escapar de la parálisis.

Por otro lado, la naturaleza de las funciones de activación del tipo sigmoide hace que estas funciones puedan cambiar con brusquedad y esto lleva a que en una iteración haya cambios bruscos en algunos pesos de la red, que terminan por influir en otros pesos a la iteración siguiente y este fenómeno se repite en forma de resonancia, haciendo que el proceso de convergencia no sea eficiente o incluso sea caótico.

Los fenónemos de resonancia también pueden detectarse para tratar de relajar el proceso de convergencia y evitar cambios demasiado bruscos.



El algoritmo Back-Propagation es bastante eficiente pero en problemas grandes puede resultar lento. Existen varias técnicas para sacar el máximo partido a base de acelerar su convergencia, evitar posibles problemas y hacer un buen planteamiento general.



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 y contiene una discusión sobre su complejidad de ejecución. Capítulos posteriores estudian modificaciones y técnicas para mejorar su rendimiento en situaciones concretas.



 

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