[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.