This https://numenta.com/resources/biological-and-machine-intelligence/spatial-pooling-algorithm/ defines an algorithm with a clear purpose of implementing it as code. But writing software is the easy part, it’s knowing what software to write that’s hard. What exactly is the meaning and intent of SP, stripped of the specific implementation detail?
My reading is that SP is the adaptive part of input encoding. It takes as input a stream of arbitrary bit patterns produced by the various sense organs/devices and with some parameter settings and no other prior knowledge outputs a corresponding stream of SDRs that satisfy certain constraints. Although the text uses many biological terms, I don’t see a close match between this algorithm and any biological mechanism.
If I read it correctly the hotgym example settings include:
- a predetermined number of input and output bits
- several other parameters, chosen so that the algorithm will work, rather than for a priori reasons.
Constraints appear to include:
- outputs should be ‘sufficiently’ sparse.
- outputs should be ‘similar’ for ‘similar’ inputs, for some definition of ‘similar’.
Am I on the right track? If I came up with a completely different algorithm to satisfy the same output constraints, would that be a good thing?