CS4811: Homework 1 --- Neural Networks
Due: Monday, January 30, 2012, 3:05pm (beginning of class).
Mid-report due: Monday, January 23, 2012, 3:05pm (beginning of
class)
(Assigned: Wednesday, January 11, 2012.)
Reminder:
This is an individual assignment. All the work should be the
author's and in accordance with the university's academic integrity policies.
You are allowed to use any previously written source in preparing your
answers, but if you use any other source than the textbook and the class
notes, you should specify it on your assignment.
You should implement the neural network from scratch without using any
other existing software.
Problem:
In this assignment, you will implement a backpropagation learner for a
feed forward neural network.
Each neural network should have the real inputs and the bias input. It
should emit one output.
You are not allowed to use code that is not your own. You should
implement the algorithm given in the handouts in a language of your choice.
We should be able to run your programs on the Department's Linux
platforms.
Task:
Your task is to create two neural networks with possibly different
architectures. Implement the
algorithm and fully comment it so that the relevant sections of the
pseudo code are seen in your code. Start setting up your program and experiments
right away and submit an interim program and report within one week. In
the interim report, include your program's listing and explain:
- The initial design of your program and how far it is working.
- The design of your neural networks, and whether you have conducted
preliminary experiments.
Create the following two learning systems:
1. One that learns the X-OR function: Train the network using
the 4
examples that correspond to the correct outputs.
After the learning process is over, generate several points
(use at least 0.1 increments)
in the 1x1 box and show the shape of the function learned by plotting
the positive points. You may use your own plotting/displaying methods or
use a spreadsheet after creating the data points with your program.
2. One that learns the y = x2 function: Generate several
examples such that y>x2 are positive
and y≤x2 are negative. Use these examples to train your
network. After the learning process is over,
generate several more points and show the shape of the function learned
by plotting the positive points.
Submission:
Submit both a hardcopy and an online copy. Submit your
program(s) for the above learning systems and provide clear
instructions on how we can test them. Explain how we could test your
program with a different logical or polynomial function.
Write a comprehensive final report that summarizes your
results. Clearly explain the neural network architecture you used, and the
details of the process you followed. Include listings of your program as
appendices. For program listings, try to save paper by using small but
readable formats.
For example, enscript -plist.ps -2Gr program
produces a
listing of the program in double columns and saves it in list.ps.
You should check the readability of the final output.
The grading will be as follows:
Interim report |
10% |
X-OR network |
30% |
x2 network |
30% |
Overall report and documentation |
30% |