Qual é a diferença entre o inicializador de escala de variância e o inicializador xavier?

20

Na implementação do ResNet do Tensorflow , acho que eles usam o inicializador de escala de variância, também acho que o inicializador de xavier é popular. Não tenho muita experiência nisso, o que é melhor na prática?

Hanamichi
fonte
Para uma explicação mais detalhada da inicialização de Xavier, você pode visitar este link: prateekvjoshi.com/2016/03/29/… Inclui a derivação adequada da inicialização e intuição de Xavier por trás dela.
Himanshu Singh 11/11/19

Respostas:

31

Perspectiva histórica

A inicialização de Xavier , originalmente proposta por Xavier Glorot e Yoshua Bengio em "Entendendo a dificuldade de treinar redes neurais profundas de avanço" , é a técnica de inicialização de pesos que tenta fazer com que a variação das saídas de uma camada seja igual à variação de suas entradas. . Essa ideia acabou sendo muito útil na prática. Naturalmente, essa inicialização depende da função de ativação da camada. E em seu trabalho, Glorot e Bengio consideraram a função de ativação sigmóide logística , que era a escolha padrão naquele momento.

Posteriormente, a ativação sigmóide foi superada pelo ReLu, pois permitiu resolver o problema dos gradientes de fuga / explosão. Consequentemente, apareceu uma nova técnica de inicialização, que aplicou a mesma ideia (balanceamento da variação da ativação) a essa nova função de ativação. Foi proposto por Kaiming He em "Investigando profundamente os retificadores: superando o desempenho em nível humano na classificação ImageNet" , e agora é frequentemente chamado de inicialização por He .

No fluxo tensor, a inicialização He é implementada na variance_scaling_initializer()função (que é, de fato, um inicializador mais geral, mas, por padrão, executa a inicialização He), enquanto o inicializador Xavier é logicamente xavier_initializer().

Sumário

Em resumo, a principal diferença para os profissionais de aprendizado de máquina é a seguinte:

  • A inicialização funciona melhor para camadas com a ativação do ReLu .
  • A inicialização de Xavier funciona melhor para camadas com ativação sigmóide .
Máxima
fonte
no pytorch, que inicialização é usada? isso depende da ativação?
Charlie Parker
2
Oi, para a tanh()função de ativação, qual função de inicialização devo usar.
GoingMyWay 22/1018
@GoingMyWay, de acordo com este pytorch.org/docs/stable/… , você pode usar a inicialização He com ganho de 5/3. Não tenho certeza de onde isso vem.
Podgorskiy 10/03
3

A escala de variância é apenas uma generalização de Xavier: http://tflearn.org/initializations/ . Ambos operam com o princípio de que a escala dos gradientes deve ser semelhante em todas as camadas. Xavier provavelmente é mais seguro de usar, pois resistiu ao teste experimental do tempo; tentar escolher seus próprios parâmetros para a escala de variação pode inibir o treinamento ou fazer com que sua rede não ganhe nada.

liangjy
fonte
Obrigado. Como assim, escolha seus próprios parâmetros para variação?
Hanamichi
Na implementação TF, este seria o parâmetro fator (que determina a proporção da variância de entrada para a variação de saída)
liangjy