/BiologicallyPlausibleLearningRNN

Code for "Biologically plausible learning in recurrent neural networks", Miconi et al. eLife 2017

Primary LanguagePython

This is the source code for the paper "Biologically plausible learning in recurrent neural networks reproduces neural dynamics observed during cognitive tasks" (T. Miconi, eLife 2017;6:e20899, 2017).

This code implements a simple, biologically plausible plasticity rule for chaotic-regime recurrent neural networks (RNNs), that can learn nontrivial tasks based solely on delayed, sparse rewards.

The source code is in C++ and requires a C++11-compliant compiler. It also requires the Eigen library (version 3), which is very easy to install since it is a source-only library. In addition, Python files are used to generate test data and plot the figures.

The arm-model experiment also requires downloading and compiling the Opensim 3.3 library from source (and its prerequisite, the SimBody library), which is not at all easy to install. Attempt at your own risk.

The dnms directory contains the delayed non-match to sample experiment. In addition to the method described in the preprint, this code also contains an implementation of the node-perturbation method (introduced by Fiete and Seung 2006, and applied to RNNs as described in this previous preprint), which is much faster, but less biologically plausible. See the code for details.

The selectiveint directory contains the selective attention/integration experiment, based on Mante et al. 2013.

The armmodel directory contains the arm control experiment.