I’m implementing a golang version of HTM for some purpose and i’m reading the Numenta code now, but there’s something strange i see here in the TM code…
The permanence adaptation of the existing synapses is based on active cells, but growing new synapses is based on winner cells…
Does it mean that when a mini-column bursts, the existing synapses to and from all of it’s cells do change permanence, despite only one being considered as the in-state representation of the spatial feature…?
If so why?
I’ll start with describing what this is doing,
The segment which best matches activity in the previous time step (winners or not) is adapted to better align with that activity (synapses on that segment which received activity are strengthened, and synapses which did not are degraded). This is designed to make sure when similar activity is encountered again in the future, it is more likely that this segment will be chosen again.
The above process counts how may of the segment’s synapses received activity. If the number is below the desired count, then more synapses are added up to that count. When synapses are added, they are connected only to winner cells. By choosing only the winner cells, this gives the segment a better chance of becoming part of a new sequence.
I’m not entirely sure, but I think the reasoning here is that it promotes segments being able to generalize a bit, so they are picked up by a range of semantically similar patterns. Any activity that the segment is already connected to gets strengthened and allowed to persist, while new connections are established to align with the specific context that the segment finds itself in.