¿Cuál es la diferencia entre el inicializador de escala de varianza y el inicializador xavier?


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?


Para obtener una explicación más detallada de la inicialización de Xavier, puede visitar este enlace: prateekvjoshi.com/2016/03/29/… Incluye la derivación adecuada de la inicialización e intuición de Xavier detrás de ella.
Himanshu Singh

Respuestas:


31

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ó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 capas con activación ReLu .
  • La inicialización de Xavier funciona mejor para capas con activación sigmoidea .

en pytorch, ¿qué inicialización se usa? ¿Depende de la activación?
Charlie Parker

2
Hola, para la tanh()función de activación, qué función de inicialización debo usar.
GoingMyWay

@GoingMyWay, de acuerdo con este pytorch.org/docs/stable/… , puede usar la inicialización He con ganancia 5/3. Aunque no estoy seguro de dónde viene eso.
Podgorskiy

3

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.


Gracias. ¿Qué quiere decir elegir sus propios parámetros para la varianza?
Hanamichi

En la implementación de TF, este sería el parámetro del factor (que determina la relación de la varianza de entrada a la varianza de salida)
liangjy
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.