I wonder correlation between input SDR and columns in spatial pooler

Seeing following time of video

As time goes, data (SDR) which encodes “time of day”, “weekend or not”, “power level” changes in input space.

And for each SDR in input space, there is one particular corresponding collection of columns (composed of colored and non-colored) in spatial pooler.

And if I click each column in spatial pooler, pattern of potential pool shows up in different pattern in each clicking columns

At time 565s

Q1. Even if pattern of potential pools show up differently in clicking each column of one spatial pooler, is one input SDR paired with one collection of all columns of one spatial pooler?

Q2. If one spatial pooler (all columns) is for one SDR (all cell in input space), why patterns of permanence, potential pool show up differently on each column?

At time 733s

Q3. I wonder correlation between one SDR in input space and one collection of columns in spatial pooler.

Q4. If I click 2 columns in spatial pooler, each column will have different pattern of connections to cells in input space.

If one spatial pooler indicates to one SDR (encoded vector based on one specific time with “time of day”, “weekend or not”, “power level” in continuous timesteps), I wonder why each column in one spatial pooler has different “potential pools”, “different connections” for one SDR.

Following time of video shows different pattern of (maybe) “potential pool” for each column of spatial pooler.

At time 139s

I guess like this. Please review whether my guess is correct or not.

  • One input SDR in input space is the one which is encoded from one particular data like “2019/1/1 10:00 a.m.”, “power level 40”, “weekend”
  • Every columns in spatial pooler indicates above input SDR.
    But each column indicates SDR in different ways in different connections.
  • Finally, with all connection patterns between each column and SDR, final output SDR which has fixed sparcity in spatial pooler is created as normalized form from input SDR in input space.


I’ll let others directly answer your questions, however I’d like to share some friendly and helpful documentation that you might want to read on, its very relevant to your questions.

Input Space



Hi, thanks for another complementary documents. I’ll ready it.

Waoh… That’s a big topic.

Sorry I don’t fully understand your question. But if you mean “Every column in a Spatial Pooler(SP for short later on) has a different potential pool. Is each SDR going to trigger a unique set of columns?” The answer is yes. In most cases (i.e. your SDR is sparse and the SDRs don’t overlap too much), the chance of 2 SDR triggering the same set of columns to turn on is very low.

Potential pools are randomly generated when initializing the SP. It is designed that way to break symmetry (I suppose).

If you mean correlation of spatial location of the bit. There can be none. A SP can destroy the spatial information within the SDR. Like how a Fully Connected layer in a neural net destroys spatial information. But a SP can also be configured to preserve some spatial information via topology. (Analog to a Conv layer)

Again, the different initial patterns is to break symmetry. And other connections are grown to enhance the performance of the SP.


Hi, oh, it’s basic concept but I’m struggling with.
About Q1, seeing 2nd link of video, as Matt hovers the mouse point on each column,
patterns of “potential pool” in input space look different at each time of hovering.

What I wondered was

  1. Are those all different patterns of “potential pools” for “one specific data” like “2019/1/1 10:00 am”, “weekend”, “power level 40”?
  2. Naturally (because one SDR encoding in input space is related to one normalized SDR in spatial pooler),
    are those all different patterns of “potential pools” for “one particular SDR shown in spatial pooler”?

Umm, I’m not sure but I guess this understanding may be correct. Understanding got a bit clearer more as I’m writing post.
But I still hope to confirm whether this understanding is correct or not.

About Q3, umm, suppose there a pair of encoded SDR and corresponding SDR in spatial pooler.
I may think SDR in spatial pooler is normalized version SDR from encoded SDR shown in input space.
I think this is intuitive.
That’s one side of correlation or relationship between them which I think.

But if I click one active column in spatial pooler, connections from one column to cells in input space will show up.
If I click another active column in spatial pooler, another pattern of connections will show up.

And my question comes in here.
It seems like one column has (overall) relationship to encoded SDR.
It seems like the other one column has also relationship (but different relationship or connection pattern compared to above case)
to same encoded SDR because you can see connections from one column to multiple cells in input space.

If each one column has its unique relationship with encoded SDR in input space,
what is the relationship between entire SDR in spatial pooler and encoded SDR?

Is it like each column has relationship to cells in input space,
also SDR in spatial pooler has relationship to cells in input space as normalized version SDR from SDR of input space?

No, that potential pool is set for the life of the mini-column.

Yup, I think I say this exactly in the video.

It’s okay, it takes awhile for this to sink in. The best way to learn it is to start programming your own HTM.