Cell Assemblies as an Associative Memory

After getting my Cell Assembly program working - producing the basic cell assemblies - the next job was to get CAs to act as an associative memory. What, I hear you ask, is an associative memory? Well, read on ....

What is an associative memory?

An associative memory is one where you access it by producing part of the thing to find, and the memory then fills in the rest. For instance, you might have an associative memory that holds quotations. If you provided this memory with the start of the quotation "To be or not to be", it would return the whole quotation, including the part that you had supplied: "To be or not to be, that is the question."

J.L. McClelland produced a neural network that demonstrated an associative memory rather nicely (1981), the Sharks and Jets network. This stored information about 27 people who are members of two gangs, the Sharks and the Jets (nothing to do with West Side Story, as far as I know). These people have a marital status, a job, an age (in one of three age ranges) and an educational level. The network consists of a node for each name and each piece of information associated with the people and a "hidden" node (not directly available to the "outside world") for each person. Weighted connections link the appropriate nodes together, so that a weight of +1 indicates a person has a particular property (the node representing the person "Rick" is connected to the node for "Shark" by a weight of +1, for example, to indicate that Rick is a Shark), and weights of -1 link competing nodes (for example, the node for "I his 20s" is connected to "In his 30s" by a node of -1 so that they tend to inhibit each other).

The network is "quizzed" by activating some of the "visible" nodes and letting the activation pass backwards and forwards through it, increasing and decreasing the activity level of the nodes. Eventually, the nodes associated with the activated inputs become active. For example, activating the node associated with the name "Art" (eventually) activates all the properties for that person. Activating the inputs for "Shark" and "Bookie" eventually activates all the nodes for all the Shark gang members who are bookies.

How can I do this using a cell assembly?

The reason that I mention the Sharks and Jets network is that it acted as the inspiration for my attempts to use a cell assembly to implement an associative memory. I hope to create a grid of nodes, interconnected at random and with connections to "labels" in the "outside world". These labels will be activated to specify inputs, but can also be read, in much the same way as the nodes for Jets and Sharks. Figure 1 indicates the plan for the associative memory.

Figure 1. The general plan for the associative memory using cell assemblies.

There are some essential differences between McClelland's network and mine:

Essentially, I am hoping that the grid will learn for itself the knowledge of which input is associated with which. In the Sharks and Jets net, the connections were prespecified and did not change. The information had to be given to it "up front". Can the appropriate links develop for themselves? That is the sixty-four thousand dollar question!

So what's the plan then?

Well, here's the plan! I want my network to learn some characteristics about a set of animals. I have picked a rather eclectic menagerie, in order to get a fair spread of characteristics. Here they are:

Cat
Mouse
Horse
Brontosaurus
Mammoth
Ant
Spider
Snake
Has fur/hair
Y
Y
Y
N
Y
N
N
N
Herbivore
N
Y
Y
Y
Y
Y
N
N
Exoskeleton
N
N
N
N
N
Y
Y
N
Large
N
N
Y
Y
Y
N
N
N
Small
Y
Y
N
N
N
Y
Y
Y
4 legs
Y
Y
Y
Y
Y
N
N
N
8 legs
N
N
N
N
N
N
Y
N
6 legs
Y
Y
Y
Y
Y
N
Y
Y
0 legs
N
N
N
N
N
N
N
Y
Vertebrate
Y
Y
Y
Y
Y
N
N
Y
Extinct
N
N
N
Y
Y
N
N
N
Mammal
Y
Y
Y
N
Y
N
N
N
Sociable
Y
Y
Y
N
N
Y
N
N
Domestic
Y
Y
Y
N
N
N
Y
Y
Insect
N
N
N
N
N
Y
N
N
Reptile
N
N
N
Y
N
N
N
Y

All right, I admit my biology might be a little shaky. I'm not sure that brontosauruses were reptiles, and I realise that some people keep domestic spiders, but it's the principle of the thing that matters!

Each of these entities (the animals and their characteristics) will be represented by a group of cells within a large grid. Each group will form a small island of "committed" cells surrounded by a sea of "uncommitted" cells. The connections between the cells in the grid, whether committed or not, are set randomly, as for the previous program. This layout is shown in figure 2

Figure 2. The proposed architecture for the associative memory

The network will be trained by presenting activating linked inputs. There are two possible ways of presenting the data - by row or by column. Presenting inputs by row involves activating the input for one characteristic (say "extinct") and simultaneously activating the inputs for the animals that have that characteristic ("brontosaurus" and "mammoth"), as shown in figure 3.

Figure 3. Presenting data by row.

Presenting data by column entails activating the input for one particular animal and all the characteristics for that particular animal, as shown in figure 4.

Figure 4. Presenting data by column.

A third alternative is to use a mixture of these approaches - present the data alternatively by row and then by column.

What I hope will happen is that training the grid of cells with repeated presentations of the data will cause cell assemblies to form. Subsequently, activating one or a few of the inputs will cause the cell assemblies associated with those inputs to activate, which will, in turn, activate the other animals or characteristics (e.g. activating "cat" activates all the characteristics for "cat" etc.) Anyway, that's the plan! Right then, let's get started!


References


Back to main menu On we go!