Written by Chirag on Sunday, July 26, 2016 (around: 6:30pm)
This week I am working on the Spatial Pooler from Numenta’s Cortical Learning Algorithm white paper. Instead of typical CLA (Cortical Learning Algorithm) reading, I will be focused on implementing and testing my own version of CLA-Spatial Pooler (page 34 has the pseudocode). So that I can understand it better.
CLA has two key input pooling components. Effectively, in Jeff Hawkins words, pooling is the mapping of a set of inputs (visual, auditory, smell, sensorimotor) onto a single output pattern. There are two basic forms of pooling.
1) Spatial Pooler: “Spatial Pooling” maps two or more patterns together based on bit overlap. If two patterns share sufficient number of bits they are mapped onto a common output pattern.
2) Temporal Pooler: “Temporal Pooling” maps two or more patterns together based on temporal proximity. If two patterns occur adjacent in time they are likely to have a common cause in the world.
Quite honestly, given my limited python skills, I am finding it very difficult to code up the Spatial Pooler. I am thinking it will take me at least six months. But, I think this will be worth the deep dive.