nest-simulator icon indicating copy to clipboard operation
nest-simulator copied to clipboard

Enhance e-prop plasticity with biologically inspired features

Open JesusEV opened this issue 1 year ago • 6 comments

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 #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 [email protected]

JesusEV avatar May 15 '24 12:05 JesusEV

@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 avatar Jun 04 '24 10:06 jessica-mitchell

@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?

jessica-mitchell avatar Jun 05 '24 07:06 jessica-mitchell

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

clinssen avatar Jun 05 '24 08:06 clinssen

@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.

JesusEV avatar Jun 05 '24 09:06 JesusEV

@JesusEV @akorgor We noticed that the examples contain a line that specifies a font "font.sans-serif": "Arial"- when trying these examples out on EBRAINS, it complains with a ton of warnings because the font is not available. Can you please remove the line altogether for each example- we should not be specifying font types, especially proprietary ones because not all systems support all fonts. Thanks!

jessica-mitchell avatar Sep 18 '24 07:09 jessica-mitchell

@JesusEV @akorgor We noticed that the examples contain a line that specifies a font "font.sans-serif": "Arial"- when trying these examples out on EBRAINS, it complains with a ton of warnings because the font is not available. Can you please remove the line altogether for each example- we should not be specifying font types, especially proprietary ones because not all systems support all fonts. Thanks!

Fixed in https://github.com/nest/nest-simulator/pull/3207/commits/2cc0d2eecd19674301c0bd34706d806921ac97f4

akorgor avatar Sep 18 '24 14:09 akorgor

@akorgor @JesusEV Could you merge the newest master? That should solve the Pylint errors about "too many positional arguments".

heplesser avatar Oct 27 '24 21:10 heplesser

@heplesser, I just had a look at what is missing but cannot find the change that github says you requested. Everything seems to be resolved from what I see. Please take another look. For the size and depth of this PR I would not go without all three thumbs up.

terhorstd avatar Feb 26 '25 11:02 terhorstd

@terhorstd I have this one high on my agenda.

heplesser avatar Feb 27 '25 08:02 heplesser