Matlab scripts to demonstrate learning spatial and temporal signals in spiking networks. To better implement a synapse redistribution rule the code was restructured into synRedistNet.m which is now the main network file to run. Initial code was based around volumeNetwork which can run when invoked with a matlab interpreter.
More specificallly this is a two layer network of LIF neurons with gaussian current based, time delayed synapses which redistribute. Ideas and inspiration are taken from [1, 2]. The significance of this particular work (like [1, 2]) is that temporal information is represented explicitly (through connection delays). This means the network is actually learning to represent (and predict) spatial (which neurons fire) and temporal (when they fire) information. In contrast models without delays focus on spatial information (which neurons fire roughly together) but focus less on the precise order. General information about quirks and issues during development can be found in this google doc. The synapse redistribution is loosely based around synaptogensis, if a connection is useless it should break and possibly reform somewhere else.
- Demo of Multiple gaussian output synapses working
- STDP and Synaptic scaling working demo (cherry picked parameters)
- SDVL [1] working (STDP off)
- Event-based data implemented
- Lateral inhibition demo
- Synaptic redistribution network example
- Autoencoder now (functional) for DVS sized data (no plasticity in axons)
- Full dendrite and axon plasticity implemented
- Gaussian synapses [1]
- Multiple outputs
- STDP (all-to-all)
- Delay Learning [1]
- Event-based data
- Synaptic redistribution rule
- convert to auto-encoder setup
- Parameter sweep scripts
- Party ... wait no, publish
Additionally I'd like to acknowledge other bits of code that inspired/influenced this implementation as there is a need for more accessible resources around spiking networks (especially those with delays). In particular the Neural Data Modeling Group's tutorial and Izhikevich's Polychronous code. [3]
- Unlike [1] and more like [2] the integrals of gaussian synapses are controlled by the weight of the synapse.
- There are quirks to the STDP because of time difference between when a neuron fires and when the spike arrives. Default is spike arrival (at post-synaptic neuron) time rather then pre-synaptic spike time, you may want to alter this.
- Assumes you have the code from inilabs to load event-based data (if using event based data demo).
- The switch to synRedistNet.m saw a significant change in network architecture. Connections are now viewed as pre-synaptic to a neuron not post-synaptic. See this google doc for more precise details.
- Initial commits around the autoencoder do not have any plasticity in the second layer.
[1] P. W. Wright and J. Wiles, “Learning transmission delays in spiking neural networks: A novel approach to sequence learning based on spike delay variance” in The 2012 International Joint Conference on Neural Networks (IJCNN), 2012, pp. 1–8.
[2] T. Matsubara, “Conduction Delay Learning Model for Unsupervised and Supervised Classification of Spatio-Temporal Spike Patterns” Front. Comput. Neurosci., vol. 11, 2017.
[3] E. M. Izhikevich, “Polychronization: Computation with Spikes” Neural Computation, vol. 18, no. 2, pp. 245–282, Feb. 2006.