I am brand new to HTM. I have been reading all about it and watched all of the videos, as well as reading through the forums. I have a good conceptual grasp , but I am struggling with how to construct a network for my problem.
Here’s what I want to do. I have time ordered sequences of event data. The sequences are of various lengths with a variety of events in each, but there will be many repeated or similar sequences that correspond to a higher level category. I would like to construct an HTM network that “recognizes” when it sees a pattern that it already “knows” and is able to tag the sequence as being an instance of that pattern. When it sees an unfamiliar pattern, I’d like to know that as well,
From my reading of “On Intelligence” and “BAMI” and all the videos, this seems to be exactly what the cortical algorithm is doing. In my mind I would need some way to get at the recognized neural “label” for a recognized pattern (which I could later map to an appropriate human readable label). Unfortunately it is not at all clear to me from the examples, doc, forums, etc. how to do this using the NAPI.
So am I way off base here? If not, could someone point me to some example code or general architecture / design for accomplishing this?
The ability to query all sequential temporal patterns in the TM given a spatial input pattern requires “temporal pooling”, which we don’t quite have in the current implementation of NuPIC or HTM.Java. This is an active research topic. I believe when the sensorimotor inference code hits NuPIC, there will be some advances on how to do this. But for now it is still a research topic.
Oh. That’s disappointing. I was thinking I could “observe” the Network and
get the SDR from the last Inference after feeding in a given sequence. I
thought that SDR would represent the current “output” state, and as long as
the anomaly likelihood was low, it would represent the “here’s the pattern
I think I see”.
Is there any reference material I can read on temporal pooling?
This - you can do! The Inference has a lot of goodies that refer to the last inference cycle executed such as the Temporal Memory’s prediction SDR and the Spatial Pooler’s SDR etc. Have a look
Sorry I misread this the first time around. @cogmission is right, this exists in both NuPIC and HTM.Java today. In NuPIC, if you use the OPF you get back ModelResult.inferences containing the predicted value (as the input data type), including probabilities of all predictions. And you can query underlying algorithms for cellular state of the HTM at any point to identify active columns, cells, and predictive cells, etc.