Como selecionar o número de camadas ocultas e o número de células de memória em um LSTM?

28

Estou tentando encontrar algumas pesquisas existentes sobre como selecionar o número de camadas ocultas e o tamanho delas de uma RNN baseada em LSTM.

Existe um artigo em que esse problema está sendo investigado, ou seja, quantas células de memória se deve usar? Suponho que depende totalmente da aplicação e em que contexto o modelo está sendo usado, mas o que a pesquisa diz?

Stephen Johnson
fonte

Respostas:

15

Sua pergunta é bastante ampla, mas aqui estão algumas dicas:

Para redes feedforward, consulte esta pergunta :

A resposta de @ doug funcionou para mim. Há uma regra geral adicional que ajuda a problemas de aprendizado supervisionado. O limite superior do número de neurônios ocultos que não resultará em excesso de ajuste é:

Nh=Ns(α(NEu+No))

NEu = número de neurónios de entrada. No = número de neurônios de saída. Ns = número de amostras no conjunto de dados de treinamento. α = um fator de escala arbitrário geralmente 2-10.
Outros recomendam a criaçãoumaeuphuma para um valor entre 5 e 10, mas eu encontrar um valor de 2, muitas vezes trabalho sem overfitting. Conforme explicado por esteexcelente texto NN Design, você deseja limitar o número de parâmetros livres em seu modelo (seu grauNs(NEu+No)α

Para um procedimento automatizado, você inicia com um alfa de 2 (o dobro de graus de liberdade em seus dados de treinamento que o modelo) e sobe até 10 se o erro nos dados de treinamento for significativamente menor do que na validação cruzada conjunto de dados.

E especificamente nos LSTM, você pode querer verificar isso .

Mas o ponto principal: não há regra para a quantidade de nós ocultos que você deve usar, é algo que você precisa descobrir para cada caso por tentativa e erro .

Thomas W
fonte
7

Selecione o número de camadas ocultas e o número de células de memória no LSTM sempre depende do domínio e do contexto do aplicativo em que você deseja aplicar esse LSTM.

Para camadas ocultas. A introdução de camada (s) oculta (s) torna possível que a rede exiba comportamento não linear.

O número ideal de unidades ocultas pode ser facilmente menor que o número de entradas, não existe uma regra como multiplicar o número de entradas por N ... Se você tiver muitos exemplos de treinamento, poderá usar várias unidades ocultas, mas às vezes apenas 2 unidades ocultas funcionam melhor com poucos dados. Geralmente, as pessoas usam uma camada oculta para tarefas simples, mas atualmente as pesquisas em arquiteturas de redes neurais profundas mostram que muitas camadas ocultas podem ser proveitosas para objetos difíceis, caracteres manuscritos e problemas de reconhecimento de faces.

I assume it totally depends on the application and in which context the model is being used.

Ligade de Maheshwar
fonte
5
A não linearidade é devida ao uso de funções de ativação não lineares. O número de camadas aumenta apenas a expressividade do NN. Você deve corrigir esta resposta. Combinações de funções lineares ainda são funções lineares (portanto, se você tivesse várias camadas que executassem apenas uma combinação linear das entradas, a combinação dessas camadas ainda seria linear).
nbro
4

Em geral, não há diretrizes sobre como determinar o número de camadas ou o número de células de memória em um LSTM.

O número de camadas e células necessárias em um LSTM pode depender de vários aspectos do problema:

  1. A complexidade do conjunto de dados. A quantidade de recursos, número de pontos de dados etc.

  2. O processo de geração de dados. A seguir, exemplo de como o processo de geração de dados pode desempenhar um papel significativo.

Ex - Previsão dos preços do petróleo em comparação com a previsão do PIB de uma economia bem compreendida. O último é muito mais fácil que o primeiro. Assim, a previsão dos preços do petróleo também pode precisar de mais número de células de memória LSTM para prever com a mesma precisão em comparação com o PIB.

  1. A precisão necessária para o caso de uso. O número de células de memória dependerá muito disso. Se o objetivo é superar o estado da arte - é necessário mais células LSTM em geral. Compare isso com o objetivo de obter previsões razoáveis ​​- o que exigiria um número menor de células LSTM.

Sigo estas etapas ao modelar usando LSTM:

  1. Tente uma única camada oculta com 2 ou 3 células de memória. Veja como ele se comporta em relação a um benchmark. Se for um problema de série temporal, geralmente faço uma previsão a partir de técnicas clássicas de série temporal como referência.

  2. Tente aumentar o número de células da memória. Se o desempenho não estiver aumentando muito, passe para o próximo passo.

  3. Comece a aprofundar a rede, ou seja, adicione outra camada com um pequeno número de células de memória.

A parte, de lado :

Não há limite para a quantidade de trabalho que pode ser dedicada para atingir os mínimos globais da função de perda e ajustar os melhores hiperparâmetros. Portanto, focar no objetivo final da modelagem deve ser a estratégia, em vez de tentar aumentar a precisão o máximo possível.

A maioria dos problemas pode ser resolvida usando 2-3 camadas da rede.

ingênuo
fonte