I've been following this discussion with interest. One question, you say only active cells are considered in the classifier but my understanding is the input to the next region is the union of active and predictive cells. That is, if the cell is active or predictive, the next region in the hierarchy gets a 1. If it is inactive it gets a 0. Thus, the next region cannot distinguish between active and predictive cells. Is that still the case? If so, why does the classifier not take the same approach?
Many thanks for your advice, John Blackburn On Tue, Aug 19, 2014 at 8:42 AM, Nicholas Mitri <[email protected]> wrote: > Great! Thank Subutai. Much appreciated. > > > On Aug 19, 2014, at 3:32 AM, Subutai Ahmad <[email protected]> wrote: > > Hi Nick, > > I believe your understanding is exactly right. If we are predicting 10 > steps into the future, the classifier has to keep a rolling buffer of the > last 10 sets of active bits. The classifier sort-of outputs the conditional > probability of each bucket given the current activation. I say "sort-of" > because there's a rolling average in there, so it's really a "recent > conditional probability". This is how the OPF outputs probabilities for > each set of predictions. > > I believe the implementation stores the indices only for the historical > buffer. The C++ code for this is in nupic.core, in > FastClaClassifier.hpp/cpp. > > --Subutai > > > On Sat, Aug 16, 2014 at 6:14 AM, Nicholas Mitri <[email protected]> > wrote: > >> Hi Subutai, >> >> So we’re using the predictive state of the cells as a middle step (during >> learning) to encode context into the representation of the input pattern >> using only active bits? But that’s the extent of their practical use as far >> as the CLA classifier is concerned. >> >> I understood the point you made about the fact that context encoded into >> active bits gives us all the information we need for prediction, but >> there’s still one issue I’m having with the operation of the CLA >> classifier. >> >> If we’re only using active bits, then the RADC matrix we’re storing >> should maintain and update a coincidence counter between the current bucket >> and the active bits from a previous time step during its leaning phase. In >> that way, when the classifier is in inference mode, the likelihood becomes >> the conditional probability of a future bucket given current activation. In >> other words, the classifier learning phase creates a relation between past >> info (active output of TP at time = t - x) and current input value (bucket >> index at time t) so that during inference we can use current information >> (at time = t) to predict future values (at time = t + x). (The document >> attached isn’t very clear on that point). >> >> If that’s the case, then the active state of the region should be stored >> for future use. Is any of that accurate? and if so, would we be storing the >> state of every cell or only the index of the active ones? >> >> best, >> Nick >> >> >> >> On Aug 15, 2014, at 9:18 PM, Subutai Ahmad <[email protected]> wrote: >> >> Hi Nick, >> >> That’s a great question, and one we worked through as well. The >> classifier does really only use the active bits. If you think about it, >> the active bits include all the available information about the high order >> sequence. It includes the full dynamic context and all future predictions >> about this sequence can be derived from the active bits. >> >> For example, suppose you've learned different melodies and start >> listening to a song. Once the first few notes are played, there could be >> many different musical pieces that start the same way. The active state >> includes all possible melodies that start with these notes. >> >> Once you are in the middle of the melody and it’s now unambiguous, the >> active state at any point is unique to that melody as well as the position >> within that melody. If you are a musician, you could actually stop >> listening, take over and play the rest of the song. Similarly, a classifier >> can take that state as input and predict the sequence of all those notes >> into the future with 100% accuracy. This is a very cool property. It is a >> result of the capacity inherent in sparse representations and critical to >> representing high order sequences. >> >> As such, the classifier only needs the active state to predict the next N >> steps. >> >> So what is the predictive state? The predictive state is in fact just a >> function of the active bits and the current set of segments. It doesn’t add >> new information. However it has other uses. The predictive state is used in >> the Temporal Memory to update the set of active bits given new sensory >> information. This helps fine tune the active state as you get new >> information. It also helps the system refine learning as new (possibly >> unpredicted) information comes in. >> >> —Subutai >> >> >> >> On Fri, Aug 15, 2014 at 7:40 AM, Nicholas Mitri <[email protected]> >> wrote: >> >>> Hi Subutai, >>> >>> Again, thanks for forwarding the document. It was really helpful. >>> >>> I have a quick question before I delve deeper into the classifier. >>> The document mentions that the classifier makes use of the ‘active’ bits >>> of the temporal pooler. Are we grouping active and predictive bits under >>> the label ‘active' here? >>> >>> If the predictive bits are not mapped into actual values by the >>> classifier, then what module is performing that task when I query for the >>> predicted field value at any time step? >>> >>> If they are, what process is used to decouple multiple simultaneous >>> predictions and map each to its corresponding value to compare it against a >>> value after X time steps? Is it as simple as looking at the normalized RADC >>> table and picking the top 3 buckets with the highest likelihoods, mapping >>> them into their actual values, then attaching the likelihood to the >>> prediction as a confidence measure? >>> >>> There are clearly some major holes in my understanding of the algorithms >>> at play, I’d appreciate the clarifications :). >>> >>> thanks, >>> Nick >>> >>> On Aug 13, 2014, at 8:39 PM, Subutai Ahmad <[email protected]> wrote: >>> >>> Hi Nick, >>> >>> Nice diagram! In addition to the video David sent, we have a NuPIC >>> issue to create this document: >>> >>> https://github.com/numenta/nupic/issues/578 >>> >>> I found some old documentation in our archives. Scott is planning to >>> update the wiki with this information. I have also attached it here for >>> reference (but warning, it may be a bit outdated!) >>> >>> --Subutai >>> >>> >>> On Wed, Aug 13, 2014 at 9:03 AM, cogmission1 . < >>> [email protected]> wrote: >>> >>>> Hi Nicholas, >>>> >>>> This is the only source with any depth I have seen. Have you seen this? >>>> >>>> https://www.youtube.com/watch?v=z6r3ekreRzY >>>> >>>> David >>>> >>>> >>>> On Wed, Aug 13, 2014 at 10:46 AM, Nicholas Mitri <[email protected]> >>>> wrote: >>>> >>>>> Hey all, >>>>> >>>>> Based on my understanding of the material in the wiki, the CLA >>>>> algorithms can be depicted by the figure below. >>>>> There’s plenty of info about SP and TP in both theory and >>>>> implementation details. >>>>> I can’t seem to find much information about the classifier though. >>>>> If I’ve understood correctly, this is not a classifier in the Machine >>>>> Learning sense of the word but rather a mechanism to translate TP output >>>>> into values of the same data type as the input for comparison purposes. >>>>> >>>>> I’d really appreciate some more involved explanation of the process in >>>>> terms of what data is stored step to step and how the look-up/mapping >>>>> mechanics are implemented. >>>>> >>>>> best, >>>>> Nick >>>>> >>>>> <Screen Shot 2013-12-02 at 4.00.01 PM.png> >>>>> >>>>> _______________________________________________ >>>>> nupic mailing list >>>>> [email protected] >>>>> http://lists.numenta.org/mailman/listinfo/nupic_lists.numenta.org >>>>> >>>>> >>>> >>>> _______________________________________________ >>>> nupic mailing list >>>> [email protected] >>>> http://lists.numenta.org/mailman/listinfo/nupic_lists.numenta.org >>>> >>>> >>> <multistep_prediction.docx> >>> _______________________________________________ >>> >>> nupic mailing list >>> [email protected] >>> http://lists.numenta.org/mailman/listinfo/nupic_lists.numenta.org >>> >>> >>> >>> _______________________________________________ >>> nupic mailing list >>> [email protected] >>> http://lists.numenta.org/mailman/listinfo/nupic_lists.numenta.org >>> >>> >> _______________________________________________ >> nupic mailing list >> [email protected] >> http://lists.numenta.org/mailman/listinfo/nupic_lists.numenta.org >> >> >> >> _______________________________________________ >> nupic mailing list >> [email protected] >> http://lists.numenta.org/mailman/listinfo/nupic_lists.numenta.org >> >> > _______________________________________________ > nupic mailing list > [email protected] > http://lists.numenta.org/mailman/listinfo/nupic_lists.numenta.org > > > > _______________________________________________ > nupic mailing list > [email protected] > http://lists.numenta.org/mailman/listinfo/nupic_lists.numenta.org > >
_______________________________________________ nupic mailing list [email protected] http://lists.numenta.org/mailman/listinfo/nupic_lists.numenta.org
