Nengo is based on the Neural Engineering Framework (NEF; Eliasmith & Anderson, 2003).
There are three basic principles of this framework:
- Representation: A group of neurons represents a vector of a specific length (e.g. a 2-dimensional vector). This generally uses a distributed encoding, and is highly non-linear due to the inherent neuron non-linearities. However, we can use a linear decoding on the spiking output of the group of neurons to accurately recover the original input.
- Transformation: A connection from one neural group to another computes a function on the represented value, so if the first neural group represents x, then the second neural group represents f(x). We can choose an arbitrary function and solve for the connection weights that will approximate that function. The approximation will be more accurate the more neurons are used, and less accurate the more nonlinear the function.
- Dynamics: Recurrent connections allow us to define complex dynamical models. By adapting a standard control theory framework, we can implement integrators, Kalman filters, and other useful reactive systems.
See here for more information.