Neural model specifications
This page gives the mathematical specification of the neuron, and learning-rule
models BindsNET implements: the difference equations actually solved each timestep and
the default parameters with units. Equations and defaults below were transcribed from
the source (bindsnet/network/nodes.py and bindsnet/learning/learning.py); when
in doubt, the source is authoritative. Parameter defaults are stated as of package
version 0.3.4.
Discretization
BindsNET does not integrate ODEs symbolically. Continuous-time dynamics are converted to
difference equations and advanced at a fixed timestep \(dt\) (milliseconds; the
examples use \(dt = 1.0\)). A network-wide \(dt\) is set on the
Network object. Exponential leak terms are precomputed once per \(dt\) as a
decay factor
so a leaky variable \(y\) relaxing toward a baseline \(y_0\) updates as \(y \leftarrow \text{decay}\,(y - y_0) + y_0\).
Notation: \(v\) membrane voltage, \(v_\text{rest}\) rest, \(v_\text{reset}\) post-spike reset, \(v_\text{thr}\) threshold, \(s\) spike (boolean), \(x\) spike trace, \(\tau\) a time constant. All voltages are in millivolts and follow the biological convention used in the code (e.g. rest \(-65\)mV).
Neuron models
All neuron layers live in bindsnet.network.nodes. Spikes are emitted when the
(possibly adapted) threshold is crossed; most models then apply a reset and a refractory
period refrac during which inputs are ignored. Optional spike traces decay with
time constant tc_trace (default 20 ms) and are used by the trace-based learning
rules.
McCulloch–Pitts (McCullochPitts)
Stateless threshold unit; the voltage equals the input and a spike is emitted when it reaches threshold.
Defaults: thresh \(= 1.0\).
Integrate-and-fire (IFNodes)
Non-leaky accumulator with reset and refractory period.
Defaults: thresh \(=-52\), reset \(=-65\), refrac \(=5\).
Leaky integrate-and-fire (LIFNodes)
Leak toward rest, integrate input, threshold-reset-refractory.
Defaults: thresh \(=-52\), rest \(=-65\), reset \(=-65\),
refrac \(=5\), tc_decay \(=100\)ms. Inputs are masked to zero while a
neuron is refractory.
BoostedLIFNodes is a performance-oriented LIF variant (per source: no separate
rest/reset/lower-bound handling); use it when those features are not needed.
Current-based LIF (CurrentLIFNodes)
Adds a decaying synaptic current \(i\) between input and membrane:
with \(i_\text{decay} = \exp(-dt/\tau_{i})\). See source for the tc_i_decay
default and the remaining (LIF-shared) parameters.
Adaptive-threshold LIF (AdaptiveLIFNodes)
LIF with a threshold adaptation variable \(\theta\) that increases on each spike and decays otherwise:
Defaults add theta_plus \(=0.05\), tc_theta_decay \(=10^{7}\)ms (on top
of the LIF defaults). Adaptation is applied while learning is enabled.
Diehl & Cook 2015 (DiehlAndCookNodes)
Adaptive-threshold LIF tuned for the Diehl & Cook (2015) MNIST replication, with the
additional one_spike option (default True) that permits at most one spike per
layer per timestep. Same parameter defaults as AdaptiveLIFNodes. Used by the
DiehlAndCook2015 model and examples/mnist/eth_mnist.py.
Izhikevich (IzhikevichNodes)
Two-variable model (membrane \(v\), recovery \(u\)) integrated with two half Euler steps per timestep:
On spike (\(v \ge v_\text{thr}\)): \(v \leftarrow c\), \(u \leftarrow u + d\). Excitatory/inhibitory populations are parameterized as in Izhikevich (2003): excitatory \(a=0.02,\,b=0.2,\,c=-65+15r^2,\,d=8-6r^2\); inhibitory \(a=0.02+0.08r,\,b=0.25-0.05r,\,c=-65,\,d=2\), with \(r\sim U(0,1)\).
SRM0 (SRM0Nodes)
Simplified Spike Response Model with stochastic (“escape noise”) firing:
Cumulative SRM (CSRMNodes)
Cumulative Spike Response Model (Gerstner & van Hemmen 1992; Gerstner et al. 1996): refractoriness and adaptation arise from the summed after-potentials of several previous spikes rather than only the most recent one. See the source for the response-kernel implementation.
Input (Input)
Passes externally provided spike tensors (e.g. from bindsnet.encoding) into the
network; it has no internal membrane dynamics.
Learning rules
Learning rules live in bindsnet.learning. They modify connection weights w from
pre-synaptic spikes/traces (source) and post-synaptic spikes/traces (target).
nu is the (pre, post) learning-rate pair; reduction aggregates over the batch;
weight_decay optionally decays weights each step.
Post-pre STDP (PostPre)
Trace-based spike-timing-dependent plasticity (requires traces on both layers). For a
dense Connection the per-step update is
i.e. a pre-synaptic spike depresses the synapse in proportion to the post-synaptic trace, and a post-synaptic spike potentiates it in proportion to the pre-synaptic trace. Convolutional and locally-connected variants apply the same rule patch-wise.
Hebbian (Hebbian)
Both pre- and post-synaptic events increase the weight (no depression term), proportional to the opposite layer’s trace.
Weight-dependent post-pre (WeightDependentPostPre)
PostPre whose potentiation/depression magnitudes are scaled by the distance of the
weight from its bounds (wmin/wmax), yielding soft saturation at the limits.
Reward-modulated STDP (MSTDP, MSTDPET)
Three-factor rules: a STDP-like eligibility signal is gated by a scalar reward.
MSTDP modulates the immediate pre/post correlation by reward; MSTDPET adds an
eligibility trace that accumulates the correlation over time (time constant
tc_e_trace) before reward gating. Reward is supplied via the pipeline / an
AbstractReward (e.g. MovingAvgRPE). See source for the exact eligibility update.
Rmax (Rmax)
Reward-maximizing rule intended for stochastic (SRM0) neurons; see source for its formulation.
Note
Where this page summarizes a rule “see source”, the equations were not reproduced here
to avoid mis-stating constants; consult bindsnet/learning/learning.py for the
authoritative form. If an implementation deviates from a textbook model, the code is
the specification.