Eu queria treinar uma rede com não linearidades que sofrem com o desaparecimento (ou o problema do gradiente explodindo, embora principalmente o desaparecimento). Sei que a maneira padrão (atual) é usar a normalização de lote 1 [BN] 1 ou simplesmente abandonar a não linearidade e usar as unidades ReLu Rectifier / ReLu .
Eu queria duas coisas:
- Fique com minha não linearidade, então não quero abandoná-lo e usar o ReLu (ou seja, não é permitido o ReLu!). Re-parametrizar a não-linearidade é bom, digamos, colocando um multiplicativo na frente dele como em por exemplo.
- Idealmente, eu não queria depender muito da normalização de lotes (ou, pelo menos, se for usado, ele deve ser usado de uma maneira nova, além da maneira como foi usado no artigo original ou generalizar para muitas não linearidades). Uma das razões pelas quais eu queria evitar o Batch Normalize é porque parece funcionar apenas para não linearidades específicas. Por exemplo, para sigmóides, tanh, mas não está claro como eles funcionariam para outras não linearidades, dizem gaussianos.
A razão pela qual tenho essas restrições é porque eu gostaria de lidar com o problema de desaparecer gradiente ou explodir gradientes contando o problema diretamente, em vez de invadir uma solução que funcione apenas para não linearidades específicas ou apenas evitar o problema empurrando um ReLu.
Fiquei pensando, com essas duas restrições, quais são as formas alternativas de lidar com o problema do gradiente que desaparece? (outra não linearidade em consideração seria o núcleo gaussiano RBF com pré-ativação da norma euclidiana, sigmoide, tanh, etc.)
As possíveis idéias (vagas) que eu tinha em mente seriam:
- Tenha uma boa inicialização para que as não linearidades de saturação não comecem já saturadas (as não linearidades saturadas resultam em gradientes próximos de zero).
- Para o RBF, da mesma forma, um bom init pode ser importante porque os gaussianos geralmente têm um valor grande próximo de 0 (ou seja, quando os filtros são semelhantes à sua ativação ou dados). Assim, tê-los muito grandes ou muito pequenos tem problemas semelhantes de gradiente de fuga.
- Eu realmente não sei se isso é muito constrangedor, mas seria bom se houvesse uma maneira diferente de usar a normalização de lotes, além da sugestão tradicional no artigo original (ou talvez alguma idéia do BN que generalize para um conjunto maior de linearidades, atualmente parece que a maior parte da pesquisa é para mostrar que funciona para sigmóides, até onde eu sei).
- Outra idéia poderia ser que, em vez de não ter linearidade , temos que . Se , significa que as não linearidades não são multiplicadas para trás várias vezes para cada camada, de modo a evitar "desaparecer" nas camadas anteriores. Isso pode tornar a regra de aprendizado instável, então talvez um regularizador possa ser uma boa ideia.a θ ( z ) a ∈ R a > 1
- Um otimizador que lida intrinsecamente com o gradiente de fuga (ou pelo menos atualiza cada parâmetro de maneira diferente). Por exemplo, se é uma camada mais próxima da entrada, a etapa de aprendizado deve ser maior. Seria bom que o algoritmo de aprendizado levasse isso em conta por si só, para lidar com o gradiente de fuga.
Se houver alguma sugestão sobre como lidar com o gradiente de fuga que não seja a norma de lote ou o ReLu, eu adoraria ouvir sobre eles!
Parece que o gradiente de fuga ocorre principalmente porque as não linearidades têm a propriedade de que e também porque e depois de multiplicá-lo várias vezes, ele explode ou desaparece. Dizer explicitamente o problema pode ajudar a resolvê-lo. O problema é que isso faz com que as camadas inferiores não atualizem ou dificultam o sinal através da rede. Seria bom manter esse sinal fluindo pela rede, durante a passagem para frente e para trás (e também durante o treinamento, não apenas na inicialização).| θ ′ ( s ) | < 1
1 : Ioffe S. e Szegedy C. (2015),
"Normalização de lotes: acelerando o treinamento em rede profunda reduzindo a mudança de Covariável Interna",
Anais da 32ª Conferência Internacional sobre Aprendizado de Máquina , Lille, França, 2015.
Journal of Machine Learning Research: Volume W&CP 37