Janela deslizante leva a sobreajuste no LSTM?


15

Superajustei meu LSTM se eu treiná-lo através da janela deslizante? Por que as pessoas parecem não usá-lo para LSTMs?

Para um exemplo simplificado, suponha que tenhamos de prever a sequência de caracteres:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

É ruim (ou melhor?) Se eu continuar treinando meu LSTM com os seguintes minibatches:

A B C D E F G H I J K L M N, backprop, erase the cell

B C D E F G H I J K L M N O, backprop, erase the cell

 .... and so on, shifting by 1 every time?

Anteriormente, eu sempre o treinava como:

A B C D E F G H I J K L M N,  backprop, erase the cell

O P Q R S T U V W X Y Z,  backprop, erase the cell

Em vez de mudar por um, seria melhor deslizar a janela em 2 entradas, etc? O que isso significa (em termos de precisão / sobreajuste)?


Além disso, se eu fizesse a abordagem de janela deslizante em uma rede Feed-forward, isso resultaria em super ajuste? Eu diria que sim, porque a rede é exposta às mesmas regiões de informações por um período muito longo. Por exemplo, é exposto a E F G H I J Kum longo período de tempo.


Editar:

Lembre-se de que o estado da célula é apagado entre os lotes de treinamento, portanto o LSTM terá um "martelo na cabeça" nesses momentos. Não é possível lembrar o que havia antes do OPQRSTUVWXYZ. Isso significa que o LSTM é incapaz de aprender que "O" segue o "M".

Então, pensei (portanto, toda a minha pergunta), por que não dar um lote intermediário (sobreposto) no meio ... e nesse caso, por que não usar vários minibatches sobrepostos - para mim, isso proporcionaria um treinamento mais suave? Em última análise, isso significaria uma janela deslizante para um LSTM.


Algumas informações úteis que encontrei após a resposta foram aceitas:

daqui

A primeira palavra da tradução em inglês provavelmente está altamente correlacionada com a primeira palavra da frase de origem. Mas isso significa que o decodificador deve considerar as informações de 50 etapas atrás, e essas informações precisam ser de alguma forma codificadas no vetor. Sabe-se que as redes neurais recorrentes têm problemas ao lidar com essas dependências de longo alcance. Em teoria, arquiteturas como LSTMs devem ser capazes de lidar com isso, mas na prática dependências de longo alcance ainda são problemáticas.

Por exemplo, os pesquisadores descobriram que a reversão da sequência da fonte (retornando-a para o codificador) produz resultados significativamente melhores porque reduz o caminho do decodificador para as partes relevantes do codificador. Da mesma forma, alimentar uma sequência de entrada duas vezes também parece ajudar uma rede a memorizar melhor as coisas. Por exemplo, se um exemplo de treinamento for "John foi para casa", você daria "John foi para casa John foi para casa" para a rede como uma entrada.

Edite depois de aceitar a resposta:

Vários meses depois, estou mais inclinado a usar a abordagem de janela deslizante, pois ela usa melhor os dados. Mas, nesse caso, você provavelmente não deseja treinar BCDEFGHIJKLMNO logo após ABCDEFGHIJKLMNO. Em vez disso, embaralhe seus exemplos para gradualmente e uniformemente " incorporar " todas as informações em seu LSTM. Dê HIJKLMNOPQRSTU após ABCDEFGHIJKLMNO etc. Isso está diretamente relacionado ao esquecimento catastrófico. Como sempre, monitore de perto o conjunto de validação e teste e pare assim que os erros deles aumentarem constantemente

Além disso, o problema "martelo na cabeça" pode ser aprimorado usando gradientes sintéticos. Veja seu benefício aqui: (a resposta vinculada discute o benefício de sequências longas) /datascience//a/32425/43077

Respostas:


9

Embora a resposta anterior de @Imran esteja correta, acho necessário adicionar uma ressalva: existem aplicativos por aí onde as pessoas colocam uma janela deslizante em um LSTM. Por exemplo, aqui , para enquadrar a previsão como um problema de aprendizado supervisionado.

4(mn+n2+n)mn

