dancasmor / An-aproach-to-a-spike-based-Content-Addressable-Memory-bio-inspired-in-the-Hippocampus

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Bio-inspired computational memory model of the Hippocampus: an aproach to a spike-based Content-Addressable Memory

Description

Code on which the paper entitled "Bio-inspired computational memory model of the Hippocampus: an aproach to a spike-based Content-Addressable Memory" is based, sent to a journal and awaiting review.

A fully functional spike-based Content-Addressable Memory model bio-inspired in the CA3 region of the hippocampus implemented on the SpiNNaker hardware platform using the technology of the Spiking Neuronal Network (SNN) is presented. The code is written in Python and makes use of the PyNN library and their adaptation for SpiNNaker called sPyNNaker. In addition, the necessary scripts to replicate the tests and plots carried out in the paper are included, together with data and plots of the tests.

Please go to section cite this work to learn how to properly reference the works cited here.

Table of contents

Article

Title: Bio-inspired computational memory model of the Hippocampus: an aproach to a spike-based Content-Addressable Memory

Abstract: The brain has computational capabilities that surpass those of modern systems, being able to solve complex problems efficiently in a simple way. Neuromorphic engineering tries to mimic biology in order to develop new systems capable of incorporating such capabilities. Bio-inspired learning systems still remain as a challenge to be solved and with much work yet to be done. Among all brain regions, the hippocampus stands out as an autoassociative short-term memory with the capacity to learn and recall memories from any fragment of them. These characteristics make the hippocampus an ideal candidate as a material for developing bio-inspired learning systems that, in addition, resemble content-addressable memories. Therefore, in this work we propose a bio-inspired spiking content-addressable memory model based in the CA3 region of the hippocampus with the ability to learn, forget and recall memories, both orthogonal and non-orthogonal, from any fragment of them. The model was implemented on the SpiNNaker hardware platform using Spiking Neural Networks. A set of experiments based on functional, stress and applicability tests were performed to demonstrate its correct functioning. This work presents the first hardware implementation of a fully-functional bio-inspired spiking hippocampal content-addressable memory model, paving the way for the development of future more complex neuromorphic systems.

Keywords: Hippocampus model, Content-Addressable memory, Spiking Neural Networks, Neuromorphic engineering, CA3, SpiNNaker

Author: Daniel Casanueva-Morato

Contact: dcasanueva@us.es

Instalation

  1. Have or have access to the SpiNNaker hardware platform. In case of local use, follow the installation instructions available on the official website
  2. Python version 3.8.10
  3. Python libraries:
    • sPyNNaker
    • numpy 1.21.4
    • matplotlib 3.5.0
    • xlsxWriter 3.0.2

To run any script, follow the python nomenclature: python script.py

Repository content

  • CA3_content_addressable.py: class that is responsible for the construction of the content-addressable memory module.

  • test_CA3_content_addressable.py: script in charge of carrying out the simulation of the memory model and the plotting of the necessary graphics of the simulation. The configuration of the model can be found on network_config.json and the visual representation of the test can be found on result folder.

  • generate_testbench.py: script in charge of generating the file with the input spikes of the memory model (in tb folder) needed to perform the testbench.

  • plot.py: functions needed to generate the plots used to understand the correct functioning of the memory model and in the article. For each experiment, the configuration of the spikes_plot function has to be change. The functions with the custom parameters for each experiment can be found on the spikes_plot file.

  • excel_controller.py: set of functions used as a tool for the generation of excel files summarising the result of the experimentation.

Usage

To perform memory tests, run test_CA3_content_addressable.py. This script is in charge of building the memory model, i.e. calling CA3_content_addressable.py, run the simulation and create the necessary visual resources on the simulation result.

The experiment parameter indicates the experiment to be simulated, change this parameter to switch from one to the other. The available experiments are commented inside the script. The recordWeight parameter for each experiment indicate if record the weight of the STDP synapses in order to get the evolution of that synapses along the experiment in a plot.

Finally, in order to be able to use the memory model as a module within a larger SNN network, we have developed a python package that includes this memory model (among others): sPyMem. You can install sPyMem via pip thanks to its PyPi distribution: pip install sPyMem or download it from source on their github repository. In this package, the memory model presented in this paper would be called CA3_content_addressable.

Cite this work

Work in progress...

Credits

The author of the original idea is Daniel Casanueva-Morato while working on a research project of the RTC Group.

This research was partially supported by the Spanish grant MINDROB (PID2019-105556GB-C33/AEI/10.13039/501100011033).

D. C.-M. was supported by a "Formación de Profesor Universitario" Scholarship from the Spanish Ministry of Education, Culture and Sport.

License

This project is licensed under the GPL License - see the LICENSE.md file for details.

Copyright © 2023 Daniel Casanueva-Morato
dcasanueva@us.es

License: GPL v3

About

License:GNU General Public License v3.0


Languages

Language:Python 100.0%