HTM School Episode 7: Spatial Pooling Input Space & Connections

@flavius

1   2   3  4   5

x1   x2   x3   x4   x5
y1   y2   y3   y4   y5
z1   z2   z3   z4   z5
                         
  o     o     o     o     o           { o, o, o, o, o } --> places where inputs are connect to the columns (called columns)

Imagine these are 5 columns each with cells: x, y z (…not seen in video visualizations)
Imagne that each “o” (connection) is what is seen in the video as a column

Maybe @rhyolight can explain it better, but I though that might help…?

1 Like

Is this your long way of saying “answer 3.”?

No it didn’t help, it confuses me even more. ASCII art doesn’t cut it.

There are really only the 3 answers I’ve listed, just tell me whether it’s 1, 2 or 3. Don’t make simple answers more complicated than they have to be.

Answer 1 means basically “in the video the word <<column>> is used improperly”.

Answer 2 means “a column is a column in a 2D matrix”.

Answer 3 means “the matrix is a 3D matrix and the cells shown in the video have an entire column behind it, not shown in the video”.

2 Likes

No, it’s my long way of being more specific than the options you gave me. :stuck_out_tongue:

Answer 1. --> No the term was used correctly
Answer 2. --> Columns can have a topology (i.e. can be contained in a multi-dimensional array) but the visualizations don’t specify that.
Answer 3. --> Not a 3D matrix, but yes the “dots” can be thought of as having cells “behind” them.

The answer I gave is correct. The dot’s in the visualizations represent columns and you are correct - cells are not shown.

So, the closest answer is 3 - but I just wanted to make the distinction of there not being a “matrix”, for accuracy’s sake…

2 Likes

Number 3 is correct. All will be explained, stay tuned! :+1:

2 Likes

What is the point of having the connection threshold as a variable if the spatial pooler simply aligns the permanence values in a normal distribution around that threshold? Why not simply set it to 0.5?

4 Likes

I believe it is so that the initialization behavior is to more quickly bring columns to a connected state with fewer cycles during startup, after which the distribution should vary more widely after the SP settles (as columns increasingly polarize toward the values they have affinity to). Please correct me if I’m wrong - but I believe this is the reason.

I don’t think @cogmission actually answered your question, but I know what you are getting at. Since the connections are automatically distributed around the connection threshold, it doesn’t seem to matter if the threshold is 0.3 or 0.8 (for example). There will still be 50% initial connections and the behavior doesn’t seem like it would change much. The only difference is that the connection activity is happening at different distances from the permanence limits (0.0, 1.0).

I don’t know the answer. But @alavin probably does.

Thanks for bringing this to my attention @rhyolight. SP learning is the answer. The distribution about the connection threshold is just an initialization. As the SP is exposed to more and more data input, it’ll modify the synapse permanences to best detect features in the inputs. So if the threshold is 0.8 (following your example), you can see many permanences increased to the max 1.0. This has several effects, including limiting how “permanent” a synapse can be, which means it’s more at risk of dropping down below the threshold and becoming disconnected. I hope this helps!

3 Likes

I wish I had said this! :stuck_out_tongue: Oh wait… I did! :slight_smile:

No, but thank you @alavin, it helps to confirm one’s understanding.

I think the actual important bit of the answer is:

3 Likes

@ycui is doing an interesting investigation of the permanence initialization scheme. You guys might be interested in observing:

2 Likes

I REALLY like this @ycui !

Hi! These videos are great Matt and friends!
Now, is the sub-sampling you refer to, the fact that a column only connects to a fraction of the input space? or an actual sub-sampled vector that is passed to each column from the current input pattern?

1 Like

Its’ that each column only connects to a fraction of the input space. Sub-sampling means that each of the 2048 columns samples a subset of the input, which is the encoding bit array of the raw data. Each column gets an overlap score, which is the number of encoder bits its connected to that are currently active. The columns with the highest overlap score (top 2% I believe) are chosen as active columns. This set of columns is the output of the spatial pooler which is passed into temporal memory.

4 Likes