Contenu principal

Ajuster des données de séries temporelles avec l’application Neural Net Time Series

Cet exemple indique comment entraîner un réseau de neurones peu profond pour ajuster des données de séries temporelles avec l’application Neural Net Time Series.

Ouvrez l’application Neural Net Time Series avec ntstool.

ntstool

Sélectionner un réseau

Vous pouvez utiliser l’application Neural Net Time Series pour résoudre trois types de problèmes de séries temporelles.

  • Dans le premier type de problème de séries temporelles, vous voulez prédire les valeurs futures d’une série temporelle y(t) à partir des valeurs passées de cette série temporelle et des valeurs passées d’une deuxième série temporelle x(t). Cette forme de prédiction est dite autorégressive non linéaire avec entrée exogène (externe), ou NARX.

  • Dans le deuxième type de problème de série temporelle, une seule série est concernée. Les valeurs futures d’une série temporelle y(t) ne sont prédites qu’à partir des valeurs passées de cette série. Cette forme de prédiction est dite autorégressive non linéaire, ou NAR.

  • Le troisième type de problème de séries temporelles est similaire au premier type, car il comporte deux séries : une série d’entrée (prédicteurs) x(t) et une série de sortie (réponses) y(t). Vous voulez ici prédire les valeurs de y(t) à partir des valeurs précédentes de x(t), mais sans connaître les valeurs précédentes de y(t).

Pour cet exemple, utilisez un réseau NARX. Cliquez sur Select Network > NARX Network.

Sélectionner les données

L’application Neural Net Time Series comporte des exemples de données pour vous aider à commencer à entraîner un réseau de neurones.

Pour importer un exemple de données de processus de neutralisation du pH, sélectionnez Import > More Example Data Sets > Import pH Neutralization Data Set. Vous pouvez utiliser ce jeu de données pour entraîner un réseau de neurones afin de prédire le pH d’une solution en fonction du débit des solutions acide et basique. Si vous importez vos propres données depuis un fichier ou l’espace de travail, vous devez spécifier les prédicteurs et les réponses.

Les informations sur les données importées apparaissent dans le Model Summary. Ce jeu de données contient 2001 pas de temps. Les prédicteurs ont deux caractéristiques (débit des solutions acide et basique) et les réponses ont une seule caractéristique (pH de la solution).

Répartissez les données entre les jeux d’apprentissage, de validation et de test. Conservez les paramètres par défaut. Les données sont réparties en :

  • 70 % pour l’apprentissage.

  • 15 % pour valider que le réseau généralise et arrêter l’apprentissage avant un surajustement (overfitting).

  • 15 % pour tester la généralisation du réseau de manière indépendante.

Pour plus d’informations sur la division des données, veuillez consulter Divide Data for Optimal Neural Network Training.

Créer un réseau

Le réseau NARX standard est un réseau feedforward à deux couches, avec une fonction de transfert sigmoïde dans la couche cachée et une fonction de transfert linéaire dans la couche de sortie. Ce réseau utilise également des lignes de retard (TDL, Tapped Delay Lines) pour enregistrer les valeurs précédentes des séquences x(t) et y(t). Notez que la sortie du réseau NARX, y(t), est renvoyée à l’entrée du réseau (à traversy(t) les retards), car est une fonction de y(t1),y(t2),...,y(td). Cette boucle de retour d'information peut toutefois être ouverte pour un apprentissage efficace.

Comme la sortie réelle est disponible pendant l’apprentissage du réseau, vous pouvez utiliser l’architecture en boucle ouverte illustrée ci-dessous, dans laquelle la sortie réelle est utilisée au lieu de renvoyer la sortie estimée. Cela présente deux avantages. Le premier est que l’entrée dans le réseau feedforward est plus précise. Le deuxième est que le réseau obtenu a une architecture purement feedforward, ce qui permet d’utiliser un algorithme plus efficace pour l’apprentissage. Ce réseau est abordé de manière plus détaillée dans Design Time Series NARX Feedback Neural Networks.

La valeur Layer size définit le nombre de neurones cachés. Conservez la valeur de Layer size par défaut, 10. Remplacez la valeur Time delay par 4. Vous devrez peut-être ajuster ces valeurs si les performances d’apprentissage du réseau ne sont pas bonnes.

Vous pouvez voir l’architecture du réseau dans le volet Network.

Entraîner le réseau

Pour entraîner le réseau, sélectionnez Train > Train with Levenberg-Marquardt. Il s'agit de l’algorithme d’apprentissage par défaut, qui équivaut à cliquer sur Train.

