BAMI: Spatial Pooling
Created on 2021-01-15T20:40:26-06:00
Column: each cell in the output of spatial pooling array is called a column or mini-column.
Inhibition group: a collection of columns which share a ration for how many inputs are active at a given time.
Creating spatial pooling layer
Start with the size and hot bit count of the "input" SDR.
Decide the size and hot bits of the output SDR.
Decide how many connections will exist per output column (cell) to each input column (cell.)
For each "column" in the output: connect to a random subset of columns on the input.
Each connection has a random permanence value.
Calculating the output for one step of a spatial pooling layer
An inhibition area allows only so many outputs to be active while suppressing the actviation of all others.
For each column in an inhibition area: calculate how many synapses column has where permanence > threshold; sort and take the topmost columns based on how many cells may be active in the whole inhibition area.
Hebbian learning for each synapse in all active columns: if they represent an active bit in input, push towards higher permanence. if they represent an inactive bit in input, push towards lower permanence.
Boosting
When calculating a column's activation score: multiply by a boost factor.
Boosting involves tracking how often a column fires or does not fire in a rolling average of recent cycles. Columns which are always firing are penalized and columns which never fire are encouraged to fire.
Boosting is supposed to help get more of the population of columns engaged in decision making. For example it gives columns below permanence (which would then never fire) an opportunity to fire if they have been inactive for a long time.