Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enhance e-prop plasticity with biologically inspired features #3207

Open
wants to merge 283 commits into
base: master
Choose a base branch
from

Conversation

JesusEV
Copy link
Contributor

@JesusEV JesusEV commented May 15, 2024

This PR extends the previous efforts (PR #2867 "Implement e-prop plasticity") in porting the eligibility propagation (e-prop) plasticity mechanism by Bellec et al. (2020) from TensorFlow to NEST by introducing several novel, bio-inspired enhancements to e-prop.

Changes

  • Renamed Files: Files from PR Implement e-prop plasticity #2867 now include the suffix _bsshslm_2020, aligning with NEST's naming convention that reflects the first letters of the authors' last names and the publication year.
  • New Neuron Models:
    • eprop_iaf
    • eprop_iaf_psc_delta
    • eprop_iaf_adapt
    • eprop_readout
  • New Synapse Model: eprop_synapse
  • New Connection Model: eprop_learning_signal_connection
  • Refactored Node: eprop_archiving_node with added support for new models.
  • New Unit Test: test_eprop_plasticity.py
  • New Example Scripts:
    • eprop_supervised_regression_sine-waves.py
    • eprop_supervised_classification_neuromorphic_mnist.py
    • eprop_supervised_classification_evidence-accumulation.py

A manuscript by Korcsak-Gorzo, Stapmanns, and Espinoza Valverde et al. detailing these enhancements is in preparation.

References

Bellec G, Scherr F, Subramoney F, Hajek E, Salaj D, Legenstein R, Maass W (2020). A solution to the learning dilemma for recurrent networks of spiking neurons. Nature Communications, 11:3625. DOI

Korcsak-Gorzo A, Stapmanns J, Espinoza Valverde JA, Dahmen D, van Albada SJ, Plesser HE, Bolten M, Diesmann M. Event-based implementation of eligibility propagation. (in preparation)

Co-authored-by: Agnes Korcsak-Gorzo 40828647+akorgor@users.noreply.github.com

akorgor and others added 30 commits March 20, 2024 11:15
Co-authored-by: JesusEV <espinozavalverd@uni-wuppertal.de>
Co-authored-by: JesusEV <jesus.espinoza.val@gmail.com>
Co-authored-by: JesusEV <jesus.espinoza.val@gmail.com>
Co-authored-by: JesusEV <jesus.espinoza.val@gmail.com>
Co-authored-by: JesusEV <jesus.espinoza.val@gmail.com>
Co-authored-by: JesusEV <jesus.espinoza.val@gmail.com>
Co-authored-by: JesusEV <jesus.espinoza.val@gmail.com>
Co-authored-by: JesusEV <jesus.espinoza.val@gmail.com>
Co-authored-by: JesusEV <jesus.espinoza.val@gmail.com>
Co-authored-by: JesusEV <jesus.espinoza.val@gmail.com>
…e multiplication

Co-authored-by: JesusEV <jesus.espinoza.val@gmail.com>
Co-authored-by: JesusEV <jesus.espinoza.val@gmail.com>
   * move to eprop_archiving_node
   * introduce more surrogate gradients
   * introduce width scaling factor beta
Co-authored-by: JesusEV <jesus.espinoza.val@gmail.com>
Co-authored-by: Hans Ekkehard Plesser <hans.ekkehard.plesser@nmbu.no>
@JesusEV JesusEV requested a review from heplesser May 15, 2024 12:39
@JesusEV JesusEV added the dependencies Pull requests that update a dependency file label May 15, 2024
@heplesser heplesser added T: Enhancement New functionality, model or documentation S: Normal Handle this with default priority I: User Interface Users may need to change their code due to changes in function calls labels May 16, 2024
@heplesser heplesser added this to In progress in Kernel via automation May 16, 2024
@heplesser heplesser added this to In progress in Documentation via automation May 16, 2024
@jessica-mitchell
Copy link
Contributor

jessica-mitchell commented Jun 4, 2024

@JesusEV Thanks for the updates, I just started to review and I have a question about the model names:
Rather than renaming the files, there seems to be now two versions of models as well as PyNEST examples. Can you remove the ones that should no longer be there?

Here is the list I see (autogenerated list of models):

  • :doc:eprop_archiving_node
  • :doc:eprop_iaf
  • :doc:eprop_iaf_adapt
  • :doc:eprop_iaf_adapt_bsshslm_2020
  • :doc:eprop_iaf_bsshslm_2020
  • :doc:eprop_iaf_psc_delta
  • :doc:eprop_learning_signal_connection
  • :doc:eprop_learning_signal_connection_bsshslm_2020
  • :doc:eprop_readout
  • :doc:eprop_readout_bsshslm_2020
  • :doc:eprop_synapse
  • :doc:eprop_synapse_bsshslm_2020
  • :doc:weight_optimizer

And
eprop_iaf_bsshlsm_2020 and eprop_iaf_psc_delta : they both seem to describe very similar models (current based, delta shaped synapses), at least the basic description is similar. Are they actually technically different? If so, how? Can we change the 'description' so they are more distinct?

@jessica-mitchell
Copy link
Contributor

jessica-mitchell commented Jun 5, 2024

@JesusEV @heplesser @clinssen @akorgor
Follow up from my previous comment, I think I misunderstood when looking at the models and examples for e-prop that there are 2 implementations. I'm leaving my comment above because I think the way this is handled is confusing.

This is what I understand:
There is an implementation of models and examples that are based on the Bellec at al paper and a second one based on Korcsak-Gorzo et al. Is that correct?

The problem I have is that bsshslm_2020 is not very informative to users, so having that in titles to differentiate two very similar models or examples is not helpful. It would be much more useful to have some key word (i.e. neuroscientific) distinction that is stated in the title and short description so it is clear to users which one they want too look at.

I think we can keep the file names as they are as is the convention.

What do you all think?

@clinssen
Copy link
Contributor

clinssen commented Jun 5, 2024

Hi, thanks for the contributions! Would it be possible to run us reviewers through this PR at the next NEST hackathon, June 19-21?

@JesusEV
Copy link
Contributor Author

JesusEV commented Jun 5, 2024

@jessica-mitchell Yes, you're correct—there are two distinct sets of models.

Regarding the naming scheme, we decided on this nomenclature during a previous meeting with all authors involved. However, your concern highlights that it might be confusing. Thanks for bringing this to our attention! This topic should be revisited during the next meeting, scheduled probably for the week of June 19-21.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dependencies Pull requests that update a dependency file I: User Interface Users may need to change their code due to changes in function calls S: Normal Handle this with default priority T: Enhancement New functionality, model or documentation
Projects
Documentation
  
In progress
Kernel
  
In progress
Development

Successfully merging this pull request may close these issues.

None yet

5 participants