En la implementación de Tensorflow de ResNet Me parece que utilizan el inicializador de escala de varianza, también me parece que el inicializador xavier es popular. No tengo mucha experiencia en esto, ¿cuál es mejor en la práctica?
Respuestas
¿Demasiados anuncios?Perspectiva histórica
Inicialización de Xavier propuesto originalmente por Xavier Glorot y Yoshua Bengio en "Entender la dificultad de entrenar redes neuronales profundas feedforward" es la técnica de inicialización de pesos que intenta que la varianza de las salidas de una capa sea igual a la varianza de sus entradas. Esta idea ha resultado ser muy útil en la práctica. Naturalmente, esta inicialización depende de la función de activación de la capa. Y en su artículo, Glorot y Bengio consideraron sigmoide logístico función de activación, que era la opción por defecto en ese momento.
Más tarde, la activación sigmoidea fue superada por ReLu, ya que permitía resolver el problema de los gradientes evanescentes/explosivos. En consecuencia, apareció una nueva técnica de inicialización, que aplicaba la misma idea (equilibrio de la varianza de la activación) a esta nueva función de activación. Fue propuesta por Kaiming He at al en "Profundizando en los rectificadores: Superando el rendimiento a nivel humano en la clasificación de ImageNet" y ahora se le llama a menudo Inicialización .
En tensorflow, la inicialización de He se implementa en variance_scaling_initializer()
(que es, de hecho, un inicializador más general, pero por defecto realiza la inicialización de He), mientras que el inicializador de Xavier es lógicamente xavier_initializer()
.
Resumen
En resumen, la principal diferencia para los profesionales del aprendizaje automático es la siguiente:
- La inicialización funciona mejor para las capas con ReLu activación.
- La inicialización de Xavier funciona mejor para las capas con sigmoide activación.
La escala de varianza es sólo una generalización de Xavier: http://tflearn.org/initializations/ . Ambos funcionan según el principio de que la escala de los gradientes debe ser similar en todas las capas. Xavier es probablemente más seguro de usar ya que ha resistido la prueba experimental del tiempo; tratar de elegir sus propios parámetros para la escala de la varianza podría inhibir el entrenamiento o hacer que su red no gane en absoluto.