The NEF is the main method we use for constructing neural simulations. A quick overview of the framework can be found below. The book Neural Engineering (Amazon link) from MIT Press is a full description of the framework. However, we are constantly working on improving and extending these methods.
Our group is developing a general computational framework for modeling the function of complex neural ensembles. The framework is grounded in the well-established principles of signal processing, statistical inference, and good engineering design. It provides a rational and robust strategy for simulating and evaluating the function of a wide variety of specific neural circuits. We are currently applying this framework to specific projects in sensory processing, motor control, and cognitive function.
Specific features of our modeling approach:
Relevant Publications on applications of the NEF.
The framework we have developed for understanding neurobiological systems is summarized below by what we call "Principles of Neural Engineering". We have used these principles to define a methodology for constructing simulations of neural systems (the methodology is also discussed in more detail below). We have had great success in applying both the principles and the related methodology to constructing models of perceptual, motor, and cognitive systems. Some detailed examples of these models can be found in the Research section. However, this framework is by no means complete as demonstrated by this long list (which is somewhat out-of-date, but helpful).
Addendum
Neural systems are subject to significant amounts of noise. Therefore, any analysis of such systems must account for the effects of noise. [further discussion]
Relying on these four principles for understanding the information processing characteristics of neurobiological systems has lead us to develop the following methodology for constructing simulations of neural systems.
Step 1: System description
The main goal of the first step is to describe the neural system of interest in such a way that the principles outlined previously are directly applicable to it. In particular, available neuroanatomical data and a good functional understanding (hypothetical or otherwise) are used to describe the architecture, function, and representations of the neural system. This description should include at least interconnectivity between subsystems, neuron response functions, neuron tuning curves, subsystem functional relations, and overall system behavior.
Next, we express the functional description in mathematical terms. In particular, the relevant mathematical variables should be specified in such a way that they can be used to write mathematical transformations that describe the previously specified functions. The goal here is to translate the functional description provided in neurobiological terms into a description in mathematical terms. This mathematical description may be highly abstract (e.g., describing a swimming eel as instantiating a kind of sine function; see the lamprey example in the book; or see this summary .pdf), so long as it is complete.
Step 2: Design specification
The second step of the methodology consists in precisely specifing the real-world limitations on that are known or assumed for the neural system of interest. Implementational constraints are of paramount importance when modeling neurobiological systems. This second step in the methodology helps make these constraints central to generating a good model. First, the appropriate kind of representation for each variable (e.g., scalar, vector, vector field, probability density function, etc.) must be determined. Then, the dynamic range, precision, and signal-to-noise ratio for each degree of freedom of variable specified in the preceding step must be determined. Similarly, the temporal characterisitics, such as bandwidth and power spectrum, must be specified. All such specifications should be made on the basis of available data, if possible.
Together, these specifications will clearly define the real-world operating constraints that the system must satisfy in order to successfully perform its function. Not surprisingly, these specifications can significantly affect the final model that is generated. If, for example, the signal-to-noise ratio must be extremely high, the neural system will have to be composed of many neurons.
Step 3: Implementation
The third and last step of our methodology involves generating the model itself. Given the system description and design specification, this step combines them to determine appropriate encoding and decoding rules needed to implement the desired behavior. There are two sets of encoding and decoding rules: the first relates higher-order representations (e.g., vectors) to lower-order representations (e.g., neuron firing rates); and the second set of rules determines transformations of representations at a given level of representation. In this step, we can compute the linear decoding that meets the design specifications and also determine the connection weights between neurons in our model network.
As well, at this step it is possible to determine which aspects of the system will be simulated with the greatest detail and which will be simulated with less detail. We can, in other words, construct models that are simulated partly at the level of spiking conductance-based neurons and partly at the level of, for example, neuronal groups. This is extremely useful when we have limited computational power and large models.
Summary
Together, these three steps provide a kind of algorithm for generating models of neurobiological systems. However, applying these steps to real systems is seldom a straightforward task. Although we have presented the methodology as three consecutive steps, we have found that it is better practice to iterate over these steps than to simply follow them in serial order. Often, the behaviors of an initial implementation can help inform a reworking of the initial system description. Similarly, design specifications can serve to modify initial system descriptions. A large part of the reason for this kind of interplay between steps is the preponderance of gaps in our knowledge about the systems we are modeling. Of course, one of the greatest benefits of a good simulation can be determining precisely what the knowledge is that we are missing.
Neural systems are subject to significant amounts of noise. Therefore, any analysis of such systems must account for the effects of noise.
There are numerous sources of noise in any physical system, and neurobiological systems are no exception (see section 2.2.1). As a result, and despite recent contentions to the contrary (van Gelder and Port 1995), neural systems can be understood as essentially finite (Eliasmith 2001). This is important, though not surprising, because it means that information theory is applicable to analyzing such systems. This ubiquity of noise also suggests that knowing the limits of neural processing is important for understanding that processing. For instance, we would not expect neurons to transmit information at a rate of 10 or 20 bits per spike if the usual sources of noise limited the signal-to-noise ratio to 10:1, because that would waste valuable resources. Instead, we would expect information transmission rates of about 3 bits per spike given that signal-to-noise ratio as is found in many neurobiological systems (see section 4.4.2).
These kinds of limits prove to be very useful for determining how good we can expect a systems performance to be, and for constraining hypotheses about what a particular neural system is for. For example, if we choose to model a system with about 100 neurons (such as the horizontal neural integrator in the goldfish), and we know that the variance of the noise in the system is about 10%, we can expect a root-mean-squared (RMS) error of about 2% in that systems representation (see section 2.3). Conversely, we might know the errors typically observed in a systems behavior and the nature of the relevant signals, and use this knowledge to guide hypotheses about which subsystems are involved in which functions. Either way, information regarding implementational constraints, like noise, can help us learn something new about the system in which we are interested.
On this page, we have collected some unresolved issues regarding neural signal processing, ordered them by the chapter of the Neural Engineering book that they relate to, and provided brief descriptions of them.
- Comparison to nonlinear decoding/encoding methods. Note that estimates of nonlinear decoding can be done using multiple linear decoders (since we can estimate nonlinear functions of the input signal: i.e., \hat{x}=\sum _{i}\phi ^{x}_{i}a_{i} + \sqrt{\phi _{i}^{x^{2}}a_{i}}+...). It would be useful to see if a biologically plausible nonlinear decoder could be constructed that gave significant information transfer gain.
- It should be possible to analytically demonstrate the we expect the error due to noise to decrease as 1/N^2, as shown numerically.
- There needs to be more work done on what kinds of PSCs to expect in certain conditions, and what kinds of computations certain PSCs are best suited too. We have treated PSCs as rather generic, which they aren't. Different dynamics for PSCs (and modulating those dynamics) are no doubt important for the range of neural dynamics actually seen.
- We need to finish developing methods for optimal population decoder generation that includes timing information too (e.g. for adapting neurons). In other words, the optimal filters should depend on the detailed temporal dynamics of the different cellular models, not just a LIF approximation to their tuning curves.
- It should be possible to include ion channel dynamics in the framework. This would facilitate inclusion of bursting and other more complex intrinsic cell dynamics.
- In the discussion of the negative weights problem, it would be useful to provide an analytic proof that we can always find scaling factors to make all weights positive. We have only shown this numerically.
- Similarly, it would be useful to determine if/when ensembles violate the half-plane constraint for negative weights.
- Our brief discussion of embedding nonlinearities into dendrites using the framework leaves much room for expansion. Specific examples, and dealing with issues of dendritic subgroups, and details of implementation are essential.
- It is essential to understand the relation between nonlinearities and noise, which we have not addressed. The large fluctuations observed in cortical firing could be due either to noisy intrinsic processes (i.e. Poisson processes), or the ubiquity of nonlinearities (i.e. deterministic, but nonlinear). The relation between the two needs to be examined.
- Most obviously, it would be valuable to adopt a better synaptic model and do a similar derivation to find the neural equivalent of standard control structures (i.e. 1/1+s\tau is a first-order approximation).
- Our current analysis (though not the models) assumes the same PSC for each connection between populations. It would be useful to relax this assumption and see how the analysis is affected.
- We are not entirely satisfied with having to define g(t)=h(t)*h(t) in order to complete the analysis. It would be cleaner if this was not done.
- It would be useful to demonstrate more typical control theoretic analyses on an example system (perhaps the neural integrator). That is, explore open and closed loop gain, show the Bode plot, etc. in general, doing signal/control analyses more extensively.
- The lamprey model raises the possibility of including oscillators directly in framework. That is, explicitly incorporating cellular variables and ion channel dynamics (see chapter 4 to do list).
- To examine more general attractor networks, it would be useful to explore systems with more complex attractors using the framework (like torus and chaotic attractors (see Freeman)).
- A good example: Simon Giszter and his colleagues have done excellent work on frog spinal reflexes and their use during motor control. In terms of the framework, they have identified the basis functions that are used for generating locomotion. Deriving control systems, decoders, etc. could be explored by adopting this approach.
- Foremost, it would help to relate the discussion of statistical inference to more realistic neurobiological examples.
- The Kalman filter, is the only example we relate to neurobiology in much detail. It would be useful to both generalize (along the lines indicated during that discussion) and implement the Kalman filter in the two forms discussed. This could help generate predictions and perhaps suggest experiments and elaboration of the circuit.
- As mentioned in this chapter, integrating learning poses the greatest challenge to the framework. We need a more complete analysis of the relation between our approach and learning, and more specific neurobiological examples that include learning.
- The biggest challenge is to derive local learning rules that will result in the complex control circuits that describe neural function.
- An example: The neural integrator receives an error signal (retinal slip) that is probably used to tune the weights in the network. This could be incorporated into the current model.
Neural representations are defined by the combination of nonlinear encoding (exemplified by neuron tuning curves) and weighted linear decoding.
Quantitatively, we can write the encoding:

