Neural networks for

1. Hopfield networks and associative memories. Architecture, functioning and designing. A Hopfield network consists of N fully connected neurons which are both input, functional and output units. It usually process encoded data, i.e. vectors with components in {-1,1}. Therefore the typical activation function is signum (satlins in Matlab). An associative memory is a system which allows the storage of a set of vectors in {-1,1} N and the retrieval of them starting from some clues (incomplete or noisy versions of the stored vectors). The storage process consists in setting the values of the weights such that all vectors which should be stored become stable fixed points of the network dynamics. The dynamics of the network, for a given input X=(x 1 ,…,x N), can be described by some recurrence relations which expresses the relationship between the output produced by the network at time (t+1) and the output of the network at time t: N i x f y N i t y w f t y i i N j j ij i , 1), () 0 (, 1)), (() 1 (1 = = = = + ∑ = The simplest rule to store data in a Hopfield network is the so-called Hebb rule. For a set {X 1 ,..., X L } of vectors to be stored, the Hebb rule leads to the following values of the weights: N j i x x N w L l l j l i ij , 1 , , 1 1 = = ∑ = Implementation in Matlab. A Hopfield network can be created in Matlab by using the function newhop(data) where data is a matrix containing on its rows the data to be stored. The network functioning is simulated using the function sim. There are two variants of calling the function sim: where M is the number of test data to be taken from the test matrix (specified as the last parameter). In the first variant the user does not control the number of iterations while in the second case he can do this.