I’m reading Large-Scale Synthesis of Functional Spiking Neural Circuits (by Terrence Stewart and Chris Eliasmith and ) and I’m getting the idea of how the NEF works, but I need some info to get over some ambiguities.
Lets suppose you have a group of neurons, each neuron being a direction vector in 2 dimensions. Some point east, some point west, some point Northwest, etcetera. The direction of a neuron in this case is just the vector of weights coming into a particular neuron. (I think). Now an input vector X is applied to each neuron (each neuron is getting the identical input). A neuron whose weights are similar to the input vector will fire more rapidly than one that is not similar. As a group you have a kind of fuzzy combination of neurons that represent the input - if we were to say it as a sentence, it might be “a little bit west, a lot Northeast, and a tiny bit south”. But here is my first stumbling block.
We could take linear combination of the outputs of those neurons. What are we accomplishing by doing that? The article seems to say that we can approximate any function by linear recombination of neural populations. (In fact, you don’t even need the sigmoid function that I’m used to in the backpropagation algorithm to produce a non-linear result). In the case of the compass-directions example suppose I tried to recreate the initial input. If the initial input was a vector pointing Northeast, I suppose I could recreate that in a neuron receiving inputs from one neuron whose preferred direction was North and another whose preferred direction was East and some other neurons with their own preferred directions. Is that the idea? In this case though, a transform from direction to something else would not make sense (unless maybe I was combining it with some other group that represented amplitude or some other property).
If I was trying to recreate a sine wave over time, then since a sine wave exists in two dimensions, I could use the group of vectors with random preferred directions and then recombine them. But if I wanted to transform that sine wave into something else, would a linear combination of the neurons it activated let me do that? What kind of functions could I convert it to?
I’ve gotten partway into the explanation of semantic pointers as well, and the confusion I have there is this. If the convolution of a syntax role and a word has to produce a vector as far as possible from the word (which is itself a vector) and from the role (which is also a vector), then how do you avoid the resulting pointers conflicting with some other word, or word-role? What is going to prevent collisions?
Finally, on a previous question in this forum, I got the following answer: "The interpretation of decoders as weights only holds roughly in the 1D case (after accounting for a possible change in sign for “on/off” neurons, a gain, and a bias current). In higher dimensions, the actual weight is a dot-product of a higher-dimensional decoder with a higher-dimensional encoder. This results in a conceptual distinction between the weight matrix and their factored forms used to understand the relevant computations. The course notes, and some of the Nengo notebook examples, are a good reference for understanding this in more detail."
I’ll get to the course notes, eventually, but how can a single neuron feed into a “higher dimensional decoder”? If a decoder isn’t a weight, is it a vector of weights? A matrix of weights? Where do these weights go?