This repository aims to teach and make the neuromorphic paradigm more accessible through practical examples and clear explanations, using NEST as the central tool. Through a series of Python notebooks, we document a personal journey in using this paradigm, which simulates neuronal behavior and is designed to tackle complex problems in a highly parallelized manner.
NEST is a simulation tool that allows you to model large and complex neural networks, particularly useful for computational neuroscience research. This software provides a flexible and efficient environment for studying the dynamics of biological and artificial neural networks. Through NEST, it is possible to perform simulations that mimic the behavior of neurons in the brain, using models that replicate the functioning of biological neural networks.
NEST operates on an event-based approach, where interactions between neurons are modeled through spikes, rather than using fixed time steps or sequences. This enables a high level of parallelism in the simulations, as neurons are activated independently and asynchronously. The results are processed based on the spikes generated by each neuron in response to stimuli, simulating the actual behavior of neural systems.
The use of event-based neural networks offers significant advantages over traditional programming paradigms. The ability to process multiple events simultaneously results in massive parallelism, which translates to greater efficiency and the ability to model systems of much higher complexity than in sequential approaches.
This paradigm is still in its early stages of development, meaning its level of abstraction is quite low. Currently, users must interact with neurons and connections at a very detailed level, which can be challenging. However, this approach presents a great opportunity for future innovation, as researchers work towards formulating more developed languages or libraries that facilitate programming within this paradigm, without needing to deal with neurons at such a low level.
As the field of neuromorphic computing evolves, the applications of NEST and similar systems will continue to grow in importance, not only in scientific research but also in innovative technological solutions.
This repository is divided into several sections and notebooks, each designed to progressively build an understanding of the neuromorphic paradigm:
- Definition and explanation of what NEST is.
- How event-based simulations work.
- Comparison with traditional programming paradigms and their parallelism capabilities.
- Creating simple neural networks.
- Introduction to NEST’s basic structure.
- Neural interactions and how they are modeled in NEST.
- Sudoku Solver using the official NEST code.
- Solutions to graph problems such as the Traveling Salesman Problem and others, applying the same event-based approach.
- Coding arithmetic and logical operations within this paradigm.
- Explanation of how this paradigm resembles constraint programming.
- Practical examples of solving complex problems through neural constraints.
- Analysis of how the inherent parallelism of spike-based systems surpasses the complexity of sequential paradigms.
- Practical cases demonstrating NEST's superiority over other methodologies.
To run the examples in this repository, you will need to have the following packages installed:
- Python 3.6+
- NEST Simulator
- Jupyter Notebook or JupyterLab
- Additional dependencies (specified in the
requirements.txtfile):
pip install -r requirements.txt