Open mrcslws opened 8 years ago
The comportex logic selects a learning cell jointly with its learning segments (zero or one each of distal & apical segments). This is not just for bursting, it covers all cases including where one or more segments are fully or partially matching -- i.e. meeting stimulus or learning thresholds.
This is by no means a complete solution and has not really been tested on anything except my "sequence replay" example. But food for thought perhaps.
Here goes
Relevant code: https://github.com/numenta/nupic.core/blob/8a846d1d897440bc6ca1e46120520da166bc551a/src/nupic/experimental/ExtendedTemporalMemory.cpp#L616
I didn't change the algorithm at all, I just put all the logic for "learning cell" selection in one place.
When a column is bursting, we choose a cell to learn on. The current selection process is:
We should start also considering apical segments. Here's a trivial addition:
We could go further and give preference to a cell that has both a matching apical and basal segment. Or maybe a different change makes sense. (e.g. allowing multiple learning cells per segment in some cases?)
I haven't thought through the effects on experiments. It just seems pretty clear that this code is incomplete.