How to improve the prediction performance of NARXNET in closed loop simulation and how to train it for multiple data set?

2 views (last 30 days)
Hi,
I am working on a problem where a neural network is used to model a dynamic mechanical system. I have data of the input and output of the model. I have trained the NARXNET for the dataset from one single run from the system using the Open Loop (Parallel Architecture) and then simulated the network for the same dataset in open loop mode. I am getting very good results from the system. But as soon as I convert the network to a closed loop and then simulate it for the same dataset the performance of the network deteriorates highly (mse increased by 100 times). Literature indicates that for NARXNET training is best done in open-loop mode and then for simulation it should be turned into a closed loop. What are the ways in which I can improve upon the closed loop performance of the network?
My second question is that I had trained the above network for a single set of time-series dataset of the inputs and targets (from the a single type of input to the system). But I need the network to generalize my network for any type of input my system gets. How do I go on about achieving that? One method I tried is that I vectorized the dataset from few different types of input datasets (as mentioned in one of a similar post, link below) and then trained the network with the new combined/larger dataset. But this method did not give good results.

Accepted Answer

Greg Heath
Greg Heath on 13 Dec 2017
Your comments are too qualitative.
Have you consulted my NARXNET posts in the NEWSGROUP and ANSWERS?
Dimensions of input and target series matrices?
input delays = ?
feedback delays = ?
Which numbers of hidden nodes? (e.g., 4,9 or 13)
How many random initial weights trials for each hidden node value? (e,g, 10?)
NMSEo = ?
NMSEc = ?
Hope this helps
Thank you for formally accepting my answer
Greg
  2 Comments
Parimal Sarathi
Parimal Sarathi on 13 Dec 2017
Yes, I have gone through some of those posts.
The Input Matrix is of size 2x4800 (two inputs variables of 4800 timesteps) and the Target Matrix is of the same size. I have arranged the data as Cell Matrices.
delaysteps = 3;
delayinput = 0:2;
delayfeedback = 1:delstep;
hiddenLayerSize = [5, 6];
Then to prepare data for the open loop training, I am using preparets function.
[osinputs,oinindel,oinlaydel,ostargets] = preparets(net,inputs,{},targets);
net.trainFcn = 'trainlm';
net.divideFcn = 'divideint';
net.performFcn = 'mse';
net.divideParam.trainRatio = 85/100;
net.divideParam.valRatio = 10/100;
net.divideParam.testRatio = 5/100;
net.layers{1}.transferFcn = 'tansig';
net.layers{2}.transferFcn = 'tansig';
After training the network, I am closing the network using the following commands-
[cnet,cinindel,cinlaydel] = closeloop(net,oinindel,oinlaydel);
coutputs = cnet(inputs(:,(1+delstep):end),cinindel,cinlaydel);
clPerformance = perform(cnet,targets((1+delstep):end),coutputs);
Here o stands for open loop, c for closed loop, s for shifted, inindel for initial input delay and inlaydel for initial layer delay.
I didn't understand a few questions posed by you here-
_How many random initial weights trials for each hidden node value? (e,g, 10?)_
What do you mean by initial weights trails and how do we set that? What does N stand for NMSEo and NMSEc?
Regarding the MSEs for the closed loop and open loop simulations -
ooutputs = net(osinputs,oinindel,oinlaydel);
performance = perform(net,ostargets,ooutputs)
performance =
107.9811
coutputs = cnet(inputs(:,(1+delstep):end),cinindel,cinlaydel);
clPerformance = perform(cnet,targets((1+delstep):end),coutputs)
clPerformance =
2.7219e+04
The range of my data is: 2805.6.
Muhammad Adil Raja
Muhammad Adil Raja on 11 Apr 2020
Is it possible to specify input and feedback delays within a certain range? Like 300:309? Moreover, is it possible to specify different delays for each of the input variables?

Sign in to comment.

More Answers (0)

Categories

Find more on Sequence and Numeric Feature Data Workflows in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!