(RS would call this A little optical character recognizer using Hopfield neural networks.)
Hopfield networks are a particular type of neural network. Unlike the perceptrons in a feed-forward back-propagation neural networks the strength of a Hopfield network comes from its fully connected graph, typically represented as a matrix of weights. With the Hopfield network one trains it with a series of exemplar patterns. During retrieval the input vector is iteratively updated until the output converges, hopefully upon one of those exemplars. This program demonstrates both synchronous and asynchronous updates. Synchronous update entails altering the entire output vector at once; asynchronous means to only change one element at a time. With synchronous changes it is possible that the network never converges but rather oscillate between a series of states. Hopfield proved that with an asynchronous update the network shall always converge.[L1 ]
Scribble on the left canvas to create a pattern. Add it to the neural network (by way of Hebbian learning ) by clicking the Train button. To instead perform a retrieval click on Recall'. The right canvas shows the network as it is performing the retrieval; to change its animation speed edit the delay'' entry.
Get it from http://tcl.jtang.org/tcl/hopfield/hopfield-0.1.tar.gz . Included in the tarball is a loadable network (hopfield.net) that has been trained with the digits zero through three.[L2 ] Draw some digits and see if the network converges upon the correct exemplar.