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?
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?
Respostas:
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()
.
Em resumo, a principal diferença para os profissionais de aprendizado de máquina é a seguinte:
tanh()
função de ativação, qual função de inicialização devo usar.
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.