The neural networks is a way to model any input to output relations based on some input output data when nothing is known about the model. This example shows you a very simple example and its modelling through neural network using MATLAB.
Actual Model
Let us take that our model has three inputs a,b and c and generates an output y. For data generation purposes, let us take this model as
y=5a+bc+7c;
we are taking this model for data generation. In actual cases, you dont have the mathematical model and you generate the data by running the real system.
Let us first write a small script to generate the data
a= rand(1,1000);b=rand(1,1000);c=rand(1,1000);n=rand(1,1000)*0.05;y=a*5+b.*c+7*c+n;
n is the noise, we added deliberately to make it more like a real data. The magnitude of the noise is 0.1 and is uniform noise.
So our input is set of a,b and c and output is y.
I=[a; b; c];O=y;
Understanding Neural Networks
Neural network is like brain full of nerons and made of different layers.
The first layer which takes input and put into internal layers or hidden layers are known as input layer.
The outer layer which takes the output from inner layers and gives it to outer world is known as output layer.
The internal layers can be any number of layers.
Each layer is a basically a function which takes some variables (in the form of vector u) and transforms it to another variable(another vector v) by multiplying it with coefficients and adding some biases b. These coefficient is known as weight matrix w. Size of the v vector is known as v-size of the layer.
v=sum(w.*u)+b
So we will make a very simple neural network for our case- 1 input and 1 output layer. We will take the input layer v-size as 5. Since we have three input , our input layer will take u with three values and transform it to a vector v of size 5. and our output layer now take this 5 element vector as input u and transforms it to a vector of size 1 because we have only on output.
Creating a simple Neural FF Network
We will use matlab inbuilt function newff for generation of model.
First we will make a matrix R which is of 3 *2 size. First column will show the minimum of all three inputs and second will show the maximum of three inputs. In our case all three inputs are from 0 to 1 range, So
R=[0 1; 0 1 ; 0 1];
Now We make a Size matrix which has the v-size of all the layers.
S=[5 1];
Now call the newff function as following
net = newff([0 1;0 1 ;0 1],S,{'tansig','purelin'});
net is the neural model. {'tansig','purelin'} shows the mapping function of the two layers. Let us not waste time on this.
Now as each brain need training, this neural network too need it. We will train this neural network with the data we generated earlier.
net=train(net,I,O);
Now net is trained. You can see the performance curve, as it gets trained.
So now simulate our neural network again on the same data and compare the out.puts.
O1=sim(net,I);plot(1:1000,O,1:1000,O1);
You can observe how closely the the two data green and blue follow each other.
Let us try scatter plot between simulated output and actual target output.
scatter(O,O1);
Let us observe the weight matrix of the trained model.
net.IW{1}-0.3684 0.0308 -0.5402
0.4640 0.2340 0.5875
1.9569 -1.6887 1.5403
1.1138 1.0841 0.2439net.LW{2,1}-11.1990 9.4589 -1.0006 -0.9138
Now test it again on some other data. What about a=1,b=1 and c=1;
So input matrix will be [1 1 1]';
y1=sim(net,[1 1 1]');
you will see 13.0279. which is close to 13 the actual output (5*1+1*1+12*1);
Updates:
1. O and T are same variable. define O=T or just replace T everywhere with O
2. S=[5 1], so while defining newff you should pass S or [5 1]. [4 1] is incorrect
1. O and T are same variable. define O=T or just replace T everywhere with O
2. S=[5 1], so while defining newff you should pass S or [5 1]. [4 1] is incorrect
fuzzy example in matlab http://technical-leader.blogspot.com/2011/09/fuzzy-logic-examples-using-matlabfuzzy.html
ReplyDeleteTime should be still wasted, since on new version newff has new argument list and therefore it does not work.
ReplyDeleteHopefully i'll try to comeback when i have studied how to use it :)
My Matlab (R2008a) and FL toolbox v 2.2.7
please if you can help me to using ant colony optimization to training neural network in matlab invernoiment?
ReplyDeleteOverall this seems like a great little tutorial, but I'm confused by one thing. It says "we will train this neural network with the data we generated earlier," and then provides the command "net = train (net, I, O)" and continues to reference O as a variable for the rest of the explanation. O, however, was never defined. Did the author, perhaps, intend to use T as the output target data?
ReplyDeleteHi Steve
DeleteYes , you are right. O and T are same. I forgot to define that. thanks for pointing it out :)
Corrected the mistake
Abhishek
@ahmed
ReplyDeletetraining can be seen as fitting the model such that output should match target.. this fitting is an optimization problem over neural netwrk's biases and weights. just try to fit optimize weights and biases such that sum(O1-O)^2 is minimized using any optimization nmethod,,
Hi Steve
ReplyDeleteYes , you are right. O and T are same. I forgot to define that. thanks for pointing it out :)
Abhishek
Neural Network Toolbox provides functions and apps for modeling complex nonlinear systems that are not easily modeled with a closed-form equation. Neural Network Toolbox supports supervised learning with feed forward, radial basis, and dynamic networks. It also supports unsupervised learning with self-organizing maps and competitive layers. With the toolbox you can design, train, visualize, and simulate neural networks. You can use Neural Network Toolbox for applications such as data fitting, pattern recognition, clustering, time-series prediction, and dynamic system modeling and control.
ReplyDelete@sumit Kumar
ReplyDeletethanks for the information, yes you are right, it is very useful and can be used in variety of things
thank you very much Gupta and Abhishek...
ReplyDeleteGupta and Abhishek are the same person here . thanks :)
DeleteI have 15inputs and want to come up with two outputs which i will scale down to bits for contol of electric motor speed through variable speed drives.how can i do this using Neural networks considering the inputs are input barley specifications,from two batchs of malt.Ultimately i will be using the two inputs for blending purposes
ReplyDeleteThank you for this small tutorial.
ReplyDeleteBut I have a confusion,
A. in the first line you defined a,b,c as random no. between 1,1000
and later in matrix as 0,1 max and min values of input. That I didn't get.
B.can a matrix be given as single input or there's a different way to deal with matrices[two dimension].
when you say a=random(1,1000) it doesnot mean the a is between 1 and 1000. it means that a is matrix containing 1000 datapoints. all points will be between 0 and 1. that is why the max and min limit is 1 and 0
Deleteeach input is a single dimension matrix. it should be a column vector. then you should combine all the vectors to a big2D matrix I.
-Abhishek
when you say a=random(1,1000) it doesnot mean the a is between 1 and 1000. it means that a is matrix containing 1000 datapoints. all points will be between 0 and 1. that is why the max and min limit is 1 and 0
ReplyDeleteeach input is a single dimension matrix. it should be a column vector. then you should combine all the vectors to a big2D matrix I.
-Abhishek
i need help how to train an face image using backpropogation neural network so that output is recognized?
ReplyDeleteYou need to extract some features from face. read about feature extraction. then these feature coefficients will work as input. face's name(persons) you can save as numbers and these will be the target of the model. now run a backpropagation model using matlab.
DeleteYou need to extract some features from face. read about feature extraction. then these feature coefficients will work as input. face's name(persons) you can save as numbers and these will be the target of the model. now run a backpropagation model using matlab.
ReplyDeleteI think that you forgot to take into account the noise n in your last test. The mean value of the noise is 0.025, so the estimate 13.0279 is even closer to the model which in average returns 13.025.
ReplyDelete@jiri Falta, You are right in saying that we should expect the answer to be 13.025 and we get 13.0275 which is pretty close.
DeleteBut our original model does not have noise. We generated this data ourselves so we knew the noise. But in general, when we work on experimental data, we don't know the noise. So in that case, we expect the correct answer because we have no knowledge about noise. That is why i expect 13 should be the answer.
But in that case the program did not have any chance to estimate your original model correctly even if given great amount of data. Any other statistical method would also return something close to y*=5a+bc+7c+mean(n).
DeleteHowever thanks for the tutorial.
genrally noise is zero mean, so you don't face this problem. otherwise if this is not zero mean and i know the exact mean, i can incorporate this information to get few more bounds. thanks for the comments :)
DeleteYes, generally, but not in your example. That's why I think that the final comparison is not fair to the computer. You might have mocked him for inaccuracy if you had chosen higher amplitude of noise :)
Delete@jiri Falta, You are right in saying that we should expect the answer to be 13.025 and we get 13.0275 which is pretty close.
ReplyDeleteBut our original model does not have noise. We generated this data ourselves so we knew the noise. But in general, when we work on experimental data, we don't know the noise. So in that case, we expect the correct answer because we have no knowledge about noise. That is why i expect 13 should be the answer.
Sir, i am working on offline signature verification using Neural Network.I have done feature extraction but how to work on neural network .I have to take 100 signatures .Please help.
ReplyDeleteOnce you know the features, form the input and target matrix and just use training of it and you are done, you may need to play with some different values of hidden layers and neurons.
Deletecan u tell me., we should compute square of some five numbers then using these input and output, i should compute output next input numbers..
ReplyDelete@keeti Hallur
DeleteYou can try the same approach. read the above blog. Just form your input and target matrix as some numbers and their square and train your network.
then test it using the new values. should work fine.
Dear Sir,
DeleteCould you kindly explain how to do system identification for a system that has 5 inputs and 2 outputs, using Neural Networks.
Thanks in advance
Do you have pre information about the system? or is it totally unknown?
DeleteThanks a lot for your reply, I do have all the information and data about the system if you could help.
Deletei have image and i want to segmented it into 4 cluster by using competitive learning alogrithm not som .it cpnsist from 2 layer but i dont know i the pixel of image represent the input i mean if image have sise of 200*300 so i have 50000 input ? or what a lot of quetion i have no one answer
ReplyDeleteThe whole image is never an input because then you will have lots of value. You first extract feature. feature is something which can give you most of the information. Like orienctation histogram if you are studying the guesture recognition. relative positions of face points if you are doing face recognition.
Deleteyou need to first decide some feature which define you clustering
in the last line u have written "Now test it again on some other data. What about a=1,b=1 and c=1;".r u want to say that in the example u have chosen random no. but now u r insisting with [1,1,1].matrix. One more question....how to adjust the weight???
ReplyDeleteYes , The data was generated randomly here. but in true sense, it is not generated. I tried to mimic the actaully experiement, So think in this way that data has been given to you by an real experiment done.
DeleteNow I want to just test if my system is trained or not. So i just give one more random data. a=1,b-1 c=1 is just some random data. you could have given [a=2 b=3 c=5] and expected an different answer. This step cannot be done when you are in real world. because you didnt know what output to expect as you dont know that y=5a+bc+7c; (because this is unknown)
i m doing a project on career counselling using neural network. Can u suggest me how to map the data( means input, which is in string like introvert, extrovert) into matlab dataset.
ReplyDeletefor a computer program, being an introvert or extovert does nt have any meaning.
DeleteSo you can just assign one of them as 1 and other as 0.
if you have more than 2 options (eg lower class, middle class, upper class), you can use 0, 0. 1 0.2 like this.
This comment has been removed by the author.
ReplyDeleteI m designing an ANN for fault detection in transmission line. I have to identify 6 different types of faults, for this i m using 12x51 order matrix as input and have 7x51 order matrix as target/output. I m using 6 different sets of input-target combination to train the n/w. I m not able to train the n/w.
ReplyDeleteCan anyone just help me to train the n/w and let me the best suitable training function for my application?
PLZ HELP...
Read the example, your question is no different
Deleteas far as training is considered, there is no rule as of my knowledge
try different functions and see what works best for you
Hi,
ReplyDeleteHow can I convert the neural network to state space model?
Thank you..
interesting . there are no dynamics in neural netwrk so why statespace?
DeleteI need a state space identified model in order to use it in MPC controller. But, never mind I have found a method on how to construct neural state space by using a customize neural network..Thank you for your reply..
DeleteHi;
ReplyDeletein case i've trained my neural network and i've got results close to the target ,how can i fixe weights to get the the model i want,i mean weights are changing every time i train the model , is there any code to get that???
you can save the model in a file after you trained.
DeleteSo first time you run it, after that type
save net_trained net
then next time instead of running the script
just type
load net_trained
and then call directly
y1=sim(net,[1 1 1]');
Probably a stupid question, since I'm new to both Matlab & NN.
ReplyDeletenet = newff([0 1;0 1 ;0 1],[4 1],{'tansig','purelin'});
Wat's the meaning of the [4,1]? Shouldn't it be the S matrix [5,1] ?
Grtz
yes theirry
Deletethanks for pointing out the mistake
Corrected it, see the updates
I also get two errors, and I don't know how to fix them :)
ReplyDelete>>
net = newff([0 1;0 1 ;0 1],[4 1],{'tansig','purelin'});
Warning: NEWFF used in an obsolete way.
> In obs_use at 18
In newff>create_network at 127
In newff at 102
See help for NEWFF to update calls to the new argument list.
>>
net=train(net,I,O);
Undefined function or variable 'O'.
Updated the error
DeleteT is same as O
so define O=T
I have updated the blog with T replaced by O
Hi! Can any one tell me, how do i sure that the performance goal has been reached. Is there a relation between MSE and performance goal......What is the meaning of the following code..............net.trainParam.goal=1e-3
ReplyDeleteIt depends on your system's requirement. generally you want to see that network is well trained but not over trained. generally low enough MSE is desired.
DeleteI am asking a foolish question....but plz help me.
ReplyDeleteI am creating a neural net whose input set is a matrix (15 x 100) i.e. P. How can i initialize it when declaring newff.Should i take individual row? or is there any mechanism for matrix
It depends on how you define your data
Deletegenerally 15 rows and 100 columns mean 15 inputs and 100 data samples
See the example above, rest is same
I want to fit the curve with noisy data of range 0.5 using rbf network,may you help for this?
ReplyDeletecan anybody help on this topic? Its urgent for me...Please help....I want to reconstruct curve from the noisy data using rbf neural network or any other feedforward network....
ReplyDeletehttp://www.anc.ed.ac.uk/rbf/rbf.html
Deletemay be this help . try using this toolbox
can anybody help me with the following problem: I want to train a neural network taking input and output from an external text file ....there are 5 inputs and a single output..how do i get the desired trained network??
ReplyDeleteRead the data first and form I, O matrix and proceed as the examples says
DeleteHi there, anyone knows another type of suprovised neural network similar to net = newff?
ReplyDeleteThank you.