81 votos

¿Qué buen peso inicial en una red neuronal?

Acabo de escuchar, que es una buena idea elegir pesos iniciales de una red neuronal de la gama $(\frac{-1}{\sqrt d} , \frac{1}{\sqrt d})$, donde $d$ es el número de entradas a una determinada neurona. Se supone que los conjuntos se normalizan - media 0, varianza 1 (no sé si esto es importante).

¿Por qué esto es una buena idea?

58voto

matt Puntos 11

Supongo que usted está utilizando la logística de las neuronas, y que la formación por la gradiente de la pendiente/propagación hacia atrás.

La función logística es cerca de la plana de gran positivo o negativo de las entradas. La derivada de la entrada de $2$ es de alrededor de $1/10$ $10$ la derivada es acerca de $1/22000$ . Esto significa que si la entrada de la logística de la neurona es$10$, entonces, para un determinado entrenamiento de la señal, la neurona aprenderá acerca de $2200$ veces más lento que si la entrada en se $2$.

Si desea que la neurona para aprender rápidamente, usted necesita para producir una enorme formación de la señal (como con una cruz de entropía de la pérdida de la función), o desea que la derivada a ser grandes. Para hacer la derivada de gran tamaño, se establecen los pesos iniciales, de modo que a menudo se obtiene los insumos en el rango de $[-4,4]$.

Los pesos iniciales de dar puede o no funcionar. Depende de cómo las entradas se normalizan. Si las entradas se normalizan para que tenga media de $0$ y la desviación estándar $1$, luego de un azar suma de $d$ términos con pesos uniformes en $(\frac{-1}{\sqrt{d}},\frac{1}{\sqrt{d}})$ tendrá media de $0$ y la varianza $\frac{1}{3}$, independiente de $d$. La probabilidad de obtener una suma fuera de $[-4,4]$ es pequeña. Eso significa que al aumentar el $d$, que no están causando que las neuronas para empezar saturada por lo que no se aprende.

Con entradas que no están normalizados, los pesos puede no ser eficaz en evitar la saturación.

30voto

Franck Dernoncourt Puntos 2128

[1] se aborda la cuestión:

Primero, el peso no debe ser ajustado a ceros con el fin de romper la simetría cuando backprogragating:

Los sesgos que puede generalmente ser inicializado a cero, pero los pesos deben inicializarse con cuidado para romper la simetría entre unidades ocultos de la misma capa. Debido a que las diferentes unidades de salida reciben diferentes gradiente de señales, esta ruptura de la simetría cuestión no se refiere a la salida de los pesos (en las unidades de salida), que por lo tanto puede también estar a cero.

Algunos de inicialización de estrategias:

  • [2] y [3] recomienda una escala por la inversa de la raíz cuadrada de la fan-in
  • Glorot y Bengio (2010) y el Aprendizaje Profundo Tutoriales de uso de una combinación de los fan-in y fan-out:
    • para sigmoide unidades: ejemplo de un Uniforme(-r, r) con $r=\sqrt{\frac{6}{\text{fan-in}+\text{fan-out}}}$ (fan-in es el número de entradas de la unidad).
    • para la tangente hiperbólica unidades: ejemplo de un Uniforme(-r, r) con $r=4 \sqrt{\frac{6}{\text{fan-in}+\text{fan-out}}}$ (fan-in es el número de entradas de la unidad).
  • en el caso de la Rbm, un cero significa Gaussiano con una pequeña desviación estándar de alrededor de 0,1 o 0,01 funciona bien (Hinton, 2010) para inicializar los pesos.
  • Ortogonal de la matriz aleatoria de inicialización, es decir, W = np.random.randn(ndim, ndim); u, s, v = np.linalg.svd(W) , a continuación, utilizar u como su inicialización de la matriz.

También, sin supervisión de pre-entrenamiento puede ayudar en algunas situaciones:

Una opción importante es la de si se debe usar sin supervisión de pre-entrenamiento (y que sin supervisión característica algoritmo de aprendizaje para el uso) con el fin de para inicializar los parámetros. En la mayoría de los ajustes de hemos encontrado sin supervisión de pre-entrenamiento para ayudar a los y muy rara vez a doler, pero por supuesto que implica un tiempo de formación y adicionales hyper-parámetros.

Algunos ANN las bibliotecas también tienen interesantes listas, por ejemplo, Lasaña:

Constant([val]) Initialize weights with constant value.
Normal([std, mean]) Sample initial weights from the Gaussian distribution.
Uniform([range, std, mean]) Sample initial weights from the uniform distribution.
Glorot(initializer[, gain, c01b])   Glorot weight initialization.
GlorotNormal([gain, c01b])  Glorot with weights sampled from the Normal distribution.
GlorotUniform([gain, c01b]) Glorot with weights sampled from the Uniform distribution.
He(initializer[, gain, c01b])   He weight initialization.
HeNormal([gain, c01b])  He initializer with weights sampled from the Normal distribution.
HeUniform([gain, c01b]) He initializer with weights sampled from the Uniform distribution.
Orthogonal([gain])  Intialize weights as Orthogonal matrix.
Sparse([sparsity, std]) Initialize weights as sparse matrix.

[1] Bengio, Yoshua. "Recomendaciones prácticas para el gradiente basado en la formación de profundas arquitecturas." Redes neuronales: Trucos del oficio. Springer Berlin Heidelberg, 2012. 437-478.

[2] LeCun, Y., Bottou, L., Orr, G. B., y Muller, C. (1998a). Eficiente backprop. En las Redes Neuronales, los Trucos del oficio.

[3] Glorot, Xavier, y Yoshua Bengio. "La comprensión de la dificultad de la formación profunda de las redes neuronales feedforward." Conferencia internacional sobre inteligencia artificial y estadística. 2010.

12voto

jpmuc Puntos 4817

La siguiente explicación es tomado del libro: Redes Neuronales para el Reconocimiento de patrones por Christopher Obispo. Gran libro! Suponga que usted tiene previamente blanqueado de las entradas de las unidades de entrada, es decir,$$<x_{i}> = 0$$ and $$<x_{i}^{2}> = 1$$

La pregunta es: cómo elegir los pesos?. La idea es elegir los valores de los pesos aleatoria siguiendo una distribución que ayuda a la optimización del proceso de convergencia a una solución satisfactoria.

Usted tiene para la activación de las unidades en la primera capa, $$y = g(a) $$ where $$ a = \sum_{i=0}^{d}w_{i}x_{i}$$. Ahora, ya que usted elija los pesos de forma independiente a partir de las entradas, $$<a> = \sum_{i=0}^{d}<w_{i}x_{i}> = \sum_{i=0}^{d}<w_{i}><x_{i}> = 0$$ and $$ <a^2> = \left<\left(\sum_{i=0}^{d}w_{i}x_{i}\right) \left(\sum_{i=0}^{d}w_{i}x_{i}\right)\right> = \sum_{i=0}^{d}<w_{i}^{2}><x_{i}^{2}> = \sigma^{2}d $$ where sigma is the variance of the distribution of weights. To derive this result you need to recall that weights are initialized independently from each other, i.e. $$<w_{i}w_{j}> = \delta_{ij}$$

1voto

mcb Puntos 136

Según Hugo Larochelle, Glorot y Bengio (2010), inicializar los pesos uniformemente en el intervalo de $[−b,b]$, donde

$$b = \sqrt{\frac{6}{H_k + H_{k+1}}},$$

$H_k$ $H_{k+1}$ son los tamaños de las capas antes y después de la matriz de peso.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X