Diretriz para selecionar os hiperparâmetros no Deep Learning

38

Estou procurando um artigo que possa ajudar a fornecer diretrizes sobre como escolher os hiperparâmetros de uma arquitetura profunda, como auto-codificadores empilhados ou redes de crenças profundas. Existem muitos hiperparâmetros e estou muito confuso sobre como escolhê-los. O uso da validação cruzada também não é uma opção, pois o treinamento realmente leva muito tempo!

Jack Twain
fonte
Eu recomendo o Deep Learning Book de Ian Goodfellow: deeplearningbook.org
Vadim Smolyakov

Respostas:

24

Existem basicamente quatro métodos:

  1. Pesquisa manual: usando o conhecimento que você tem sobre o problema, adivinhe os parâmetros e observe o resultado. Com base nesse resultado, ajuste os parâmetros. Repita esse processo até encontrar parâmetros que funcionem bem ou se esgote o tempo.
  2. Pesquisa em grade: Usando o conhecimento que você tem sobre o problema, identifique intervalos para os hiperparâmetros. Em seguida, selecione vários pontos desses intervalos, geralmente distribuídos uniformemente. Treine sua rede usando todas as combinações de parâmetros e selecione a combinação que apresenta melhor desempenho. Como alternativa, você pode repetir sua pesquisa em um domínio mais restrito, centrado nos parâmetros com melhor desempenho.
  3. Pesquisa aleatória: como a pesquisa em grade, você usa o conhecimento do problema para identificar intervalos para os hiperparâmetros. No entanto, em vez de escolher valores desses intervalos de maneira metódica, você os seleciona aleatoriamente. Repita esse processo até encontrar parâmetros que funcionem bem ou use o que aprendeu para restringir sua pesquisa. No artigo Pesquisa aleatória para otimização de hiperparâmetros, o Dr. Bengio propõe que este seja o método de linha de base com o qual todos os outros métodos devem ser comparados e mostra que ele tende a funcionar melhor que os outros métodos.
  4. Otimização Bayesiana: Um trabalho mais recente tem se concentrado em aprimorar essas outras abordagens, usando as informações obtidas em qualquer experimento para decidir como ajustar os hiper parâmetros para o próximo experimento. Um exemplo deste trabalho seria a Otimização Bayesiana Prática de Algoritmos de Aprendizado de Máquina por Adams et al.
DaemonMaker
fonte
14

Existe uma grande variedade de métodos. Eles podem ser amplamente particionados em métodos de pesquisa aleatórios / não direcionados (como pesquisa em grade ou pesquisa aleatória) e métodos diretos. Esteja ciente, no entanto, de que todos eles exigem testar uma quantidade considerável de configurações de hiperparâmetro, a menos que você tenha sorte (pelo menos centenas, depende do número de parâmetros).

Na classe de métodos diretos, várias abordagens distintas podem ser identificadas:

  • métodos livres de derivativos, por exemplo, o Nelder-Mead simplex ou o DIRECT
  • métodos evolutivos, como CMA-ES e enxames de partículas
  • abordagens baseadas em modelo, por exemplo, EGO e Kriging seqüencial

Você pode procurar no Optunity , um pacote Python que oferece uma variedade de solucionadores para o ajuste de hiperparâmetros (tudo o que mencionei, exceto EGO e Kriging, por enquanto). O Optunity estará disponível para MATLAB e R em breve. Isenção de responsabilidade: eu sou o principal desenvolvedor deste pacote.

Com base na minha experiência pessoal, os métodos evolutivos são muito poderosos para esses tipos de problemas.

Marc Claesen
fonte
10

Não procure mais! Yoshua Bengio publicou um dos meus papéis aplicados favoritos, que recomendo a todos os novos engenheiros de aprendizado de máquina quando começarem a treinar redes neurais: recomendações práticas para o treinamento baseado em gradiente de arquiteturas profundas. Para obter sua perspectiva sobre o giro do hiperparâmetro: incluindo taxa de aprendizado, programação da taxa de aprendizado, paradas antecipadas, tamanho de minibatch, número de camadas ocultas etc., consulte a Seção 3.

sabalaba
fonte