Should we open an issue to fix that portion of the white paper? Sent from my iPhone
> On Aug 19, 2014, at 7:37 AM, Fergal Byrne <[email protected]> wrote: > > Hi John, > > Good spot. That was an error in the white paper, and nothing ever came from > attempts to implement it. It's been superseded by the new theory involving > sensorimotor memory, in which inter-region feedforward communication is > composed of an SDR of active neurons in L3. > > Regards, > > Fergal Byrne > > >> On Tue, Aug 19, 2014 at 1:15 PM, John Blackburn <[email protected]> >> wrote: >> Fergal, Thanks for your replies. You have certainly made things clearer to >> me. >> >> However, I think the whitepaper (v0.2.1, Sep 2011) says that both predictive >> and active cells are passed to the next region: >> >> p25: "The output of a region is the activity of all cells in the region, >> including the cells active because of feed-forward input and the cells >> active in the predictive state. As mentioned earlier, predictions" >> >> p31: "Note that only cells that are active due to feed-forward input >> propagate activity within the region, otherwise predictions would lead to >> further predictions. But all the active cells (feed-forward and predictive) >> form the output of a region and propagate to the next region in the >> hierarchy." >> >> John. >> >> >>> On Tue, Aug 19, 2014 at 1:01 PM, Fergal Byrne <[email protected]> >>> wrote: >>> Hi Nick, >>> >>> Only active states are ever transmitted. >>> >>> There are several reasons for this. CLA is a computational model for >>> neocortex, so it must conform with neuroscience at certain levels of >>> detail. In particular, inter-neuron communication over a certain distance >>> must only be (in neocortex) by the propagation over axons of action >>> potentials by firing neurons, or (in CLA), by a neuron being active in the >>> current timestep. Any other information is invisible. >>> >>> Much more locally, however, predictive potential does play a role. In >>> forming an SDR in CLA, we enforce sparseness by choosing the n% (usually >>> 2%) highest "potentials" among cells (among columns in NuPIC), based on >>> their response to the input. We call this "inhibition". In the neocortex, >>> what actually happens is that each cell is depolarised at a different rate >>> depending on synaptic inputs. The cells with the highest rates reach their >>> firing potential first and fire, triggering a wave of inhibition to spread >>> outwards and drastically reduce their neighbours' rates of depolarisation. >>> >>> In NuPIC, potential due to feedforward alone is used in SP to choose the >>> columns, and then potential due to lateral or predictive inputs is used to >>> choose the active cell within each column. In the neocortex, and in a more >>> faithful CLA implementation, predictive depolarisation is combined with >>> feedforward depolarisation to choose individual cells. >>> >>> Regards, >>> >>> Fergal Byrne >>> >>> >>> >>> >>> >>> >>> >>>> On Tue, Aug 19, 2014 at 11:48 AM, Nicholas Mitri <[email protected]> >>>> wrote: >>>> Thanks Fergal, >>>> >>>> I’d like to iterate John’s question though. Are the predictive and active >>>> states passed on to the next region as ‘1’ or do we follow the same >>>> paradigm in assuming all relevant information is encoded in the active >>>> bits and only propagate those states upward while ignoring predictive >>>> states? >>>> >>>> Nick >>>> >>>> >>>>> On Aug 19, 2014, at 1:40 PM, Fergal Byrne <[email protected]> >>>>> wrote: >>>>> >>>>> Hi John, >>>>> >>>>> The classifier is extra-cortical - it's a piece of engineering added to >>>>> efficiently extract useful predictions. To explain how it works, let's >>>>> use a concrete example of predicting energy use 10 steps ahead in the >>>>> hotgym use case. >>>>> >>>>> Firstly, at the outset you tell NuPIC you want to predict a certain field >>>>> a certain number of steps ahead (you can do multiple predictions but >>>>> these are just copies of the same process). The classifier sets up a >>>>> virtual histogram for every cell, which will store the 10-step >>>>> predictions of energy use for that cell. For every input seen, the >>>>> classifier looks at the active cells from 10 steps in the past and >>>>> updates their histograms with the current value of energy use. >>>>> >>>>> To extract a prediction for 10 steps in the future, look at all the >>>>> active cells' histograms, and combine their predictions. >>>>> >>>>> The reason this (often, usually) works is that the pattern of currently >>>>> active cells (not just columns) identifies the current input in the >>>>> current learned sequence. This very sparse representation statistically >>>>> implies a very limited set of future outcomes, and the layer's collective >>>>> beliefs, derived from combining the histograms, form a good estimate of >>>>> the future of the data. >>>>> >>>>> The pattern of predictive cells in CLA is a prediction of the next SDR(s) >>>>> one timestep ahead. It could also be used for prediction if you're only >>>>> interested in exactly one step ahead, but it would have to be "decoded" >>>>> to reconstruct the next input for one field; the histogram already has >>>>> its data in the input domain, so it's easier and cheaper just to use the >>>>> histograms. >>>>> >>>>> The predictive pattern is, however, crucial in identifying which cells to >>>>> activate in the next timestep, which then become the sparse set of active >>>>> cells from which we derive the 10-step prediction, so predictive states >>>>> are key to NuPIC's predictive power. >>>>> >>>>> Regards, >>>>> >>>>> Fergal Byrne >>>>> >>>>> >>>>> >>>>>> On Tue, Aug 19, 2014 at 11:14 AM, John Blackburn >>>>>> <[email protected]> wrote: >>>>>> 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 >>>>> >>>>> >>>>> >>>>> -- >>>>> >>>>> Fergal Byrne, Brenter IT >>>>> >>>>> Author, Real Machine Intelligence with Clortex and NuPIC >>>>> https://leanpub.com/realsmartmachines >>>>> >>>>> Speaking on Clortex and HTM/CLA at euroClojure Krakow, June 2014: >>>>> http://euroclojure.com/2014/ >>>>> and at LambdaJam Chicago, July 2014: http://www.lambdajam.com >>>>> >>>>> http://inbits.com - Better Living through Thoughtful Technology >>>>> http://ie.linkedin.com/in/fergbyrne/ - https://github.com/fergalbyrne >>>>> >>>>> e:[email protected] t:+353 83 4214179 >>>>> Join the quest for Machine Intelligence at http://numenta.org >>>>> Formerly of Adnet [email protected] http://www.adnet.ie >>>>> _______________________________________________ >>>>> 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 >>> >>> >>> >>> -- >>> >>> Fergal Byrne, Brenter IT >>> >>> Author, Real Machine Intelligence with Clortex and NuPIC >>> https://leanpub.com/realsmartmachines >>> >>> Speaking on Clortex and HTM/CLA at euroClojure Krakow, June 2014: >>> http://euroclojure.com/2014/ >>> and at LambdaJam Chicago, July 2014: http://www.lambdajam.com >>> >>> http://inbits.com - Better Living through Thoughtful Technology >>> http://ie.linkedin.com/in/fergbyrne/ - https://github.com/fergalbyrne >>> >>> e:[email protected] t:+353 83 4214179 >>> Join the quest for Machine Intelligence at http://numenta.org >>> Formerly of Adnet [email protected] http://www.adnet.ie >>> >>> _______________________________________________ >>> 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 > > > > -- > > Fergal Byrne, Brenter IT > > Author, Real Machine Intelligence with Clortex and NuPIC > https://leanpub.com/realsmartmachines > > Speaking on Clortex and HTM/CLA at euroClojure Krakow, June 2014: > http://euroclojure.com/2014/ > and at LambdaJam Chicago, July 2014: http://www.lambdajam.com > > http://inbits.com - Better Living through Thoughtful Technology > http://ie.linkedin.com/in/fergbyrne/ - https://github.com/fergalbyrne > > e:[email protected] t:+353 83 4214179 > Join the quest for Machine Intelligence at http://numenta.org > Formerly of Adnet [email protected] http://www.adnet.ie > _______________________________________________ > 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