and the decoding:
where

In these equations, a is the activity of a neuron, i, encoding a vector signal x(t), in a spike train (represented as a sum of delta functions, with each spike indexed by n). The encoding is defined by the nonlinear function, G, and parameterized by a gain, \alpha, and a bias, J^bias. The encoding vector \tilde\phi determines the neuron's preferred stimulus in the signal (the elements inside the square brackets determine the soma current). An estimate of the signal is recovered through linear population decoding, using the vectors \phi and linear temporal decoding using the filter h(t). These can be combined to give a population-temporal decoder, \phi_i(t-t_in).
Principle 1 emphasizes the importance of identifying both encoding and decoding when defining neural representation. Moreover, this principle highlights the central assumption that, despite a nonlinear encoding, linear decoding is valid (see Rieke et al. 1997, pp. 7687). As discussed in detail by Rieke et al., a nonlinear response function like that of typical neurons is, in fact, unrelated to whether or not the resulting signal can be linearly decoded. That is, the nature of the input/output function (i.e., encoding) of a device is independent of the decoder that is needed to estimate its input. This means that a nonlinear encoding could need a linear or nonlinear decoding, and vice versa. This is because the decoding depends on the conditional probability of input given the output and on the statistics of the noise (hence our addendum). Perhaps surprisingly, linear decoding works quite well in many neural systems. Specifically, the additional information gained with nonlinear decoding is generally less than 5%.
Of course, nonlinear decoding is able to do as well or better than linear decoding at extracting information, but the price paid in biological plausibility is generally thought to be quite high (see, e.g., Salinas and Abbott 1994). Furthermore, even if there initially seems to be a case in which nonlinear decoding is employed by a neural system, that decoding may, in the end, be explained by linear decoding. This is because, as we discuss in section 6.3 (this and all subsequent section references are to the book), nonlinear transformations can be performed using linear decoding. Thus, assuming linear decoding at the neuron (or sub-neuron, see section 6.3) level can well be consistent with nonlinear decoding at the network (or neuron) level. So, especially in combination with principle 2, linear decoding is a good candidate for describing neural decoding in general.
It is important to emphasize that analyzing neurons as decoding signals using (optimal) linear or nonlinear filters does not mean that neurons are presumed to explicitly use opti-mal filters. In fact, according to our account, there is no directly observable counterpart to these optimal decoders. Rather, the decoders are embedded in the synaptic weights between neighboring neurons. That is, coupling weights of neighboring neurons indirectly reflect a particular population decoder, but they are not identical to the population decoder, nor can the decoder be unequivocally read-off of the weights. This is because connection weights are determined by both the decoding of incoming signals and the encoding of the outgoing signals (see, e.g., section 6.2). Practically speaking, this means that changing a connection weight both changes the transformation being performed and the tuning curve of the receiving neuron. As is well known from work in artificial neural networks and computational neuroscience, this is exactly what should happen. In essence, the encoding/decoding distinction is not one that neurobiological systems need to respect in order to perform their functions, but it is extremely useful in trying to understand such systems and how they do, in fact, manage to perform those functions.
Transformations of neural representations are functions of variables that are represented by neural populations. Transformations are determined using an alternately weighted linear decoding (i.e., the transformational decoding as opposed to the representational decoding).
Quantitatively, we assume the same encoding as described in principle 1 and define the decoding:

