Como um aquecimento com redes neurais recorrentes, estou tentando prever uma onda senoidal de outra onda senoidal de outra frequência.
Meu modelo é um RNN simples, seu passe para frente pode ser expresso da seguinte forma:
Quando tanto a entrada como a entrada e a saída esperada são duas ondas senoidais da mesma frequência, mas com (possivelmente) uma mudança de fase, o modelo é capaz de convergir adequadamente para uma aproximação razoável.
No entanto, no caso a seguir, o modelo converge para um mínimo local e prediz zero o tempo todo:
- entrada:
- saída esperada:
Aqui está o que a rede prevê quando recebe a sequência de entrada completa após 10 épocas de treinamento, usando mini-lotes do tamanho 16, uma taxa de aprendizado de 0,01, um comprimento de sequência de 16 e camadas ocultas do tamanho 32:
O que me leva a pensar que a rede é incapaz de aprender com o tempo e depende apenas da entrada atual para fazer sua previsão.
Tentei ajustar a taxa de aprendizado, o comprimento das sequências e o tamanho das camadas ocultas sem muito sucesso.
Estou tendo exatamente o mesmo problema com um LSTM. Não quero acreditar que essas arquiteturas sejam falhas, alguma dica sobre o que estou fazendo de errado?
Estou usando um pacote rnn para o Torch, o código está em um Gist .