Comme échauffement avec des réseaux de neurones récurrents, j'essaie de prédire une onde sinusoïdale à partir d'une autre onde sinusoïdale d'une autre fréquence.
Mon modèle est un simple RNN, sa passe avant peut s'exprimer comme suit:
Lorsque l'entrée et la sortie attendues sont deux ondes sinusoïdales de même fréquence mais avec (éventuellement) un déphasage, le modèle est capable de converger correctement vers une approximation raisonnable.
Cependant, dans le cas suivant, le modèle converge vers un minimum local et prédit zéro tout le temps:
- entrée:
- sortie attendue:
Voici ce que le réseau prédit lorsqu'il reçoit la séquence d'entrée complète après 10 époques de formation, en utilisant des mini-lots de taille 16, un taux d'apprentissage de 0,01, une longueur de séquence de 16 et des couches cachées de taille 32:
Ce qui m'amène à penser que le réseau n'est pas en mesure d'apprendre à travers le temps et ne dépend que de l'entrée actuelle pour faire sa prédiction.
J'ai essayé d'ajuster le taux d'apprentissage, la longueur des séquences et la taille des couches cachées sans grand succès.
J'ai exactement le même problème avec un LSTM. Je ne veux pas croire que ces architectures sont si imparfaites, des indices sur ce que je fais mal?
J'utilise un paquetage rnn pour Torch, le code est dans un Gist .