Hopfield net

A Hopfield net is a form of recurrent artificial neural network invented by John Hopfield. Hopfield nets serve as content-addressable memory systems with binary threshold units. They are guaranteed to converge to a stable state.

Structure
The units in Hopfield nets are binary threshold units, i.e. the units only take on two different values for their states and the value is determined by whether or not the units' input exceeds their threshold. Hopfield nets can either have units that take on values of 1 or -1, or units that take on values of 1 or 0. So, the two possible definitions for unit i's activation, $$a_i$$, are:

(1) $$a_i = \left\{\begin{matrix} 1 & \mbox {if }\sum_{j}{w_{ij}s_j}>\theta_i, \\ -1 & \mbox {otherwise.}\end{matrix}\right.$$

(2) $$a_i = \left\{\begin{matrix} 1 & \mbox {if }\sum_{j}{w_{ij}s_j}>\theta_i, \\ 0 & \mbox {otherwise.}\end{matrix}\right.$$

Where:
 * $$w_{ij}$$ is the connection weight from unit j to unit i.
 * $$s_j$$ is the state of unit j.
 * $$\theta_i$$ is the threshold of unit i.

The connections in a Hopfield net have two restrictions on them:
 * $$w_{ii}=0, \forall i$$. (No unit has a connection with itself.)
 * $$w_{ij}=w_{ji}, \forall i,j$$. (All connections are symmetric.)

Hopfield nets have a scalar value associated with each state of the network referred to as the "energy", E, of the network, where: $$E = -\sum_{i<j}{w_{ij}{s_i}{s_j}}+\sum_i{\theta_i\ s_i}$$

This value is called the "energy" because the definition ensures that if units are randomly chosen to update their activations the network will converge to states which are local minima in the energy function (which is considered to be a Lyapunov function). Thus, if a state is a local minimum in the energy function it is a stable state for the network.

Training
Training a Hopfield net involves lowering the energy of states that the net should "remember". This allows the net to serve as a content addressable memory system, that is to say, the network will converge to a "remembered" state if it is given only part of the state. For example, if we train a Hopfield net with five units so that the state (1, 0, 1, 0, 1) is an energy minimum, and we give the network the state (1, 0, 0, 0, 1) it will converge to (1, 0, 1, 0, 1). Thus, the network is properly trained when the energy of states which the network should remember are local minima.