HTM School 11: Temporal Memory Part 1

This one really took me a long time to put together. Sorry about the wait.

If you know the answer to the puzzler, please comment on the YouTube page.




Nice one Matt, the 3D worked out really well!


Thanks! I think so too. It took some doing.


Worth the wait.


Wow buddy, Excellent job! This is A LOT of hard work - I really have an appreciation for how much work it is to produce these videos and get them seamlessly perfect in what you intend to convey! Thank you for all of your work and for keeping such a rigorous standard! Your contribution is literally building a better world by making this important technology accessible to everyone! …and also my Son thanks you for the world he’ll live in, which you’re helping to create!

Nicely done!

Question? I never had an inkling that distal connections form to cells in the same mini-column, are we absolutely sure this is so, (I gathered this from some of the connections you drew in the beginning)?

1 Like

Thanks for the kind words, David. :slight_smile:

I’m sure, otherwise, a pattern like ABBD will never transition from the first B to the second B.

1 Like

Why not? It would work just like any other spatial pattern. Cells from mini-columns of the second B pattern would still form distal synapses to previously active cells from other mini-columns in the first B pattern, and still be able to predict that sequence (ABBD). It can use the context of other mini-columns just the same as usual.

Remember that if the spatial pooler is doing its job, the active columns for each B pattern will be the same, so you need cells to connect to other cells in the same column in order to learn this transition from one B in one context to any other B in any other context.

@dillon.bender Here is a tangible example of this happening for repeating input in NuPIC:

Hm. From my understanding of how the TM works, I still don’t see why this would be necessary. Do you think there something special about cells in the same column versus cells in other columns when determining the temporal context? Consider that, even in your second short video above, the cells representing the various C# contexts are still forming distal connections to the other C# mini-columns, so the single synapse in the same mini-column is very negligible in depolarizing the cell. If you removed it, nothing would happen, you would just lose a single bit of the SDR.

No, they are the same as any other distal connection.

I don’t think they are, because we are not allowing those connections to take place within the same columns.

Let’s say we prevented cells from creating synapses to cells in the same column. So when the TM sees the C# active columns following a C# (same active columns), it would be unable to grow segments / synapses to the previous input.

Take the following sequence for example:

E - C#’ - C#’’ - C#’’’

What we want is a temporal representation of each C# within the context of the previous input, like this:

  • C#' is C# in the context of E
  • C#'' is C# in the context of C#'
  • C#''' is C# in the context of C#''

C#' would be represented properly in the context of E because its active cells have formed synapses to cells in the active columns representing E. Now we must decide what cells should now be predictive for C#'. If we disallow distal synapses between cells in the same column, no cells will ever become predictive in this time step because the previous spatial input only contained active cells within the same columns (and those connections are disallowed).

This would essentially lead to bursting columns for C#'' and C#''' every time it sees the sequence above.

EDIT: I am wrong, see below!

Okay. This is our point of disagreement, and I think resolving this misunderstanding would lead to the conclusion we are after.

Look at your TM pt 1 video at time 2:35 when you cover distal synapses. Watch when you draw the (I think) brown distal synapses for the cell in the second mini-column. You draw one synapse to a cell in the same column. Pretend this column is part of the C# SDR.

Now, assume that the 1st cell in each C# column was predicted by the previous E SDR. Now, the next SDR is from another C#. Same set of columns are active. I don’t see any reason that a particular cell would not still connect distally with other cells in mini-columns that are also part of the C# SDR. And in that case, proper prediction of successive C# patterns would occur.

I’m just saying you could disregard that as a requirement, and the algorithm would still work fine without it.

1 Like

Sorry about the confusion, you are right Dillon. Something wrong with me brain. :stuck_out_tongue: Of course cells could create connections to cells in other active columns even if they cannot within the same column.

Too much focus on the topic!

No problem, Matt. Fun discussion! Although, you had me doubting my entire understanding of this stuff, I had to draw it out on paper to prove it to myself. Lol.

Back to @cogmission’s question, I don’t think I see anything wrong with actually making intra-columnar distal synapses, and I would imagine this probably does happen in the cortex? I have no idea though. But I don’t think I’ve ever heard of a reason against doing this in HTM.

Hi Andrew! :slight_smile:

Depolarization and cell activation as far as I understand it right now, is the result of both lateral/distal excitations on synaptic groupings on a dendrite, but also the result of parallel inhibitory columnar cells within the same mini column. How these inhibitory cells fire and how the cells activate and inhibit other cells - the timing of which may be severely influenced by distal depolarization in the same mini column???

Not saying I know the answer, but I’m definitely saying I could see a possibility of this not being possible due to the complexity of timing and need for isolation of certain signals together with the fact that I’ve never seen an illustration of dendritic connections to a lateral dendrites between dendrites arising from the cells in the same column… Highly suspect at least?

1 Like

OK. Thanks for the episode as usual! This is probably a stupid question, but I’ll ask anyway :).
How do you signal the end of a sequence to the temporal memory? For example, how do you distinguish between the short sequence ABCD repeated, and the longer sequence ABCDABCDABCD? The first one expands to A B’ C’ D’ which is then repeated. But the second one should be treated as a single sequence, and expands to: A B’ C’ D’ A’’ B’’ C’’ D’’ A’’’ B’’’ C’’’ D’’’ (and if enough ABCD’s are given, it too will then repeat)

@garry.morrison Sorry it took so long, I missed your comment.

The only way to “close” a sequence in the TM at this point is to do so programmatically. In biology, I believe these signals come from outside the TM (but I’m not sure, something I’m going to talk with Jeff about next week.

In NuPIC, you do this by calling reset().

Doesn’t “Reset” signal the beginning (or end of previous) of a sequence?

reset() negates the current sequences by removing history of cell and segment activity:

1 Like