Why are the bits of a spatial pooler called columns?

I think I understand pretty well how the spatial pooling works, but I still haven’t figured out why the output of the SDR is always referred to as columns. I understand why the temporal memory has columns. Is it named columns because it feeds into the columns of the Temporal memory?


If you haven’t watched it yet, have a look here:

Especially Episode 7 (Spatial Pooler). It covers columns almost immediately.



Technically, an SDR can refer to the current activity of all neurons, or just one bit per minicolumn. The usage depends on the context, and we should really be more clear about how we are using it in our descriptions. With respect to the spatial pooler, the output SDR is typically referring to the minicolumns. When discussing the temporal memory, one could justify using the per neuron description.

The spatial pooler is concerned with recurring and/or persistent spatial patterns in the input stream (whether that be from encoded sensor data or an SDR in another HTM layer). These spatial patterns are typically considered to be presented to the proximal dendrites/synapes of the (L4) pyramidal neurons in a mini-column. Since the proximal synapses are all close to the cell bodies of the pyramidal neurons, they typically receive their inputs from the same set of upstream neurons which have projected their axon arbors into the vicinity of the minicolumn.

The purpose of the spatial pooler is to help determine which of the upstream neurons will present their arbors to each minicolumn. The goal is to distribute the axons in such a way that most of the minicolumns will have the opportunity to respond to the various observed patterns in the input stream in a fair manner. In other words, we don’t want only a handful of minicolumns responding to most of the inputs, and similarly we don’t want too many quiescent minicolumns that never get the chance to activate. The boosting algorithm was designed to promote the activity of quieter minicolumns while diminishing the influence of the ones that are more active. This effectively factors the input space into a set of basis functions or convolutional filters that each have a fairly similar probability of appearing in the input stream. Thus, each minicolumn learns to respond to one of these specific input patterns.

So, spatial patterns are recognized at the minicolumn level due to all neurons in the minicolumn being presented with very similar inputs to their proximal (close to the cell body) dendrites. Temporal sequences, on the other hand, are recognized due to the detection of activity on the more distal (far from the cell body) dendrites. These distal patterns are assumed to be unique for each of the cells within the column. Even though all neurons in the minicolumn are receiving the same proximal input, the temporal memory algorithm encourages only one neuron within the minicolumn to fire first while suppressing the rest. In other words, if one neuron’s distal dendrites have detected a sufficient amount of activity in previous few milliseconds, it will increase the bias on the neuron which then allows it to respond slightly faster than the other nodes in the minicolumn. After the first cell fires, an inhibitory neuron detects that activity and then silences the rest of the neurons in the minicolumn. Therefore, a cell that has been biased by distal activity will be more likely to fire first when the proximal inputs (recognized by all cells in the minicolumn) arrive.