I recently re-read a year old post from my blog that talked about the principles behind encoders.
Let’s explore how we might produce an SDR of a particular pattern in our naive version of the sensorimotor engine:
Let the first sensory representation Maestro receives be CAT. Each one of those letters represents an aspect of the spatial pattern: CAT. If we were to convert this to an SDR we’d start with the C and make a binary index for that. Meaning if C is ever found in the first index you would have the SDR start with 1. So the representation CAT would be 111. Not that sparse, but just wait until we start to see more things. If PAT is the second representation Maestro sees we add on an index for the P that we’ve never seen before: 0111 (not C, then A, then T, P). The mapping is not contained within the SDR, that would be some kind of encoder’s job that is doing the work of conversion. Eventually, as we see more and more things our representation becomes more and more sparse, and looks more like 0000010010000000010000000, ideally approaching about a 2% sparsity.
This is an adaptive SDR and it may not be immediately clear why an adaptive SDR is valuable. Well, maybe it’s not, but here’s where I’m coming from:
Regions of our neocortex use SDRs (as instantiated by neurons firing). But the process by which they are used requires that the data be pre-formatted as semantically encoded and that it can fit in the representation space. This is handled by the sensory organs in the body. Your skin is touched, or your eyes see an image and the way in which the sensory neurons in your skin are activated produce a semantically encoded representation of the sensation.
Of course, these processes by which information is semantically encoded by the sensory organs before the impulses reach the neocortex is a gift of evolution. That’s the algorithm by which our sensory organs have been so finely tuned that they deliver the best possible semantic representation of the data to the brain. The information about how these things should be semantically encoded has reached from the brain (where it is held) back through the algorithm of evolution or selective reproduction to influence how the information is gathered to better suit the organism’s brain. It all goes together. But maybe we could do this without evolutions help, maybe we could produce an auto-encoder explicitly. I think we’d need an adaptive SDR in order to achieve this.
What I think I was trying to say is that the sensory organ is an extension of the brain in so far as the brain can influence it through evolution, which takes time.
I see any kind of “auto-encoder” or universal encoder as an iterative function that must learn alongside the HTM structure and be influenced by it.
Step one might be making an adaptive SDR that grows when it sees different representations. So this is an expansive force upon the SDR’s length.
Step two might be some kind of algorithm that notices which bits always shine together, they can be consolidated into one bit. This is a contractive force upon the SDR’s length.
Step three might be to discover simply through an auto-encoding neural net, or by some other means which bits tend to be near each other in space and time. that way we can arrange shallowly-similar representations to have overlapping bits in the SDR.
Step four I think would require more in-depth analysis derived from the HTM model we’re feeding. once it learns some higher order similarities in the data, (that is, that representation A which shares no overlapping bits with representation B are actually semantically close), the HTM model needs to be able to export that information back down to the encoder explicitly, (rather than waiting for the algorithm of evolution) to run it’s course.
if it could explicitly communicate that idea back to the encoder, and know which way the encoder would modify it’s bit representations, and therefore be able to modify it’s own internal HTM connections, then we’ve bypassed evolution, or rather we’ve imported the effect of evolution into the intelligence algorithm directly. It’s still iterative and takes time to train the encoder, but it’s adaptive over time. We’ve pulled in the encoder to be the lowest layer of the HTM algorithm at that point.
Anyway, I have no idea if this could work but my intuition says there needs to be a feedback mechanism between the HTM and the encoder because there is a feedback mechanism in nature called evolution, which produces the effect of a “universal” encoder, because the encoder, the organ, becomes attached to the brain through the process of evolution and is, therefore, an iterative learner with it.
My intuition says just connect the two explicitly instead of through the round about way of using a genetic algorithm to produce the best winners over time.