Contenu principal

La traduction de cette page n'est pas à jour. Cliquez ici pour voir la dernière version en anglais.

narxnet

Réseau de neurones autorégressif non linéaire avec entrée externe

Description

narxnet(inputDelays,feedbackDelays,hiddenSizes,feedbackMode,trainFcn) prend ces arguments :

  • Vecteur ligne de retards en entrée nuls ou positifs croissants, inputDelays

  • Vecteur ligne de retards de feedback nuls ou positifs croissants, feedbackDelays

  • Vecteur ligne d'une ou de plusieurs tailles de couches cachées, hiddenSizes

  • Type de feedback, feedbackMode

  • Fonction d’apprentissage par rétropropagation, trainFcn

et renvoie un réseau de neurones NARX.

Les réseaux NARX (autorégressifs non linéaires avec entrée externe) peuvent apprendre à prédire une série temporelle en fonction des valeurs passées de la même série temporelle, d'un feedback en entrée et d'une autre série temporelle appelée série temporelle externe (ou exogène).

exemple

Exemples

réduire tout

Entraînez un réseau de neurones autorégressif non linéaire avec entrée externe (NARX) et réalisez des prédictions sur des nouvelles données de séries temporelles. La prédiction d'une séquence de valeurs dans une série temporelle est également appelée prédiction en plusieurs étapes. Les réseaux en boucle fermée peuvent réaliser des prédictions en plusieurs étapes. En l’absence de feedback externe, les réseaux en boucle fermée peuvent poursuivre les prédictions au moyen de feedback interne. Dans une prédiction NARX, les valeurs futures d’une série temporelle sont prédites à partir des valeurs passées de cette série, du feedback en entrée et d’une série temporelle externe.

Chargez les données de prédictions de séries temporelles simples.

[X,T] = simpleseries_dataset;

Partitionnez les données entre les données d’apprentissage XTrain et TTrain, et les données de prédiction XPredict. Utilisez XPredict pour effectuer une prédiction après avoir créé le réseau en boucle fermée.

XTrain = X(1:80);
TTrain = T(1:80);
XPredict = X(81:100);

Créez un réseau NARX. Définissez les retards en entrée, les retards de feedback et la taille des couches cachées.

net = narxnet(1:2,1:2,10);

Préparez les données de séries temporelles avec preparets. Cette fonction décale automatiquement les séries temporelles en entrée et cibles du nombre d’étapes nécessaires pour remplir les états initiaux d'entrée et de retard de la couche.

[Xs,Xi,Ai,Ts] = preparets(net,XTrain,{},TTrain);

L'une des méthodes recommandées consiste à créer entièrement le réseau en boucle ouverte, puis à le transformer en boucle fermée pour une prédiction à plusieurs étapes à l'avance. Le réseau en boucle fermée peut alors prédire autant de valeurs futures que vous le souhaitez. Si vous simulez le réseau de neurones en boucle fermée uniquement, le réseau peut effectuer autant de prédictions que le nombre de pas de temps de la série d'entrée.

Entraînez le réseau NARX. La fonction train entraîne le réseau en boucle ouverte (architecture série-parallèle), y compris les étapes de validation et de test.

net = train(net,Xs,Ts,Xi,Ai);

Figure Neural Network Training (05-Sep-2024 18:48:43) contains an object of type uigridlayout.

Affichez le réseau entraîné.

view(net)

Calculez la sortie du réseau Y, les états d'entrée finaux Xf et les états de couche finaux Af du réseau en boucle ouverte à partir de l'entrée du réseau Xs, des états d'entrée initiaux Xi et des états de couche initiaux Ai.

[Y,Xf,Af] = net(Xs,Xi,Ai);

Calculez la performance du réseau.

perf = perform(net,Ts,Y)
perf = 
0.0153

Pour prédire la sortie pour les 20 pas de temps suivants, commencez par simuler le réseau en boucle fermée. Les états d'entrée finaux Xf et les états de la couche Af du réseau en boucle ouverte net deviennent les états d'entrée initiaux Xic et les états de la couche Aic du réseau en boucle fermée netc.

[netc,Xic,Aic] = closeloop(net,Xf,Af);

Affichez le réseau en boucle fermée.

view(netc)

Effectuez la prédiction pour 20 pas de temps avant en boucle fermée.

Yc = netc(XPredict,Xic,Aic)
Yc=1×20 cell array
    {[-0.0156]}    {[0.1133]}    {[-0.1472]}    {[-0.0706]}    {[0.0355]}    {[-0.2829]}    {[0.2047]}    {[-0.3809]}    {[-0.2836]}    {[0.1886]}    {[-0.1813]}    {[0.1373]}    {[0.2189]}    {[0.3122]}    {[0.2346]}    {[-0.0156]}    {[0.0724]}    {[0.3395]}    {[0.1940]}    {[0.0757]}

Arguments d'entrée

réduire tout

Retards en entrée nuls ou positifs, définis par un vecteur ligne croissant.

Retards de commentaires nuls ou positifs, définis par un vecteur ligne croissant.

Tailles des couches cachées, définies par un vecteur ligne d’un ou de plusieurs éléments.

Type de commentaires défini par 'open', 'closed' ou 'none'.

Nom de la fonction d’apprentissage, défini par l’un des éléments suivants.

Fonction d’apprentissageAlgorithme
'trainlm'

Levenberg-Marquardt

'trainbr'

Régularisation bayésienne

'trainbfg'

BFGS quasi-Newton

'trainrp'

Rétropropagation résiliente

'trainscg'

Gradient conjugué à l’échelle

'traincgb'

Gradient conjugué avec redémarrages Powell-Beale

'traincgf'

Gradient conjugué Fletcher-Powell

'traincgp'

Gradient conjugué Polak-Ribière

'trainoss'

Sécante en une seule étape

'traingdx'

Descente de gradient avec taux d’apprentissage variable

'traingdm'

Descente de gradient avec momentum

'traingd'

Descente de gradient

Exemple : Par exemple, vous pouvez spécifier l’algorithme de descente de gradient avec taux d’apprentissage variable en tant qu'algorithme d’apprentissage comme suit : 'traingdx'

Pour plus d’informations sur les fonctions d’apprentissage, veuillez consulter Entraîner et appliquer des réseaux de neurones peu profonds multicouches et Choose a Multilayer Neural Network Training Function.

Types de données : char

Historique des versions

Introduit dans R2010b