CS4811: Homework 1 --- Artificial Neural Networks

Dates: General guidelines: 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 for your research on the topic. However, any source other than the textbook and the class notes should be cited and the bibliographic information should be given.

You should implement the neural network from scratch without using any other existing software. 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.

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.

Tasks: 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. Create the following two learning systems:

The interim report: Submit a single pdf file that contains the program listing and the report. You may use pdf software to split or join pdf files. The interim report should include the following:

Program submission: The program and related files should be submitted as a single compressed tar, gzipped tar, or zip file. The submission should contain the following:

Report submission: The report for each neural network should include the following:

  1. The software
    1. A pdf printout of your program
    2. Describe the design of your program in essay format. Also include
      1. Did you fully implement the pseudocode provided?
      2. Does every component work?
      3. How can the number of layers or nodes be changed?
  2. The training process
    1. How did you decide on the network configuration to use?
    2. How were the weights initialized?
    3. How many iterations were needed to converge (or stop)?
    4. What was the training data used (provide in text)? How did you create the training data?
  3. The end results
    1. Tell how far the network converged. What percentage of the training data is classified correctly?
    2. Show the following
      • The trained networks (nodes and weights)
      • A graph of the training data
      • A graph of the function learned by using more inputs than the training data