Digit Recognition Neural Network

This was a project done for CMPS 523 at the University of Southwestern Louisiana. The class is The Computational Basis of Knowledge and is taught by Dr. Anthony Maida.

The purpose of this network is to do digit recognition from a simple 7 piece LED style digit. To this end, the network has seven inputs, and eleven outputs. These correspond to 1) the segments of the LED digit being on or off and 2) the final output of what this digit is recognized as by the network. Try editing the digit by clicking its components, and then test that digit on the untrained network. Chances are, it will be recognized as several digits.

The default network is created with 9 nodes in the hidden layer, a rate parameter of 0.5, and a noise parameter of 0.05. If you are really interested in what these signify, I will soon put up a brief dicussion of the terms, including a discussion of why the noise term is a good thing. (Note - this has been pending for 18 months now - it probably won't happen soon.) By clicking the "Create a new Network" button, you can create your own network with parameters you specifiy. There are some limits on them (noted next to the fields) and input outside the bounds will be ignored. Those black nodes at the bottom of the input and hidden layer are the threshold nodes. They are always at a value of -1, and they are used to implement the threshold for firing as a weight in the network.

After creating the network, pressing the "Train Network" button will cause it to enter the training loop. It will sequentially present the digits 0 through 9 to the network, test them, and compare the actual output to the desired output. The desired output for any digit is that exactly one node, corresponding to the value of that digit, is on and all others are off. Any errors in this will cause the network to adjust the weights between nodes by an amount proporational to the weight, the value of the nodes, and the derivative of the output with respect to the weight. This will continue until for all 10 digits, the error between actual and expected is very low. At this point the network is trained. Try giving the network some non-digit inputs, and see what they are recognized as (if anything.) This will provide some insight on which features the network is learning to do the recognition.

Unfortunately, your browser does not support Java applets, so you miss out on the joy that is my network program.

Page last modified on Wednesday June 03 1998 by Dave Slusher


You are visitor 13391