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.
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,x2…xN las entradas que llegan
a una neurona cualquiera de la red
Sean entonces w1,w2…wN 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 |
![]() ![]() |
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 |