L’apprentissage avec Levenberg-Marquardt (trainlm) est recommandé pour la plupart des problèmes. Pour les problèmes avec un ensemble de données petit ou bruité, la régularisation bayésienne (trainbr) peut offrir une meilleure solution, bien que cela prenne plus de temps. Pour des problèmes de grande dimension, le gradient conjugué à l’échelle (SCG, Scaled Conjugate Gradient) (trainscg) est recommandé car il utilise des calculs de gradient qui consomment moins de mémoire que les calculs jacobiens utilisés par les deux autres algorithmes.

Vous pouvez voir la progression de l'apprentissage dans le volet Training. L'apprentissage se poursuit jusqu’à ce que l'un des critères d’arrêt soit rempli. Dans cet exemple, l’apprentissage continue jusqu’à ce que l’erreur de validation soit supérieure ou égale à la plus petite erreur de validation précédente pendant six itérations de validation consécutives (« Critère de validation respecté »).

Analyser les résultats

Le Model Summary contient des informations sur l’algorithme d’apprentissage et sur les résultats de l’apprentissage pour chaque jeu de données.

Vous pouvez continuer à analyser les résultats en générant des tracés. Pour tracer l’autocorrélation des erreurs, dans la section Plots, cliquez sur Error Autocorrelation. Le tracé d’autocorrélation décrit comment les erreurs de prédiction sont reliées dans le temps. Pour un modèle de prédiction parfait, il ne devrait exister qu’une seule valeur non nulle de la fonction d’autocorrélation et elle devrait se produire au délai nul (l’erreur quadratique moyenne). Cela signifierait que les erreurs de prédiction n’étaient pas du tout corrélées entre elles (bruit blanc). S’il existait une forte corrélation entre les erreurs de prédiction, il devrait être possible d’améliorer la prédiction, peut-être en augmentant le nombre de retards dans les lignes de retard (TDL). Dans ce cas, les corrélations, excepté la corrélation au délai nul, se trouvent approximativement dans les limites de confiance de 95 % autour de zéro. Le modèle semble donc être approprié. Si vous aviez besoin de résultats encore plus précis, vous pourriez entraîner à nouveau le réseau. Cela modifierait les poids et biais initiaux du réseau et pourrait offrir un meilleur réseau après le nouvel apprentissage.

Regardez le tracé de corrélation croisée des erreurs d’entrée afin d’obtenir une vérification supplémentaire des performances du réseau. Dans la section Plots, cliquez sur Input-Error Correlation. Le tracé de corrélation croisée des erreurs d’entrée illustre la corrélation entre les erreurs et la séquence d’entrée x(t). Pour un modèle de prédiction parfait, toutes les corrélations devraient être nulles. S’il existe une corrélation entre l’entrée et l‘erreur, il devrait être possible d’améliorer la prédiction, peut-être en augmentant le nombre de retards dans les lignes de retard. Dans ce cas, la plupart des corrélations se trouvent dans l’intervalle de confiance autour de zéro.

Dans la section Plots, cliquez sur Response. Cela fait apparaître les sorties, les réponses (cibles) et les erreurs dans le temps. Cela indique également quels points temporels ont été sélectionnés pour l’apprentissage, les tests et la validation.

Si vous n’êtes pas satisfait des performances du réseau, vous disposez des possibilités suivantes :

  • Entraîner à nouveau le réseau.

  • Augmenter le nombre de neurones cachés.

  • Utiliser un jeu de données d’apprentissage plus grand.

De bonnes performances sur le jeu d’apprentissage associées à de mauvaises performances sur le jeu de test pourraient indiquer un surajustement (overfitting) du modèle. Une réduction de la taille de couche et donc du nombre de neurones permet de réduire le surajustement.

Vous pouvez également évaluer les performances du réseau sur un jeu de test supplémentaire. Pour charger des données de test supplémentaires pour l'évaluation du réseau, dans la section Test, cliquez sur Test. Le Model Summary affiche les résultats des données de test supplémentaires. Vous pouvez également générer des tracés afin d’analyser les résultats des données de test supplémentaires.

Générer du code

Sélectionnez Generate Code > Generate Simple Training Script afin de créer du code MATLAB pour reproduire les étapes précédentes en ligne de commande. Il peut être utile de créer le code MATLAB si vous voulez apprendre comment utiliser la fonctionnalité en ligne de commande de la toolbox pour personnaliser le processus d’apprentissage. Dans Ajuster les séries temporelles avec des fonctions en ligne de commande, vous étudierez les scripts générés de manière plus détaillée.

Exporter un réseau

Vous pouvez exporter votre réseau entraîné vers l’espace de travail ou Simulink®. Vous pouvez également déployer le réseau avec les outils MATLAB Compiler™ et d’autres outils de génération de code MATLAB. Pour exporter votre réseau entraîné et vos résultats, sélectionnez Export Model > Export to Workspace.

Voir aussi

| | | | | | | | |

Rubriques