Common Misconceptions about NEF/SPA/Nengo


At the last meeting, common mis-understandings about NEF/SPA/Nengo were discussed. Would it be a good idea to compile common mis-understandings in a public facing thread we could link to? I emailed @chris and he recommended the following:

The NEF does not allow biological detail

Origin: Markram says “It’s not a brain model”. Using LIF neurons most of the time.

Dispelling: 4 different neuron models in original book. Models with neurons with different dynamics. Extensions to neurons with spatial structure? Note the Dale’s principle transform.

The NEF ultimately demonstrates that neurons are not relevant for behavior



The NEF results in ‘hand coded’ models and ignores learning

I can start with the one I remember from the meeting.

The NEF requires millions of neurons

There are many useful functions performable by the NEF with hundreds or thousands of neurons. The Adaptive Arm Controller uses almost a thousand neurons [citation needed]. The more neurons you use, the more accurate of a representation you get, as described in the NEF book, but generally a functioning representation is somewhere between hundreds and a thousand neurons. Spaun does use a lot of neurons, but only because it is a collection of so many different systems.


The NEF is Rate-Based

As I describe in this answer, the NEF is “firing-agnostic”:

The NEF has no formal stance on whether rate information or phase information is of importance. All it cares about is spikes.

As proof, consider the derivation of the decoders, which is the core of the NEF.

The Decoders, $d$ are a vector of synaptic weights applied to the activities of neurons (one decoding weight per neuron) to approximate a given function $f(x(t))$. They can be thought of as the axons of a neuron.

Given the spiking neurons activities in the matrix $A$ (rows are neurons, columns are evaluation points), to an input $x$, this relation can be explained as:

$$A \cdot d = f(x(t))$$

Given an equation with one unknown, where a matrix $A$ is combined with a vector $d$ to get another vector $f(x(t))$, this can be solved using linear algebra to find $d$.

Note how there is no mention of rate or phase in this derivation. Admittedly, in the Nengo neural simulator, rate neurons can be used and functions that take phase into account can be calculated, but these design choices are up to the modeller and are not forced by the NEF itself.