Overview

Advances made in research on artificial neural networks (ANNs) have led to many breakthroughs in machine learning and beyond, resulting in the design of powerful models that can categorize and forecast as well as agents that can play games and solve complex problems. Behind these achievements is the backpropagation of errors (or backprop) algorithm. Although elegant and powerful, a major long-standing criticism of backprop has been its biological implausibility. In short, it is not likely that the brain adjusts the synapses that connect the billions of neurons that compose it in the way that backprop would prescribe.

Although ANNs are (loosely) inspired by our current understanding of the human brain, the connections to the actual mechanisms that drive systems of natural neurons are quite loose, at best. Although the question as to how the brain exactly conducts credit assignment – or the process of determining the contribution of each and every neuron to the system’s overall error on some task (the “blame game”) – is still an open one, it would prove invaluable to have a flexible computational and software framework that can facilitate the design and development of brain-inspired neural systems that can also learn complex tasks. These tasks range from generative modeling to interacting and manipulating dynamically-evolving environments. This would benefit researchers in fields including, but not limited to, machine learning, (computational) neuroscience, and cognitive science.

ngc-learn[1], a Python simulation library, aims to fill the above need by concretely instantiating neuronal dynamics and forms of synaptic plasticity in the form of flexibly rearranged components and operations to build arbitrary, modular, and complex biomimetic systems for research in brain-inspired computing and neurocognitive modeling. More importantly, it is designed to facilitate the design, development, and analysis of novel models of neural computation and information processing, neuronal circuitry, biologically-plausible credit assignment, and neuromimetic agents. Specifically, ngc-learn implements a general schema for simulating biomimetic systems characterized by differential equations, including ones based on biophysical spiking neuronal cells.

The overarching goal of ngc-learn is to provide researchers and engineers with:

  • a modular design that allows for the flexible creation, simulation, and analysis of neural systems and circuits under the framework of predictive processing;

  • a powerful, approachable tool, written by and maintained by researchers and experimenters directly studying and working to advance predictive processing and biomimetic systems, meant to lower the barriers to entry to this field of research;

  • a model museum that captures the essence of fundamental and interesting predictive processing and other biomimetic models throughout history, allowing for the study of and experimentation with classical and modern ideas.

The ngc-learn software framework was originally developed in 2019 by the Neural Adaptive Computing (NAC) laboratory in Rochester Institute of Technology meant to serve as an internal tool for predictive coding research (with earlier incarnations in the Scala programming language, dating back to early 2017). It remains actively maintained by and used for predictive processing and biomimetics research in the NAC lab (see ngc-learn’s mention/announcement in this engineering blog post). We warmly welcome community contributions to this project. For details please check out our contributing guidelines.

Citation

Please cite ngc-learn’s source/core paper if you use this framework in your publications:

@article{Ororbia2022,
  author={Ororbia, Alexander and Kifer, Daniel},
  title={The neural coding framework for learning generative models},
  journal={Nature Communications},
  year={2022},
  month={Apr},
  day={19},
  volume={13},
  number={1},
  pages={2064},
  issn={2041-1723},
  doi={10.1038/s41467-022-29632-7},
  url={https://doi.org/10.1038/s41467-022-29632-7}
}