I have implemented a new boosting rule in the HTM spatial pooler (SP). Boosting in SP encourages efficient use of columns by applying a multiplicative factor to the inputs of each column. We call this the boost factor and update it according to the activation history of individual columns (activeDutyCycle).
In the old boosting rule, boosting factors are always >=1.0. We increase boost factors for "weak" columns (controlled by the parameter minPctActiveDutyCycles). The strength of boosting is controlled by a parameter called maxBoost. Through a series of experiments, we find the discrete nature of the old boosting rule often introduce instability.
In the new boosting rule, the boosting function is a continuous exponential function, with its slope controlled by a parameter called boostStrength. We not only increase excitability for weak columns, but also decrease excitability for strong columns.
The new boosting rule is implemented in nupic.core and is about to be merged in nupic
We propose to change the parameter name 'maxBoost' to 'boostStrength' and eliminate the parameter
minPctActiveDutyCycles. The related PRs are here for NuPIC, and here for nupic.core.
Please note that this will be a breaking change as it will no longer support old models. We will wait for 72 hours before merging for community response.
A complete description of the spatial pooler learning algorithm can be found in our HTM SP paper.