This repository accompanies our submission to Cosyne 2018 and demonstrates synaptic computation in the NEF by exploiting nonlinear interactions of conductance-based synapses.
Nonlinear interaction in the dendritic tree is known to be an important computational resource in biological neurons. Yet, high-level neural compilers ‒ such as the Neural Engineering Framework (NEF), or the predictive coding method published by Denève et al. in 2013 ‒ tend not to include conductance-based nonlinear synaptic interactions in their models, and so do not exploit these interactions systematically. In this study, we extend the NEF to include synaptic computation of nonlinear multivariate functions, such as controlled shunting, multiplication, and the Euclidean norm. We present a theoretical framework that provides sufficient conditions under which nonlinear synaptic interaction yields a similar precision compared to traditional NEF methods, while reducing the number of layers, neurons, and latency in the network. The proposed method lends itself to increasing the computational power of neuromorphic hardware systems and improves the NEF's biological plausibility by mitigating one of its long-standing limitations, namely its reliance on linear, current-based synapses. We perform a series of numerical experiments with a conductance-based two-compartment LIF neuron model. Preliminary results show that nonlinear interactions in conductance-based synapses are sufficient to compute a wide variety of nonlinear functions with performance competitive to using an additional layer of neurons as a nonlinearity.
- Full Abstract A PDF containing the full abstract submitted to Cosyne can be found here. Note: the preliminary results shown in the abstract are obsolete since we've switched to a QP solver instead of using gradient descent. The poster contains the most recent values for spiking simulations.
- Poster A low resolution PDF copy of the poster presented at Cosyne 2018 can be found in the
doc
subdirectory.
Code is located in the Python 3 Jupyter notebook synaptic_computation.ipynb
, as well as the nef_synaptic_computation
package. A bare-bones version of the nef_synaptic_computation
package is included with this repository. You can install it by running
pip3 install --user -e .
from the root directory of this repository (depending on your Python 3 distribution you may have to replace pip3
with pip
). In addition to Python 3.6 and a recent version of Jupyter you'll need to install recent versions of the following pip
packages:
- numpy
- matplotlib
- nengo
- scipy
- cvxpy
- pandas
Note that spiking simulations will run significantly faster (about 100 times) on Linux machines if you have a recent version of the GNU C++ compiler installed.