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: 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: