Diretrizes para selecionar um otimizador para o treinamento de redes neurais


18

Eu tenho usado redes neurais por um tempo agora. No entanto, uma coisa com a qual luto constantemente é a seleção de um otimizador para treinar a rede (usando backprop). O que eu costumo fazer é apenas começar com um (por exemplo, SGD padrão) e, em seguida, tentar outros de maneira aleatória. Fiquei me perguntando se existe uma abordagem melhor (e menos aleatória) para encontrar um bom otimizador, por exemplo, nesta lista:

  • SGD (com ou sem impulso)
  • AdaDelta
  • AdaGrad
  • RMSProp
  • Adão

Em particular, estou interessado se há alguma justificativa teórica para escolher um sobre o outro, dado que os dados de treinamento têm alguma propriedade, por exemplo, são escassos. Eu também imaginaria que alguns otimizadores funcionam melhor que outros em domínios específicos, por exemplo, ao treinar redes convolucionais vs. redes feed-forward ou classificação vs. regressão.

Se algum de vocês desenvolveu alguma estratégia e / ou intuição sobre como escolher otimizadores, eu ficaria muito interessado em ouvi-la. Além disso, se houver algum trabalho que forneça justificativa teórica para escolher um sobre o outro, isso seria ainda melhor.

Respostas:


3

1) O AdaGrad penaliza muito a taxa de aprendizado por parâmetros que são atualizados com freqüência e oferece mais taxa de aprendizado a parâmetros esparsos, parâmetros que não são atualizados com tanta frequência. Em vários problemas, muitas vezes as informações mais críticas estão presentes nos dados que não são tão frequentes, mas escassos. Portanto, se o problema em que você está trabalhando lida com dados esparsos, como tf-idf, etc. Adagrad pode ser útil.

2) AdaDelta, o RMSProp quase funciona em linhas semelhantes, com a única diferença em Adadelta: você não precisa de uma constante de taxa de aprendizado inicial para começar.

3) Adam combina as boas propriedades de Adadelta e RMSprop e, portanto, tende a se sair melhor na maioria dos problemas.

4) A descida do gradiente estocástico é muito básica e raramente é usada agora. Um problema está na taxa global de aprendizado associada à mesma. Portanto, ele não funciona bem quando os parâmetros estão em escalas diferentes, pois uma baixa taxa de aprendizado tornará o aprendizado lento, enquanto uma grande taxa de aprendizado pode levar a oscilações. Além disso, a descida do gradiente estocástico geralmente tem dificuldade em escapar dos pontos de sela. Adagrad, Adadelta, RMSprop e ADAM geralmente lidam melhor com os pontos de sela. O SGD com impulso gera certa velocidade na otimização e também ajuda a escapar melhor dos mínimos locais.


2

Minha abordagem pessoal é escolher o otimizador mais recente (ou seja, o mais recente publicado em um periódico revisado por pares), porque eles geralmente relatam resultados em conjuntos de dados padrão ou superam o estado da arte ou ambos. Quando uso o Caffe, por exemplo, sempre uso o Adam ( http://arxiv.org/abs/1412.6980 ).


0
Nadam(lr=0.002, beta_1=0.9, beta_2=0.999, epsilon=None, schedule_decay=0.004)

Muito parecido Adamé essencialmente RMSpropcom o momento, Nadamé Adam RMSpropcom o momento de Nesterov.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.