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: inicialización aleatoria de pesos (I)

Fernando P.    12/02/2018

Temas:  Fundamentos

El proceso de inicialización de pesos dentro del algoritmo Back-Propagation es un paso importante para conseguir un proceso rápido de convergencia a una buena solución.

La técnica más común para inicializalición de pesos consiste en la elección aleatoria. Pero hay muchas formas de hacer una elección aleatoria y hay ciertos valores de los pesos que no ayudarán a conseguir una buena convergencia del algoritmo Back-Propagation

Empezando con el presente, vamos a ver a lo largo de dos artículos algunas técnicas que nos van a permitir elegir aleatoriamente pesos con buenas perspectivas para poner en marcha el algoritmo Back-Propagation.

Objetivo de la inicialización de pesos
Ya habíamos hablado, en general, de los objetivos que se persiguen cuando se plantea determinada estrategia de inicialización de pesos para el algoritmo Back-Propagation.

En el caso de usar inicialización aleatoria, los objetivos que específicamente se buscan son tres:

Cuando se usan funciones de activación del tipo sigmoide, como la función Logística o la Tangente hiperbólica, es posible que aparezcan problemas de saturación en las neuronas y si afecta a muchas neuronas termina en parálisis de red.

Para evitar la parálisis de la red, conviene elegir pesos que no sean demasiado grandes en valor absoluto a fin de que la suma que calcula la neurona no genere valores de la función de activación muy cercanos a sus valores asintóticos.

Podría parecer que la forma de elegir valores de los pesos para evitar saturación sería elegirlos cerca del cero, pero ocurre que el valor cero suele ser un punto de silla en la hipersuperficie que define la función de error de la red y es complicado salir de este tipo de zonas usando descenso del gradiente, que es lo que hace el algoritmo Back-Propagation. En cualquier caso es preferible estar en un punto de silla que llevar la red a un estado de parálisis.

Por otro lado, si inicialmente todos los pesos de la red fueran iguales, en realidad la red sería una agrupación de circuitos neuronales redundantes que tenderían a tratar de aprender los mismos patrones. Esta uniformidad de pesos que genera una red muy lineal no es deseable porque el tamaño de una red debe beneficiar a la misma en el sentido de ser capaz de detectar distintos patrones o estructuras en los datos de entrada.

De modo que conviene que los pesos de distintas neuronas sean diferentes para que cada una de estas (junto con sus neuronas adyacentes) se especialice en reconocer un patrón o estructura diferente en los datos de entrada. De esta forma la red, en conjunto, sea capaz de responder ante datos de entrada muy diferentes porque tiene agrupaciones de neuronas que se han configurado de forma distinta ya que, en su entrenamiento, han partido de pesos distintos.

Cálculo de una distribución de probabilidad adecuada
Cuando hablamos de elegir los pesos de forma aleatoria, nos referimos a calcular una distribución de probabilidad para generar valores aleatorios que sigan esa distribución y que serán los pesos de nuestra red.

Distribuciones de probabilidad que se pueden usar fácilmente pueden ser:

A la hora de calcular cual es la distribución exacta que necesitamos para nuestra red, lo que haremos será calcular el parámetro que define a la familia elegida. Por ejemplo, si elegimos una distribución uniforme, necesitaremos calcular el valor de  W.
Back-Propagation: inicialización aleatoria de pesos (I)
La forma de calcular la distribución consiste en operar desde adelante hacia atrás, empezando por los valores que proporciona nuestra función de activación, viendo qué rango de valores nos interesa y progando hacia atrás el cálculo hasta ver qué valores de los pesos harán que, con probabilidad suficientemente alta, la salida final de la neurona (a través de su función de activación) quede en el rango de valores aceptable.

En teoría, se puede calcular la distribución de los pesos para cualquier configuración de red, pero en la práctica conviene asumir ciertas hipótesis que son comunes en la mayoría de diseños de red para poder facilitar mucho el cálculo.

Hipótesis que conviene hacer sobre la red
Para facilitar el cálculo de la distribución de probabilidad que deben seguir los pesos de nuestra red, vamos a hacer unas hipótesis sencillas y que tienen bastante sentido:

Sean  x1,x2xN  las entradas que llegan a una neurona cualquiera de la red

Sean entonces  w1,w2wN  los pesos asociados a las entradas  xi

La suma que va a calcular la neurona será  u = Σiwixi

Consideremos que los pesos  wi  son variables aleatorias con distribución  Zw  y las entradas  xi  son variables aleatorias con distribución  Zx

