CSCI 335 - Artificial Intelligence

Fall 2017

Programming Project #6: Handwriting Recognition with Self-Organizing Maps

Overview

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.

Setup

Programming Assignment

Two of the new files are in the handwriting.learners.som package. Two revised files are in the handwriting.gui package, and another revised file is in handwriting.core. You will also need to create a class that extends RecognizerAI.java, and place it in the handwriting.learners package. The 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.

Visualization

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.

Presentations

Paper

When you are finished with your experiments, write a paper summarizing your findings. Include the following: