March 7, 2003
The perl script make_mock_data.pl
creates mock data with nonlinear dependencies.
The neural network programs, the svd program
and all the plotting programs are given a workout.

Instructions:
chmod u+x dothis
dothis

The neural network training will be the most time consuming part,
and will take a few minutes.  It will complete after 1000 iterations,
as specified by nread in mock.input. 
A directory "out" will have been made in this "mock" directory.
(The directory "out" can be entirely deleted after you complete
your experiments.)
Look at the out/*.png.  Similar pix are seen at 
http://mensch.org/neural 
The experiments do not reproduce exactly because of
a random component in the data and a random component in
in the shuffling that occurs in the neural network training.

There are a variety of experiments that you can do by
changing a few parameters in either "dothis" or "mock.input".
The simplest thing to do is to try changing "-nrec 1000" to
"-nrec 20" in "dothis".  There we will see that the small data set
allows for "overfitting to the noise". As seen in mse.png
the error in the verification data would likely be improved
with early stopping of the training of the network. 

After you learn a bit more about the software, you may want
to try altering the parameters within mock.input.  For example,
you may want to change the size of the "hidden layer" to 6:
  ima=3 6 2 0,
then repeat the above experiments.

Try simply changing "dothis" to read:
nn < ../mock_lin.input
svd < ../mock_lin.input
That uses a neural network without a hidden layer.  It is 
thus a linear network and converges to same result as the
svd program.

