En aplicación de la Tensorflow ResNet , encuentro que utilizan la variación de escala inicializador, también encuentro Xavier inicializador es popular. No tengo mucha experiencia en esto, ¿qué es mejor en la práctica?
20
En aplicación de la Tensorflow ResNet , encuentro que utilizan la variación de escala inicializador, también encuentro Xavier inicializador es popular. No tengo mucha experiencia en esto, ¿qué es mejor en la práctica?
Respuestas:
Perspectiva historica
La inicialización de Xavier , propuesta originalmente por Xavier Glorot y Yoshua Bengio en "Comprender la dificultad de entrenar redes neuronales de alimentación profunda" , es la técnica de inicialización de pesos que intenta hacer que la varianza de las salidas de una capa sea igual a la varianza de sus entradas . Esta idea resultó ser muy útil en la práctica. Naturalmente, esta inicialización depende de la función de activación de capa. Y en su artículo, Glorot y Bengio consideraron la función de activación sigmoidea logística , que era la opción predeterminada en ese momento.
Más tarde, ReLu superó la activación sigmoidea, ya que permitió resolver el problema de gradientes de fuga / explosión. En consecuencia, apareció una nueva técnica de inicialización, que aplicó la misma idea (equilibrio de la varianza de la activación) a esta nueva función de activación. Fue propuesto por Kaiming He y otros en "Profundizando en los rectificadores: superando el rendimiento a nivel humano en la clasificación de ImageNet" , y ahora a menudo se lo denomina inicialización de He .
En el tensorflow, la inicialización He se implementa en la
variance_scaling_initializer()
función (que es, de hecho, un inicializador más general, pero por defecto realiza la inicialización He), mientras que el inicializador Xavier es lógicamentexavier_initializer()
.Resumen
En resumen, la principal diferencia para los profesionales del aprendizaje automático es la siguiente:
fuente
tanh()
función de activación, qué función de inicialización debo usar.La escala de variación es solo una generalización de Xavier: http://tflearn.org/initializations/ . Ambos operan 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 el escalado de variaciones podría inhibir el entrenamiento o hacer que su red no gane nada.
fuente