Sparse Distributed Memory
Matlab source code
buildAddressSpace.m
createMemory.m
buildTestSet.m
hamdist.m

Matlab GUI 1

sds.m
sds.fig
sds.asv

Matlab GUI 2
gensds.m
gensds.fig
gensds.asv

Other Files
indfit.m
fitness.m

The Basic Idea of Distributed Storage

Pentti Kanerva, in Sparse Distributed Memory, conjectured, and proved, that if perfect retrieval of storage vectors is not required, then a sparse distributed storage system is a usable system for memory purposes. His paper outlines an implementation of a best match machine, which he believes simulates human memory to an extent. Neural address decoders are used to simulate a large address space using far less than conventional space.

I decided to implement a sparse distributed storage system, albeit on smaller scale than his.  Instead of length 1000 vectors, I used length 100 vectors.  Instead of a million hard locations, I had in mind 100-200.  I think the implementation is helpful, though, in seeing how distributed storage works, and if I had the space and time to do so, would easily be scalable.

I implemented the algorithm and then turned it into a Matlab GUI.  I had in mind the singular 100 length case, but I extended it to try to capture the idea more generally.  The GUI must be run in Matlab, and I used version 6.5.

For a short run through on using the program, see this short readme.

A tarball of all the necessary Matlab files can be downloaded here.

Links and References

Sparse Distributed Memory as a tool for Conscious Software Agents This is an interesting use of a Sparse Distributed Memory, a paper by Ashraf Anwar and Stan Franklin of Institute for Intelligent Systems,The University of Memphis.

Using Genetic Algorithms for Sparse Distributed Memory Initialization by Ashraf Anwar, Stan Franklin, and Dipankar Dasgupta. This alerted me to the fact that randomizing hard locations is hard to do well, and that it makes a difference in how your Storage will work. Kanerva does not address this issue in his paper.

Sparse Distributed Memory is a book by Pentti Kanerva. Most of the work done in this project was based on chapters 4-7 in this book.

 


Finding the Best Match
If the closest match to a test vector is close enough, it will be converged upon. Otherwise, a divergent solution is found.


The Address Space
Chosen wisely, the hard locations will represent the address space quite well.

A Matlab GUi
I I implemented a Matlab GUI to illustrate SDS