<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Neurosci.</journal-id>
<journal-title>Frontiers in Neuroscience</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Neurosci.</abbrev-journal-title>
<issn pub-type="epub">1662-453X</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3389/fnins.2023.1107089</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Neuroscience</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>Presynaptic spike-driven plasticity based on eligibility trace for on-chip learning system</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name><surname>Gao</surname> <given-names>Tian</given-names></name>
<uri xlink:href="http://loop.frontiersin.org/people/1786475/overview"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Deng</surname> <given-names>Bin</given-names></name>
<uri xlink:href="http://loop.frontiersin.org/people/238257/overview"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Wang</surname> <given-names>Jiang</given-names></name>
<uri xlink:href="http://loop.frontiersin.org/people/169063/overview"/>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name><surname>Yi</surname> <given-names>Guosheng</given-names></name>
<xref ref-type="corresp" rid="c001"><sup>&#x002A;</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/103226/overview"/>
</contrib>
</contrib-group>
<aff><institution>School of Electrical and Information Engineering, Tianjin University</institution>, <addr-line>Tianjin</addr-line>, <country>China</country></aff>
<author-notes>
<fn fn-type="edited-by"><p>Edited by: Teresa Serrano-Gotarredona, Spanish National Research Council (CSIC), Spain</p></fn>
<fn fn-type="edited-by"><p>Reviewed by: Liang-Jian Deng, University of Electronic Science and Technology of China, China; Hongwei Mo, Harbin Engineering University, China</p></fn>
<corresp id="c001">&#x002A;Correspondence: Guosheng Yi, <email>guoshengyi@tju.edu.cn</email></corresp>
<fn fn-type="other" id="fn004"><p>This article was submitted to Neuromorphic Engineering, a section of the journal Frontiers in Neuroscience</p></fn>
</author-notes>
<pub-date pub-type="epub">
<day>23</day>
<month>02</month>
<year>2023</year>
</pub-date>
<pub-date pub-type="collection">
<year>2023</year>
</pub-date>
<volume>17</volume>
<elocation-id>1107089</elocation-id>
<history>
<date date-type="received">
<day>24</day>
<month>11</month>
<year>2022</year>
</date>
<date date-type="accepted">
<day>08</day>
<month>02</month>
<year>2023</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#x00A9; 2023 Gao, Deng, Wang and Yi.</copyright-statement>
<copyright-year>2023</copyright-year>
<copyright-holder>Gao, Deng, Wang and Yi</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/"><p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p></license>
</permissions>
<abstract>
<sec>
<title>Introduction</title>
<p>Recurrent spiking neural network (RSNN) performs excellently in spatio-temporal learning with backpropagation through time (BPTT) algorithm. But the requirement of computation and memory in BPTT makes it hard to realize an on-chip learning system based on RSNN. In this paper, we aim to realize a high-efficient RSNN learning system on field programmable gate array (FPGA).</p>
</sec>
<sec>
<title>Methods</title>
<p>A presynaptic spike-driven plasticity architecture based on eligibility trace is implemented to reduce the resource consumption. The RSNN with leaky integrate-and-fire (LIF) and adaptive LIF (ALIF) models is implemented on FPGA based on presynaptic spike-driven architecture. In this architecture, the eligibility trace gated by a learning signal is used to optimize synaptic weights without unfolding the network through time. When a presynaptic spike occurs, the eligibility trace is calculated based on its latest timestamp and drives synapses to update their weights. Only the latest timestamps of presynaptic spikes are required to be stored in buffers to calculate eligibility traces.</p>
</sec>
<sec>
<title>Results</title>
<p>We show the implementation of this architecture on FPGA and test it with two experiments. With the presynaptic spike-driven architecture, the resource consumptions, including look-up tables (LUTs) and registers, and dynamic power consumption of synaptic modules in the on-chip learning system are greatly reduced. The experiment results and compilation results show that the buffer size of the on-chip learning system is reduced and the RSNNs implemented on FPGA exhibit high efficiency in resources and energy while accurately solving tasks.</p>
</sec>
<sec>
<title>Discussion</title>
<p>This study provides a solution to the problem of data congestion in the buffer of large-scale learning systems.</p>
</sec>
</abstract>
<kwd-group>
<kwd>spiking neural network</kwd>
<kwd>adaptive LIF model</kwd>
<kwd>eligibility trace</kwd>
<kwd>presynaptic spike-driven</kwd>
<kwd>on-chip learning system</kwd>
</kwd-group>
<contract-num rid="cn001">62071324</contract-num>
<contract-num rid="cn001">62006170</contract-num>
<contract-sponsor id="cn001">National Natural Science Foundation of China<named-content content-type="fundref-id">10.13039/501100001809</named-content></contract-sponsor>
<counts>
<fig-count count="10"/>
<table-count count="6"/>
<equation-count count="33"/>
<ref-count count="42"/>
<page-count count="12"/>
<word-count count="9150"/>
</counts>
</article-meta>
</front>
<body>
<sec id="S1" sec-type="intro">
<title>Introduction</title>
<p>Supervised learning is a training method for neural networks widely used in the fields of pattern recognition (<xref ref-type="bibr" rid="B33">Schwenker and Trentin, 2014</xref>), image processing (<xref ref-type="bibr" rid="B2">Aljuaid and Anwar, 2022</xref>), and semantic segmentation (<xref ref-type="bibr" rid="B42">Zhou et al., 2022</xref>), which is generally realized on the graphics processing unit (GPU) and the central processing unit (CPU). Due to the frequent data transmission between memories and process units, the GPU and the CPU are difficult to solve problems, such as high energy consumption and high demand for hardware specifications. A series of hardware systems have been proposed to train neural networks more efficiently, which presents as low-power dissipation and less hardware resource utilization (<xref ref-type="bibr" rid="B10">Dundar et al., 2017</xref>; <xref ref-type="bibr" rid="B17">Kriegeskorte and Mok, 2017</xref>; <xref ref-type="bibr" rid="B9">Davies et al., 2018</xref>). In these neuromorphic systems, spiking neural networks (SNNs) are considered to be more suitable for digital circuits (<xref ref-type="bibr" rid="B27">Painkras et al., 2013</xref>; <xref ref-type="bibr" rid="B23">Merolla et al., 2014</xref>; <xref ref-type="bibr" rid="B19">Lechner et al., 2020</xref>). It is necessary to train the neural networks on neuromorphic hardware systems in a quick and energy-saving way for the applications in the terminal or edge equipment (<xref ref-type="bibr" rid="B8">Chu et al., 2015</xref>; <xref ref-type="bibr" rid="B16">Kornijcuk and Jeong, 2019</xref>; <xref ref-type="bibr" rid="B34">Shama et al., 2020</xref>). As an important type of SNNs, recurrent spiking neural networks (RSNNs) are considered difficult to be trained on chips because of the large number of parameters and complex dynamics. While training the RSNN, the network is usually unfolded through time, which makes a challenge for digital circuits. A typical example is the backpropagation through time (BPTT) algorithm, which is thought as a common learning algorithm used to train RSNNs (<xref ref-type="bibr" rid="B40">Werbos, 1990</xref>; <xref ref-type="bibr" rid="B22">Manneschi and Vasilaki, 2020</xref>). Although it has been proved to perform excellently in the fields including speech recognition (<xref ref-type="bibr" rid="B1">Ahmad et al., 2004</xref>; <xref ref-type="bibr" rid="B37">Tang and Glass, 2018</xref>) and phoneme recognition (<xref ref-type="bibr" rid="B12">Hermans et al., 2015</xref>), the full-time storage for variables and backpropagation through a long period of time are so luxury for on-chip memories. The complex gradients of RSNNs and the huge requirement for memories make it difficult to realize a learning system for RSNNs.</p>
<p>To solve this problem, a series of algorithms and architectures based on surrogate-gradients are proposed to train RSNNs on circuits in a hardware-friendly way. <xref ref-type="bibr" rid="B41">Zhang and Li (2019)</xref> optimize the computation of gradients without unfolding the network through time and performing backpropagation time point by time point, which relies on the architecture driven by time. Compared with the backpropagation on spike-train level, the local synaptic plasticity is expected to apply on RSNNs, which consumes fewer computations and memories (<xref ref-type="bibr" rid="B18">Larsen and Sj&#x00F6;str&#x00F6;m, 2015</xref>; <xref ref-type="bibr" rid="B14">Kaiser et al., 2020</xref>). <xref ref-type="bibr" rid="B4">Bellec et al. (2019</xref>, <xref ref-type="bibr" rid="B5">2020)</xref> propose the eligibility backpropagation (e-prop) algorithm to replace unfolding the RSNN through time by the surrogate-gradient based on eligibility traces, which is known as the fading memory of events (<xref ref-type="bibr" rid="B21">Liu et al., 2020</xref>; <xref ref-type="bibr" rid="B15">Kalhor et al., 2021</xref>). Benefit from the local learning in synapses, the e-prop algorithm is considered suitable for mapping to the circuits like field programmable gate array (FPGA). However, the buffer size is related to the length of trace, which is used to cache the fading memory of events in the time window (<xref ref-type="bibr" rid="B11">Fieres et al., 2008</xref>; <xref ref-type="bibr" rid="B24">Millner et al., 2010</xref>; <xref ref-type="bibr" rid="B7">Benjamin et al., 2014</xref>). It results in that the requirement of buffer size is not only linearly related to the size of neuron array, but also exponentially related to dynamic network activity. This problem is widespread in time-driven architectures (<xref ref-type="bibr" rid="B26">Moore et al., 2012</xref>; <xref ref-type="bibr" rid="B28">Pani et al., 2017</xref>). <xref ref-type="bibr" rid="B29">Park and Jung (2020)</xref> propose a presynaptic spike-driven spike timing-dependent plasticity (STDP) learning rule in the address domain. This method provides a way to trace spike trains based on timestamps and synaptic update rates in a STDP time window, instead of storing the complex relationship between presynaptic and postsynaptic spikes. Inspired by this, the presynaptic spike is possible used to trigger calculations of eligibility traces based on timestamps. In this way, the buffer size can be reduced and the learning system works with less on-chip memory consumption.</p>
<p>In this study, we aim to realize a high-efficient RSNN learning system on FPGA. We implement the RSNN based on the presynaptic spike-driven architecture to optimize synaptic modules. When a presynaptic spike occurs, it activates the synaptic module to search the eligibility trace value based on the latest timestamp. Based on this architecture, the buffer size of the on-chip learning system is reduced. We show this high-efficient implementation and test it on two experiments. The classification and synthesis results confirm that the RSNN reaches a satisfactory accuracy and efficiency in resources and energy consumption. This architecture provides a solution for the large amounts of data transferred and stored in the buffers of large-scale neuromorphic systems.</p>
</sec>
<sec id="S2" sec-type="materials|methods">
<title>Materials and methods</title>
<p>The RSNNs tend to have inferior short-term memory capabilities, which leads to weaker learning abilities in sequential tasks. <xref ref-type="bibr" rid="B3">Bellec et al. (2018)</xref> use the RSNN with the leaky integrate-and-fire (LIF) and adaptive leaky integrate-and-fire (ALIF) models to enhance the short-term memory, which improves the performance of RSNNs in sequential tests. In this study, we implement the RSNN proposed by <xref ref-type="bibr" rid="B3">Bellec et al. (2018)</xref> on FPGA as an on-chip learning system. Considering that the synaptic modules of the ALIF models implemented on FPGA require more logic elements than LIF models, we find a balance between the accuracy and resource consumptions by changing the ratio of the numbers of two models. Further, the RSNN includes the inhibitory and excitatory neurons, which limits the synaptic weights to (&#x2212;1, 0] and [0, 1) to match the input range of the multipliers in synaptic modules. In the implementation of the RSNNs on FPGA, the presynaptic spike-driven architecture is applied to the synaptic modules, which contributes to the reduction of buffer size. With this architecture, a high-efficient on-chip learning system based on the RSNN is realized on FPGA.</p>
<sec id="S2.SS1">
<title>ALIF model with SFA mechanism</title>
<p>In the ALIF model, spike-frequency adaptation (SFA) based on the dynamic threshold is applied to the LIF model (<xref ref-type="bibr" rid="B6">Benda and Herz, 2003</xref>; <xref ref-type="bibr" rid="B39">Wang et al., 2003</xref>; <xref ref-type="bibr" rid="B3">Bellec et al., 2018</xref>, <xref ref-type="bibr" rid="B5">2020</xref>; <xref ref-type="bibr" rid="B31">Salaj et al., 2021</xref>). The membrane potential of LIF models is calculated as:</p>
<disp-formula id="S2.E1">
<label>(1)</label>
<mml:math id="M1">
<mml:mrow>
<mml:msubsup>
<mml:mi>v</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">&#x03B1;</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mi>v</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:mrow>
<mml:mi mathvariant="normal">&#x0394;</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo>+</mml:mo>
<mml:mrow>
<mml:munder>
<mml:mo largeop="true" movablelimits="false" symmetric="true">&#x2211;</mml:mo>
<mml:mi>i</mml:mi>
</mml:munder>
<mml:mrow>
<mml:msubsup>
<mml:mi>W</mml:mi>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>I</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mrow>
<mml:mo>+</mml:mo>
<mml:mrow>
<mml:munder>
<mml:mo largeop="true" movablelimits="false" symmetric="true">&#x2211;</mml:mo>
<mml:mi>i</mml:mi>
</mml:munder>
<mml:mrow>
<mml:msubsup>
<mml:mi>W</mml:mi>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>R</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>e</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mi>z</mml:mi>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mrow>
</mml:mrow>
<mml:mo>-</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi>z</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:mrow>
<mml:mi mathvariant="normal">&#x0394;</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2062;</mml:mo>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>h</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="S2.E2">
<label>(2)</label>
<mml:math id="M2">
<mml:mrow>
<mml:mi mathvariant="normal">&#x03B1;</mml:mi>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mo>-</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">&#x0394;</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>/</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">&#x03C4;</mml:mi>
<mml:mi>v</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</disp-formula>
<p>where <italic>v<sub>j</sub><sup>t</sup></italic> is membrane potential of the <italic>j</italic>th neuron in hidden layer at time <italic>t</italic>, &#x03B1; is the attenuation constant of membrane potential, <italic>W<sub>ji</sub><sup>In</sup></italic> is input synaptic weight from the <italic>i</italic>th neuron in input layer to the <italic>j</italic>th neuron in hidden layer, <italic>x<sub>i</sub><sup>t&#x2013;d</sup></italic> is input spike from the <italic>i</italic>th neuron in input layer at time <italic>t</italic>&#x2013;<italic>d</italic>, <italic>W<sub>ji</sub><sup>Rec</sup></italic> is recurrent synaptic weight from the <italic>i</italic>th neuron in hidden layer to the <italic>j</italic>th neuron in hidden layer, <italic>z<sub>i</sub><sup>t&#x2013;d</sup></italic> is the spike output by the <italic>i</italic>th neuron in hidden layer at time <italic>t</italic>&#x2013;<italic>d</italic>, <italic>z<sub>j</sub><sup>t&#x2013;&#x0394;t</sup></italic> is the spike output by the <italic>j</italic>th neuron in hidden layer at time <italic>t</italic>&#x2013;&#x0394;<italic>t</italic>, <italic>d</italic> is the transmission delay, <italic>v<sub>thr</sub></italic> is the threshold voltage, &#x0394;<italic>t</italic> is the timestep, and <italic>&#x03C4;<sub>v</sub></italic> is the time constant of membrane potential. If the membrane potential reaches the threshold, the LIF model generates a spike and then enters a refractory period.</p>
<p>The dynamics of membrane potential in ALIF models are similar to LIF models. The ALIF model has another state variable besides the membrane potential. The basic threshold voltage of ALIF models is equal to the threshold voltage of LIF models. With continuous activated by input currents, the threshold voltage of ALIF models increases rapidly. If the membrane potential of ALIF model is below the threshold for a long time, the threshold voltage gradually decreases to the basic value. The dynamic threshold voltage is described as:</p>
<disp-formula id="S2.E3">
<label>(3)</label>
<mml:math id="M3">
<mml:mrow>
<mml:msubsup>
<mml:mi>B</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:msup>
<mml:mi>b</mml:mi>
<mml:mrow>
<mml:mi>b</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>a</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>s</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>+</mml:mo>
<mml:mrow>
<mml:mi mathvariant="normal">&#x03B2;</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mi>b</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="S2.E4">
<label>(4)</label>
<mml:math id="M4">
<mml:mrow>
<mml:msubsup>
<mml:mi>b</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">&#x03C1;</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mi>b</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:mrow>
<mml:mi mathvariant="normal">&#x0394;</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo>+</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>-</mml:mo>
<mml:mi mathvariant="normal">&#x03C1;</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mi>z</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:mrow>
<mml:mi mathvariant="normal">&#x0394;</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="S2.E5">
<label>(5)</label>
<mml:math id="M5">
<mml:mrow>
<mml:mi mathvariant="normal">&#x03C1;</mml:mi>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mo>-</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">&#x0394;</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>/</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">&#x03C4;</mml:mi>
<mml:mi>a</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="S2.E6">
<label>(6)</label>
<mml:math id="M6">
<mml:mrow>
<mml:msubsup>
<mml:mi>z</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mi>H</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mi>v</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p>where <italic>B</italic> is the threshold voltage, <italic>b<sup>base</sup></italic> is the basic value, &#x03B2; is the scaling factor, &#x03C1; is the attenuation constant of threshold voltage, <italic>&#x03C4;<sub><italic>a</italic></sub></italic> is the time constant of dynamic threshold voltage, and <italic>H</italic>(<italic>x</italic>) is the Heaviside function.</p>
</sec>
<sec id="S2.SS2">
<title>Eligibility trace in synapses</title>
<p>The eligibility trace is a temporary trace of events generated by neurons. It combines the gradient at present and in the past to update synaptic weights and reduce the gradient of RSNNs (<xref ref-type="bibr" rid="B36">Sutton and Barto, 2014</xref>). Compared with BPTT algorithm, which has performed excellently in RNNs, the eligibility trace allows neurons to store local gradients instead of backpropagating through time and area. Because spikes are differentiable impulse signals, the pseudo-derivative function is used to described the derivative of spikes. The pseudo-derivative function is calculated as (<xref ref-type="bibr" rid="B3">Bellec et al., 2018</xref>):</p>
<disp-formula id="S2.E7">
<label>(7)</label>
<mml:math id="M7">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>v</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mi mathvariant="normal">&#x03B3;</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mrow>
<mml:mi>max</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>-</mml:mo>
<mml:mrow>
<mml:mo>|</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>v</mml:mi>
<mml:mo>-</mml:mo>
<mml:msup>
<mml:mi>b</mml:mi>
<mml:mrow>
<mml:mi>b</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>a</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>s</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:msup>
<mml:mi>b</mml:mi>
<mml:mrow>
<mml:mi>b</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>a</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>s</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mfrac>
<mml:mo>|</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p>where &#x03A5; is the pseudo-derivative of amplitude. When the neuron is in refractory period, the pseudo-derivative is set to 0. For ALIF model, the derivative of Heaviside function is defined as:</p>
<disp-formula id="S2.E8">
<label>(8)</label>
<mml:math id="M8">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>v</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mi mathvariant="normal">&#x03B3;</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mrow>
<mml:mi>max</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>-</mml:mo>
<mml:mrow>
<mml:mo>|</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>v</mml:mi>
<mml:mo>-</mml:mo>
<mml:mi>B</mml:mi>
</mml:mrow>
<mml:msup>
<mml:mi>b</mml:mi>
<mml:mrow>
<mml:mi>b</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>a</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>s</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mfrac>
<mml:mo>|</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p>The eligibility trace is based on the presynaptic neuron. An internal variable vector <italic>h<sup>t</sup></italic>&#x2208; <italic>R</italic> is assumed as the states of dynamics in models. The eligibility trace is defined as following:</p>
<disp-formula id="S2.E9">
<label>(9)</label>
<mml:math id="M9">
<mml:mrow>
<mml:msubsup>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mi>t</mml:mi>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mi>z</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mi>h</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="normal">&#x03B5;</mml:mi>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="S2.E10">
<label>(10)</label>
<mml:math id="M10">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="normal">&#x03B5;</mml:mi>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mi>t</mml:mi>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:msubsup>
<mml:mi>h</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:msubsup>
<mml:mi>h</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="normal">&#x03B5;</mml:mi>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo>+</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:msubsup>
<mml:mi>h</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:msub>
<mml:mi>W</mml:mi>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p>In the LIF model, <italic>h<sub><italic>j</italic></sub><italic><sup>t</sup></italic></italic> is a one-dimension vector, which includes the membrane potential <italic>v<sub><italic>j</italic></sub><italic><sup>t</sup></italic></italic>. The eligibility trace in LIF models is calculated as:</p>
<disp-formula id="S2.E11">
<label>(11)</label>
<mml:math id="M11">
<mml:mrow>
<mml:msubsup>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mi>t</mml:mi>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mi>z</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mi>v</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mover accent="true">
<mml:mi>z</mml:mi>
<mml:mo stretchy="false">&#x00AF;</mml:mo>
</mml:mover>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="S2.E12">
<label>(12)</label>
<mml:math id="M12">
<mml:mrow>
<mml:msubsup>
<mml:mover accent="true">
<mml:mi>z</mml:mi>
<mml:mo stretchy="false">&#x00AF;</mml:mo>
</mml:mover>
<mml:mi>i</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:munder>
<mml:mo largeop="true" movablelimits="false" symmetric="true">&#x2211;</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mo>&#x2264;</mml:mo>
<mml:msup>
<mml:mi>t</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
<mml:mo>&#x2264;</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="normal">&#x03B1;</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:msup>
<mml:mi>t</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mi>z</mml:mi>
<mml:mi>i</mml:mi>
<mml:msup>
<mml:mi>t</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:msubsup>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p>where <italic>e<sub>ji</sub><sup>t</sup></italic> is the eligibility trace of synapse from the <italic>i</italic>th neuron to the <italic>j</italic>th neuron, and &#x03B1;<italic><sup>t&#x2013;t&#x2032;</sup></italic> is the attenuation constant of membrane potential that decays over time. For input synaptic weights <italic>W<sup>In</sup></italic>, the output of neurons <italic>z</italic> is replaced by inputs <italic>x</italic>.</p>
<p>In the ALIF model, <italic>h<sub>j</sub><sup>t</sup></italic> consists two dimensions, i.e., the membrane potential <italic>v<sub>j</sub><sup>t</sup></italic> and the dynamic threshold voltage <italic>B<sup>t</sup></italic>. The derivative of <italic>h<sub>j</sub><sup>t</sup></italic> is a 2 &#x00D7; 2 matrix described as:</p>
<disp-formula id="S2.E13">
<label>(13)</label>
<mml:math id="M13">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mi>h</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mi>h</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mtable columnspacing="5pt" displaystyle="true" rowspacing="0pt">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mfrac>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:msubsup>
<mml:mi>v</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:msubsup>
<mml:mi>v</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mfrac>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:msubsup>
<mml:mi>v</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:msubsup>
<mml:mi>b</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mfrac>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:msubsup>
<mml:mi>b</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:msubsup>
<mml:mi>v</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mfrac>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:msubsup>
<mml:mi>b</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:msubsup>
<mml:mi>b</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
</mml:mtd>
</mml:mtr>
</mml:mtable>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mtable columnspacing="5pt" displaystyle="true" rowspacing="0pt">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mi mathvariant="normal">&#x03B1;</mml:mi>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mrow>
<mml:mi mathvariant="normal">&#x03B2;</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mi>z</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mi>v</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mrow>
<mml:mi mathvariant="normal">&#x03C1;</mml:mi>
<mml:mo>-</mml:mo>
<mml:mrow>
<mml:mi mathvariant="normal">&#x03B2;</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mi>z</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mi>v</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
<mml:mo>]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p>The eligibility trace in ALIF models is calculated as:</p>
<disp-formula id="S2.E14">
<label>(14)</label>
<mml:math id="M14">
<mml:mrow>
<mml:msubsup>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mi>t</mml:mi>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mi>z</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mi>v</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2062;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mover accent="true">
<mml:mi>z</mml:mi>
<mml:mo stretchy="false">&#x00AF;</mml:mo>
</mml:mover>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>-</mml:mo>
<mml:mrow>
<mml:mi mathvariant="normal">&#x03B2;</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="normal">&#x03B5;</mml:mi>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="S2.E15">
<label>(15)</label>
<mml:math id="M15">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="normal">&#x03B5;</mml:mi>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mi>t</mml:mi>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="normal">&#x03C1;</mml:mi>
<mml:mo>-</mml:mo>
<mml:mrow>
<mml:mi mathvariant="normal">&#x03B2;</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mi>z</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mi>v</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="normal">&#x03B5;</mml:mi>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo>+</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mi>z</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mi>v</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mover accent="true">
<mml:mi>z</mml:mi>
<mml:mo stretchy="false">&#x00AF;</mml:mo>
</mml:mover>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:mi>d</mml:mi>
<mml:mo>-</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
</sec>
<sec id="S2.SS3">
<title>Synaptic plasticity</title>
<p>In this study, the RSNN is composed of ALIF and LIF models. Connections between neurons are sparsely with a constant connection probability 60%. The filtered and weighted outputs of the RSNN are used as predictions, which are described as:</p>
<disp-formula id="S2.E16">
<label>(16)</label>
<mml:math id="M16">
<mml:mrow>
<mml:msubsup>
<mml:mi>y</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>-</mml:mo>
<mml:mi mathvariant="normal">&#x03BB;</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2062;</mml:mo>
<mml:mrow>
<mml:munder>
<mml:mo largeop="true" movablelimits="false" symmetric="true">&#x2211;</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mo>&#x2264;</mml:mo>
<mml:msup>
<mml:mi>t</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
<mml:mo>&#x2264;</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mrow>
<mml:munder>
<mml:mo largeop="true" movablelimits="false" symmetric="true">&#x2211;</mml:mo>
<mml:mi>i</mml:mi>
</mml:munder>
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="normal">&#x03BB;</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:msup>
<mml:mi>t</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mi>W</mml:mi>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>O</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mi>z</mml:mi>
<mml:mi>i</mml:mi>
<mml:msup>
<mml:mi>t</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:msubsup>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mrow>
<mml:mo>+</mml:mo>
<mml:msubsup>
<mml:mi>b</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mi>O</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="S2.E17">
<label>(17)</label>
<mml:math id="M17">
<mml:mrow>
<mml:mi mathvariant="normal">&#x03BB;</mml:mi>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mo>-</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">&#x0394;</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>/</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">&#x03C4;</mml:mi>
<mml:mrow>
<mml:mi>o</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</disp-formula>
<p>where <italic>y</italic> is the output of RSNN, &#x03BB; is the attenuation constant of outputs, <italic>&#x03BB;<sup>t&#x2013;t&#x2032;</sup></italic> is the attenuation constant that decays over time, <italic>W<sub>ji</sub><sup>Out</sup></italic> is output synaptic weight from the <italic>i</italic>th neuron in hidden layer to the <italic>j</italic>th neuron in output layer, <italic>b<sub>j</sub><sup>Out</sup></italic> is output bias of the <italic>j</italic>th output node, and <italic>&#x03C4;<sub><italic>out</italic></sub></italic> is the time constant of outputs. The SoftMax function is used to activate the predictions. The output node with the maximum value is the predicted label.</p>
<p>During the training period, the gradient is divided into two parts: the eligibility trace and the learning signal (<xref ref-type="bibr" rid="B5">Bellec et al., 2020</xref>). As described before, the eligibility trace updates synaptic weights towards historical gradients. A learning signal guides the RSNN to minimize errors between predicted targets and real targets. The learning signal contains errors based on the loss function, which is used to evaluate the performance of RSNNs defined as:</p>
<disp-formula id="S2.E18">
<label>(18)</label>
<mml:math id="M18">
<mml:mrow>
<mml:msubsup>
<mml:mi>L</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:munder>
<mml:mo largeop="true" movablelimits="false" symmetric="true">&#x2211;</mml:mo>
<mml:mi>j</mml:mi>
</mml:munder>
<mml:mrow>
<mml:msubsup>
<mml:mi>W</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>B</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>a</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>c</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2062;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi>Y</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
<mml:mo>-</mml:mo>
<mml:msubsup>
<mml:mi>Y</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mi/>
<mml:mo>&#x002A;</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p>where <italic>L<sub><italic>i</italic></sub><italic><sup>t</sup></italic></italic> is the learning signal of the <italic>i</italic>th neuron in the hidden layer at time <italic>t</italic>, <italic>W<sub><italic>ji</italic></sub><italic><sup>Back</sup></italic></italic> is feedback synaptic weights from the <italic>j</italic>th neuron in output layer to the <italic>i</italic>th neuron in hidden layer, <italic>Y<sub><italic>j</italic></sub><italic><sup>t</sup></italic></italic> is predicted target of the <italic>j</italic>th output node at time <italic>t</italic>, and <italic>Y<sub><italic>j</italic></sub><sup>&#x002A;t</sup></italic> is real target of the <italic>j</italic>th output node at time <italic>t</italic>. Gradients of input and recurrent synaptic weights are defined as:</p>
<disp-formula id="S2.E19">
<label>(19)</label>
<mml:math id="M19">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:msub>
<mml:mi>W</mml:mi>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:munder>
<mml:mo largeop="true" movablelimits="false" symmetric="true">&#x2211;</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:munder>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mi>h</mml:mi>
<mml:mi>j</mml:mi>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2062;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:msubsup>
<mml:mi>h</mml:mi>
<mml:mi>j</mml:mi>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:msub>
<mml:mi>W</mml:mi>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="S2.E20">
<label>(20)</label>
<mml:math id="M20">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:msubsup>
<mml:mi>h</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:msub>
<mml:mi>W</mml:mi>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mo>:=</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:msubsup>
<mml:mi>z</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:msubsup>
<mml:mi>h</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2062;</mml:mo>
<mml:mrow>
<mml:munder>
<mml:mo largeop="true" movablelimits="false" symmetric="true">&#x2211;</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:msubsup>
<mml:mi>h</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:msubsup>
<mml:mi>h</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2062;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:msubsup>
<mml:mi>h</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:msubsup>
<mml:mi>h</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2062;</mml:mo>
<mml:mi mathvariant="normal">&#x2026;</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:msubsup>
<mml:mi>h</mml:mi>
<mml:mi>j</mml:mi>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:msub>
<mml:mi>W</mml:mi>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mrow>
</mml:mrow>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:msubsup>
<mml:mi>z</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:msubsup>
<mml:mi>h</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="normal">&#x03B5;</mml:mi>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mo>=</mml:mo>
<mml:msubsup>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="S2.E21">
<label>(21)</label>
<mml:math id="M21">
<mml:mtable columnspacing="5pt" displaystyle="true">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mfrac>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mi>z</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>=</mml:mo>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mrow>
<mml:munder>
<mml:mo largeop="true" movablelimits="false" symmetric="true">&#x2211;</mml:mo>
<mml:mi>j</mml:mi>
</mml:munder>
<mml:mrow>
<mml:msubsup>
<mml:mi>W</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>B</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>a</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>c</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2062;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi>Y</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
<mml:mo>-</mml:mo>
<mml:msubsup>
<mml:mi>Y</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mi/>
<mml:mo>&#x002A;</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
</disp-formula>
<p>The eligibility trace is restricted in a short time window and recurrent synaptic weights are updated as:</p>
<disp-formula id="S2.E22">
<label>(22)</label>
<mml:math id="M22">
<mml:mrow>
<mml:msubsup>
<mml:mi>W</mml:mi>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>R</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>e</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi>W</mml:mi>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>R</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>e</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>-</mml:mo>
<mml:mrow>
<mml:mi mathvariant="normal">&#x03B7;</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mrow>
<mml:munder>
<mml:mo largeop="true" movablelimits="false" symmetric="true">&#x2211;</mml:mo>
<mml:mi>t</mml:mi>
</mml:munder>
<mml:mrow>
<mml:msubsup>
<mml:mi>L</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mover accent="true">
<mml:mi>e</mml:mi>
<mml:mo stretchy="false">&#x00AF;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="S2.E23">
<label>(23)</label>
<mml:math id="M23">
<mml:mrow>
<mml:msubsup>
<mml:mover accent="true">
<mml:mi>e</mml:mi>
<mml:mo stretchy="false">&#x00AF;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mi>t</mml:mi>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:munder>
<mml:mo largeop="true" movablelimits="false" symmetric="true">&#x2211;</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mo>&#x2264;</mml:mo>
<mml:msup>
<mml:mi>t</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
<mml:mo>&#x2264;</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="normal">&#x03BB;</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:msup>
<mml:mi>t</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:msup>
<mml:mi>t</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:msubsup>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p>where &#x03B7; is the learning rate. The input synaptic weight <italic>W<sub><italic>ji</italic></sub><italic><sup>In</sup></italic></italic> is updated same as <italic>W<sub><italic>ji</italic></sub><italic><sup>Rec</sup></italic></italic>. The output weight <italic>W<sub><italic>ji</italic></sub><italic><sup>Out</sup></italic></italic> is updated by the gradient descent algorithm. The cross entropy is used as the loss function. Output synaptic weights are updated as:</p>
<disp-formula id="S2.E24">
<label>(24)</label>
<mml:math id="M24">
<mml:mrow>
<mml:msubsup>
<mml:mi>W</mml:mi>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>O</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi>W</mml:mi>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>O</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>-</mml:mo>
<mml:mrow>
<mml:mi mathvariant="normal">&#x03B7;</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mrow>
<mml:munder>
<mml:mo largeop="true" movablelimits="false" symmetric="true">&#x2211;</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mo>&#x2264;</mml:mo>
<mml:msup>
<mml:mi>t</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
<mml:mo>&#x2264;</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="normal">&#x03BB;</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>-</mml:mo>
<mml:msup>
<mml:mi>t</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2062;</mml:mo>
<mml:msubsup>
<mml:mi>z</mml:mi>
<mml:mi>i</mml:mi>
<mml:msup>
<mml:mi>t</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:msubsup>
<mml:mo>&#x2062;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi>Y</mml:mi>
<mml:mi>j</mml:mi>
<mml:msup>
<mml:mi>t</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:msubsup>
<mml:mo>-</mml:mo>
<mml:msubsup>
<mml:mi>Y</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mi/>
<mml:mo>&#x002A;</mml:mo>
<mml:msup>
<mml:mi>t</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<p>All parameters mentioned in this study are shown in <xref ref-type="table" rid="T1">Table 1</xref> (<xref ref-type="bibr" rid="B3">Bellec et al., 2018</xref>). Different from BPTT algorithm, the synaptic plasticity used in this study only needs errors at present time. In contrast, synaptic weights are generally optimized at the end of training in BPTT algorithm. State variables during the entire training period are stored for gradients calculation. The requirement of on-chip memory is very luxury for FPGA. <xref ref-type="fig" rid="F1">Figure 1A</xref> shows the data flow of the eligibility trace. It does not need to wait and store latent variables in the RSNN until the end of training. At each timestep, the eligibility trace is calculated and applied to gradients. <xref ref-type="fig" rid="F1">Figure 1B</xref> shows the data flow of learning signals. The learning signal is corresponding to errors between predicted targets and real targets. At the end of training, synaptic weights are updated with the combination of eligibility trace and learning signal. With the eligibility trace gated by learning signal, the RSNN learns in a hardware-friendly way.</p>
<table-wrap position="float" id="T1">
<label>TABLE 1</label>
<caption><p>Parameter values used in the RSNN.</p></caption>
<table cellspacing="5" cellpadding="5" frame="box" rules="all">
<thead>
<tr>
<td valign="top" align="left" style="color:#ffffff;background-color: #7f8080;">Symbol</td>
<td valign="top" align="center" style="color:#ffffff;background-color: #7f8080;">Value</td>
<td valign="top" align="center" style="color:#ffffff;background-color: #7f8080;">Symbol</td>
<td valign="top" align="center" style="color:#ffffff;background-color: #7f8080;">Value</td>
<td valign="top" align="center" style="color:#ffffff;background-color: #7f8080;">Symbol</td>
<td valign="top" align="center" style="color:#ffffff;background-color: #7f8080;">Value</td>
<td valign="top" align="center" style="color:#ffffff;background-color: #7f8080;">Symbol</td>
<td valign="top" align="center" style="color:#ffffff;background-color: #7f8080;">Value</td>
<td valign="top" align="center" style="color:#ffffff;background-color: #7f8080;">Symbol</td>
<td valign="top" align="center" style="color:#ffffff;background-color: #7f8080;">Value</td>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">&#x0394;<italic>t</italic></td>
<td valign="top" align="center">1</td>
<td valign="top" align="center"><italic>b<sup>base</sup></italic></td>
<td valign="top" align="center">0.01</td>
<td valign="top" align="center"><italic>d</italic></td>
<td valign="top" align="center">5</td>
<td valign="top" align="center">&#x03B2;</td>
<td valign="top" align="center">1.8</td>
<td valign="top" align="center"><italic>Ref</italic></td>
<td valign="top" align="center">5</td>
</tr>
<tr>
<td valign="top" align="left">&#x03B7;</td>
<td valign="top" align="center">0.01</td>
<td valign="top" align="center"><italic>&#x03C4;<sub><italic>m</italic></sub></italic></td>
<td valign="top" align="center">20</td>
<td valign="top" align="center">&#x03A5;</td>
<td valign="top" align="center">0.3</td>
<td valign="top" align="center"><italic>&#x03C4;<sub><italic>a</italic></sub></italic></td>
<td valign="top" align="center">500</td>
<td valign="top" align="center"><italic>&#x03C4;<sub><italic>out</italic></sub></italic></td>
<td valign="top" align="center">20</td>
</tr>
</tbody>
</table></table-wrap>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption><p>Data flow in gradient computation. <bold>(A)</bold> Eligibility trace. <bold>(B)</bold> Learning signal.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnins-17-1107089-g001.tif"/>
</fig>
</sec>
<sec id="S2.SS4">
<title>Architecture overview</title>
<p>The RSNN used in this study is implemented on Altera Stratix V Advanced Systems Development Kit with Stratix V GX FPGA as an on-chip learning system. <xref ref-type="fig" rid="F2">Figure 2</xref> overviews the architecture of the RSNN, which is composed of a controller, memories for inputs, computing units and the synaptic plasticity block. The controller contains a counter used as system clock. At the beginning of training, the reset port is set to 1 and transmitted to all modules in the system. Then the enable port is set to 1 and the reset port is set to 0. The RSNN begins to receive inputs from memories and outputs predicted targets. The RSNN implemented on FPGA contains 8 input nodes, 4 LIF and 6 ALIF models in the hidden layer and 5 output nodes. In the input layer, the first 2 nodes are applied as inhibitory and others are excitatory. In the hidden layer, the first 3 LIF models are inhibitory and others are excitatory. If presynaptic neurons are inhibitory, the synaptic weights are clipped in (&#x2212;1, 0). In a similar way, the synaptic weights are clipped in (0, 1) when presynaptic neurons are excitatory. A buffer is implemented on FPGA to delay outputs of neurons. When the counter reaches the number of inputs, the enable port of neurons is set to 0 and the update enable is set to 1. Then, the synaptic weights are updated.</p>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption><p>Overview of the RSNN architecture implemented on FPGA.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnins-17-1107089-g002.tif"/>
</fig>
<p>The learning system is implemented based on 24-bit fixed-point data, considering the accuracy and consumption of computing resources. The energy and resource consumption of operations based on different data are shown in <xref ref-type="table" rid="T2">Table 2</xref> (<xref ref-type="bibr" rid="B13">Horowitz, 2014</xref>). It shows that operations of fixed-point data cost fewer energy and area than floating point data. A multiplier for 16-bit floating data requires 2 DSP blocks or 51 look-up tables (LUTs) and 95 flip-flops (FFs) with a maximum working frequency of 219MHz. But a multiplier for 16-bit fixed-point data only requires 1 DSP block with a maximum working frequency of 300MHz. The 24-bit fixed-point used in this study is described as:</p>
<disp-formula id="S2.E25">
<label>(25)</label>
<mml:math id="M25">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mo>-</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>g</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>&#x00D7;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>n</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>e</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>g</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>e</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mo>+</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>r</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>a</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>c</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>o</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mo>/</mml:mo>
<mml:msup>
<mml:mn>2</mml:mn>
<mml:mn>16</mml:mn>
</mml:msup>
</mml:mrow>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<table-wrap position="float" id="T2">
<label>TABLE 2</label>
<caption><p>Energy and area consumption of data operations.</p></caption>
<table cellspacing="5" cellpadding="5" frame="box" rules="all">
<thead>
<tr>
<td valign="top" align="left" style="color:#ffffff;background-color: #7f8080;">Operations</td>
<td valign="top" align="center" style="color:#ffffff;background-color: #7f8080;">Energy (pJ)</td>
<td valign="top" align="center" style="color:#ffffff;background-color: #7f8080;">Area (&#x03BC;m<sup>2</sup>)</td>
<td valign="top" align="center" style="color:#ffffff;background-color: #7f8080;">Operations</td>
<td valign="top" align="center" style="color:#ffffff;background-color: #7f8080;">Energy (pJ)</td>
<td valign="top" align="center" style="color:#ffffff;background-color: #7f8080;">Area (&#x03BC;m<sup>2</sup>)</td>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">8-bit fixed Add</td>
<td valign="top" align="center">&#x2004;&#x2004;0.03</td>
<td valign="top" align="center">36</td>
<td valign="top" align="center">32-bit fixed Add</td>
<td valign="top" align="center">0.1</td>
<td valign="top" align="center">137</td>
</tr>
<tr>
<td valign="top" align="left">8-bit fixed Mult</td>
<td valign="top" align="center">0.2</td>
<td valign="top" align="center">282</td>
<td valign="top" align="center">32-bit fixed Mult</td>
<td valign="top" align="center">3.1</td>
<td valign="top" align="center">3,495</td>
</tr>
<tr>
<td valign="top" align="left">16-bit floating Add</td>
<td valign="top" align="center">0.4</td>
<td valign="top" align="center">1,360</td>
<td valign="top" align="center">32-bit floating Add</td>
<td valign="top" align="center">0.9</td>
<td valign="top" align="center">4,184</td>
</tr>
<tr>
<td valign="top" align="left">16-bit floating Mult</td>
<td valign="top" align="center">1.1</td>
<td valign="top" align="center">1,640</td>
<td valign="top" align="center">32-bit floating Mult</td>
<td valign="top" align="center">3.7</td>
<td valign="top" align="center">7,700</td>
</tr>
</tbody>
</table></table-wrap>
<p>where the 0-15th bits are the fraction part of data, the 16&#x2013;22nd bits are the integer part of data and the 23rd bit is the sign of data.</p>
</sec>
<sec id="S2.SS5">
<title>ALIF model implementation</title>
<p><xref ref-type="fig" rid="F3">Figure 3</xref> shows the architecture of LIF and ALIF models implemented on FPGA. In <xref ref-type="fig" rid="F3">Figure 3A</xref>, a 24-bit shift register and a 1-bit shift register are implemented in a LIF model as synaptic delay. When the clock increases 1, data is shifted in registers and a new spike is output. The MUX module is used as a selector, which has three input ports and an output port. When the Sel. is 0, data in the first input port is chosen to be output. When the Sel. is 1, which means that the model is in the refractory period, 0 is chosen to be output. <xref ref-type="fig" rid="F3">Figure 3B</xref> shows the architecture of dynamic threshold voltage. In the ALIF model, <italic>V</italic><sub><italic>thr</italic></sub> in <xref ref-type="fig" rid="F3">Figure 3A</xref> is replaced by <italic>B<sup>t</sup></italic>.</p>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption><p>Architecture of neuron models implemented on FPGA. <bold>(A)</bold> LIF model. <bold>(B)</bold> Dynamic threshold in ALIF model.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnins-17-1107089-g003.tif"/>
</fig>
<p>Operations of fixed-point data reduce energy and resource consumptions with a little bit loss in accuracy. <xref ref-type="fig" rid="F4">Figure 4A</xref> shows the membrane potential of ALIF models simulated on a computer and implemented on FPGA. <xref ref-type="fig" rid="F4">Figure 4B</xref> shows the dynamic threshold voltage of ALIF models with devices. Error evaluation is applied to ALIF model with four criteria, including mean absolute error (MAE), minimum root-mean-square error (RMSE), correlation coefficient (CORR) and R-square (<italic>R</italic><sup>2</sup>) described as:</p>
<disp-formula id="S2.E26">
<label>(26)</label>
<mml:math id="M26">
<mml:mrow>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>A</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mi>N</mml:mi>
</mml:mfrac>
<mml:mo>&#x2062;</mml:mo>
<mml:mrow>
<mml:munderover>
<mml:mo largeop="true" movablelimits="false" symmetric="true">&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>N</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:mo stretchy="false">|</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>o</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2062;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>-</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>a</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2062;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mrow>
<mml:mo stretchy="false">|</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="S2.E27">
<label>(27)</label>
<mml:math id="M27">
<mml:mrow>
<mml:mrow>
<mml:mi>R</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>M</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>S</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>E</mml:mi>
</mml:mrow>
<mml:mo>=</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mi>N</mml:mi>
</mml:mfrac>
<mml:mo>&#x2062;</mml:mo>
<mml:mrow>
<mml:munderover>
<mml:mo largeop="true" movablelimits="false" symmetric="true">&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>N</mml:mi>
</mml:munderover>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>o</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2062;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>-</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>a</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2062;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="S2.E28">
<label>(28)</label>
<mml:math id="M28">
<mml:mrow>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>O</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>R</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>o</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>o</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>a</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">&#x03C3;</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>o</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2062;</mml:mo>
<mml:mi mathvariant="normal">&#x03C3;</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>a</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="S2.E29">
<label>(29)</label>
<mml:math id="M29">
<mml:mrow>
<mml:msup>
<mml:mi>R</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>-</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msubsup>
<mml:mo largeop="true" symmetric="true">&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>I</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>N</mml:mi>
</mml:msubsup>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>o</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2062;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>-</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>a</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2062;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mo largeop="true" symmetric="true">&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>I</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>N</mml:mi>
</mml:msubsup>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>X</mml:mi>
<mml:mo stretchy="false">&#x00AF;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>o</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>-</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>o</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2062;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<fig id="F4" position="float">
<label>FIGURE 4</label>
<caption><p>Responses of ALIF model implemented on FPGA and simulated with MATLAB with the same inputs. <bold>(A)</bold> Membrane potential. <bold>(B)</bold> Threshold voltage.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnins-17-1107089-g004.tif"/>
</fig>
<p>where <italic>X</italic><sub><italic>sof</italic></sub> and <italic>X</italic><sub><italic>har</italic></sub> are results of simulation with MATLAB and implementation on FPGA, <italic>N</italic> is the number of data for error evaluation, and <inline-formula><mml:math id="INEQ1"><mml:msub><mml:mover accent="true"><mml:mi>X</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover><mml:mrow><mml:mi>s</mml:mi><mml:mo>&#x2062;</mml:mo><mml:mi>o</mml:mi><mml:mo>&#x2062;</mml:mo><mml:mi>f</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> is the mean value of <italic>X</italic><sub><italic>sof</italic></sub>, CORR is the ratio of covariance to two data sets computed as:</p>
<disp-formula id="S2.E30">
<label>(30)</label>
<mml:math id="M30">
<mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>o</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>o</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>a</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:munderover>
<mml:mo largeop="true" movablelimits="false" symmetric="true">&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>N</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>o</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2062;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>-</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>X</mml:mi>
<mml:mo stretchy="false">&#x00AF;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>o</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2062;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>a</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2062;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>-</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>X</mml:mi>
<mml:mo stretchy="false">&#x00AF;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>a</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="S2.E31">
<label>(31)</label>
<mml:math id="M31">
<mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">&#x03C3;</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>=</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:munderover>
<mml:mo largeop="true" movablelimits="false" symmetric="true">&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>N</mml:mi>
</mml:munderover>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>&#x2062;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>-</mml:mo>
<mml:mover accent="true">
<mml:mi>x</mml:mi>
<mml:mo stretchy="false">&#x00AF;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
</mml:math>
</disp-formula>
<p>where <inline-formula><mml:math id="INEQ2"><mml:msub><mml:mover accent="true"><mml:mi>X</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover><mml:mrow><mml:mi>h</mml:mi><mml:mo>&#x2062;</mml:mo><mml:mi>a</mml:mi><mml:mo>&#x2062;</mml:mo><mml:mi>r</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> is the mean value of <italic>X</italic><sub><italic>har</italic></sub>. Results of error evaluation are shown in <xref ref-type="table" rid="T3">Table 3</xref>.</p>
<table-wrap position="float" id="T3">
<label>TABLE 3</label>
<caption><p>Error evaluation results.</p></caption>
<table cellspacing="5" cellpadding="5" frame="box" rules="all">
<thead>
<tr>
<td valign="top" align="left" style="color:#ffffff;background-color: #7f8080;"></td>
<td valign="top" align="center" style="color:#ffffff;background-color: #7f8080;">MAE</td>
<td valign="top" align="center" style="color:#ffffff;background-color: #7f8080;">RMSE</td>
<td valign="top" align="center" style="color:#ffffff;background-color: #7f8080;"><italic>R</italic><sup>2</sup></td>
<td valign="top" align="center" style="color:#ffffff;background-color: #7f8080;">CORR</td>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">Membrane potential</td>
<td valign="top" align="center">9.1667 &#x00D7; 10<sup>&#x2013;5</sup></td>
<td valign="top" align="center">1.1723 &#x00D7; 10<sup>&#x2013;4</sup></td>
<td valign="top" align="center">0.9995</td>
<td valign="top" align="center">0.9999</td>
</tr>
<tr>
<td valign="top" align="left">Dynamic threshold</td>
<td valign="top" align="center">2.3894 &#x00D7; 10<sup>&#x2013;4</sup></td>
<td valign="top" align="center">3.0328 &#x00D7; 10<sup>&#x2013;4</sup></td>
<td valign="top" align="center">0.9930</td>
<td valign="top" align="center">0.9999</td>
</tr>
</tbody>
</table></table-wrap>
</sec>
<sec id="S2.SS6">
<title>Presynaptic spike-driven plasticity</title>
<p>The synaptic module based on eligibility trace is implemented on FPGA to train the RSNN. The learning rule is composed of three factors: presynaptic activities, postsynaptic activities and errors. Errors and the postsynaptic activities are instantaneous information. Presynaptic activities are stored in the buffer, which requires a lot of registers. The presynaptic spike-driven architecture is used to reduce the registers in buffers. Different with buffers used for inputs, a counter with a FF and a MUX selector is implemented as the buffer of synaptic module. In this way, hundreds of synaptic modules require fewer resources.</p>
<p><xref ref-type="fig" rid="F5">Figure 5</xref> shows the architecture of synaptic module implemented on FPGA. The pseudo-derivative of Heaviside function is limited to 0&#x2013;0.3 as shown in <xref ref-type="fig" rid="F5">Figure 5A</xref>. The eligibility traces of LIF and ALIF models use Shift MUL modules as multipliers and driven by presynaptic spikes as shown in <xref ref-type="fig" rid="F5">Figures 5B, C</xref>. Because the refractory period is equal to the time window of eligibility traces, there is at most one spike in 5 timesteps. The FF is activated when a presynaptic spike arrives. If the number in counter reaches 5 (the length of time window), the counter is reset to 0. At each timestep, the counter outputs the number to the MUX selector. Then, the MUX selector outputs the constant data in input ports according to the three-bit selector signal in the Sel. port. In <xref ref-type="fig" rid="F5">Figure 5B</xref>, shift and addition operations are used to replace multiplication between a constant and a variable. Besides, the synaptic module consists of the Shift MUL module, which is used as a multiplier between two variables. The &#x201C;Input a&#x201D; of Shift MUL is expected to be 0-1 which matches the scale of inputs. The 16&#x2013;23rd bits of &#x201C;Input a&#x201D; are dropped and the 0-15th bits are split to 16 MUX selectors as control signals in Sel. ports. &#x201C;Input b&#x201D; is input to 16 shifters and shifted right from 1 to 16 bits. The first input port of MUX selectors is set to 0. When the Sel. port is 0, the MUX selector outputs 0. The second input port of MUX selectors is corresponding to the split data of &#x201C;Input a.&#x201D; If the 0th bit of &#x201C;Input a&#x201D; is input to the MUX selector, the &#x201C;Input b&#x201D; is input to this selector after shifted right 16 bits. If the 15th bit of &#x201C;Input a&#x201D; is input to the MUX selector, the &#x201C;Input b&#x201D; is input to this selector after shifted right 1 bit. When the Sel. port is 1, the MUX selector outputs the number in the second input port. If the synaptic weight in the module is positive, it is clipped in (0, 1). If the synaptic weight in the module is negative, it is clipped in (&#x2212;1, 0). Besides, presynaptic spike-driven plasticity module, a regular synaptic module is designed based on shift registers as buffers to compare with the module based on presynaptic spike-driven architecture. The resource utilizations of these two modules are shown in <xref ref-type="table" rid="T4">Table 4</xref>. In the regular synaptic module, five 24-bit registers are used to store the attenuated spikes. This buffer requires times of resources of the buffer that is based on five single-bit LUTs and a selector. The presynaptic spike-driven plasticity module requires less resources on FPGA than the regular module. It reduces 38.9% LUTs, 49.5% registers, and 34.8% dynamic power consumptions. For an on-chip learning system implemented on FPGA, there are hundreds or thousands of synapses in RSNN. It greatly contributes to the high-efficient performance of learning system.</p>
<fig id="F5" position="float">
<label>FIGURE 5</label>
<caption><p>The architecture of synaptic module implemented on FPGA. <bold>(A)</bold> Pseudo-derivative of Heaviside function. <bold>(B)</bold> Eligibility trace of LIF model. <bold>(C)</bold> Eligibility trace of ALIF model.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnins-17-1107089-g005.tif"/>
</fig>
<table-wrap position="float" id="T4">
<label>TABLE 4</label>
<caption><p>Resource utilization of synaptic plasticity.</p></caption>
<table cellspacing="5" cellpadding="5" frame="box" rules="all">
<thead>
<tr>
<td valign="top" align="left" style="color:#ffffff;background-color: #7f8080;"></td>
<td valign="top" align="center" style="color:#ffffff;background-color: #7f8080;">LUTs</td>
<td valign="top" align="center" style="color:#ffffff;background-color: #7f8080;">Registers</td>
<td valign="top" align="center" style="color:#ffffff;background-color: #7f8080;">Dynamic power (mW)</td>
<td valign="top" align="center" style="color:#ffffff;background-color: #7f8080;">Static power (mW)</td>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">Spike-driven</td>
<td valign="top" align="center">1976</td>
<td valign="top" align="center">229</td>
<td valign="top" align="center">54.96</td>
<td valign="top" align="center">902.55</td>
</tr>
<tr>
<td valign="top" align="left">Regular</td>
<td valign="top" align="center">3232</td>
<td valign="top" align="center">453</td>
<td valign="top" align="center">84.26</td>
<td valign="top" align="center">903</td>
</tr>
</tbody>
</table></table-wrap>
</sec>
<sec id="S2.SS7">
<title>Classifier implementation</title>
<p>When the last pixel is input to the RSNN, output nodes are activated by SoftMax function, which is used as a classifier. The SoftMax function reduces the complexity of gradients of the output weights. It normalizes the outputs of RSNN and then maps them to the possibility of predicted labels. The output node with the maximum probability becomes the prediction of RSNN. The SoftMax function is described as:</p>
<disp-formula id="S2.E32">
<label>(32)</label>
<mml:math id="M32">
<mml:mrow>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:msup>
<mml:mi>e</mml:mi>
<mml:mi>i</mml:mi>
</mml:msup>
<mml:mrow>
<mml:msub>
<mml:mo largeop="true" symmetric="true">&#x2211;</mml:mo>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:msup>
<mml:mi>e</mml:mi>
<mml:mi>j</mml:mi>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
</disp-formula>
<p><xref ref-type="fig" rid="F6">Figure 6A</xref> shows the architecture of SoftMax function. It is mainly composed of the exponent module and the reciprocal module. Ten exponent (EXP) modules are implemented to calculate the exponents of outputs of RSNN. A parallel adder is used to sum outputs of EXP modules and transmit the result to the reciprocal module. Exponent results are multiplied with the reciprocal and become the probabilities of predicted labels. In <xref ref-type="fig" rid="F6">Figure 6B</xref>, values 1/7, 1/6, &#x2026;, 1 are stored in 7 24-bit registers. Once the adder and multipliers in the EXP module finish operations, the constant address of registers is shifted right 1. When the 7th value is input to the multiplier, the EXP module outputs the exponent result. <xref ref-type="fig" rid="F6">Figure 6C</xref> shows the architecture of reciprocal module. The reciprocal module is designed based on Newton-Raphson (NR) method. The approximate reciprocal value is obtained by three cycles of calculation. The key problem of the implementation of Newton-Raphson method is how to get an accurate initial approximate reciprocal value. In this study, an architecture based on shift operation is proposed to find the initial approximate reciprocal value. The pseudocode of this method is shown in <xref ref-type="fig" rid="F7">Figure 7</xref>. When a data is input to the reciprocal module, the highest bit with value 1 of the input data determines the shift operations. When data below this bit in the integer part are &#x201C;1, &#x2026;, 1,&#x201D; the initial approximate reciprocal value is the same as the input data. If the data is between 1.5 and 2, the initial approximate reciprocal value is set to 1/2. If the data is smaller than 1.5, the initial approximate reciprocal value is set to 1. Since exponents are positive, the sign bit is set to 0. The same error evaluation is applied to the exponent module and reciprocal module. <xref ref-type="fig" rid="F8">Figure 8A</xref> shows the exponent operation simulated in MATLAB and implemented on FPGA. <xref ref-type="fig" rid="F8">Figure 8B</xref> shows the reciprocal module evaluation in the same way. The evaluation results are shown in <xref ref-type="table" rid="T5">Table 5</xref>.</p>
<fig id="F6" position="float">
<label>FIGURE 6</label>
<caption><p>The architecture of classifier implemented on FPGA. <bold>(A)</bold> SoftMax function. <bold>(B)</bold> Exponent module. <bold>(C)</bold> Reciprocal module based on Newton-Raphson.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnins-17-1107089-g006.tif"/>
</fig>
<fig id="F7" position="float">
<label>FIGURE 7</label>
<caption><p>Pseudocode of initial approximate reciprocal value in the reciprocal module.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnins-17-1107089-g007.tif"/>
</fig>
<fig id="F8" position="float">
<label>FIGURE 8</label>
<caption><p>Results of exponent and reciprocal modules simulated in MATLAB and implemented on FPGA. <bold>(A)</bold> The exponent module on FPGA and EXP function in MATLAB. <bold>(B)</bold> The reciprocal module on FPGA and 1/x function in MATLAB.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnins-17-1107089-g008.tif"/>
</fig>
<table-wrap position="float" id="T5">
<label>TABLE 5</label>
<caption><p>Error evaluation results.</p></caption>
<table cellspacing="5" cellpadding="5" frame="box" rules="all">
<thead>
<tr>
<td valign="top" align="left" style="color:#ffffff;background-color: #7f8080;"></td>
<td valign="top" align="center" style="color:#ffffff;background-color: #7f8080;">MAE</td>
<td valign="top" align="center" style="color:#ffffff;background-color: #7f8080;">RMSE</td>
<td valign="top" align="center" style="color:#ffffff;background-color: #7f8080;"><italic>R</italic><sup>2</sup></td>
<td valign="top" align="center" style="color:#ffffff;background-color: #7f8080;">CORR</td>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">Exponent</td>
<td valign="top" align="center">0.0155</td>
<td valign="top" align="center">0.0412</td>
<td valign="top" align="center">0.9999</td>
<td valign="top" align="center">1.0000</td>
</tr>
<tr>
<td valign="top" align="left">Reciprocal</td>
<td valign="top" align="center">2.9869 &#x00D7; 10<sup>&#x2013;4</sup></td>
<td valign="top" align="center">9.7972 &#x00D7; 10<sup>&#x2013;4</sup></td>
<td valign="top" align="center">0.9999</td>
<td valign="top" align="center">1.0000</td>
</tr>
</tbody>
</table></table-wrap>
</sec>
</sec>
<sec id="S3" sec-type="results">
<title>Results</title>
<sec id="S3.SS1">
<title>Results of experiments</title>
<p>Before implementing the RSNN on FPGA, we first test it on the computer based on the restricted e-prop algorithm and BPTT algorithm to confirm it converge to a similar loss value. We limit the RSNN to 8-10-5 nodes in view of the resources on FPGA. Accordingly, the MNIST dataset is divided into two parts. One includes images of number 0&#x2013;4, and the other one is composed of images of number 5&#x2013;9. The RSNN is trained on Xeon(R) Silver 4114 CPU for 100 epochs. We show the loss values of RSNNs at each epoch in <xref ref-type="fig" rid="F9">Figure 9</xref>. In <xref ref-type="fig" rid="F9">Figure 9A</xref>, the loss of network trained by BPTT algorithm based on 0-4 images decreases rapidly in the first 20 epochs. After 20 epochs, it enters a steady period. The loss of RSNN based on the e-prop algorithm decreases slower than the loss of BPTT algorithm. Trained after 40 epochs, the loss gradually stabilizes at a level slightly higher than the BPTT algorithm. Although it converges more slowly, it reaches a stable result with such a small size. In <xref ref-type="fig" rid="F9">Figure 9B</xref>, the loss values of two RSNNs exhibit the same trend as in <xref ref-type="fig" rid="F9">Figure 9A</xref>. The results of loss values in the training process show that the e-prop algorithm have similar convergence to the BPTT algorithm in such small-scale RSNNs.</p>
<fig id="F9" position="float">
<label>FIGURE 9</label>
<caption><p>Loss value of RSNN based on BPTT and eligibility trace. <bold>(A)</bold> Half of the dataset consists of number 0&#x2013;4 images. <bold>(B)</bold> Another half of the dataset consists of number 5&#x2013;9 images.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnins-17-1107089-g009.tif"/>
</fig>
<p>After simulations on the computer, we implement this RSNN on Stratix V GX FPGA using Quartus Prime software. There are 8 input nodes, 10 neuron modules in the hidden layer and 5 output nodes in the RSNN. The input layer consists of 2 inhibitory and 6 excitatory LIF nodes, and the hidden layer includes 3 inhibitory LIF nodes, 1 excitatory LIF node and 6 excitatory ALIF nodes. Inhibitory models are coupled with inhibitory synaptic weights, which are limited to (&#x2212;1, 0). Excitatory models are coupled with excitatory synaptic weights, which are limited to (0, 1). Synaptic modules are placed in each connection between neuron modules. We start tests with a spatio-temporal spike patterns classification task (<xref ref-type="bibr" rid="B25">Mohemmed et al., 2012</xref>). Spike trains with five spike patterns are presented sequentially to the RSNN. Each pattern is given by 8 random spike trains with a certain frequency distribution, which continues 900 timesteps. The RSNN is expected to map these input patterns to specific targets. We set three groups of <italic>&#x03C4;<sub><italic>v</italic></sub></italic> and <italic>&#x03C4;<sub><italic>a</italic></sub></italic> of ALIF models to explore how the dynamics in threshold voltage contributes to the learning ability. With <italic>&#x03C4;<sub><italic>v</italic></sub></italic> = 20 and <italic>&#x03C4;<sub><italic>a</italic></sub></italic> = 20, the membrane potential and dynamic threshold are in the same time scale. The threshold voltage decreases rapidly with the membrane potential after a spike generation in the ALIF model. Considering that neurons in the RSNN are activated sparsely, the threshold voltage decreases to the base value before the next activation, which means that ALIF models present no improvement in short-term memory. In <xref ref-type="fig" rid="F10">Figure 10A</xref>, the RSNN with this group of <italic>&#x03C4;<sub><italic>v</italic></sub></italic> and <italic>&#x03C4;<sub><italic>a</italic></sub></italic> reaches an accuracy of 1 after trained 300 epochs. With <italic>&#x03C4;<sub><italic>v</italic></sub></italic> = 40 and <italic>&#x03C4;<sub><italic>a</italic></sub></italic> = 100, the membrane potential and dynamic threshold are in a similar time scale. The RSNN learns faster than the former network, but still requires at least 300 epochs to reach an accuracy of 1. With <italic>&#x03C4;<sub><italic>v</italic></sub></italic> = 20 and <italic>&#x03C4;<sub><italic>a</italic></sub></italic> = 500, the threshold voltage is at a much larger time-scale than the membrane potential. The slowly changing threshold enriches the inherent dynamics of ALIF models. As a result, the RSNN is stabilized at an accuracy of 1 trained after 100 epochs. The dynamic threshold voltage in a large time-scale makes up for inferior short-term memory capabilities in RSNNs.</p>
<fig id="F10" position="float">
<label>FIGURE 10</label>
<caption><p><bold>(A)</bold> Results of the learning system presented by five classes of spike patterns. The first number in the legend is &#x03C4;v. The second number in the legend is &#x03C4;a. <bold>(B)</bold> Results of the learning system with two kinds of neuron models and with only LIF model based on MNIST dataset.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnins-17-1107089-g010.tif"/>
</fig>
<p>Finally, we test the performance of RSNNs based on MNIST dataset. Since the RSNN implemented on FPGA only consists of 23 nodes and 180 synapses, the dataset is divided into two parts. One set includes images of number 0-4 and another one includes images of number 5&#x2013;9. The pixels in each image are presented sequentially to input nodes, which have uniform increasing thresholds from 0.125 to 1. When the gray value of pixel is higher than the threshold, the input node generates a spike. Benefit from the reconfigurable neuron and synaptic modules in the learning system, the module types can be easily switched between LIF and ALIF neuron modules. Thus, we compare the classification accuracy of two RSNNs in <xref ref-type="fig" rid="F10">Figure 10B</xref>. One RSNN only includes LIF models and another RSNN consists of LIF and ALIF models. The classification accuracy of the RSNN with LIF and ALIF models for each number in the 0&#x2013;4 MNIST dataset is 97.9, 96.7, 82.6, 72.3, and 91.1%, respectively, which is 88, 81, 84.6, 79.1, and 88.7% in the 5&#x2013;9 MNIST dataset. The total accuracy of the tests on these two datasets is 88.7 and 84.4%. In contrast, the accuracy of the RSNN with only LIF models for each number in the 0&#x2013;4 MNIST dataset is 43.1, 54.3, 66, 26.1, and 44.6%, which is 62.5, 79.7, 48.3, 76.9, and 73.1% in the 5&#x2013;9 MNIST dataset. The total accuracy of the tests is 49.2 and 67.6%, which is much lower than the RSNN with LIF and ALIF models. This comparison further confirms that the ALIF models greatly contribute to computational power of the RSNNs.</p>
</sec>
<sec id="S3.SS2">
<title>Hardware consumption evaluation</title>
<p>The experiment results show that the learning system solves tasks accurately. A hardware consumption evaluation is then performed on the system to test the hardware efficiency. We measure the hardware consumption in FPGA in terms of LUTs, registers and power. In order to illustrate the advantages of the presynaptic spike-driven architecture, we compare the compilation results of our implementation of the RSNN with previous works based on other architectures. In <xref ref-type="table" rid="T6">Table 6</xref>, we show the resource utilization and power cost of three networks implemented on FPGA. The first implementation by <xref ref-type="bibr" rid="B38">Vo (2017)</xref> is a SNN trained by BP algorithm. <xref ref-type="bibr" rid="B38">Vo (2017)</xref> uses the pre-backpropagation block and backpropagation block to calculate errors and update synaptic weights in SNNs. The second one is a SNN implemented based on a clock-driven architecture proposed by <xref ref-type="bibr" rid="B28">Pani et al. (2017)</xref>. The clock drives all neural models and synaptic modules to be updated at every simulation step, regardless of the spiking activity. Note that all results are normalized to the same network scale and the resource utilization does not include the external memories in this table. The LUTs utilization of our learning system is reduced to half of the implementation by <xref ref-type="bibr" rid="B38">Vo (2017)</xref>. A more significant difference is in the usage of registers. Implementations by <xref ref-type="bibr" rid="B38">Vo (2017)</xref> and <xref ref-type="bibr" rid="B28">Pani et al. (2017)</xref> consume almost the same number of registers/slices because of the similar architecture they apply to SNNs. Only 18,081 registers are used in our architecture, which is almost 1/7 of theirs. This result suggests that our architecture performs excellent in resource utilization, especially in registers. Besides the resource utilizations, we also show the power cost in <xref ref-type="table" rid="T6">Table 6</xref>, which is estimated by the PowerPlay Power Analyzer Tool in Quartus Prime software. Although the static power consumption is different between FPGA development boards, our learning system consumes about 3.3W power less than the system proposed by <xref ref-type="bibr" rid="B28">Pani et al. (2017)</xref>, which indicates that our learning system works at a low power level.</p>
<table-wrap position="float" id="T6">
<label>TABLE 6</label>
<caption><p>Resource and power utilization of implementations for networks.</p></caption>
<table cellspacing="5" cellpadding="5" frame="box" rules="all">
<thead>
<tr>
<td valign="top" align="left" style="color:#ffffff;background-color: #7f8080;"></td>
<td valign="top" align="center" style="color:#ffffff;background-color: #7f8080;">LUTs</td>
<td valign="top" align="center" style="color:#ffffff;background-color: #7f8080;">Registers/Slices</td>
<td valign="top" align="center" style="color:#ffffff;background-color: #7f8080;">Power (W)</td>
<td valign="top" align="center" style="color:#ffffff;background-color: #7f8080;">Platform</td>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left"><xref ref-type="bibr" rid="B38">Vo (2017)</xref></td>
<td valign="top" align="center">253,727</td>
<td valign="top" align="center">134,467</td>
<td valign="top" align="center">&#x2013;</td>
<td valign="top" align="center">Spartan-3</td>
</tr>
<tr>
<td valign="top" align="left"><xref ref-type="bibr" rid="B28">Pani et al. (2017)</xref></td>
<td valign="top" align="center">160,667</td>
<td valign="top" align="center">139,443</td>
<td valign="top" align="center">8.5</td>
<td valign="top" align="center">Virtex-6</td>
</tr>
<tr>
<td valign="top" align="left">This study</td>
<td valign="top" align="center">121,855</td>
<td valign="top" align="center">18,081</td>
<td valign="top" align="center">5.183</td>
<td valign="top" align="center">Stratix V GX</td>
</tr>
</tbody>
</table></table-wrap>
</sec>
</sec>
<sec id="S4" sec-type="discussion">
<title>Discussion</title>
<p>In this study, we use the restricted e-prop algorithm to train RSNNs, which updates the synaptic weights by surrogate gradients. This surrogate gradient is based on eligibility traces. Different from the global gradients backpropagated from the top layer, the eligibility trace represents the events of neurons, which means it is only related to a local spike. Based on this algorithm, we apply a presynaptic spike-driven architecture to the RSNN and implement it on FPGA. When a spike from presynaptic neuron arrives at the buffer, it activates this module to search the value of eligibility trace in a LUT. A learning signal from output layer is also used to guide the behaviors of neurons, which provides the global gradient to gate the eligibility trace.</p>
<p>Besides the spike-driven architecture, the time-driven architecture is also used to implement the RSNNs on FPGA. We compare the presynaptic spike-driven architecture with implementations by <xref ref-type="bibr" rid="B38">Vo (2017)</xref> and <xref ref-type="bibr" rid="B28">Pani et al. (2017)</xref> to illustrate the mechanisms of these two architectures, and discuss the possible sources of high resource and power consumptions of their works. The earlier studies generally focus on improving the throughput of systems to optimize accelerators. <xref ref-type="bibr" rid="B38">Vo (2017)</xref> uses backpropagation (BP) algorithm to train a small SNN on FPGA. Although the implementation presents satisfactory accuracy in test, a large amount of on-chip memories are used to store variables over time. The same problem exists in the clock-driven architecture proposed by <xref ref-type="bibr" rid="B28">Pani et al. (2017)</xref>. The clock drives all neural models and synaptic modules to be updated at every simulation step, regardless of the spiking activity. As a results, many invalid activities and variables occupy the memories and computing resources. Even the neuron is in the refractory period, its output is also stored and the synaptic module is updated. In contrast, the synaptic modules in this study are activated sparsely and the activities of neurons are limited to timestamps. This intermittent activation mode makes the RSNN work in a lower energy manner than previous works. The power consumption in <xref ref-type="table" rid="T6">Table 6</xref> suggests the high power-efficiency of our learning system.</p>
<p>In recent years, many event-driven/spike-driven architectures are proposed for implementations of SNNs on FPGA. Compared with time-driven/clock-driven architecture, spikes occupy a smaller bit width in the data transmission and storage between modules (<xref ref-type="bibr" rid="B26">Moore et al., 2012</xref>; <xref ref-type="bibr" rid="B28">Pani et al., 2017</xref>). This is reflected in the utilization of registers in <xref ref-type="table" rid="T6">Table 6</xref>. <xref ref-type="bibr" rid="B32">Sankaran et al. (2022)</xref> use the single spike control BPTT algorithm to train the RSNN and implement this on FPGA based on the event-driven architecture. This architecture depends on the number of spikes instead of spike-time information and weight values stored on on-chip memories. But it relies on the request-acknowledge cycles between layers to allow the layer&#x2019;s time execution. The request-acknowledge cycles access information in each layer frequently. High-throughput data transmission and power consumption are both challenges in this architecture. <xref ref-type="bibr" rid="B29">Park and Jung (2020)</xref> use the latest timestamp and the synaptic modification rate to trace the exponential decay STDP function (<xref ref-type="bibr" rid="B35">Sim et al., 2019</xref>). This architecture converts the complex relationship between activities in pre and postsynaptic neurons to the timestamps in the address domain. It greatly contributes to the reduction of buffer size. Inspired by this, we use timestamps to represent traces of spikes instead of entire eligibility traces. The spike is simultaneously used as an enable signal for synaptic modules, which prevents all modules in RSNNs from updating at every time step. Only those synaptic modules that receive spikes are driven to be updated, which reduces the inefficient works. We confirm that the combination of eligibility traces and presynaptic spike-driven architecture can reduce the buffer size of synaptic modules, which leads to the reduction of resource utilization of the entire learning system.</p>
</sec>
<sec id="S5" sec-type="conclusion">
<title>Conclusion</title>
<p>In this study, we realize a high-efficient RSNN learning system on FPGA with excellent software-to-hardware reproduction. This architecture is based on the spikes generated by RSNNs, which is compatible with FPGA. Meanwhile, it provides flexible reconfigurability for modifying the network connectivity, model types and other parameters. We provide several modules that simplify computation, such as the Shift MUL module and SoftMax module. We perform two inference applications to test the RSNNs implemented on FPGA, which are the spike patterns classification and the MNIST handwriting digits classification. In the former test, we implement ALIF models with three groups of parameters and explore how dynamics in threshold voltage contributes to the learning ability. In the latter test, we implement two RSNNs with different neuron modules and further confirm the contributions of ALIF models to the computational power of RSNNs. The compilation results and power estimation of RSNNs on FPGA show that the requirements of LUTs, registers and dynamic power consumptions of synaptic modules are respectively reduced by 38.9, 49.5, and 34.8%. The presynaptic spike-driven architecture contributes to reduce the resource utilization of the entire on-chip learning system while accurately solving the tasks, as the buffer size for caching events is greatly reduced. This architecture for RSNNs provides an alternative way for realizing the large-scale neuromorphic learning systems, as the transmission and storage of data on chips greatly limit the scale of systems (<xref ref-type="bibr" rid="B20">Li et al., 2015</xref>; <xref ref-type="bibr" rid="B30">Que et al., 2022</xref>). The spike-driven architecture may offer a solution for these problems.</p>
</sec>
<sec id="S6" sec-type="data-availability">
<title>Data availability statement</title>
<p>Publicly available datasets were analyzed in this study. This data can be found here: <ext-link ext-link-type="uri" xlink:href="http://yann.lecun.com/exdb/mnist/">http://yann.lecun.com/exdb/mnist/</ext-link>.</p>
</sec>
<sec id="S7" sec-type="author-contributions">
<title>Author contributions</title>
<p>All authors contributed to the different phases of the research and to the writing of this manuscript.</p>
</sec>
</body>
<back>
<sec id="S8" sec-type="funding-information">
<title>Funding</title>
<p>This work was supported by the National Natural Science Foundation of China (grant nos. 62071324 and 62006170).</p>
</sec>
<sec id="S9" sec-type="COI-statement">
<title>Conflict of interest</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
<sec id="S10" sec-type="disclaimer">
<title>Publisher&#x2019;s note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
<ref-list>
<title>References</title>
<ref id="B1"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Ahmad</surname> <given-names>A. M.</given-names></name> <name><surname>Ismail</surname> <given-names>S.</given-names></name> <name><surname>Samaon</surname> <given-names>D. F.</given-names></name></person-group> (<year>2004</year>). &#x201C;<article-title>Recurrent neural network with back propagation through time for speech recognition</article-title>,&#x201D; in <source><italic>Proceedings of the IEEE international symposium on communications and information technology</italic></source>, <publisher-loc>Sapporo</publisher-loc>. <pub-id pub-id-type="doi">10.1109/ISCIT.2004.1412458</pub-id></citation></ref>
<ref id="B2"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Aljuaid</surname> <given-names>A.</given-names></name> <name><surname>Anwar</surname> <given-names>M.</given-names></name></person-group> (<year>2022</year>). <article-title>Survey of supervised learning for medical image processing.</article-title> <source><italic>SN Comput. Sci.</italic></source> <volume>3</volume>:<issue>292</issue>. <pub-id pub-id-type="doi">10.1007/s42979-022-01166-1</pub-id> <pub-id pub-id-type="pmid">35602289</pub-id></citation></ref>
<ref id="B3"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Bellec</surname> <given-names>G.</given-names></name> <name><surname>Salaj</surname> <given-names>D.</given-names></name> <name><surname>Subramoney</surname> <given-names>A.</given-names></name> <name><surname>Legenstein</surname> <given-names>R.</given-names></name> <name><surname>Maass</surname> <given-names>W.</given-names></name></person-group> (<year>2018</year>). &#x201C;<article-title>Long short-term memory and learning-to-learn in networks of spiking neurons</article-title>,&#x201D; in <source><italic>Proceedings of the neural information processing systems (NeurIPS)</italic></source>, <publisher-loc>Montr&#x00E9;al, Canada</publisher-loc>. <pub-id pub-id-type="doi">10.5555/3326943.3327017</pub-id></citation></ref>
<ref id="B4"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Bellec</surname> <given-names>G.</given-names></name> <name><surname>Scherr</surname> <given-names>F.</given-names></name> <name><surname>Hajek</surname> <given-names>E.</given-names></name> <name><surname>Salaj</surname> <given-names>D.</given-names></name> <name><surname>Subramoney</surname> <given-names>A.</given-names></name> <name><surname>Legenstein</surname> <given-names>R.</given-names></name><etal/></person-group> (<year>2019</year>). &#x201C;<article-title>Eligibility traces provide a data-inspired alternative to back propagation through time</article-title>,&#x201D; in <source><italic>Proceedings of the neural information processing systems (NeurIPS)</italic></source>, <publisher-loc>Vancouver, Canada</publisher-loc>.</citation></ref>
<ref id="B5"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Bellec</surname> <given-names>G.</given-names></name> <name><surname>Scherr</surname> <given-names>F.</given-names></name> <name><surname>Subramoney</surname> <given-names>A.</given-names></name> <name><surname>Hajek</surname> <given-names>E.</given-names></name> <name><surname>Salaj</surname> <given-names>D.</given-names></name> <name><surname>Legenstein</surname> <given-names>R.</given-names></name><etal/></person-group> (<year>2020</year>). <article-title>A solution to the learning dilemma for recurrent networks of spiking neurons.</article-title> <source><italic>Nat. Commun.</italic></source> <volume>11</volume>:<issue>3625</issue>. <pub-id pub-id-type="doi">10.1038/s41467-020-17236-y</pub-id> <pub-id pub-id-type="pmid">32681001</pub-id></citation></ref>
<ref id="B6"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Benda</surname> <given-names>J.</given-names></name> <name><surname>Herz</surname> <given-names>A. V. M.</given-names></name></person-group> (<year>2003</year>). <article-title>A universal model for spike-frequency adaptation.</article-title> <source><italic>Neural Comput.</italic></source> <volume>15</volume> <fpage>2523</fpage>&#x2013;<lpage>2564</lpage>. <pub-id pub-id-type="doi">10.1162/089976603322385063</pub-id> <pub-id pub-id-type="pmid">14577853</pub-id></citation></ref>
<ref id="B7"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Benjamin</surname> <given-names>B. V.</given-names></name> <name><surname>Gao</surname> <given-names>P.</given-names></name> <name><surname>McQuinn</surname> <given-names>E.</given-names></name> <name><surname>Choudhary</surname> <given-names>S.</given-names></name> <name><surname>Chandrasekaran</surname> <given-names>A. R.</given-names></name> <name><surname>Bussat</surname> <given-names>J. M.</given-names></name><etal/></person-group> (<year>2014</year>). <article-title>Neurogrid: A mixed-analog-digital multichip system for large-scale neural simulations.</article-title> <source><italic>Proc. IEEE</italic></source> <volume>102</volume> <fpage>699</fpage>&#x2013;<lpage>716</lpage>. <pub-id pub-id-type="doi">10.1109/JPROC.2014.2313565</pub-id></citation></ref>
<ref id="B8"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Chu</surname> <given-names>M.</given-names></name> <name><surname>Kim</surname> <given-names>B.</given-names></name> <name><surname>Park</surname> <given-names>S.</given-names></name> <name><surname>Hwang</surname> <given-names>H.</given-names></name> <name><surname>Jeon</surname> <given-names>M.</given-names></name> <name><surname>Lee</surname> <given-names>B. H.</given-names></name><etal/></person-group> (<year>2015</year>). <article-title>Neuromorphic hardware system for visual pattern recognition with memristor array and CMOS neuron.</article-title> <source><italic>IEEE Trans. Ind. Electron.</italic></source> <volume>62</volume> <fpage>2410</fpage>&#x2013;<lpage>2419</lpage>. <pub-id pub-id-type="doi">10.1109/TIE.2014.2356439</pub-id></citation></ref>
<ref id="B9"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Davies</surname> <given-names>M.</given-names></name> <name><surname>Srinivasa</surname> <given-names>N.</given-names></name> <name><surname>Lin</surname> <given-names>T. H.</given-names></name> <name><surname>Chinya</surname> <given-names>G.</given-names></name> <name><surname>Cao</surname> <given-names>Y.</given-names></name> <name><surname>Choday</surname> <given-names>S. H.</given-names></name><etal/></person-group> (<year>2018</year>). <article-title>Loihi: A neuromorphic manycore processor with on-chip learning.</article-title> <source><italic>IEEE Micro</italic></source> <volume>38</volume> <fpage>82</fpage>&#x2013;<lpage>99</lpage>. <pub-id pub-id-type="doi">10.1109/MM.2018.112130359</pub-id></citation></ref>
<ref id="B10"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Dundar</surname> <given-names>A.</given-names></name> <name><surname>Jin</surname> <given-names>J.</given-names></name> <name><surname>Martini</surname> <given-names>B.</given-names></name> <name><surname>Culurciello</surname> <given-names>E.</given-names></name></person-group> (<year>2017</year>). <article-title>Embedded streaming deep neural networks accelerator with applications.</article-title> <source><italic>IEEE Trans. Neural Netw. Learn. Syst.</italic></source> <volume>28</volume> <fpage>1572</fpage>&#x2013;<lpage>1583</lpage>. <pub-id pub-id-type="doi">10.1109/TNNLS.2016.2545298</pub-id> <pub-id pub-id-type="pmid">27071200</pub-id></citation></ref>
<ref id="B11"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Fieres</surname> <given-names>J.</given-names></name> <name><surname>Schemmel</surname> <given-names>J.</given-names></name> <name><surname>Meier</surname> <given-names>K.</given-names></name></person-group> (<year>2008</year>). &#x201C;<article-title>Realizing biological spiking network models in a configurable wafer-scale hardware system</article-title>,&#x201D; in <source><italic>Proceedings of the IEEE international joint conference on neural networks (IEEE world congress on computational intelligence)</italic></source>, <publisher-loc>Hong Kong</publisher-loc>. <pub-id pub-id-type="doi">10.1109/IJCNN.2008.4633916</pub-id></citation></ref>
<ref id="B12"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Hermans</surname> <given-names>M.</given-names></name> <name><surname>Dambre</surname> <given-names>J.</given-names></name> <name><surname>Bienstman</surname> <given-names>P.</given-names></name></person-group> (<year>2015</year>). <article-title>Optoelectronic systems trained with backpropagation through time.</article-title> <source><italic>IEEE Trans. Neural Netw. Learn. Syst.</italic></source> <volume>26</volume> <fpage>1545</fpage>&#x2013;<lpage>1550</lpage>. <pub-id pub-id-type="doi">10.1109/TNNLS.2014.2344002</pub-id> <pub-id pub-id-type="pmid">25137733</pub-id></citation></ref>
<ref id="B13"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Horowitz</surname> <given-names>M.</given-names></name></person-group> (<year>2014</year>). &#x201C;<article-title>1.1 Computing&#x2019;s energy problem (and what we can do about it)</article-title>,&#x201D; in <source><italic>Proceedings of the IEEE international solid-state circuits conference digest of technical papers (ISSCC)</italic></source>, <publisher-loc>San Francisco, CA</publisher-loc>. <pub-id pub-id-type="doi">10.1109/ISSCC.2014.6757323</pub-id></citation></ref>
<ref id="B14"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Kaiser</surname> <given-names>J.</given-names></name> <name><surname>Mostafa</surname> <given-names>H.</given-names></name> <name><surname>Neftci</surname> <given-names>E.</given-names></name></person-group> (<year>2020</year>). <article-title>Synaptic plasticity dynamics for deep continuous local learning (DECOLLE).</article-title> <source><italic>Front. Neurosci.</italic></source> <volume>14</volume>:<issue>424</issue>. <pub-id pub-id-type="doi">10.3389/fnins.2020.00424</pub-id> <pub-id pub-id-type="pmid">32477050</pub-id></citation></ref>
<ref id="B15"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Kalhor</surname> <given-names>E.</given-names></name> <name><surname>Noori</surname> <given-names>A.</given-names></name> <name><surname>Noori</surname> <given-names>G.</given-names></name></person-group> (<year>2021</year>). <article-title>Cancer cells population control in a delayed-model of a leukemic patient using the combination of the eligibility traces algorithm and neural networks.</article-title> <source><italic>Int. J. Mach. Learn. Cybern.</italic></source> <volume>12</volume> <fpage>1973</fpage>&#x2013;<lpage>1992</lpage>. <pub-id pub-id-type="doi">10.1007/s13042-021-01287-8</pub-id></citation></ref>
<ref id="B16"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Kornijcuk</surname> <given-names>V.</given-names></name> <name><surname>Jeong</surname> <given-names>D. S.</given-names></name></person-group> (<year>2019</year>). <article-title>Recent progress in real-time adaptable digital neuromorphic hardware.</article-title> <source><italic>Adv. Intell. Syst.</italic></source> <volume>1</volume>:<issue>1900030</issue>. <pub-id pub-id-type="doi">10.1002/aisy.201900030</pub-id></citation></ref>
<ref id="B17"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Kriegeskorte</surname> <given-names>N.</given-names></name> <name><surname>Mok</surname> <given-names>R. M.</given-names></name></person-group> (<year>2017</year>). <article-title>Building machines that adapt and compute like brains.</article-title> <source><italic>Behav. Brain Sci.</italic></source> <volume>40</volume>:<issue>269</issue>. <pub-id pub-id-type="doi">10.1017/S0140525X17000188</pub-id> <pub-id pub-id-type="pmid">29342705</pub-id></citation></ref>
<ref id="B18"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Larsen</surname> <given-names>R. S.</given-names></name> <name><surname>Sj&#x00F6;str&#x00F6;m</surname> <given-names>P. J.</given-names></name></person-group> (<year>2015</year>). <article-title>Synapse-type-specific plasticity in local circuits.</article-title> <source><italic>Curr. Opin. Neurobiol.</italic></source> <volume>35</volume> <fpage>127</fpage>&#x2013;<lpage>135</lpage>. <pub-id pub-id-type="doi">10.1016/j.conb.2015.08.001</pub-id> <pub-id pub-id-type="pmid">26310110</pub-id></citation></ref>
<ref id="B19"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Lechner</surname> <given-names>M.</given-names></name> <name><surname>Hasani</surname> <given-names>R.</given-names></name> <name><surname>Amini</surname> <given-names>A.</given-names></name> <name><surname>Henzinger</surname> <given-names>T. A.</given-names></name> <name><surname>Rus</surname> <given-names>D.</given-names></name> <name><surname>Grosu</surname> <given-names>R.</given-names></name></person-group> (<year>2020</year>). <article-title>Neural circuit policies enabling auditable autonomy.</article-title> <source><italic>Nat. Mach. Intell.</italic></source> <volume>2</volume> <fpage>642</fpage>&#x2013;<lpage>652</lpage>. <pub-id pub-id-type="doi">10.1038/s42256-020-00237-3</pub-id></citation></ref>
<ref id="B20"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Li</surname> <given-names>S.</given-names></name> <name><surname>Wu</surname> <given-names>C.</given-names></name> <name><surname>Li</surname> <given-names>H.</given-names></name> <name><surname>Li</surname> <given-names>B.</given-names></name> <name><surname>Wang</surname> <given-names>Y.</given-names></name> <name><surname>Qiu</surname> <given-names>Q.</given-names></name></person-group> (<year>2015</year>). &#x201C;<article-title>FPGA acceleration of recurrent neural network based language model</article-title>,&#x201D; in <source><italic>Proceedings of the annual international symposium on field-programmable custom computing machines</italic></source>, <publisher-loc>Vancouver, BC</publisher-loc>. <pub-id pub-id-type="doi">10.1109/FCCM.2015.50</pub-id></citation></ref>
<ref id="B21"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Liu</surname> <given-names>B.</given-names></name> <name><surname>Ye</surname> <given-names>X.</given-names></name> <name><surname>Zhou</surname> <given-names>C.</given-names></name> <name><surname>Liu</surname> <given-names>Y.</given-names></name> <name><surname>Zhang</surname> <given-names>Q.</given-names></name> <name><surname>Dong</surname> <given-names>F.</given-names></name></person-group> (<year>2020</year>). &#x201C;<article-title>The improved algorithm of deep Q-learning network based on eligibility trace</article-title>,&#x201D; in <source><italic>Proceedings of the international conference on control, automation and robotics (ICCAR)</italic></source>, <publisher-loc>Singapore</publisher-loc>. <pub-id pub-id-type="doi">10.1109/ICCAR49639.2020.9108040</pub-id></citation></ref>
<ref id="B22"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Manneschi</surname> <given-names>L.</given-names></name> <name><surname>Vasilaki</surname> <given-names>E.</given-names></name></person-group> (<year>2020</year>). <article-title>An alternative to backpropagation through time.</article-title> <source><italic>Nat. Mach. Intell.</italic></source> <volume>2</volume> <fpage>155</fpage>&#x2013;<lpage>156</lpage>. <pub-id pub-id-type="doi">10.1038/s42256-020-0162-9</pub-id></citation></ref>
<ref id="B23"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Merolla</surname> <given-names>P. A.</given-names></name> <name><surname>Arthur</surname> <given-names>J. V.</given-names></name> <name><surname>Alvarez-Icaza</surname> <given-names>R.</given-names></name> <name><surname>Cassidy</surname> <given-names>A. S.</given-names></name> <name><surname>Sawada</surname> <given-names>J.</given-names></name> <name><surname>Akopyan</surname> <given-names>F.</given-names></name><etal/></person-group> (<year>2014</year>). <article-title>A million spiking-neuron integrated circuit with a scalable communication network and interface.</article-title> <source><italic>Science</italic></source> <volume>345</volume> <fpage>668</fpage>&#x2013;<lpage>673</lpage>. <pub-id pub-id-type="doi">10.1126/science.1254642</pub-id> <pub-id pub-id-type="pmid">25104385</pub-id></citation></ref>
<ref id="B24"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Millner</surname> <given-names>S.</given-names></name> <name><surname>Gr&#x00FC;bl</surname> <given-names>A.</given-names></name> <name><surname>Meier</surname> <given-names>K.</given-names></name> <name><surname>Schemmel</surname> <given-names>J.</given-names></name> <name><surname>Schwartz</surname> <given-names>M. O.</given-names></name></person-group> (<year>2010</year>). <article-title>A VLSI implementation of the adaptive exponential integrate-and-fire neuron model.</article-title> <source><italic>Adv. Neural Inf. Process. Syst.</italic></source> <volume>2</volume> <fpage>1642</fpage>&#x2013;<lpage>1650</lpage>. <pub-id pub-id-type="doi">10.5555/2997046.2997079</pub-id></citation></ref>
<ref id="B25"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Mohemmed</surname> <given-names>A.</given-names></name> <name><surname>Schliebs</surname> <given-names>S.</given-names></name> <name><surname>Matsuda</surname> <given-names>S.</given-names></name> <name><surname>Kasabov</surname> <given-names>N.</given-names></name></person-group> (<year>2012</year>). <article-title>SPAN: Spike pattern association neuron for learning spatio-temporal spike patterns.</article-title> <source><italic>Int. J. Neural Syst.</italic></source> <volume>22</volume> <fpage>1659</fpage>&#x2013;<lpage>1685</lpage>. <pub-id pub-id-type="doi">10.1142/S0129065712500128</pub-id> <pub-id pub-id-type="pmid">22830962</pub-id></citation></ref>
<ref id="B26"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Moore</surname> <given-names>S. W.</given-names></name> <name><surname>Fox</surname> <given-names>P. J.</given-names></name> <name><surname>Marsh</surname> <given-names>S. J.</given-names></name> <name><surname>Markettos</surname> <given-names>A. T.</given-names></name> <name><surname>Mujumdar</surname> <given-names>A.</given-names></name></person-group> (<year>2012</year>). &#x201C;<article-title>Bluehive &#x2013; A field-programable custom computing machine for extreme-scale real-time neural network simulation</article-title>,&#x201D; in <source><italic>Proceedings of the international symposium on field-programmable custom computing machines</italic></source>, <publisher-loc>Toronto, ON</publisher-loc>. <pub-id pub-id-type="doi">10.1109/FCCM.2012.32</pub-id></citation></ref>
<ref id="B27"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Painkras</surname> <given-names>E.</given-names></name> <name><surname>Plana</surname> <given-names>L. A.</given-names></name> <name><surname>Garside</surname> <given-names>J.</given-names></name> <name><surname>Temple</surname> <given-names>S.</given-names></name> <name><surname>Galluppi</surname> <given-names>F.</given-names></name> <name><surname>Patterson</surname> <given-names>C.</given-names></name><etal/></person-group> (<year>2013</year>). <article-title>SpiNNaker: A 1-w 18-core system-on-chip for massively-parallel neural network simulation.</article-title> <source><italic>IEEE J. Solid State Circuits</italic></source> <volume>48</volume> <fpage>1943</fpage>&#x2013;<lpage>1953</lpage>. <pub-id pub-id-type="doi">10.1109/JSSC.2013.2259038</pub-id></citation></ref>
<ref id="B28"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Pani</surname> <given-names>D.</given-names></name> <name><surname>Meloni</surname> <given-names>P.</given-names></name> <name><surname>Tuveri</surname> <given-names>G.</given-names></name> <name><surname>Palumbo</surname> <given-names>F.</given-names></name> <name><surname>Massobrio</surname> <given-names>P.</given-names></name> <name><surname>Raffo</surname> <given-names>L.</given-names></name></person-group> (<year>2017</year>). <article-title>An FPGA platform for real-time simulation of spiking neuronal networks.</article-title> <source><italic>Front. Neurosci.</italic></source> <volume>11</volume>:<issue>90</issue>. <pub-id pub-id-type="doi">10.3389/fnins.2017.00090</pub-id> <pub-id pub-id-type="pmid">28293163</pub-id></citation></ref>
<ref id="B29"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Park</surname> <given-names>J.</given-names></name> <name><surname>Jung</surname> <given-names>S. D.</given-names></name></person-group> (<year>2020</year>). <article-title>Presynaptic spike-driven spike timing-dependent plasticity with address event representation for large-scale neuromorphic systems.</article-title> <source><italic>IEEE Trans. Circuits Syst. I</italic></source> <volume>67</volume> <fpage>1936</fpage>&#x2013;<lpage>1947</lpage>. <pub-id pub-id-type="doi">10.1109/TCSI.2020.2966884</pub-id></citation></ref>
<ref id="B30"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Que</surname> <given-names>Z.</given-names></name> <name><surname>Nakahara</surname> <given-names>H.</given-names></name> <name><surname>Nurvitadhi</surname> <given-names>E.</given-names></name> <name><surname>Boutros</surname> <given-names>A.</given-names></name> <name><surname>Fan</surname> <given-names>H.</given-names></name> <name><surname>Zeng</surname> <given-names>C.</given-names></name><etal/></person-group> (<year>2022</year>). <article-title>Recurrent neural networks with column-wise matrix&#x2013;vector multiplication on FPGAs.</article-title> <source><italic>IEEE Trans. Very Large Scale Integr. (VLSI) Syst.</italic></source> <volume>30</volume> <fpage>227</fpage>&#x2013;<lpage>237</lpage>. <pub-id pub-id-type="doi">10.1109/TVLSI.2021.3135353</pub-id></citation></ref>
<ref id="B31"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Salaj</surname> <given-names>D.</given-names></name> <name><surname>Subramoney</surname> <given-names>A.</given-names></name> <name><surname>Kraisnikovic</surname> <given-names>C.</given-names></name> <name><surname>Bellec</surname> <given-names>G.</given-names></name> <name><surname>Legenstein</surname> <given-names>R.</given-names></name> <name><surname>Maass</surname> <given-names>W.</given-names></name></person-group> (<year>2021</year>). <article-title>Spike frequency adaptation supports network computations on emporally dispersed information.</article-title> <source><italic>ELife</italic></source> <volume>10</volume>:<issue>e65459</issue>. <pub-id pub-id-type="doi">10.7554/eLife.65459</pub-id> <pub-id pub-id-type="pmid">34310281</pub-id></citation></ref>
<ref id="B32"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Sankaran</surname> <given-names>A.</given-names></name> <name><surname>Detterer</surname> <given-names>P.</given-names></name> <name><surname>Kannan</surname> <given-names>K.</given-names></name> <name><surname>Alachiotis</surname> <given-names>N.</given-names></name> <name><surname>Corradi</surname> <given-names>F.</given-names></name></person-group> (<year>2022</year>). &#x201C;<article-title>An event-driven recurrent spiking neural network architecture for efficient inference on FPGA</article-title>,&#x201D; in <source><italic>Proceedings of the international conference on neuromorphic systems</italic></source>, <publisher-loc>Knoxville, TN, United States</publisher-loc>. <pub-id pub-id-type="doi">10.1145/3546790.3546802</pub-id></citation></ref>
<ref id="B33"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Schwenker</surname> <given-names>F.</given-names></name> <name><surname>Trentin</surname> <given-names>E.</given-names></name></person-group> (<year>2014</year>). <article-title>Partially supervised learning for pattern recognition.</article-title> <source><italic>Pattern Recognit. Lett.</italic></source> <volume>37</volume> <fpage>1</fpage>&#x2013;<lpage>3</lpage>. <pub-id pub-id-type="doi">10.1016/j.patrec.2013.10.014</pub-id></citation></ref>
<ref id="B34"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Shama</surname> <given-names>F.</given-names></name> <name><surname>Haghiri</surname> <given-names>S.</given-names></name> <name><surname>Imani</surname> <given-names>M. A.</given-names></name></person-group> (<year>2020</year>). <article-title>FPGA realization of Hodgkin-Huxley neuronal model.</article-title> <source><italic>IEEE Trans. Neural Syst. Rehabil. Eng.</italic></source> <volume>28</volume> <fpage>1059</fpage>&#x2013;<lpage>1068</lpage>. <pub-id pub-id-type="doi">10.1109/TNSRE.2020.2980475</pub-id> <pub-id pub-id-type="pmid">32175866</pub-id></citation></ref>
<ref id="B35"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Sim</surname> <given-names>J.</given-names></name> <name><surname>Joo</surname> <given-names>S.</given-names></name> <name><surname>Jung</surname> <given-names>S. O.</given-names></name></person-group> (<year>2019</year>). &#x201C;<article-title>Comparative analysis of digital STDP learning circuits designed using counter and shift register</article-title>,&#x201D; in <source><italic>Proceedings of the international technical conference on circuits/systems, computers and communications (ITC-CSCC)</italic></source>, <publisher-loc>JeJu</publisher-loc>. <pub-id pub-id-type="doi">10.1109/ITC-CSCC.2019.8793424</pub-id></citation></ref>
<ref id="B36"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Sutton</surname> <given-names>R. S.</given-names></name> <name><surname>Barto</surname> <given-names>A. G.</given-names></name></person-group> (<year>2014</year>). <source><italic>Reinforcement learning an introduction second edition.</italic></source> <publisher-loc>Cambridge, MA</publisher-loc>: <publisher-name>MIT Press</publisher-name>.</citation></ref>
<ref id="B37"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Tang</surname> <given-names>H.</given-names></name> <name><surname>Glass</surname> <given-names>J.</given-names></name></person-group> (<year>2018</year>). &#x201C;<article-title>On training recurrent networks with truncated backpropagation through time in speech recognition</article-title>,&#x201D; in <source><italic>Proceedings of the IEEE spoken language technology workshop</italic></source>, <publisher-loc>Cambridge, MA</publisher-loc>. <pub-id pub-id-type="doi">10.1109/SLT.2018.8639517</pub-id></citation></ref>
<ref id="B38"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Vo</surname> <given-names>H. M.</given-names></name></person-group> (<year>2017</year>). &#x201C;<article-title>Implementing the on-chip backpropagation learning algorithm on FPGA architecture</article-title>,&#x201D; in <source><italic>Proceedings of the international conference on system science &#x0026; engineering</italic></source>, <publisher-loc>Ho Chi Minh City</publisher-loc>. <pub-id pub-id-type="doi">10.1007/s11265-005-4961-3</pub-id></citation></ref>
<ref id="B39"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Wang</surname> <given-names>X.</given-names></name> <name><surname>Liu</surname> <given-names>Y.</given-names></name> <name><surname>Sanchez-Vives</surname> <given-names>M. V.</given-names></name> <name><surname>McCormick</surname> <given-names>D. A.</given-names></name></person-group> (<year>2003</year>). <article-title>Adaptation and temporal decorrelation by single neurons in the primary visual cortex.</article-title> <source><italic>J. Neurophysiol.</italic></source> <volume>89</volume> <fpage>3279</fpage>&#x2013;<lpage>3293</lpage>. <pub-id pub-id-type="doi">10.1152/jn.00242.2003</pub-id> <pub-id pub-id-type="pmid">12649312</pub-id></citation></ref>
<ref id="B40"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Werbos</surname> <given-names>P. J.</given-names></name></person-group> (<year>1990</year>). <article-title>Backpropagation through time: What it does and how to do it.</article-title> <source><italic>Proc. IEEE.</italic></source> <volume>78</volume> <fpage>1550</fpage>&#x2013;<lpage>1560</lpage>. <pub-id pub-id-type="doi">10.1109/5.58337</pub-id></citation></ref>
<ref id="B41"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zhang</surname> <given-names>W.</given-names></name> <name><surname>Li</surname> <given-names>P.</given-names></name></person-group> (<year>2019</year>). &#x201C;<article-title>Spike-train level backpropagation for training deep recurrent spiking neural networks</article-title>,&#x201D; in <source><italic>Proceedings of the neural information processing systems (NeurIPS)</italic></source>, <publisher-loc>Vancouver, Canada</publisher-loc>. <pub-id pub-id-type="doi">10.5555/3454287.3454988</pub-id></citation></ref>
<ref id="B42"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zhou</surname> <given-names>Y.</given-names></name> <name><surname>Ren</surname> <given-names>Y.</given-names></name> <name><surname>Xu</surname> <given-names>E.</given-names></name> <name><surname>Liu</surname> <given-names>S.</given-names></name> <name><surname>Zhou</surname> <given-names>L.</given-names></name></person-group> (<year>2022</year>). <article-title>Supervised semantic segmentation based on deep learning: a survey.</article-title> <source><italic>Multimedia Tools Appl.</italic></source> <volume>81</volume> <fpage>29283</fpage>&#x2013;<lpage>29304</lpage>. <pub-id pub-id-type="doi">10.1007/s11042-022-12842-y</pub-id></citation></ref>
</ref-list>
</back>
</article>