Sparse Distributed Memory

This little program was built in collaberation with the talented Kyle McDonald, borne out of asking him to explain this document to me (which I don’t recall how I found, and couldn’t understand). The rough implementation and visualization were mostly his, while the fine tuning and optimizations were mostly mine. I’ll quote his description of the topic:

The idea is to mimic human memory with a structure that can make connections between seemingly unrelated information, recall more salient information more accurately, and have quick recall of all information.

This implementation is mostly an exercise in efficiency—the spirit of SDM is highly parallel, which makes it hard to implement on serial machines.

You can find this implementation here.

Four years after building it, I came to the realization that we had implemented the data structure all wrong: we developed a dense distributed memory rather than a sparse one! This defeats most of the usefulness and brilliance of the SDM, since you become hampered by memory restrictions far too quickly.

I have developed a proper SDM, but have not yet posted it online. I will update this page with it when I have done so.