CS4811: Homework 7 --- Neural Networks


Due: Friday, April 21, 2006, 11:59pm. (Assigned: Friday, April 7, 2006.)

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 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. Note that extensions to this homework will not be possible because it is the end of the semester.


Problem: In this assignment, you will implement a backpropagation learner for a feed forward neural network. 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.


Task: Your task is to create 3 different neural networks. Implement the algorithm and fully comment it so that the relevant sections of the pseudo code are seen. The first two items below are "warm-up" tasks, the final one is the main item of this homework. Each of the three will be graded. You can use the same neural network structure and program with different training sets for each of the tasks below. The neural network should have the real inputs and the bias input.

Create 3 learning systems:

1. One that learns the X-OR function: Train the networks using 4 examples. After the learning process is over, generate several points in the 1x1 box and show the shape of the function learned by plotting the positive points.

2. One that learns the y = x2 function: Generate several examples such that y=x2 and y>x2 are positive and y<x2 are negative. After the learning process is over, generate several more points and show the shape of the function learned by plotting the positive points.

3. One that learns the letter "a". Use the bitmaps provided in /classes/cs4811/common/2006-spring/w07-neural-networks/letter-a-examples. Change the C program provided in the upper directory to transform the input into a form that is readable by your program. You can see the bitmaps using X11's bitmap editor. Any graphics viewer that understands bitmaps should also show the letter. Train the network using the negative and positive examples and create one negative and one positive example of your own. Test your examples on the trained network and report on the results.


Submission: As usual, submit both a hardcopy and an online copy. Submit three executables for the above 3 learning systems and provide clear instructions on how we can test them. Write a report that summarizes your results, clearly explains the neural network architecture you used, and the details of the process you used.