RMSProp e Adam vs SGD


12

Estou realizando experimentos no conjunto de validação EMNIST usando redes com RMSProp, Adam e SGD. Estou atingindo uma precisão de 87% com SGD (taxa de aprendizado de 0,1) e desistência (prob de desistência de 0,1), bem como regularização de L2 (penalidade 1e-05). Ao testar a mesma configuração exata com o RMSProp e Adam, bem como a taxa de aprendizado inicial de 0,001, estou obtendo uma precisão de 85% e uma curva de treinamento significativamente menos suave. Não sei como explicar esse comportamento. Qual pode ser a razão por trás da falta de suavidade na curva de treinamento e a menor precisão e maiores taxas de erro alcançadas?


Isso depende da rede. Você pode nos mostrar detalhes sobre a rede? Você também pode fornecer as curvas de aprendizado?
Memming

Esta é uma rede com 5 camadas (Dropout, Afim, ELU em cada camada), configurada da seguinte forma: 150 dimensões ocultas, função de ativação de ELU usada, 0,1 taxa de aprendizado para SGD, 0,001 taxa de aprendizado para RMS e Adam, regularização L2 com 1e -05 de penalidade, desistência com probabilidade de exclusão de 0,1.
Alk

E quando você diz "exatamente a mesma configuração ... taxa de aprendizado inicial de 0,001", você quer dizer que usou uma taxa de aprendizado diferente ou fez duas experiências: uma com a mesma taxa de aprendizado e outra com uma taxa diferente? Pode depender do software que você está usando, quais parâmetros padrão para quê.
Wayne

Então, usei 0,1 para SGD e 0,001 para Adam e RMSProp. Isso ocorre porque quando eu executei o Adam e o RMSProp com 0,1 taxa de aprendizado, ambos tiveram um desempenho ruim com uma precisão de 60%. Além disso, 0,001 é o valor recomendado no artigo sobre Adam.
Alk

Você deve postar curvas de aprendizado e se mede o erro nos dados de teste ou treinamento.
Jakub Bartczuk

Respostas:


4

Após pesquisar alguns artigos on-line e a documentação do Keras, é sugerido que o otimizador RMSProp seja recomendado para redes neurais recorrentes. https://github.com/keras-team/keras/blob/master/keras/optimizers.py#L209

A descida estocástica de gradiente parece tirar proveito de sua taxa de aprendizado e momento entre cada lote para otimizar os pesos do modelo com base nas informações da função de perda no meu caso é 'categorical_crossentropy'.

Sugiro http://ruder.io/optimizing-gradient-descent/index.html para obter informações adicionais sobre algoritmos de otimização.


Não sei o que você quer dizer com "O otimizador RMSProp é recomendado para redes neurais recorrentes". O link que você colocou agora está quebrado e nunca foi mencionado que é recomendado.
Harshal Parekh
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.