Manière d'utiliser le réseau de neurones récurrents pour l'analyse de séries chronologiques


67

Les réseaux de neurones récurrents diffèrent des réseaux "normaux" par le fait qu'ils ont une couche "mémoire". En raison de cette couche, les NN récurrents sont supposés être utiles dans la modélisation de séries chronologiques. Cependant, je ne suis pas sûr de bien comprendre comment les utiliser.

Supposons que j'ai la série chronologique suivante (de gauche à droite):, [0, 1, 2, 3, 4, 5, 6, 7]mon objectif est de prédire le ipoint en utilisant des points i-1et i-2en tant qu'entrée (pour chacun i>2). Dans une ANN "régulière" et non récurrente, je traiterais les données comme suit:

 target| input
      2| 1 0
      3| 2 1
      4| 3 2
      5| 4 3
      6| 5 4
      7| 6 5 

Je créerais alors un réseau avec deux noeuds d'entrée et un noeud de sortie et l'entraînerais avec les données ci-dessus.

Comment faut-il modifier ce processus (le cas échéant) dans le cas de réseaux récurrents?


Avez-vous découvert comment structurer les données pour le RNN (par exemple, LSTM)? merci
mik1904

Réponses:


49

Ce que vous décrivez est en fait une approche de "fenêtre temporelle glissante" qui diffère des réseaux récurrents. Vous pouvez utiliser cette technique avec n’importe quel algorithme de régression. Cette approche présente une énorme limitation: les événements dans les entrées ne peuvent être corrélés qu’à d’autres entrées / sorties qui se trouvent à un maximum de t intervalles de temps séparés, où t est la taille de la fenêtre.

Par exemple, vous pouvez penser à une chaîne d'ordre Markov t. Les RNN n'en souffrent pas en théorie, mais dans la pratique, l'apprentissage est difficile.

Il est préférable d’illustrer un RNN par opposition à un réseau de feedfoward. Considérez le (très) réseau feedforward simple où est la sortie, la matrice de pondération et l'entrée.y=WxyWx

Nous utilisons maintenant un réseau récurrent. Nous avons maintenant une séquence d'entrées, nous allons donc noter les entrées par pour la ième entrée. La sortie correspondante est ensuite calculée via .xiyi=Wxi+Wryi1

Ainsi, nous avons une autre matrice de pondération qui incorpore la sortie de l'étape précédente linéairement dans la sortie actuelle.Wr

C'est bien sûr une architecture simple. Le plus commun est une architecture où vous avez une couche cachée qui est connectée de manière récurrente à elle-même. Soit la couche cachée au pas de temps i. Les formules sont alors:hi

h0=0
hi=σ(W1xi+Wrhi1)
yi=W2hi

Où est une fonction de non-linéarité / transfert appropriée comme le sigmoïde. et sont les poids de connexion entre la couche d'entrée et la couche cachée et la couche cachée et la couche de sortie. représente les poids récurrents.σW1W2Wr

Voici un schéma de la structure:

schématique


2
J'ai tort de voir une similitude de réseaux récurrents avec les filtres de Kalman? Je vois cela parce que la sortie précédente affecte la sortie actuelle. Quel est l’avantage pratique des réseaux récurrents alors?
Vass

10
Vous écrivez en ce sens qu'ils sont tous deux des modèles d'espace d'états. Cependant, il y a beaucoup de différences: les KF sont totalement probabilistes, en ce sens que les états cachés ont une signification probabiliste appropriée. Les RNN, quant à eux, sont déterministes et seules les sorties peuvent être utilisées pour modéliser une distribution de manière discriminante. De plus, les KF sont généralement estimés avec EM, alors que les RNN sont estimés avec des méthodes basées sur les gradients. Si vous souhaitez plus de détails, n'hésitez pas à poster une question et à m'envoyer le lien, mais les commentaires sont trop restreints pour cela.
Bayerj

1
Non, la fenêtre temporelle glissante ne prétend pas sur la sortie du réseau, mais uniquement sur l’entrée.
Bayerj

2
@bayerj d'excellentes informations, mais je ne pense pas que vous ayez répondu à la question. Comment structurez-vous les vecteurs d'entrée en sortie dans une fenêtre temporelle glissante pour les RNN? Pouvez-vous fournir quelques échantillons avec le jeu de données du PO?
Levitikon

1
Ceci est une description très informative des RNN, mais je ne trouve pas de réponse à la question de OP: comment faut-il modifier la [formation] dans le cas de réseaux récurrents?
wehnsdaefflae

9

Vous pouvez également envisager simplement d’utiliser un certain nombre de transformations de séries chronologiques pour les données d’entrée. Juste pour un exemple, les entrées pourraient être:

  1. la valeur d'intervalle la plus récente (7)
  2. la prochaine valeur d'intervalle la plus récente (6)
  3. le delta entre le plus récent et le plus récent (7-6 = 1)
  4. la troisième valeur d'intervalle la plus récente (5)
  5. le delta entre le deuxième et le troisième plus récent (6-5 = 1)
  6. la moyenne des trois derniers intervalles ((7 + 6 + 5) / 3 = 6)

Ainsi, si vos entrées dans un réseau de neurones conventionnels étaient ces six données transformées, il ne serait pas difficile pour un algorithme de rétropropagation ordinaire d'apprendre le modèle. Vous devrez cependant coder pour les transformations qui prennent les données brutes et les transforment en les 6 entrées ci-dessus de votre réseau de neurones.


