CSCI 335 - Artificial Intelligence
Programming Project #6: Handwriting Recognition with Self-Organizing Maps
You will implement the self-organizing map. You will experiment with different configurations of this type of
neural network to find the best results for a handwriting recognition problem.
- Download som.zip.
- Unzip the files into the Eclipse Java project you employed for
- Click on your project in the package explorer, and press F5 to refresh.
Two of the new files are in the
Two revised files are in the
handwriting.gui package, and another revised
file is in
will also need to create a class that extends
and place it in the
- RecognizerAI.java: Slightly expanded
to include a method for visualizing the trained learner on the GUI.
- SelfOrgMap.java: Contains the outline of an implementation of the self-organizing map. You will
need to complete this implementation.
- SOMPoint.java: Used for referencing
an output node of the SOM.
RecognizerAI implementation will need
to employ one or more objects of the
SelfOrgMap class for handwriting
recognition. The precise way in which it is used is entirely up to you.
You are encouraged to experiment with different variations of the learning
algorithm, each of which would be implemented as a separate class. Here
are some examples of aspects of the algorithm that you might vary:
For your experiments, use the training and testing files you created
(or borrowed) as part of Project 5.
- Number of nodes
- Number of training iterations
- Classification scheme
The nature of the self-organizing map lends itself to very lucid visualization. An example of a
6x6 SOM trained on the letters A and O is given below.
- Thursday, October 19: Short presentation detailing progress thus far. Special emphasis on
describing your representation scheme and distance function.
- Tuesday, October 24: Presentation summarizing results from the paper.
When you are finished with your experiments, write a paper summarizing your findings. Include the following:
- An analysis and discussion of your data. (Be sure to include the data as well.)
- An analysis and discussion of your visualizations.
- How well does the self-organizing map perform for this task?
- What effect did variations in the number of training iterations, the learning rate and the classification scheme have on the results?
- How do the results compare with multi-layer perceptrons?
- Beyond the actual results, what other issues are noteworthy?