CS4811: Homework 1 --- Neural Networks
Extended due date: Wednesday, February 5, 2014, 4:05pm (beginning of class).
(original due date: Monday, February 3, 2014, 4:05pm)
(Assigned: Friday, January 17, 2014)
Mid-report due: Monday, January 27, 2014, 4:05pm (beginning of class)
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 node in the 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 results of
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.
We will enter a different set of points to test your program.
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, you may use Acrobat to produce a
listing of the program in double columns.
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% |