Qual é o tamanho de sequência viável para um RNN modelar?

15

Estou pensando em usar uma versão LSTM ( memória de curto prazo ) de uma rede neural recorrente (RNN) para modelar dados de séries temporais. À medida que o comprimento da sequência dos dados aumenta, a complexidade da rede aumenta. Estou, portanto, curioso que comprimento de sequências seria possível modelar com uma boa precisão?

Eu gostaria de usar uma versão relativamente simples do LSTM sem dificuldades para implementar abordagens de ponta. Cada observação em minhas séries temporais provavelmente teria 4 variáveis ​​numéricas e o número de observações seria de 100.000 a 1.000.000.

pir
fonte

Respostas:

8

Depende totalmente da natureza dos seus dados e das correlações internas, não existe uma regra de ouro. No entanto, como você possui uma grande quantidade de dados, um LSTM de duas camadas pode modelar uma grande quantidade de problemas / referências de séries temporais.

Além disso, você não retrocede ao longo do tempo a série inteira, mas geralmente (200 a 300) as últimas etapas. Para encontrar o valor ideal, você pode validar cruzadamente usando a pesquisa em grade ou otimização bayesiana. Além disso, você pode dar uma olhada nos parâmetros aqui: https://github.com/wojzaremba/lstm/blob/master/main.lua .

Portanto, o comprimento da sequência não afeta realmente o treinamento do modelo, mas é como ter mais exemplos de treinamento, mantendo o estado anterior em vez de redefini-lo.

Yannis Assael
fonte
Digamos que preciso fazer uma análise de sentimentos, que é uma abordagem muitos-para-um (consulte karpathy.github.io/2015/05/05/21/rnn-effectiveness ). Cada uma dessas sentenças é muito longa (> 200 palavras). Se eu retrocedesse ao longo do tempo as 35 etapas usuais, isso não seria um problema? Como é um aprendizado supervisionado, presumo que ele só possa retropropagar quando "atingir" o alvo da classificação binária y,. Dessa maneira, como a RNN ajustaria os pesos com base em algo anterior às 35 etapas selecionadas para o BPTT?
Pir
11
Bem, não seria um problema, pois os mesmos pesos são reutilizados na próxima etapa do treinamento. Além disso, se você vir o código-fonte na etapa 36 (digamos), o vetor de inicialização não é zero, mas os estados da etapa 35. Portanto, executando pequenas etapas, você otimiza sua função de custo usando o BPTT.
Yannis Assael
11
Apenas para esclarecer: o BPTT é executado uma única vez ou várias vezes para uma única frase? Se for executado uma única vez, os padrões que afetam apenas as primeiras palavras da frase afetarão apenas o estado oculto, certo? Quero dizer .. os gradientes nunca serão computados com relação à parte da entrada.
Pir
11
Pedi isso como questão separada que eu espero que você vai olhar :) stats.stackexchange.com/questions/167482/...
pir
2
"dado que você tem uma grande quantidade de dados, um LSTM de duas camadas pode modelar praticamente qualquer série temporal." onde está a prova?
N1 de