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 K
um 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:
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
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.
fonte