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: gradiente con diferencias finitas (I)

Fernando P.    12/01/2018

Temas:  Fundamentos

Una de las cuestiones más interesantes del algoritmo Back-Propagation consiste en que podemos obtener fácilmente expresiones exactas para la Regla Delta Generalizada sin más que usar funciones de activación que tengan derivadas sencillas de evaluar, como puede ser el caso de la función de activación Logística.

Pero puede suceder que necesitemos usar funciones de activación que no tengan una expresión fácil para su derivada, con lo que obtener expresiones exactas para la Regla Delta Generalizada se complica mucho. En este caso podemos usar aproximaciones al gradiente de la función de coste de la red y así podemos seguir usado la Regla Delta Generalizada para modificar los pesos de la red.

La idea básica del algoritmo Back-Propagation
Como ya comentamos cuando hablábamos del algoritmo Back-Propagation como una implementación del concepto de descenso del gradiente, la idea clave del algoritmo, que se resume en la Regla Delta Generalizada, consiste en ir ajustando cada peso en conexiones entre capas de neuronas de la red siguiendo de forma decendente el gradiente de función de coste, lo que implica que el valor de dicha función descenderá en cada iteración.

Cuando desarrollábamos las expresiones exactas de la Regla Delta Generalizada, usábamos funciones de activación logísticas porque tienen una derivada muy simple, por lo que las expresiones exactas obtenidas eran bastante sencillas y muy eficientes desde el punto de vista algorítmico.

El conjunto de valores intermedios calculados para obtener el coste asociado a la red era suficiente para actualizar los pesos. No era necesario calcular nada adicicional y ese es el motivo de la complejidad lineal del algoritmo (sobre el número total de pesos en la red).

Funciones de activación más exóticas Back-Propagation: gradiente con perturbación de pesos
Hay algunas funciones de activación que pueden usarse para definir perceptrones multicapa con la propiedad de que su derivada es muy sencilla y no es necesario andar calculando nuevas cosas para poder actualizar cada uno de los pesos de la red. Una de ellas es la función Logística, otra función que tiene estas propiedades es la Tangente Hiperbólica.

En el caso de que deseemos usar otra función de activación, es posible que tengamos problemas con la expresión de la Regla Delta Generalizada porque vamos a necesitar las derivadas de la función de activación en cada neurona (respecto a la suma de entrada para la función de activación). Si no podemos calcular estas derivadas fácilmente la complejidad del algoritmo puede dispararse mucho, volviéndose muy ineficiente, además de complicar mucho la implementación.

La solución en este caso viene de reconsiderar la Regla Delta Generalizada y usar aproximaciones para calcular el gradiente de la función de coste. En vez de usar la regla de la cadena para obtener una expresión exacta de la regla, aproximamos directamente el gradiente.

No usar los valores exactos del gradiente significa que no estamos en el camino de máxima pendiente para ir reduciendo el valor de la función de coste en cada iteración, pero eso no significa que no avancemos, sólo significa que no lo hacemos de forma óptima y que nos costará alguna iteración más localizar un mínimo local de la función de coste.

Estimación del gradiente usando diferencias finitas
Es posible estimar una derivada en un punto para una función derivable con un grado de precisión arbitrario usando herramientas bien conocidas del Análisis Matemático. En particular, es posible usar el desarrollo de Taylor de la función para obtener una expresión tan precisa como queramos del valor de esa derivada.

Sea  E()  la función de coste de la red

Queremos calcular  E / ∂w, donde  w  es un peso de la red

Podemos considerar que  E(w)  es una función real de variable real, derivable y entonces nuestro problema es calcular  E'(w)

Sea  ε > 0, usando el desarrollo de Taylor para  E()  tenemos que:

E(w + ε) = E(w) + E'(w)⋅ε + E''(w)⋅ε2 + O(ε3)
E(w - ε) = E(w) - E'(w)⋅ε + E''(w)⋅ε2 + O(ε3)

Restando la segunda ecuación a la primera podemos despejar la aproximación a la derivada

E'(w) = ( E(w + ε) - E(w - ε) ) / 2ε + O(ε2)

De esta forma podemos estimar todas las derivadas parciales de la función de coste respecto a los pesos (que forman el gradiente de la misma) y a partir de estas componentes del gradiente podemos actualizar los pesos directamente usando la Regla Delta Generalizada.

El error cometido es del orden de  O(ε2), lo que significa que para valores suficientemente pequeños de  ε  el error será mucho más pequeño (podemos sacarlo fácilmente fuera de la precisión del computador).

Back-Propagation usando perturbación de pesos
Esta forma descrita de proceder, usando una aproximación al gradiente respecto a los pesos, se denomina perturbación de los pesos, porque consiste en recalcular toda la salida de la red para dos valores distintos de cada peso, que son  w + ε  y  w - ε.

El problema de esta forma de proceder consiste en que el número de operaciones que debemos realizar para ejectuar el algoritmo es superior a la forma más sencilla (con expresiones explícitas), debido a que por cada perturbación hay que volver a evaluar la salida de la red para todo el conjunto de entrenamiento.

La complejidad del algoritmo usando perturbación de pesos es del orden de  O(W2), donde  W  es el número total de pesos en la red. En el caso de usar expresiones exactas la complejidad es del orden de  O(W).

La pérdida de precisión en la que incurrimos puede ser tan pequeña como queramos, en realidad estaremos limitados por la precisión del computador. Pero el aumento de la complejidad no podemos evitarlo, es una versión poco eficiente del algoritmo Back-Propagation aunque es relativamente sencilla de implementar y funcionará siempre que la red se comporte como una función derivable.

Si introducimos funciones de activación que hacen que la red no se comporte como una función derivable entonces tendremos que ver cómo evitar esas singularidades.

Otra ventaja del método de perturbación de pesos consiste en que es independiente del número de capas que tenga la red. En redes con muchas capas, las expresiones exactas de la Regla Delta Generalizada se complican progresivamente y su implementación puede llegar a ser bastante compleja. Pero con el método de perturbación de pesos el cálculo del gradiente es independiente del número de capas de la red.



El algoritmo Back-Propagation usando perturbaciones sobre los pesos es una buena opción para calcular el gradiente de la función de coste respecto a los pesos de la red. Aumenta la complejidad del algoritmo, pero sigue siendo aceptable.



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 el método de la perturbación de pesos.



 

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