Dec 2025
Experiments with Sparse Distributed Memory
Top left: an experiment storing 10x10 images of numerals in SDM. Top right: figure from Kanerva’s work¹ showing the organization of SDM. Bottom: visualizing the address and memory matrices of SDM.
Sparse Distributed Memory (SDM) is a computational model of human memory, exhibiting many powerful and unique properties:
Memories that contribute and make connections between each other.
Extremely large and robust memory capacity.
Memory recollection based on similarity rather than accuracy.
I developed a Python module that implements fundamental SDM functionality (initializing, storing, recalling, and erasing memories). I then conducted a variety of experiments to deepen my understanding and intuition of SDM. Eventually, I plan to explore applications of SDM that are more concrete (e.g. control of robotic prostheses).
¹ Sparse Distributed Memory was introduced by Pentti Kanerva in 1988. My work is based on his 1992 technical report “Sparse Distributed Memory and Related Models”.
The figures below are just three out of many more in the Jupyter Notebook containing my experiments, available on GitHub. These three figures show some of the inner workings and characteristics of SDM.
Figure showing the storing and recalling of numerals one through six in SDM. Because of the random added memories, the recalled numerals are somewhat corrupted.
Figure showing the recall performance of SDM based on error, as the Hamming activation threshold is varied.
Figure visualizing the address and memory matrices of SDM. The horizontal bands in the memory matrix represent memory locations that are actively being used to store information.