How to know the individuals SDRs in a union of SDRs in the output of a TM?

Let’s say an TM layer receives some inputs (like a chord sequence) and the output is the union of the possible chords that follow the input sequence.

Is there a way to know the indificual chords that fomr the union by looking at the TM layer dendritic segments?

By having all the chords SDRs in an array is very immediate but with a really huge database of SDRs it would be impractical.
How does the brain know the indificual SDRs?

Thanks.

1 Like

I don’t know how the brain does it. Only guess various “tricks” including each sdr partaking into TM’s output are each individually recognized by downstream columns/cells.

In code… depends on what you mean by “huge database”.
Up to a couple thousand patterns a simple classifier (like SDR classifier) might work.

Indexing / Approximate Nearest Neighbor searches are quite feasible for memories of up to millions of patterns/sdrs

I also worked on an indexer (SDR ID Map) whose capacity is dependent on sdr size/solidity. It could store 10k-100k but that depends on SDRs “shape” and distribution

2 Likes

Is there a way to know the indificual chords that fomr the union by looking at the TM layer dendritic segments?

The TM layer can predict which pattern/SDR will follow next, taking into account the last inputs (context & high order memory). In NuPIC you can call the functions columnForCell and getPredictiveCells to get a list of Indices pointing to the possible predictions of the next step. The prediction is ambiguous and would now need to be further resolved. But you say that you need the union of all possible next chords. So this would be the way to go.
Further this would need to first call “compute”. compute itself uses “activateCells” which uses the dendritic segments to calculate the predictions.

How does the brain know the indificual SDRs?

The cortical column attempting to play back the sequence would access a stable pattern to get the title of the sequence, so to speak. Then the column would have to predict the next chord using the current input in combination with this stable pattern.
If one wants to remember patterns in a sequence in general, it is helpful to orient oneself to such stable patterns. With respect to melodies, these stable patterns summarize a part of the melody or a song. E.g. this could be “intro”, “verse” or “chorus”. But they could also be finer parts of it.

1 Like