This decoding is the similar to that in principle 1, except the decoders are determined such that a function, f, of the original input signal is estimated.
The comments in principle 1 about representational decoders apply equally to transformational decoders. This should be no surprise given our prior discussion (in section 1.3; this and all subsequent section references are to the book) in which we noted that defining a transformation is just like defining a representation (although with different decoders). However, we did not previously emphasize the kinds of transformations that can be supported with linear decoding.
It has often been argued that nonlinear transformations are by far the most common kind of transformations found in neurobiological systems (see, e.g., Freeman 1987). This should not be surprising to engineers, as most real-world control problems require complex, nonlinear control analyses; a good contemporary example being the remote manipulator system on the international space station. This should be even less of a surprise to neuroscientists who study the subtle behavior of natural systems. As Pouget and Sejnowski (1997) note, even a relatively simple task, such as determining the head-centered coordinates of a target given retinal coordinates, requires nonlinear computation when considered fully (i.e., including the geometry of rotation in three dimensions). Thus, it is essential that we be able to account for nonlinear as well as linear transformations. In section 6.3 we discuss how to characterize nonlinear transformations in general. We provide a neurobiological example of a nonlinear transformation (determining the cross product) that allows us to account for a number of experimental results (see section 6.5). Thus we show that assumptions about the linearity of decoding do not limit the possible functions that can be supported by neurobiological systems.
This result will not be surprising to researchers familiar with current computational neuroscience. It has long been known that linear decoding of nonlinear basis functions can be used to approximate nonlinear functions (see section 7.4). Nevertheless, our analysis sheds new light on standard approaches. Specifically, we: 1) show how observations about neural systems can determine which nonlinear functions can be well-approximated by those systems (section 7.3); 2) apply these results to large-scale, fully spiking networks (section 6.5); and 3) integrate these results with a characterization of neural dynamics and representation (section 8.1.3).
Neural dynamics are characterized by considering neural representations as control theoretic state variables. Thus, the dynamics of neurobiological systems can be analyzed using control theory.
Quantitatively, we can write the following general expression for the encoding:
![]()
Here we have introduced the neural dynamics matrix,
A', and input matrix B'. These matrices define the
dynamics of the system, and can be related to the standard dynamics
and input matrices in linear control theory using:
The signal u(t) is the input and x(t)
is the neural population's represented state vector. Note: '*'
indicates convolution.
As noted in section 1.3 (this and all subsequent section references are to the book), we can adapt standard control theory to be useful for modeling neurobiological systems by accounting for intrinsic neuron dynamics. There are a number of features of control theory that make it extremely useful for modeling neurobiological systems. First, the general form of control systems, captured by the state-space equations, can be used to relate to the dynamics of non-biological systems (with which engineers may be more familiar) to the dynamics of neurobiological systems. Second, the engineering community is very familiar with the state-space approach for describing the dynamic properties of physical systems, and thus has many related analytical tools for characterizing such systems. Third, modern control theory can be used to relate the dynamics of external variables, like actual joint angles, to internal variables, like desired joint angles. This demonstrates how one formalism can be used to span internal and external descriptions of behavior.
Adopting this perspective on neural dynamics allows us to develop a characterization of what we call a generic neural subsystem. This multi-level, quantitative characterization of neural systems serves to unify our discussions of neural representation, transformation, and dynamics (section 8.1.3). Given our previous discussion regarding the importance of nonlinear computations, a focus on standard control theory, which deals mainly with linear dynamics, may seem unwarranted. However, contemporary nonlinear control theory, which may prove more valuable in the long run, depends critically on our current understanding of linear systems. Thus, showing how linear control theory relates to neurobiological systems has the effect of showing how nonlinear control theory relates to neurobiological systems as well. In fact, many of the examples we provide are of nonlinear dynamic systems (see sections 6.5 and 8.2).
This is slightly modified from the section of our book (Neural Engineering, MIT Press) that describes each of the three principles of the NEF using equations.
Three principles of neural engineering quantified
In order for the principles of neural engineering to underwrite a theory of neurobiology, they must be quantitatively expressed. As we have shown that each of scalars, vectors, and functions can be treated as vector representation (in the book), we only present these principles as they relate to vectors.
Principle 1
Neural representations are defined by the combination of nonlinear encoding and weighted linear decoding.
Neural encoding is defined by
[inline:newfile10x.png]
Neural decoding is defined by
[inline:newfile11x.png]
where
[inline:newfile12x.png]
In both cases, i indexes neurons in population and n indexes spikes transmitted from one population to another.
Principle 2
Transformations of neural representations are functions of the variable that is represented by the population. Transformations are determined using an alternately weighted linear decoding.
Assuming the encoding in principle 1, we can estimate a function of x(t) as
[inline:newfile13x.png]
where, ai(x(t)) is defined as before. The only difference between this decoding and the representational decoding are the decoders themselves, φ.
Principle 3
Neural dynamics are characterized by considering neural representations as control theoretic state variables. Thus, the dynamics of neurobiological systems can be analyzed using control theory.
Allowing x(t) to be a state variable and u(t) to be the input, we have the following general expression for the encoding:
[inline:newfile14x.png]
To get a better understanding of how these principles can be used together, please refer to the various examples on the website. For several simple applications, see this paper.
A collection of videos for demonstrating aspects of the Neural Engineering Framework
This video was used at our NIPS demo display.
The NEF has been used to construct models of
Much of the rest of this website is devoted to other models that are currently under construction.
General theoretical benefits:
Neural modelling benefits:
Simulation benefits:
Many of these challenges have been partly addressed, but we feel can be more fully dealt with.
Generalization challenges:
Simulation challenges:
Improved biological plausibility
Generalized neural dynamics