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