Um estranho para o campo ML / DL; iniciou o curso Udacity Deep Learning, baseado no Tensorflow; fazendo a tarefa 3, problema 4; tentando ajustar a taxa de aprendizado com a seguinte configuração:
- Tamanho do lote 128
- Número de etapas: o suficiente para preencher duas épocas
- Tamanhos de camadas ocultas: 1024, 305, 75
- Inicialização do peso: normal truncado com padrão. desvio de sqrt (2 / n) em que n é o tamanho da camada anterior
- Probabilidade de desistência: 0,75
- Regularização: não aplicada
- Algoritmo de taxa de aprendizagem: decaimento exponencial
brincou com os parâmetros da taxa de aprendizado; eles não parecem ter efeito na maioria dos casos; código aqui ; resultados:
Accuracy learning_rate decay_steps decay_rate staircase
93.7 .1 3000 .96 True
94.0 .3 3000 .86 False
94.0 .3 3000 .96 False
94.0 .3 3000 .96 True
94.0 .5 3000 .96 True
- Como devo ajustar sistematicamente a taxa de aprendizado?
- Como a taxa de aprendizado está relacionada ao número de etapas?
Respostas:
Use um otimizador de descida de gradiente. este é uma visão geral muito boa.
Em relação ao código, dê uma olhada neste tutorial . Isso e isso são alguns exemplos.
Pessoalmente, sugiro usar o ADAM ou o RMSprop. Ainda existem alguns parâmetros para definir, mas existem outros "padrão" que funcionam 99% do tempo. Para o ADAM, você pode ver o documento e o RMSprop neste slide .
EDITAR
Ok, você já usa um otimizador de gradiente. Em seguida, você pode executar uma otimização de hiperparâmetros para selecionar a melhor taxa de aprendizado. Recentemente, uma abordagem automatizada foi proposta . Além disso, há muitos trabalhos promissores de Frank Hutter respeito do ajuste automatizado de hiperparâmetros.
Em geral, dê uma olhada no Desafio AutoML , onde você também pode encontrar o código fonte pelas equipes. Nesse desafio, o objetivo é automatizar o aprendizado de máquina, incluindo o ajuste de hiperparâmetros.
Finalmente, este artigo de LeCun e este tutorial muito recente de DeepMin (consulte o Capítulo 8) fornecem algumas idéias que podem ser úteis para sua pergunta.
De qualquer forma, lembre-se de que (especialmente para problemas fáceis), é normal que a taxa de aprendizado não afete muito o aprendizado ao usar um otimizador de descida de gradiente. Geralmente, esses otimizadores são muito confiáveis e funcionam com parâmetros diferentes.
fonte
Você pode automatizar o ajuste de hiperparâmetros em vários algoritmos de aprendizado de máquina, ou apenas nos hiperparâmetros do otimizador Gradient Descent, ou seja, na taxa de aprendizado.
Uma biblioteca que é popular por fazer isso é a hortelã.
https://github.com/JasperSnoek/spearmint
fonte
Um sintonizador automático de taxa de aprendizado muito recente é fornecido em Online Learning Rate Adaptation with Hypergradient Descent
Esse método é muito simples de implementar, o resultado principal do SGD é dado como:
fonte
Para ajustar os hiperparâmetros (seja taxa de aprendizado, taxa de decaimento, regularização ou qualquer outra coisa), você precisa estabelecer um conjunto de dados retido; este conjunto de dados é separado do seu conjunto de dados de treinamento. Depois de ajustar vários modelos com configurações diferentes (onde uma configuração = uma opção específica de cada hiperparâmetro), você escolhe a configuração selecionando aquele que maximiza a precisão da saída.
fonte