Como os LSTMs não exigem entrada de tamanho fixo, eles podem encontrar o número ideal de lookback por conta própria. No entanto, se você fez uma análise autoregressiva anterior e decidiu que, por exemplo, a etapa atual está mais correlacionada com a 10ª etapa anterior e não com a 11ª ou qualquer etapa posterior no passado, você pode talvez poupe algum tempo de treinamento alimentando-se de seqüências de comprimento fixo. No entanto, esse tipo de derrota o objetivo de um LSTM.

Se os seus dados não forem ricos o suficiente para um LSTM, eu recomendaria tentar algo muito mais simples, como um modelo auto-regressivo, e trabalhar o seu caminho.

EDIT (respondendo a um comentário):

Sequências sobrepostas são usadas como entrada, especialmente quando a sequência é muito longa (embora, é claro, 'long' seja relativo). Embora os LSTMs sejam melhores que um RNN de baunilha para sequências longas, eles ainda podem ter problemas para lembrar as etapas do tempo desde o início de uma sequência, se a sequência for muito longa. Isso levou a coisas como o LSTM bidirecional, que lê a sequência para frente e para trás, melhorando a exposição da rede ao início e ao final de cada sequência de entrada. O princípio é o mesmo com seqüências sobrepostas, embora eu argumentasse que as seqüências sobrepostas são mais intuitivas.


Obrigado, ainda não vejo se o LSTM deve ou não ser treinado com lotes que não se sobrepõem. A postagem de que você gostou é valiosa, mas discute apenas as redes Feed-Forward e não aborda os benefícios / perigos dos minibatches sobrepostos do LSTM durante o treinamento. O @Imran também não discutiu a "anti-receita" contra minibatches sobrepostos - meu primeiro comentário ao seu post.
Kari

Eu editei a minha pergunta para incluir o comentário
Kari

Muita informação excelente!
Imran

@Kari Modifiquei minha resposta. Isso ajuda?
StatsSorceress

5

Os LSTMs não requerem uma janela deslizante de entradas. Eles podem se lembrar do que viram no passado e, se você alimentar exemplos de treinamento, um de cada vez, eles escolherão a janela de tamanho certo de entradas a serem lembradas por conta própria.

Os LSTMs já são propensos a sobreajuste e, se você alimentar muitos dados redundantes com uma janela deslizante, sim, é provável que eles se superfigurem.

Por outro lado, é necessária uma janela deslizante para a previsão de séries temporais com as Redes Neurais Feedforward, porque as FNNs exigem uma entrada de tamanho fixo e não possuem memória, portanto, é a maneira mais natural de fornecer dados de séries temporais.

A adequação ou não do FNN depende da arquitetura e dos dados, mas todas as técnicas de regularização padrão serão aplicadas. Por exemplo, você pode tentar escolher uma rede menor, regularização L2, desistência etc.


Obrigado! Eu argumentaria que o estado da célula é apagado entre os lotes de treinamento, portanto o LSTM terá um "martelo na cabeça" nesses momentos. Não é possível lembrar o que havia antes do OPQRSTUVWXYZ. Isso significa que o LSTM é incapaz de aprender que "O" segue o "M". Então pensei: por que não dar um lote intermediário (sobreposto) no meio ... e, nesse caso, por que não usar vários minibatches sobrepostos - para mim, isso proporcionaria um treinamento mais suave?
22418 Kari

Em última análise, isso significaria que uma janela deslizante para um LSTM
Kari

Não é necessário apagar o estado da célula entre os lotes de treinamento, embora a retropropagação ainda não seja possível.
Jan van der Vegt

Eu tentei e - mesmo com a taxa de aprendizado 0, o erro foi subindo e descendo em pequena quantidade porque estados incorretos das células foram reutilizados como "legados" durante o treinamento. Não consegui empilhar mais de 6 camadas com essa abordagem - ficou muito caótica e não convergiu. No entanto, redefinir o estado da célula para zero após cada Backprop me permitiu empilhar 150 camadas com 64 neurônios em cada camada e treiná-lo com taxa de aprendizado 0,001 e momento de 0,9 (estou usando LayerNormalization, é por isso que a taxa de aprendizado é tão grande no meu caso)
Kari

1
Isso significa que, com "estados de células herdados", o LSTM se torna instável e não confiável - ele começa a trabalhar em um novo minibatch, baseando suas decisões no último estado da célula (do minibatch anterior) que não foi corrigido em toda a extensão. Então, apagando o estado da célula elimina esta falha FUNDIMENTAL, mas torna a experiência LSTM amnésia
Kari
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.