Vamos a necesitar que  E(wi) = 0  ∀i

Por otro lado, las variables aleatorias  wi  deben ser independientes entre sí y también independientes respecto a todas las  xi 

Por último, sean  E(wi2) = σw2  y  E(xi2) = σx2

En redes suficientemente grandes, que son las que se benefician más de una estrategia elaborada de elección de pesos, podemos asumir que cada neurona tendrá un gran número de entradas y por lo tanto, por el Teorema Central del Límite, resultará que  u  será una variable aleatoria cuya distribución se aproximará bastante a una distribución  N(0,σu) y tenemos lo siguiente:

Se verifica que E(u) = 0  por la hipótesis de independencia que hemos hecho y por ser cero la esperanza de  wi

Ahora, se tiene que  σu2 = E(u2), y usando la hipótesis de independencia es fácil calcular  σu2

σu2 = σw2σx2⋅N

De donde  σu = σwσx⋅√N

Cálculo para distribuciones uniformes
Vamos a realizar el cálculo exacto de la distribución de pesos en un caso concreto de distribuciones de pesos, de entradas y forma de la función de activación, todo bastante simple. El mismo cálculo se podría repetir sin muchos problemas para otras distribuciones y otras funciones de activación, el procedimiento es el mismo.

Supongamos que tenemos funciones de activación logísticas en la forma usual  S(x) = 1/(1+e-x). Los valores asíntoticos de  S  son 0 y 1. Para evitar la saturación de  S  podemos considerar que su valor debe estar en el intervalo  [0.1,0.9], lo que se traduce en un intervalo para su argumento  x  que es  I = [-ln9,ln9].

Naturalmente, lo que deseamos es que el valor de  u  no salga de este intervalo salvo una probabilidad pequeña. Como podemos aproximar  u  por una distribución  N(0,σu), dando por bueno que  u  sólo salga de  I  con probabilidad cercana a 0.05, podemos usar el criterio estándar para distribuciones normales y tenemos que:

P(|u|<ln9) ≤ 0.05  ⇒  2⋅ σu ≤ ln9

Es decir,  2⋅σwσx⋅√N ≤  ln9

Si consideramos que los pesos  wi  se distribuyen según una distribución uniforme en el intervalo  [-W,W]  y también consideramos que las entradas  xi  se distribuyen según una distribución uniforme en el intervalo  [0,1], usando la expresión de la varianza para esta distribución tenemos que:

 σw = W/√3

 σx = 1/(2√3)

Y por tanto  2⋅σu = 2⋅σwσx⋅√N = 1/3 ⋅W⋅√N ≤ ln9

De donde  W = 3ln9 / √N  será la cota que estamos buscando para obtener completamente la distribución de probabilidad de los pesos

Comentarios finales
El método que hemos visto para cálculo de la distribución de probabilidad de los pesos puede ser un poco farragoso de realizar para otras familias de distribuciones o para otras funciones de activación.

El caso que hemos visto aquí es perfectamente usable en el caso de funciones de activación logísticas con valores asintóticos 0 y 1 siempre que asumamos que las entradas a las neuronas tienen valores entre 0 y 1, aunque sería fácil recalcular esto para otros intervalos.

Otro problema que hay consiste en que puede que no todas las neuronas tengan entradas con la misma distribución de valores. Esto significa que habría que usar distintas distribuciones de probabilidad en los pesos dependiendo de cada neurona, que puede ser algo bastante complicado.

Para terminar, debemos mencionar que una estrategia que suele dar buenos resultados es inicializar los pesos con una distribución uniforme en un intervalo  [-a / √N , a / √N], donde  a  es un valor que puede oscilar entre 2 y 4, aunque valores algo más grandes también pueden servir. De hecho, en nuestro ejemplo hemos llegado justo a un intervalo de este tipo con un valor de  a  igual a 6.6

En general, ante la duda, es preferible equivocarse eligiendo pesos con valores pequeños que equivocarse por elegir valores demasiado grandes.



Es posible calcular de forma exacta distribuciones de probabilidad a usar en la inicialización aleatoria de los pesos, minimizando el riesgo de parálisis de la red. Pero también es buena práctica usar distribuciones uniformes sobre intervalos predefinidos.



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 el capítulo 7 discute diversas técnicas para inicialización de los pesos de la red que tiene cálculos exactos para bastantes combinaciones de distribuciones de probabilidad en los pesos y en las entradas, aunque ellos usan la tangente hiperbólica como función de activación.



 

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