No doubt. I suspect it has a local effect, maybe around the scale of a layer of a minicolumn. That may be one factor that encourages competition within a minicolumn. It could also be responsible for a coarser temporal homeostatic effect in which cells settle to a canonical range of firing rates.
Double bouquet cells have a very conspicuous morphology with respect to the competition side of the equation, since they’re inhibitory cells that stretch along the entire height of a minicolumn, but their lateral extent is very limited. As you suggest, this may perform both functions (locking spikes in phase with the oscillatory timestep, and also implementing winner-take-all competition). In a sense, oscillatory inhibition and lock-step timing can be reasonably seen as one and the same phenomenon.
I have implemented this pooling strategy now, and you are correct. This was a good exercise for me, because I wasn’t quite grasping the concept until I started tracing the steps through during debugging.
do you think you could post your code? i’m also coding an implementation of this pooling strategy as well (as well as a new inference strategy, which uses almost the same code as the pooling strategy), and i suck at coding so it’s taking a little bit longer than i like. i’d be super interested in seeing how you went about implementing it!
Sure, I’m putting together some demos along the way and will post the code on Github probably tomorrow or Monday after I have a chance to clean them up a bit. It is in JavaScript for now, since that makes it easy to share browser-based demo apps.
Just a quick note on this, although it may be the case that spike facilitation also implies a higher threshold, this is not the primary meaning of the term as I understand it. Do you have studies that show this?
The primary meaning of the term as I understand it is that firing a spike makes future spikes easier to produce, and hence a spike train from a cell exhibiting facilitation increases in frequency. A cell exhibiting depression is the opposite, its spike train decreases in frequency. As far as I know this is a property of the post-synaptic receptors at the synapses.
The key aspect I wasn’t grasping initially, which leads to a stable active representation, is that in an SMI pooling layer, the long-distance distal connections mean the connections being made are forming associations between multiple features that are simultaneously being sensed at a given time step. My original doubt was based on only considering a proximal signal from a single feature at a time per time-step. This strategy probably wouldn’t work for for pooling sequences, for that reason, but should be well suited for an SMI output layer.
BTW, stability can be increased by having the layer take its proximal input over T and T-1 (versus only T). Related to the same reason I mentioned above.
Neocortical Layer 6, A Review (Alex M. Thomson, 2010) shows that L6a and L6b CT cell initial EPSPs are weak, so it probably takes a bit of input. It might be more accurate to say that the cell starts off firing slowly, but fires more quickly as long as the input keeps coming.
I’m not sure if there is spike facilitation, but there might be, because some cells adapt, what you could call spike depression.
I’ve only heard of synaptic facilitation, which doesn’t depend on whether or not the postsynaptic cell fires. Instead, whenever the synapse sends a signal, it is temporarily weakened. This means that repetitive inputs still cause a weakening signal even if the cell never fired.
Not to rat-hole too much on this issue, but once again, would this not be synaptic depression? My understanding of the terms (as well as the colloquial meaning of the words) makes me think that facilitation would indicate increasing strength, as the effect facilitates the faster production of spikes.
Another drawback is not maintaining a fixed sparsity. When the inhibition step is executed as you described at 1:00:44 the sparsity of the representation is affected. Basically input being pooled which has lots of semantically similar features will result in a more dense representation, whereas an object with many semantically dissimilar features will result in a more sparse representation (or even multiple representations).
I saw a similar behavior in one of my own pooling strategies a while back. At the time I was considering addressing it either with modifications to the SP learning function, or ditching SP entirely and growing proximal connections using an algorithm more like TM (drawback with the latter being that you no longer can leverage the properties of bursting when switching from one object to another).
Woops, I accidentally described synaptic depression. My point was that it’s possible for facilitating cells to need repetitive input before they can fire, because the synapses increase their weight regardless of whether or not the postsynaptic cell fires.
Also, I think the source I gave says that the outputs of L6 CT cells are what facilitate. The inputs to L6 from the thalamus probably depress a little, but L6 CT cells don’t stop firing or slow down very quickly.
actually, i would argue that not maintaining a fixed sparsity is the whole point of the system. indeed, you are right, the SP cannot be used canonically for this system to work. in the code which i will be posting soon, i completely redo the SP, to make it more in the style of TM, as you described. turns out, this actually simplifies the code quite a bit.
on a disconnected but related note, my code does not model columns in either the inference layer or the pooling layer, whatsoever. i do not think these are functionally relevant in the cortex.
In light of the above conversation, my implementation is actually not in alignment with @dwrrehman’s thought process, so don’t think I’ll post it just yet. My demo is focused on highlighting the deficiencies of the strategy WRT sparsity, but I think now that those deficiencies actually are coming from a conflict with the SP process. I’ll do some more tinkering to adjust to my updated understanding of the process.
so “inference layer” is layer 5 and “pooling layer” is layer 4 in neocortex? I mean, the inference must be an active inference on the motor commands? and the pooling must be pooling of sense data for use in the inference?..then layer 2/3 are also input layers to the inference?
not exactly- its a little more complicated than that in the paper, i describe the hypothesized function of every layer that is belelived to exist in a cortical region, but heres a summary/list of all of them, and their functions:
you noted input layers and output layers. it is alittle more complicated than what you described, but in terms of anatomical inputs and outputs of the region, these layers classified as the following:
For the more visually-oriented, I drew some pics depicting how this pooling strategy learns to represent an object given a series of feature/location inputs. Active cells are red and predictive are yellow.
For illustrative purposes, I have have only used an object with 3 features and 3 locations. I’ve also aligned related cells to highlight what is going on, but in practice these cell positions would be randomized (and of course there would be a lot more cells involved).
This should give a sense for how the layer converges onto a representation, but let me know if I need to clarify something (or if this indicates gaps in my understanding of the process)
I could have taken this out several more timesteps until it stabilized, but this should be enough to see a representation for the coffee cup emerging.
EDIT - I missed a couple predictive cells in the top row for the last two timesteps, but you get the idea :). I’ll have a scenario like this in a demo app once I finish implementing it.
Hey Paul, what exactly are we looking at there? I gather the top row is the pooled object representation layer, and the three smaller populations are feature representations?