Enhance e-prop plasticity with biologically inspired features
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_nodewith 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 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?
@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?
Hi, thanks for the contributions! Would it be possible to run us reviewers through this PR at the next NEST hackathon, June 19-21?
@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 @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!
@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 @JesusEV Could you merge the newest master? That should solve the Pylint errors about "too many positional arguments".
@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 I have this one high on my agenda.