Existem maneiras de lidar com o gradiente de fuga para saturar não linearidades que não envolvem normalização em lote ou unidades ReLu?

8

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:

  1. 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.θ(s)
  2. 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:

  1. 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).
  2. 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.
  3. 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).
  4. 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θ(z)aθ(z)aRa>1
  5. 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|a|<1|θ(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

Pinóquio
fonte
+1 Esta é uma pergunta interessante. Apenas por curiosidade - por que você não deseja usar ReLUs?
Sycorax diz Restabelecer Monica em
minhas razões são: 1) Parece-me que o uso do ReLu evita a questão de desaparecer e explodir o gradiente, em vez de abordá-lo diretamente. 2) se alguém teve uma ativação que acreditava ser muito boa em algumas tarefas e não em outras, então, de alguma forma, somos forçados a mudar para o ReLu, mesmo que eles não sejam os corretos. 3) ... (próximos comentários)
Pinocchio
3) quando se lida com gaussianos, por exemplo, generalizar a normalização de lotes não é trivial (devo normalizar em lotes a pré-ativação da norma euclidiana? normalizando diretamente a saída da não linearidade, então, estamos normalizando algo que já teve momentos restritos, uma vez que a saída da RBF e, de fato, também sigmóide (tanh), são restritas a um pequeno intervalo [0,1] ou [- 1,1]) Basicamente, parece que essas duas idéias poderiam ser levadas adiante, eu simplesmente não sei como.
Pinóquio
Embora minhas razões sejam baseadas principalmente em pressentimentos, claramente, precisamos de mais pesquisas ou algo para lidar com todos esses pontos.
Pinóquio
1
Apenas curioso se você souber algo sobre como as LSTMs ou as redes residuais se comportam com as não linearidades saturadas. Gostaria de saber se eles só tendem a trabalhar com ReLus. Nos jornais, ambos especificam que o uso de ReLus, mas me pergunto se isso é essencial aos métodos ou apenas algo que lhes dê um impulso.
testuser

Respostas:

2

Você já olhou para o RMSProp? Dê uma olhada neste conjunto de slides de Geoff Hinton:

Visão geral da descida do gradiente de mini-lote

Especificamente na página 29, intitulada 'rmsprop: uma versão em lote de rprop', embora provavelmente valha a pena ler o conjunto completo para ter uma idéia mais completa de algumas das idéias relacionadas.

Também estão relacionados as taxas de aprendizado não mais pesadas de Yan Le Cun

e SMORMS3 de Brandyn Webb .

A idéia principal é olhar para o sinal de gradiente e se é flip-flopping ou não; se for consistente, você deseja seguir nessa direção e, se o sinal não estiver dando um salto, qualquer passo que você deu deve estar OK, desde que não seja muito pequeno, então existem maneiras de controlar o tamanho do passo para mantê-lo sensível e que são um pouco independentes do gradiente real.

Portanto, a resposta curta para lidar com gradientes que desaparecem ou explodem é simplesmente - não use a magnitude do gradiente!

redcalx
fonte
como você faz "para que haja maneiras de controlar o tamanho da etapa para mantê-la sensível e que sejam um pouco independentes do gradiente real". É preciso fazer isso manualmente ou existe algum algoritmo que funcione?
Pinóquio
Existem vários métodos (e variantes) discutidos nos links, mas todos fornecem um método para calcular uma atualização de peso que é algo diferente do produto de um gradiente e uma taxa de aprendizado.
Redcalx
1

Alguns dos meus entendimentos podem não estar corretos.

A causa do problema do gradiente de fuga é que sigmoid tanh(e o RBF) saturam nos dois lados ( -infe inf), por isso é muito provável que a entrada dessa não linearidade caia nas regiões saturadas.

N(0,1)

log(1+ex)

insira a descrição da imagem aqui

Além disso, as redes residuais ou as redes rodoviárias fornecem outra maneira de lidar com os gradientes de fuga (por meio de atalhos). Pela minha experiência, essa arquitetura é treinada de maneira mais rápida do que apenas conectar a perda à última camada.

Além disso, a dificuldade de treinar redes profundas não se deve apenas ao gradiente de fuga , mas também a outros fatores (por exemplo, a mudança covariável interna). Existe uma normalização recente da camada de papel sobre outra maneira de fazer a normalização, mas não diz sobre o desaparecimento de gradientes, mas talvez você esteja interessado.

dontloo
fonte