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

Rendimiento del algoritmo Back-Propagation

Fernando P.    05/01/2018

Temas:  Fundamentos

El entrenamiento supervisado para perceptrones multicapa es una forma de optimización clásica en la que buscamos los valores de los parámetros que minimizan cierta función de coste.

Y el algoritmo Back-Propagation no es más que un método para resolver ese problema de optimización clásica. Como tal, podemos estudiar su rendimiento respecto del tamaño del problema.

Algoritmos en optimización clásica
Un problema de optimización en el sentido clásico está definido por una función real de variables reales, contínua (salvo conjuntos no densos de medida cero). Resolver el problema equivale a encontrar un mínimo local de la función o incluso un mínimo global (optimización global).

Existen muchos algoritmos para atacar este tipo de problemas. En general, todos operan partiendo de un punto más o menos al azar del dominio de la función y, en cada iteración del algoritmo, localizan un nuevo punto, más o menos cercano, para el que el valor de la función es menor. Iterando este proceso muchas veces se termina por llegar a un mínimo local.

Para obtener el nuevo punto en cada iteración, los algoritmos suelen usar alguna de las siguientes estrategias para obtener información sobre la función a optimizar:

La mayor parte de algoritmos usan información sobre el gradiente de la función en el punto actual. Es una buena estrategia porque hay garantía de que el valor de la función disminuye en dirección opuesta al gradiente. En general, este tipo de algoritmos se dice que siguen la estrategia de descenso del gradiente, aunque cada uno lo lleva a cabo de un forma un poco distinta.

Rendimiento de un algoritmo en optimización clásica
A la hora de evaluar el rendimiento de un algoritmo en optimización clásica podemos fijarnos en tres cuestiones:

En general, es fácil calcular el número de operaciones que serán necesarias para cada iteración del algoritmo. Este número será una función de la dimensión del dominio de la función a optimizar (número de variables que tiene el problema).
Rendimiento del algoritmo Back-Propagation
Las otras dos cuestiones no son fáciles de calcular, sobre todo la relativa a localizar un mínimo global, que es algo que ráramente se puede garantizar.

En general, se suelen usar ejemplos reales para evaluar unos y otros algoritmos y medir cuantas iteraciones necesitan unos y otros para alcanzar un mínimo local. Se trata de una medida basada en la práctica.

Normalmente, cuanta más información sobre la función pueda usar un algoritmo (gradiente, matriz hessiana ...), más rápida será su convergencia y menos iteraciones necesitará. Pero usar mucha información impacta negativamente en la velocidad en la que se ejecuta cada iteración (son necesarios más cálculos). Por lo que una convergencia muy rápida pero con iteraciones muy costosas igual no es mejor que una convergencia más lenta con iteraciones muy rápidas.

Back-Propagation y optimización clásica
La tarea de entrenar de forma supervisada un perceptrón multicapa puede ser asimilada perfectamente a un problema de optimización clásica en cuanto que tenemos una función de coste cuyo valor queremos minimizar (idealmente a cero), por la vía de buscar los valores de los pesos en las conexiones entre neuronas del perceptrón, que vienen a ser las variables de un problema de optimización clásica.

Nada impide usar un algoritmo ya conocido en optimización clásica para resolver el problema de entrenar el perceptrón. Pero resulta que se trata de un problema con características bien definidas, de las que podemos extraer información extra para usarla a la hora de resolverlo.

El algoritmo Back-Propagation no es más que una implementación de la idea general de descenso del gradiente que hace uso masivo de la información específica que tenemos sobre esta clase de problemas. Por lo demás, no se diferencia en nada de los algoritmos generales para resolver problemas de optimización clásica.

Rendimiento del algoritmo Back-Propagation
Para evaluar el rendimiento del algoritmo Back-Propagation hacemos exactamente lo mismo que haríamos con un algoritmo general para resolver problemas de optimización clásica.

En primer lugar, es fácil ver que cada iteración del algoritmo Back-Propagation (en el caso de optimizar On-Line, o con un caso de entrada cada vez) resulta en un número de operaciones que es proporcional al número de pesos de la red. Podemos decir que la complejidad del algoritmo en tiempo es del orden de  O(w), donde  w  es el número de pesos de la red (número de variables en optimización clásica).

En el caso de optimizar en forma Batch, la complejidad será proporcional al número de pesos y al número de casos que usemos para cada iteración. Aquí es evidente que si usamos muchos casos de entrenamiento de forma simultánea podemos incurrir fácilmente en una pérdida de velocidad en cada iteración del algoritmo, que se compensa con una convergencia mejorada, de forma similar a como ocurre con los algoritmos generales para optimización clásica.

La complejidad de almacenamiento es también del orden de  O(w), porque en cada iteración lo más complicado que debemos guardar son los valores de los pesos de la red.

Estas complejidades de orden potencial son bastante favorables y son las que hacen que el algoritmo Back-Propagation sea una alternativa muy buena a los métodos clásicos para entrenar un perceptrón multicapa.

Respecto a la velocidad de convergencia, el algoritmo Back-Propagation se comporta de forma similar a cómo lo hacen otros algoritmos que siguen la idea del descenso del gradiente. De hecho, hay modificaciones (como alguna que ya hemos visto aquí) que toman ideas de algoritmos clásicos con objeto de acelerar la convergencia.

En general, el algoritmo Back-Propagation es bastante eficiente para entrenar un perceptrón multicapa y puede ser mejorado fácilmente, además de tener la posibilidad de elegir el tipo de estrategia de entrenamiento más adecuada al tamaño de nuestro problema.

Existen casos en los que se han usado algoritmos generales para optimización clásica en el entrenamiento de perceptriones multicapa pero, en general, no se puede decir que sean mejores que el algoritmo Back-Propagation.



El algoritmo Back-Propagation es una implementación muy inteligente del concepto general de descenso del gradiente para el caso particular de RNA. Tiene una complejidad de ejecución reducida y es una excelente alternativa a otros algoritmos genéricos.



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 para mejorar la velocidad de convergencia.



 

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