1
Cependant, vous y mettez beaucoup de connaissances de domaine. Que faire si vous ne reconnaissez pas vous-même le modèle de la série chronologique? Comment pouvez-vous alors construire un modèle qui peut, en particulier s'il dépend d'entrées infiniment éloignées dans le passé?
Bayerj

Infini serait certainement délicat. Cependant, si vous introduisez des transformations de données qui ne sont pas pertinentes pour ce domaine, l'algorithme d'apprentissage sera facilement en mesure de comprendre cela et d'ajuster les poids en conséquence. Ce n'est donc pas un gros problème tant que vous avez les données qui sont pertinentes. Ainsi, le fait de disposer de nombreuses transformations différentes améliore vos chances de réussite.
rossdavidh

Imaginez la tâche suivante: La première entrée sur le réseau est ou . Ensuite, le réseau reçoit du bruit à partir de l'intervalle pour n'importe quel nombre (10, 1000, 100000) de pas de temps. Dès qu'il reçoit à nouveau , il doit indiquer ou , selon ce qu'il a vu précédemment. C’est ce que nous appelons "le point de référence du verrouillage". C'est un paramètre assez typique dans les problèmes d'apprentissage séquentiels. Le gros avantage des réseaux récurrents est que toute la transformation des entrées est apprise et NON donnée par un expert humain ou une fonctionnalité créée. 01[0.1,0.1]101
bayerj

2
Je ne voudrais pas dire que vous ne devriez jamais utiliser de réseaux de neurones récurrents; bien au contraire. Toutefois, si la tâche (comme indiqué dans la question) consiste à prédire la it à partir des points (i-1) et (i-2), vous pouvez obtenir un meilleur résultat plus rapidement en utilisant ces connaissances. Je ne veux pas dire que les RNN ne sont jamais une bonne idée, mais il est correct d'utiliser n'importe quelle connaissance du domaine dont vous avez besoin pour accélérer le processus de formation (et réduire le risque que la formation soit bloquée dans un minimum local, etc.) .
rossdavidh

4

Les réseaux de neurones cohérents historiques (HCNN) sont une autre possibilité . Cette architecture est peut-être plus appropriée pour la configuration mentionnée ci-dessus car elle élimine la distinction souvent arbitraire entre variables d'entrée et de sortie et tente de reproduire l'intégralité de la dynamique sous-jacente de l'ensemble du système via une formation avec tous les observables.

Lorsque je travaillais chez Siemens, j’ai publié un article sur cette architecture dans un livre de Springer Verlag: Zimmermann, Grothmann, Tietz, von Jouanne-Diedrich: Modélisation du marché, prévision et analyse des risques avec des réseaux de neurones historiques cohérents

Juste pour donner une idée du paradigme, voici un court extrait:

Dans cet article, nous présentons un nouveau type de NN récurrent appelé réseau de neurones cohérent historique (HCNN). Les HCNN permettent la modélisation de systèmes dynamiques non linéaires hautement interactifs sur plusieurs échelles de temps. Les HCNN ne font pas de distinction entre les entrées et les sorties, mais modélisent des observables intégrées dans la dynamique d'un grand espace d'états.

[...]

Le RNN est utilisé pour modéliser et prévoir un système dynamique ouvert en utilisant une approche de régression non linéaire. De nombreuses applications techniques et économiques du monde réel doivent toutefois être envisagées dans le contexte de grands systèmes dans lesquels diverses dynamiques (non linéaires) interagissent dans le temps. Projeté sur un modèle, cela signifie que nous ne faisons pas de distinction entre les entrées et les sorties, mais parlons d’observables. En raison de l'observabilité partielle des grands systèmes, nous avons besoin d'états cachés pour pouvoir expliquer la dynamique des observables. Les observables et les variables cachées doivent être traités par le modèle de la même manière. Le terme observables englobe les variables d’entrée et de sortie (c.-à-d.Yτ:=(yτ,uτ)). Si nous sommes en mesure de mettre en œuvre un modèle dans lequel la dynamique de toutes les observables peut être décrite, nous serons en mesure de fermer le système ouvert.

... et de la conclusion:

La modélisation conjointe des variables cachées et observées dans les grands réseaux de neurones récurrents ouvre de nouvelles perspectives en matière de planification et de gestion des risques. L'approche d'ensemble basée sur HCNN offre une approche alternative pour la prévision des distributions de probabilité futures. Les HCNN décrivent parfaitement la dynamique des observables dans le passé. Cependant, l'observabilité partielle du monde entraîne une reconstruction non unique des variables cachées et, par conséquent, différents scénarios futurs. Comme le véritable développement de la dynamique est inconnu et que tous les chemins ont la même probabilité, la moyenne de l'ensemble peut être considérée comme la meilleure des prévisions, alors que la largeur de bande de la distribution décrit le risque du marché. Aujourd'hui, Nous utilisons les prévisions de HCNN pour prévoir les prix de l'énergie et des métaux précieux afin d'optimiser le calendrier des décisions d'achat. Les travaux en cours concernent l'analyse des propriétés de l'ensemble et la mise en œuvre de ces concepts dans des applications pratiques de gestion des risques et de marchés financiers.

Certaines parties du document peuvent être visionnées publiquement: ici


Avez-vous une implémentation disponible pour télécharger et tester?
Julien L

@JulienL: Malheureusement pas parce qu'il s'agissait d'un travail exclusif pour Siemens.
vonjd

Dommage, cela semblait prometteur.
Julien L

@JulienL: Je vous encourage à contacter Georg, mon co-auteur. Son email est sur la première page du papier (voir le lien ci-dessus).
vonjd
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.