numenta / htmresearch

Experimental algorithms. Unsupported.
GNU Affero General Public License v3.0
224 stars 144 forks source link

ETM suggestion: Use apical segments when determining the learning cell #611

Open mrcslws opened 8 years ago

mrcslws commented 8 years ago

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.

floybix commented 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

Code: https://github.com/htm-community/comportex/blob/863b68af4815d086803d2bf52676df5f699c51da/src/org/nfrac/comportex/cells.cljc#L498