CÓMO: Inicialización del peso de la red neuronal profunda

10

Dada una tarea de aprendizaje difícil (por ejemplo, alta dimensionalidad, complejidad de datos inherente), las redes neuronales profundas se vuelven difíciles de entrenar. Para aliviar muchos de los problemas, uno podría:

  1. Normalizar && datos de calidad de selección manual
  2. elija un algoritmo de entrenamiento diferente (por ejemplo, RMSprop en lugar de Gradient Descent)
  3. elija una función de costo de gradiente más pronunciada (por ejemplo, entropía cruzada en lugar de MSE)
  4. Utilice una estructura de red diferente (por ejemplo, capas de convolución en lugar de Feedforward)

He oído que hay formas inteligentes de inicializar mejores pesos. Por ejemplo, puede elegir mejor la magnitud: Glorot y Bengio (2010)

  • para unidades sigmoideas: muestrear un Uniforme (-r, r) con r=6 6norteyonorte+norteotut
  • o unidades tangentes hiperbólicas: muestrear un Uniforme (-r, r) con r=4 46 6norteyonorte+norteotut

¿Hay alguna forma consistente de inicializar mejor los pesos?

Joonatan Samuel
fuente

Respuestas:

7

Hasta donde sé, las dos fórmulas que proporcionó son más o menos la inicialización estándar. Había hecho una revisión de literatura hace un tiempo, la copié a continuación si estaba interesado.


[1] aborda la pregunta:

Primero, los pesos no deben establecerse en ceros para romper la simetría cuando se reprograma:

Los sesgos generalmente pueden inicializarse a cero, pero los pesos deben inicializarse cuidadosamente para romper la simetría entre las unidades ocultas de la misma capa. Debido a que las diferentes unidades de salida reciben diferentes señales de gradiente, este problema de ruptura de simetría no concierne a los pesos de salida (en las unidades de salida), que por lo tanto también se puede establecer en cero.

Algunas estrategias de inicialización:

  • [2] y [3] recomiendan escalar por el inverso de la raíz cuadrada del abanico
  • Glorot y Bengio (2010) y los Tutoriales de aprendizaje profundo utilizan una combinación de fan-in y fan-out:
    • r=6 6fan-in+abanico
    • r=4 46 6fan-in+abanico
  • en el caso de los RBM, un gaussiano de media cero con una pequeña desviación estándar de alrededor de 0.1 o 0.01 funciona bien (Hinton, 2010) para inicializar los pesos.
  • Inicialización de matriz aleatoria ortogonal, es decir W = np.random.randn(ndim, ndim); u, s, v = np.linalg.svd(W), utilizar ucomo matriz de inicialización.

Además, la capacitación previa sin supervisión puede ayudar en algunas situaciones:

Una opción importante es si se debe usar un entrenamiento previo sin supervisión (y qué algoritmo de aprendizaje de características no supervisado se debe usar) para inicializar los parámetros. En la mayoría de los entornos, hemos encontrado pre-entrenamiento no supervisado para ayudar y muy raramente dañar, pero por supuesto eso implica tiempo de entrenamiento adicional e hiperparámetros adicionales.

Algunas bibliotecas ANN también tienen algunas listas interesantes, por ejemplo, Lasagne :

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 la formación basada en gradientes de arquitecturas profundas " . Redes neuronales: trucos del oficio. Springer Berlin Heidelberg, 2012. 437-478.

[2] LeCun, Y., Bottou, L., Orr, GB y Muller, K. (1998a). Backprop eficiente. En redes neuronales, trucos del oficio .

[3] Glorot, Xavier y Yoshua Bengio. " Comprender la dificultad de entrenar redes neuronales de alimentación profunda ". Conferencia internacional sobre inteligencia artificial y estadística. 2010

Franck Dernoncourt
fuente
2
Algo que parece faltar es la normalización por lotes. Descrito aquí: arxiv.org/abs/1502.03167 Podría ser útil.
Joonatan Samuel
Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun han publicado un artículo más nuevo que incluye una variación de la inicialización del peso Xavier de Glorot y Bengio: "Profundizando en los rectificadores: superando el rendimiento a nivel humano en la clasificación de ImageNet" .
mjul