Note that I have not run any kind of extensive testing on this yet, so feel free to poke holes, but the way I have implemented it is by scoring the proximal segments (similar to how columns are scored in traditional SP). Then a target number of receiving cells with the highest score (using a random tie breaker) are selected as winners. If there are not enough segments over the minimum threshold to reach the target number, a random sampling of cells with fewest number of proximal segments (using a random tie breaker) are selected to grow a new proximal segment.
The “target number” of cells to activate is inversely proportional to the number of the winning cells from my previous paragraph which were in a predictive state. If fewer of the receiving cells were in predictive state, then the “target” number is higher. This is to serve the same purpose of minicolumn bursting in traditional TM. So for example, you might select 1280 winners to activate if none were in a predictive state, but only 40 winners if there were at least that many in a predictive state.
One obvious hole to poke in this, is the case of multiple predictions. You end up with cells that might originally have aligned with one input shifting to align with another input simply because both followed a particular previous input. I haven’t tested extreme cases of this, but my intuition is that this will lead to at least an initially more unstable system. The question will be whether or not the system will be able to stabilize with enough iterations of the proximal learning (for example, due to the distal learning locking in on better predictions).
– EDIT – I should clarify that the “winners” I mentioned above refer to the cells chosen to be activated due to proximal input. These are not the same “winners” which are referred to in the TM algorithm (those “winners” would be a sub-set of these).