<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article 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.2018.00105</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>Neuromodulated Synaptic Plasticity on the SpiNNaker Neuromorphic System</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name><surname>Mikaitis</surname> <given-names>Mantas</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
<xref ref-type="author-notes" rid="fn001"><sup>&#x0002A;</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/484529/overview"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Pineda Garc&#x000ED;a</surname> <given-names>Garibaldi</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/301272/overview"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Knight</surname> <given-names>James C.</given-names></name>
<xref ref-type="aff" rid="aff2"><sup>2</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/215376/overview"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Furber</surname> <given-names>Steve B.</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/71641/overview"/>
</contrib>
</contrib-group>
<aff id="aff1"><sup>1</sup><institution>Advanced Processor Technologies, Faculty of Science and Engineering, School of Computer Science, University of Manchester</institution>, <addr-line>Manchester</addr-line>, <country>United Kingdom</country></aff>
<aff id="aff2"><sup>2</sup><institution>Centre for Computational Neuroscience and Robotics, School of Engineering and Informatics, University of Sussex</institution>, <addr-line>Brighton</addr-line>, <country>United Kingdom</country></aff>
<author-notes>
<fn fn-type="edited-by"><p>Edited by: Emre O. Neftci, University of California, Irvine, United States</p></fn>
<fn fn-type="edited-by"><p>Reviewed by: Doo Seok Jeong, Korea Institute of Science and Technology, South Korea; Elisabetta Chicca, Bielefeld University, Germany</p></fn>
<fn fn-type="corresp" id="fn001"><p>&#x0002A;Correspondence: Mantas Mikaitis <email>mantas.mikaitis&#x00040;manchester.ac.uk</email></p></fn>
<fn fn-type="other" id="fn002"><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>27</day>
<month>02</month>
<year>2018</year>
</pub-date>
<pub-date pub-type="collection">
<year>2018</year>
</pub-date>
<volume>12</volume>
<elocation-id>105</elocation-id>
<history>
<date date-type="received">
<day>01</day>
<month>11</month>
<year>2017</year>
</date>
<date date-type="accepted">
<day>12</day>
<month>02</month>
<year>2018</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#x000A9; 2018 Mikaitis, Pineda Garc&#x000ED;a, Knight and Furber.</copyright-statement>
<copyright-year>2018</copyright-year>
<copyright-holder>Mikaitis, Pineda Garc&#x000ED;a, Knight and Furber</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 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><p>SpiNNaker is a digital neuromorphic architecture, designed specifically for the low power simulation of large-scale spiking neural networks at speeds close to biological real-time. Unlike other neuromorphic systems, SpiNNaker allows users to develop their own neuron and synapse models as well as specify arbitrary connectivity. As a result SpiNNaker has proved to be a powerful tool for studying different neuron models as well as synaptic plasticity&#x02014;believed to be one of the main mechanisms behind learning and memory in the brain. A number of Spike-Timing-Dependent-Plasticity(STDP) rules have already been implemented on SpiNNaker and have been shown to be capable of solving various learning tasks in real-time. However, while STDP is an important biological theory of learning, it is a form of Hebbian or unsupervised learning and therefore does not explain behaviors that depend on feedback from the environment. Instead, learning rules based on neuromodulated STDP (three-factor learning rules) have been shown to be capable of solving reinforcement learning tasks in a biologically plausible manner. In this paper we demonstrate for the first time how a model of three-factor STDP, with the third-factor representing spikes from dopaminergic neurons, can be implemented on the SpiNNaker neuromorphic system. Using this learning rule we first show how reward and punishment signals can be delivered to a single synapse before going on to demonstrate it in a larger network which solves the credit assignment problem in a Pavlovian conditioning experiment. Because of its extra complexity, we find that our three-factor learning rule requires approximately 2&#x000D7; as much processing time as the existing SpiNNaker STDP learning rules. However, we show that it is still possible to run our Pavlovian conditioning model with up to 1 &#x000D7; 10<sup>4</sup> neurons in real-time, opening up new research opportunities for modeling behavioral learning on SpiNNaker.</p></abstract>
<kwd-group>
<kwd>neuromodulation</kwd>
<kwd>STDP</kwd>
<kwd>SpiNNaker</kwd>
<kwd>three-factor learning rules</kwd>
<kwd>reinforcement learning</kwd>
<kwd>behavioral learning</kwd>
</kwd-group>
<counts>
<fig-count count="8"/>
<table-count count="5"/>
<equation-count count="10"/>
<ref-count count="62"/>
<page-count count="13"/>
<word-count count="9398"/>
</counts>
</article-meta>
</front>
<body>
<sec sec-type="intro" id="s1">
<title>1. Introduction</title>
<p>One of the earliest and most famous hypotheses on when synaptic plasticity occurs came from Donald Hebb, who postulated (Hebb, <xref ref-type="bibr" rid="B25">1949</xref>):</p>
<disp-quote><p>&#x0201C;When an axon of cell A is near enough to excite a cell B and repeatedly or persistently takes part in firing it, some growth process or metabolic change takes place in one or both cells such that A&#x00027;s efficiency, as one of the cells firing B, is increased.&#x0201D;</p></disp-quote>
<p>In the context of the changing strengths of existing synaptic connections, rather than the formation of new synapses, Hebb&#x00027;s postulate suggests that connections between neurons whose activity is causally related will be strengthened. Neurons which persistently fire at the same time are likely to do so because they respond to similar or related stimuli.</p>
<p>Using improved experimental techniques that became available in the 1990s, Markram et al. (<xref ref-type="bibr" rid="B36">1997</xref>) showed that the magnitude of the changes in synaptic strength caused by Hebbian learning were related to the timing of pre- and post-synaptic spikes. The relationship between the magnitude of these changes and the relative timing of the pre- and post-synaptic spikes became known as Spike-Timing Dependent Plasticity (STDP) and the data recorded by Bi and Poo (<xref ref-type="bibr" rid="B3">1998</xref>) suggests that it reinforces causality between the firing of the pre- and post-synaptic neurons. When a pre-synaptic spike arrives before a post-synaptic spike is emitted the synapse is potentiated (strengthened). However, if a pre-synaptic spikes arrive after a post-synaptic spike has been emitted, the synapse is depressed (weakened). In the ensuing years STDP has been widely used to solve many tasks using biologically plausible spiking neural networks (Gerstner et al., <xref ref-type="bibr" rid="B23">1996</xref>; Song et al., <xref ref-type="bibr" rid="B56">2000</xref>; Davison and Fr&#x000E9;gnac, <xref ref-type="bibr" rid="B11">2006</xref>).</p>
<p>Many extensions have been proposed to STDP such as the inclusion of additional spikes (Pfister and Gerstner, <xref ref-type="bibr" rid="B47">2006</xref>) and the post-synaptic voltage (Brader et al., <xref ref-type="bibr" rid="B4">2007</xref>; Clopath et al., <xref ref-type="bibr" rid="B9">2010</xref>). However, while these extensions may improve the ability of STDP to capture the statistical relationship between pre- and post-synaptic activity, Hebbian learning still provides no means of controlling <italic>what</italic> to learn. For example, if we consider a two layer feed-forward network in which an output neuron is stimulated at the same time by two different input neurons, Hebbian learning will strengthen the synapses between both input neurons and the output. However, Hebbian learning rules provide no synapse-level means of associating reward or punishment; surprise or novelty; or any other input that could allow the system to learn how to behave in order to maximize reward. While circuit-level approaches such as attractor networks, built using only Hebbian learning rules (Amit, <xref ref-type="bibr" rid="B1">1992</xref>; Giudice et al., <xref ref-type="bibr" rid="B24">2003</xref>; Klampfl and Maass, <xref ref-type="bibr" rid="B32">2013</xref>), can react differently to known and novel inputs, Hebbian learning rules cannot do this at a synaptic level. Dopamine (DA) has been identified as a potential reward signal in the brain (Schultz, <xref ref-type="bibr" rid="B52">2000</xref>) and has been shown to control synaptic plasticity in a large number of ways (Shen et al., <xref ref-type="bibr" rid="B53">2008</xref>). Also see Pawlak (<xref ref-type="bibr" rid="B45">2010</xref>) for a detailed review. On this basis Izhikevich (<xref ref-type="bibr" rid="B28">2007</xref>), Florian (<xref ref-type="bibr" rid="B14">2007</xref>), and Fr&#x000E9;maux and Gerstner (<xref ref-type="bibr" rid="B17">2016</xref>) all developed learning rules based on <italic>neuromodulation</italic> which extend Hebbian learning to include reinforcement from neuromodulators such as dopamine.</p>
<p>SpiNNaker is a digital neuromorphic architecture designed for simulating spiking neural networks (Furber et al., <xref ref-type="bibr" rid="B19">2014</xref>). SpiNNaker systems consist of varying numbers of custom SpiNNaker chips&#x02014;each of which contains 18 simple, integer-only ARM cores which are connected through a network-on-chip and can communicate with their six neighboring chips using a multicast router. Each ARM core is typically programmed to simulate a number of neurons and communicates with the neurons simulated on other cores using spike events. Being able to define the neuron and synapse models in software makes SpiNNaker very flexible and has enabled a wide range of neuron models and integration methods (Hopkins and Furber, <xref ref-type="bibr" rid="B27">2015</xref>) as well as synaptic plasticity algorithms (Jin et al., <xref ref-type="bibr" rid="B30">2010</xref>; Galluppi et al., <xref ref-type="bibr" rid="B20">2015</xref>; Lagorce et al., <xref ref-type="bibr" rid="B35">2015</xref>; Knight et al., <xref ref-type="bibr" rid="B34">2016</xref>) to been developed. Most recently Knight et al. (<xref ref-type="bibr" rid="B34">2016</xref>) developed a general framework, based on the algorithms developed by Morrison et al. (<xref ref-type="bibr" rid="B38">2007</xref>), for efficiently implementing STDP learning rules on SpiNNaker. Using this framework, Knight et al. successfully simulated large-scale models with tens of millions of plastic synapses on SpiNNaker.</p>
<p>Some progress has been made on simulating neuromodulated STDP on other neuromorphic hardware (Friedmann et al., <xref ref-type="bibr" rid="B15">2013</xref>, <xref ref-type="bibr" rid="B16">2017</xref>), but no large-scale networks using these learning rules have been demonstrated. In their technical report, Nichols et al. (<xref ref-type="bibr" rid="B40">2017</xref>) present the implementation of a three-factor learning rule for learning spatio-temporal patterns on SpiNNaker. However, in their learning rule, the third factor represents an attention signal&#x02014;used to demarcate individual spatio-temporal patterns&#x02014;rather than a biologically-inspired reinforcement signal. Additionally they only demonstrated this learning rule on small networks with up to 4 neurons and 1,000 input synapses.</p>
<p>While the methods we present in this paper could be used to simulate various three-factor learning rules on SpiNNaker, we demonstrate it in the context of the rule proposed by Izhikevich (<xref ref-type="bibr" rid="B28">2007</xref>), which we introduce in section 2.2. In section 2.1 we briefly outline the algorithm used to simulate STDP on SpiNNaker before, in section 2.3, we present an extended version of this algorithm which incorporates reward signals. In order to illustrate the functioning of this new algorithm, in section 3.1, we present the results of some simple network simulations which use reward and punishment signals to modulate learning. In section 3.2 we reproduce the classical conditioning experiment described by Izhikevich (<xref ref-type="bibr" rid="B28">2007</xref>) and use this to demonstrate both how neuromodulated STDP can be used to solve the credit assignment problem and how SpiNNaker can be used to simulate larger models incorporating neuromodulated STDP. Finally, in section 3.3, we measure the performance of our three-factor learning implementation&#x02014;comparing the overhead with existing STDP models running on SpiNNaker and the run-time of the classical conditioning experiment with simulations running on GPU hardware with comparable energy requirements.</p>
</sec>
<sec sec-type="materials and methods" id="s2">
<title>2. Materials and methods</title>
<sec>
<title>2.1. Simulating STDP on SpiNNaker</title>
<p>STDP is simulated on SpiNNaker using a <italic>trace-based</italic> approach (Song et al., <xref ref-type="bibr" rid="B56">2000</xref>; Morrison et al., <xref ref-type="bibr" rid="B39">2008</xref>) where each synapse records pre- and post-synaptic neural activity into local trace variables (<italic>s</italic><sub><italic>i</italic></sub> and <italic>s</italic><sub><italic>j</italic></sub>, respectively) with the following dynamics:</p>
<disp-formula id="E1"><label>(1)</label><mml:math id="M1"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mfrac><mml:mrow><mml:mi>d</mml:mi><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mfrac><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow></mml:mfrac><mml:mo>&#x0002B;</mml:mo><mml:mstyle displaystyle="true"><mml:munder class="msub"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>f</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:munder></mml:mstyle><mml:mi>&#x003B4;</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:msup><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>f</mml:mi></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where spikes at times <italic>t</italic><sup><italic>f</italic></sup> &#x02013; described by Dirac delta functions &#x003B4;(<italic>t</italic>&#x02212;<italic>t</italic><sup><italic>f</italic></sup>)&#x02014;increase the value of the trace which decays exponentially with a time constant &#x003C4;. The time constants of these traces are typically set to match the shape of the desired STDP function.</p>
<p>Biological neurons have on the order of 10<sup>3</sup>&#x02013;10<sup>4</sup> afferent synapses, so updating all of these every time step would be extremely computationally intensive. Instead, as individual synapses only receive spikes at relatively low rates, they can be updated only when they transfer a spike as long as their new state can be calculated from their previous state.</p>
<p>Using this event-driven approach on SpiNNaker is also advantageous as, due to their sheer number, synapses need to be stored in the off-chip SDRAM which has insufficient bandwidth for every synapse&#x00027;s parameters to be retrieved every simulation time step (Painkras et al., <xref ref-type="bibr" rid="B42">2013</xref>). Instead, synapses are updated only when spike packets arrive at a core and the row of the connectivity matrix associated with the pre-synaptic neuron is fetched from the off-chip SDRAM using a DMA transfer. Each row of the connectivity matrix describes the synapses going from a pre-synaptic neuron (the source of the spike) to a number of post-synaptic neurons.</p>
<p>Figure <xref ref-type="fig" rid="F1">1</xref> illustrates how pre- and post-synaptic trace variables are sampled to compute STDP weight updates. This process is implemented using the <italic>processRow()</italic> function shown in Algorithm 1 which is called when a pre-synaptic spike arrives and the corresponding synaptic matrix row has been transferred into local memory. This algorithm applies all of the STDP updates that have occurred since the last pre-synaptic spike was received (between each pair of dashed blue vertical lines in Figure <xref ref-type="fig" rid="F1">1</xref>) in a similar manner to that proposed by Morrison et al. (<xref ref-type="bibr" rid="B38">2007</xref>). Firstly the spike times (<italic>t</italic><sub><italic>j</italic></sub>) and associated trace values (<italic>s</italic><sub><italic>j</italic></sub>) for each post-synaptic neuron connected by the synaptic row are retrieved from the post-synaptic history structure (located in the core&#x00027;s local memory). Then the effect of each post-synaptic spike (dashed green vertical lines in Figure <xref ref-type="fig" rid="F1">1</xref>) is applied to the synaptic weight using the <italic>applyPostSpike</italic> function. The effect of the pre-synaptic spike which triggered this update is then applied to the synaptic weight using the <italic>applyPreSpike</italic> function. Finally, the fully-updated weight is applied to the post-synaptic neural input (via a delay ring-buffer structure) using the <italic>addWeightToRingBuffer</italic> function. Once all of the synapses have been updated, the last pre-synaptic spike time (<italic>t</italic><sub><italic>old</italic></sub>) and associated trace value (<italic>s</italic><sub><italic>i</italic></sub>) stored in the synaptic row are updated.</p>
<fig id="F1" position="float">
<label>Figure 1</label>
<caption><p>Calculation of weight updates using pair-based STDP traces. Pre- and post-synaptic traces reflect spiking activity of pre- and post-synaptic neurons. Potentiation is calculated at each post-synaptic spike time by sampling the pre-synaptic trace (green circle) to obtain a measure of recent pre-synaptic activity. Depression is calculated at each pre-synaptic spike time by sampling the post-synaptic trace (blue circle) to obtain a measure of recent post-synaptic activity. Weight dependence is additive. After Morrison et al. (<xref ref-type="bibr" rid="B39">2008</xref>).</p></caption>
<graphic xlink:href="fnins-12-00105-g0001.tif"/>
</fig>
<table-wrap position="float">
<label>Algorithm 1</label>
<caption><p>Algorithmic implementation of STDP (After Knight et al., <xref ref-type="bibr" rid="B34">2016</xref>).</p></caption>
<table frame="hsides" rules="groups">
<tbody>
<tr><td align="left" valign="top">&#x000A0;<bold>function</bold> processRow(<italic>t</italic>)</td></tr>
<tr><td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; <bold>for all</bold> <italic>j</italic> <bold>in</bold> <italic>postSynapticNeurons</italic> <bold>do</bold></td></tr>
<tr><td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; <italic>history</italic> &#x02190; <italic>getHistoryEntries</italic>(<italic>j, t</italic><sub><italic>old</italic></sub>, <italic>t</italic>)</td></tr>
<tr><td align="left" valign="top">&#x000A0;</td></tr>
<tr><td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; <bold>for all</bold> (<italic>t</italic><sub><italic>j</italic></sub>, <italic>s</italic><sub><italic>j</italic></sub>) <bold>in</bold> <italic>history</italic> <bold>do</bold></td></tr>
<tr><td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; <italic>w</italic><sub><italic>ij</italic></sub> &#x02190; <italic>applyPostSpike</italic>(<italic>w</italic><sub><italic>ij</italic></sub>, <italic>t</italic><sub><italic>j</italic></sub>, <italic>t</italic><sub><italic>old</italic></sub>, <italic>s</italic><sub><italic>i</italic></sub>)</td></tr>
<tr><td align="left" valign="top">&#x000A0;</td></tr>
<tr><td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; (<italic>t</italic><sub><italic>j</italic></sub>, <italic>y</italic><sub><italic>j</italic></sub>)&#x02190;<italic>getLastHistoryEntry</italic>(<italic>t</italic>)</td></tr>
<tr><td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; <italic>w</italic><sub><italic>ij</italic></sub> &#x02190; <italic>applyPreSpike</italic>(<italic>w</italic><sub><italic>ij</italic></sub>, <italic>t, t</italic><sub><italic>j</italic></sub>, <italic>s</italic><sub><italic>j</italic></sub>)</td></tr>
<tr><td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; <italic>addWeightToRingBuffer</italic>(<italic>w</italic><sub><italic>ij</italic></sub>, <italic>j</italic>)</td></tr>
<tr><td align="left" valign="top">&#x000A0;</td></tr>
<tr><td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; <italic>s</italic><sub><italic>i</italic></sub> &#x02190; <italic>addPreSpike</italic>(<italic>s</italic><sub><italic>i</italic></sub>, <italic>t, t</italic><sub><italic>old</italic></sub>)</td></tr>
<tr><td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; <italic>t</italic><sub><italic>old</italic></sub> &#x02190; <italic>t</italic></td></tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec>
<title>2.2. Neuromodulated-STDP model</title>
<p>Izhikevich explains that dopamine-modulated STDP has a built-in instrumental conditioning property, i.e., the associations between cues, actions and rewards are learned automatically by reinforcing the firing patterns (networks of synapses) responsible, even when the firings of those patterns are followed by a delayed reward or masked by other network activity. To achieve this each synapse has an <italic>eligibility trace C</italic>:</p>
<disp-formula id="E2"><label>(2)</label><mml:math id="M2"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mfrac><mml:mrow><mml:mi>d</mml:mi><mml:mi>C</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mfrac><mml:mrow><mml:mi>C</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mo>&#x0002B;</mml:mo><mml:mi>S</mml:mi><mml:mi>T</mml:mi><mml:mi>D</mml:mi><mml:mi>P</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>&#x00394;</mml:mi><mml:mi>t</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mi>&#x003B4;</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mi>r</mml:mi><mml:mi>e</mml:mi><mml:mo>/</mml:mo><mml:mi>p</mml:mi><mml:mi>o</mml:mi><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where &#x003C4;<sub><italic>c</italic></sub> is the decay time constant of the eligibility trace and <italic>STDP</italic>(&#x00394;<italic>t</italic>) represents the magnitude of the change to make to the eligibility trace in response to a pair of pre- and post-synaptic spikes with temporal difference &#x00394;<italic>t</italic> &#x0003D; <italic>t</italic><sub><italic>post</italic></sub> &#x02212; <italic>t</italic><sub><italic>pre</italic></sub>. Finally, &#x003B4;(<italic>t</italic> &#x02212; <italic>t</italic><sub><italic>pre</italic>/<italic>post</italic></sub>) is a Dirac delta function used to apply the effect of STDP to the trace at the times of pre- or post-synaptic spikes.</p>
<p>The concentration of Dopamine is described by a variable <italic>D</italic>:</p>
<disp-formula id="E3"><label>(3)</label><mml:math id="M3"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mfrac><mml:mrow><mml:mi>d</mml:mi><mml:mi>D</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mfrac><mml:mrow><mml:mi>D</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mo>&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi>D</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msub><mml:mstyle displaystyle="true"><mml:munder class="msub"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:msubsup><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mi>f</mml:mi></mml:mrow></mml:msubsup></mml:mrow></mml:munder></mml:mstyle><mml:mi>&#x003B4;</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:msubsup><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mi>f</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where &#x003C4;<sub><italic>d</italic></sub> is the time constant of dopamine re-absorption, <italic>D</italic><sub><italic>c</italic></sub> is the increase in dopamine concentration caused by each incoming dopaminergic spike and <inline-formula><mml:math id="M4"><mml:msubsup><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mi>f</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> are the times of these spikes.</p>
<p>Equations (2, 3) are then combined to calculate the change in synaptic strength <italic>W</italic>:</p>
<disp-formula id="E4"><label>(4)</label><mml:math id="M5"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mfrac><mml:mrow><mml:mi>d</mml:mi><mml:mi>W</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mi>C</mml:mi><mml:mi>D</mml:mi><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>As discussed in section 1, when a post-synaptic spike arrives very shortly after a pre-synaptic spike, a standard STDP rule would immediately potentiate the synaptic strength. However, as Figure <xref ref-type="fig" rid="F2">2</xref> illustrates, when using the three-factor STDP rule, this potentiation would instead be applied to the eligibility trace. Because changes to the synaptic strength are gated by dopamine concentration <italic>D</italic> (Equation 4), changes are only made to the synaptic strength if <italic>D</italic> &#x02260; 0. Furthermore, if the eligibility trace has decayed back to 0 before any dopaminergic spikes arrive, the synaptic strength will not be changed.</p>
<fig id="F2" position="float">
<label>Figure 2</label>
<caption><p>Using eligibility trace <italic>C</italic> to gate STDP with dopamine <italic>D</italic>. After Izhikevich (<xref ref-type="bibr" rid="B28">2007</xref>).</p></caption>
<graphic xlink:href="fnins-12-00105-g0002.tif"/>
</fig>
</sec>
<sec>
<title>2.3. Simulating neuromodulated-STDP on SpiNNaker</title>
<p>Because Equation (4) describes a continuous weight change, it cannot be directly evaluated within the event-driven STDP algorithm described in section 2.1. However, in this section we will show how it can be transformed into a form suitable for event-driven evaluation. Firstly we consider the <italic>C</italic> and <italic>D</italic> traces (Equations 2, 3). Similarly to the pre- and post-synaptic STDP traces discussed in section 2.1, between the times at which spikes occur, both of these equations are simple first-order linear ODEs. Therefore, we can write down the following equations to update <italic>C</italic> and <italic>D</italic>:</p>
<disp-formula id="E5"><label>(5)</label><mml:math id="M6"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>C</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi>C</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mi>a</mml:mi><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:msup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mfrac><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:msubsup><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mi>a</mml:mi><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mrow></mml:msup><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="E6"><label>(6)</label><mml:math id="M7"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>D</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi>D</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mi>a</mml:mi><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:msup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mfrac><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:msubsup><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mi>a</mml:mi><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mrow></mml:msup><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where <inline-formula><mml:math id="M8"><mml:msubsup><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mi>a</mml:mi><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> is the time of the last eligibility trace update (when either a pre- or post-synaptic spike caused an STDP update) and <inline-formula><mml:math id="M9"><mml:msubsup><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mi>a</mml:mi><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> is the time of the last dopamine trace update (occurs when a dopamine spike is received). So that each (post-synaptic) neuron can be independently targeted by dopaminergic spikes, the dopamine trace values (<italic>D</italic>) are stored in the post-synaptic history structure along with the post-synaptic traces (<italic>s</italic><sub><italic>j</italic></sub>) and event times (<italic>t</italic><sub><italic>j</italic></sub>) in a similar manner to the &#x0201C;target spikes&#x0201D; in the learning rule presented by Nichols et al. (<xref ref-type="bibr" rid="B40">2017</xref>). However, because the eligibility traces (<italic>C</italic>) are individual to each synapse, they must be stored alongside the synaptic weights (<italic>w</italic><sub><italic>ij</italic></sub>) in SDRAM and can thus only be updated within the <italic>processRow</italic> function when have been transferred into local memory. We can now substitute Equations (5, 6) into Equation (4) to obtain the weight change dynamics:</p>
<disp-formula id="E7"><label>(7)</label><mml:math id="M10"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mfrac><mml:mrow><mml:mi>d</mml:mi><mml:msub><mml:mrow><mml:mi>w</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mi>C</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mi>a</mml:mi><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mi>D</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mi>a</mml:mi><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:msup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mfrac><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:msubsup><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mi>a</mml:mi><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mfrac><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:msubsup><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mi>a</mml:mi><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mrow></mml:msup><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Now, by integrating the preceding equation, the total weight change since the last update at <italic>t</italic><sub><italic>last</italic></sub> can be found:</p>
<disp-formula id="E8"><label>(8)</label><mml:math id="M11"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mi>&#x00394;</mml:mi><mml:msub><mml:mrow><mml:mi>w</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi>C</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mi>a</mml:mi><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mi>D</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mi>a</mml:mi><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mstyle displaystyle="true"><mml:msubsup><mml:mrow><mml:mo>&#x0222B;</mml:mo></mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mi>a</mml:mi><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mstyle><mml:msup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mfrac><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:msubsup><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mi>a</mml:mi><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mfrac><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:msubsup><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mi>a</mml:mi><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mrow></mml:msup><mml:mi>d</mml:mi><mml:mi>t</mml:mi><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="E9"><label>(9)</label><mml:math id="M12"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mi>&#x00394;</mml:mi><mml:msub><mml:mrow><mml:mi>w</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mi>C</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mi>a</mml:mi><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mi>D</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mi>a</mml:mi><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mrow><mml:mo stretchy="true">(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="true">)</mml:mo></mml:mrow></mml:mrow></mml:mfrac><mml:mrow><mml:mo stretchy="true">(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mfrac><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:msubsup><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mi>a</mml:mi><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mfrac><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:msubsup><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mi>a</mml:mi><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mrow></mml:msup><mml:mo>-</mml:mo><mml:msup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mfrac><mml:mrow><mml:msup><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mi>a</mml:mi><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msup><mml:mo>-</mml:mo><mml:msubsup><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mi>a</mml:mi><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mfrac><mml:mrow><mml:msup><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mi>a</mml:mi><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msup><mml:mo>-</mml:mo><mml:msubsup><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mi>a</mml:mi><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="true">)</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>The final update Algorithm 1 makes to each synaptic weight is to apply the effect of the pre-synaptic spike at time <italic>t</italic>. Therefore, if we extend Algorithm 1 to update the eligibility trace, <italic>t</italic><sub><italic>old</italic></sub> will always represent the last time <italic>C</italic> was updated i.e., <inline-formula><mml:math id="M13"><mml:msup><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mi>a</mml:mi><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:msubsup><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mi>a</mml:mi><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>o</mml:mi><mml:mi>l</mml:mi><mml:mi>d</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>. Furthermore, before the inner loop over the post-synaptic events occurs, we can decay the last dopamine trace value to <italic>t</italic><sub><italic>old</italic></sub> using Equation (6). Therefore, <inline-formula><mml:math id="M14"><mml:msup><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mi>a</mml:mi><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:msubsup><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mi>a</mml:mi><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mi>a</mml:mi><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>o</mml:mi><mml:mi>l</mml:mi><mml:mi>d</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>, meaning that Equation (9) can be simplified to:</p>
<disp-formula id="E10"><label>(10)</label><mml:math id="M15"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mi>&#x00394;</mml:mi><mml:msub><mml:mrow><mml:mi>w</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mi>C</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>o</mml:mi><mml:mi>l</mml:mi><mml:mi>d</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mi>D</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>o</mml:mi><mml:mi>l</mml:mi><mml:mi>d</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mrow><mml:mo stretchy="true">(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="true">)</mml:mo></mml:mrow></mml:mrow></mml:mfrac><mml:mrow><mml:mo stretchy="true">(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mfrac><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>o</mml:mi><mml:mi>l</mml:mi><mml:mi>d</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mfrac><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>o</mml:mi><mml:mi>l</mml:mi><mml:mi>d</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mrow></mml:msup><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="true">)</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Algorithm 2 shows the extended, three-factor STDP algorithm. The <italic>applyPostSpike</italic> and <italic>applyPreSpike</italic> functions used to directly update the synaptic weight in Algorithm 1 are now instead used to update the eligibility trace (<italic>C</italic><sub><italic>ij</italic></sub>). When pre- or post-synaptic events are applied, Equation (5) is used to decay the eligibility trace (<italic>C</italic><sub><italic>ij</italic></sub>) and Equation (10) is used to update the synaptic weight (<italic>w</italic><sub><italic>ij</italic></sub>). Finally, as previously discussed, Equation (6) is used to obtain the decayed <italic>D</italic><sub><italic>j</italic></sub> trace values at <italic>t</italic><sub><italic>old</italic></sub> and <italic>t</italic>.</p>
<table-wrap position="float">
<label>Algorithm 2</label>
<caption><p>Algorithmic implementation of three-factor STDP.</p></caption>
<table frame="hsides" rules="groups">
<tbody>
<tr><td align="left" valign="top">&#x000A0; <bold>function</bold> processRow(<italic>t</italic>)</td></tr>
<tr><td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; <bold>for all</bold> <italic>j</italic> <bold>in</bold> <italic>postSynapticNeurons</italic> <bold>do</bold></td></tr>
<tr><td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; <italic>history</italic> &#x02190; <italic>getHistoryEntries</italic>(<italic>j, t</italic><sub><italic>old</italic></sub>, <italic>t</italic>)</td></tr>
<tr><td align="left" valign="top">&#x000A0; (<italic>t</italic><sub><italic>prev</italic></sub>, <italic>s</italic><sub><italic>prev</italic></sub>, <italic>D</italic><sub><italic>prev</italic></sub>, <italic>type</italic><sub><italic>prev</italic></sub>) &#x02190; <italic>getPrecedingHistoryEntry</italic>(<italic>t</italic>)</td></tr>
<tr><td align="left" valign="top">&#x000A0; <italic>t</italic><sub><italic>c</italic></sub> &#x02190; <italic>t</italic><sub><italic>old</italic></sub></td></tr>
<tr><td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; <inline-formula><mml:math id="M100"><mml:msub><mml:mi>D</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>&#x02190;</mml:mo><mml:msub><mml:mi>D</mml:mi><mml:mrow><mml:mi>p</mml:mi><mml:mi>r</mml:mi><mml:mi>e</mml:mi><mml:mi>v</mml:mi></mml:mrow></mml:msub><mml:mi>e</mml:mi><mml:mi>x</mml:mi><mml:mi>p</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>t</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mi>t</mml:mi><mml:mrow><mml:mi>p</mml:mi><mml:mi>r</mml:mi><mml:mi>e</mml:mi><mml:mi>v</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>&#x003C4;</mml:mi><mml:mi>D</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula></td></tr>
<tr><td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; <bold>for all</bold> (<italic>t</italic><sub><italic>j</italic></sub>, <italic>s</italic><sub><italic>j</italic></sub>, <italic>D</italic><sub><italic>j</italic></sub>, <italic>type</italic><sub><italic>j</italic></sub>) <bold>in</bold> <italic>history</italic> <bold>do</bold></td></tr>
<tr><td align="left" valign="top">&#x000A0; <inline-formula><mml:math id="M101"><mml:msub><mml:mi>w</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02190;</mml:mo><mml:msub><mml:mi>w</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mi>D</mml:mi><mml:mi>c</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mfrac><mml:mn>1</mml:mn><mml:mrow><mml:msub><mml:mi>&#x003C4;</mml:mi><mml:mi>C</mml:mi></mml:msub></mml:mrow></mml:mfrac><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mrow><mml:msub><mml:mi>&#x003C4;</mml:mi><mml:mi>D</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mfrac><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mi>e</mml:mi><mml:mi>x</mml:mi><mml:mi>p</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mfrac><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>t</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mi>t</mml:mi><mml:mi>c</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>&#x003C4;</mml:mi><mml:mi>C</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mi>e</mml:mi><mml:mi>x</mml:mi><mml:mi>p</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mfrac><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>t</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mi>t</mml:mi><mml:mi>c</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>&#x003C4;</mml:mi><mml:mi>D</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula></td></tr>
<tr><td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; <inline-formula><mml:math id="M18"><mml:msub><mml:mrow><mml:mi>C</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02190;</mml:mo><mml:msub><mml:mrow><mml:mi>C</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mi>e</mml:mi><mml:mi>x</mml:mi><mml:mi>p</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mo>-</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>C</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td></tr>
<tr><td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; <bold>if</bold> <italic>type</italic><sub><italic>j</italic></sub> <bold>is not</bold> <italic>dopamine</italic> <bold>then</bold></td></tr>
<tr><td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; <italic>C</italic><sub><italic>ij</italic></sub> &#x02190; <italic>applyPostSpike</italic>(<italic>C</italic><sub><italic>ij</italic></sub>, <italic>t</italic><sub><italic>j</italic></sub>, <italic>t</italic><sub><italic>old</italic></sub>, <italic>s</italic><sub><italic>i</italic></sub>)</td></tr>
<tr><td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0; <italic>D<sub>c</sub></italic> &#x02190; <italic>D</italic><sub><italic>j</italic></sub></td></tr>
<tr><td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0; <italic>t</italic><sub><italic>c</italic></sub> &#x02190; <italic>t</italic><sub><italic>j</italic></sub></td></tr>
<tr><td align="left" valign="top">&#x000A0;</td></tr>
<tr><td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0; (<italic>t</italic><sub><italic>j</italic></sub>, <italic>s</italic><sub><italic>j</italic></sub>, <italic>D</italic><sub><italic>j</italic></sub>, <italic>type</italic><sub><italic>j</italic></sub>)&#x02190;<italic>getLastHistoryEntry</italic>(<italic>t</italic>)</td></tr>
<tr><td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0; <inline-formula><mml:math id="M102"><mml:msub><mml:mi>w</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02190;</mml:mo><mml:msub><mml:mi>w</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mi>D</mml:mi><mml:mi>c</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mfrac><mml:mn>1</mml:mn><mml:mrow><mml:msub><mml:mi>&#x003C4;</mml:mi><mml:mi>C</mml:mi></mml:msub></mml:mrow></mml:mfrac><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mrow><mml:msub><mml:mi>&#x003C4;</mml:mi><mml:mi>D</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mfrac><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mi>e</mml:mi><mml:mi>x</mml:mi><mml:mi>p</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mfrac><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:mi>t</mml:mi><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mi>t</mml:mi><mml:mi>c</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>&#x003C4;</mml:mi><mml:mi>C</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mi>e</mml:mi><mml:mi>x</mml:mi><mml:mi>p</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mfrac><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:mi>t</mml:mi><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mi>t</mml:mi><mml:mi>c</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>&#x003C4;</mml:mi><mml:mi>D</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula></td></tr>
<tr><td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0; <inline-formula><mml:math id="M20"><mml:msub><mml:mrow><mml:mi>C</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02190;</mml:mo><mml:msub><mml:mrow><mml:mi>C</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mi>e</mml:mi><mml:mi>x</mml:mi><mml:mi>p</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mo>-</mml:mo><mml:mfrac><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>C</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td></tr>
<tr><td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0; <italic>C</italic><sub><italic>ij</italic></sub> &#x02190; <italic>applyPreSpike</italic>(<italic>C</italic><sub><italic>ij</italic></sub>, <italic>t, t</italic><sub><italic>j</italic></sub>, <italic>s</italic><sub><italic>j</italic></sub>)</td></tr>
<tr><td align="left" valign="top">&#x000A0;&#x000A0;&#x000A0;&#x000A0; <italic>addWeightToRingBuffer</italic>(<italic>w</italic><sub><italic>ij</italic></sub>, <italic>j</italic>)</td></tr>
<tr><td align="left" valign="top">&#x000A0;</td></tr>
<tr><td align="left" valign="top">&#x000A0; <italic>s</italic><sub><italic>i</italic></sub> &#x02190; <italic>addPreSpike</italic>(<italic>s</italic><sub><italic>i</italic></sub>, <italic>t, t</italic><sub><italic>old</italic></sub>)</td></tr>
<tr><td align="left" valign="top">&#x000A0; <italic>t</italic><sub><italic>old</italic></sub> &#x02190; <italic>t</italic></td></tr>
<tr><td align="left" valign="top">&#x000A0;</td></tr>
</tbody>
</table>
</table-wrap>
<p>In order to allow users to describe dopaminergic synapses we modified sPyNNaker (Stokes et al., <xref ref-type="bibr" rid="B57">2017</xref>), the SpiNNaker implementation of PyNN (Davison et al., <xref ref-type="bibr" rid="B10">2009</xref>) to support dopaminergic connections. To implement the dopamine signal we introduced dopaminergic neurons that communicate through a special type of synapses (similar to the &#x0201C;target synapses&#x0201D; employed by Nichols et al., <xref ref-type="bibr" rid="B40">2017</xref>) which do not cause updates to the membrane potential of the post synaptic neuron but simply bring information about dopaminergic spikes into it. This approach has the advantage of allowing any type of PyNN neuron to act as a source of dopaminergic spikes. When a core receives a dopaminergic spike it is not added to the delay ring-buffer but is instead added directly to the post synaptic history structure where they can be accessed by Algorithm 2.</p>
</sec>
</sec>
<sec sec-type="results" id="s3">
<title>3. Results</title>
<sec>
<title>3.1. Reinforcing a synapse on SpiNNaker</title>
<p>In this section we first demonstrate how the magnitude of synaptic weight changes caused by the learning rule described in section 2.2 depends on the delay preceding a &#x0201C;reward&#x0201D; or &#x0201C;punishment&#x0201D; reinforcement signal. Figure <xref ref-type="fig" rid="F3">3</xref> shows the result of an experiment where reinforcement signals with different delays are injected after a pre-post spike pair (separated by 1 ms). When a reinforcement signal is introduced after a small delay of 4 ms, it produces a large change in synaptic strength as the eligibility trace has not had time to decay. However, if the reinforcement signal is delayed by a larger time, the eligibility trace will have decayed significantly and the change in synaptic strength will be much smaller. Furthermore, once the eligibility trace has decayed to 0, even if a reinforcement signal is received, the synaptic strength will remain unchanged (as dictated by Equation 4).</p>
<fig id="F3" position="float">
<label>Figure 3</label>
<caption><p>The strength of a single synapse after delayed reward and punishment. Each data point represents a separate experiment with a single pre-synaptic neuron connected to two post-synaptic neurons. A single pre-synaptic spike at time 1 ms is fired which causes both post-synaptic neurons to fire at time 3 ms. A single dopaminergic spike with <italic>D</italic><sub><italic>c</italic></sub> &#x0003D; 0.1 for reward and <italic>D</italic><sub><italic>c</italic></sub> &#x0003D; &#x02212;0.1 for punishment is fired at different times between 4 and 3,000 ms. All the parameters are set to the values shown in Tables <xref ref-type="table" rid="T1">1</xref>, <xref ref-type="table" rid="T2">2</xref>. It can be seen that the longer dopamine is delayed, the more the eligibility trace decays and thus the smaller the resultant weight change. When the eligibility trace decays to zero at around 2,400 ms, the synapses are no longer affected by dopamine release.</p></caption>
<graphic xlink:href="fnins-12-00105-g0003.tif"/>
</fig>
<p>In Figure <xref ref-type="fig" rid="F4">4</xref> we show the spiking activity of 10 neurons whose input synapses use the learning rule presented in section 2.2. We performed this experiment using a SpiNNaker simulation in which each of these 10 neurons receives input from an independent 50 Hz Poisson spike source. Additionally, a single dopamine spike source is connected to all 10 neurons. The synapses connecting the Poisson spike sources to the neurons were initialized with a weight of 1.5 nA. This causes the neurons to fire initially at a low rate in response to the Poisson input but, when reward signals (green arrows) are applied to these synapses, the firing rate of all 10 neurons increases. However, when punishment signals (red arrows) are applied to these synapses, the neurons&#x00027; firing rate reduces to the point that some stop firing, depending on magnitudes of eligibility traces at the times of punishment signal. An example usage of such a setup would be for the online training of a neural motor-control circuit where reinforcement signals could be used to modify the strengths of the synapses that drove the current motor output so as to fine-tune its magnitude.</p>
<fig id="F4" position="float">
<label>Figure 4</label>
<caption><p>Ten neurons connected to 10 Poisson spike sources, each with a mean firing rate of 50 Hz. Dopamine is injected at times 2,000 ms, 3,000 ms, and 4,000 ms (Green markers). This causes potentiation of synaptic connections between stimuli and post-synaptic neurons which causes post-synaptic neurons to respond more strongly. We then apply punishment (negative dopamine value, red markers) at times 8,000 ms, 9,000 ms, 10,000 ms which causes a reduced response to the same random stimuli. The experiment was performed with parameters &#x003C4;<sub><italic>d</italic></sub> &#x0003D; 5.0 ms, &#x003C4;<sub><italic>c</italic></sub> &#x0003D; 100.0 ms; reward signals were represented using <italic>D</italic><sub><italic>c</italic></sub> &#x0003D; 0.01; and punishment signals using <italic>D</italic><sub><italic>c</italic></sub> &#x0003D; &#x02212;0.002. Due to Poissonian stimulus and short timing constants for eligibility and dopamine traces, not all synapses get potentiated. On the other hand, punishment is more effective because spiking rate is higher and thus eligibility traces have non-zero values constantly.</p></caption>
<graphic xlink:href="fnins-12-00105-g0004.tif"/>
</fig>
</sec>
<sec>
<title>3.2. Solving the credit assignment problem on SpiNNaker</title>
<p>Pavlov and Thompson (<xref ref-type="bibr" rid="B44">1902</xref>) first described classical conditioning: a phenomenon in which a biologically potent stimulus&#x02013;the <italic>Unconditional Stimulus (UC)</italic>&#x02014;is initially paired with a neutral stimulus&#x02014;the <italic>Conditional Stimulus CS</italic>). After many trials, learning is observed when the previously neutral stimuli starts to elicit a response similar to that which was previously only elicited by the biologically potent stimulus. Pavlov and Thompson performed many experiments with dogs, observing their response (by monitoring salivation) to the appearance of a person who has been feeding them and the actual food appearing (UC). He demonstrated that the dogs started to salivate in the presence of the person who has been feeding them (or any other CS), rather than just when the food appears, because the CS had previously been associated with food.</p>
<p>While Pavlovian conditioning has been demonstrated in small networks of spiking neurons with Hebbian learning (Hofstoetter et al., <xref ref-type="bibr" rid="B26">2005</xref>), in more realistic situations where there is a long delay between the stimuli and the reward and there is distracting network activity, it becomes impossible to determine which firing patterns from which neurons are responsible for the reward. This is known as the <italic>credit assignment</italic> or <italic>distal reward</italic> problem&#x02014;brute-force solutions to which would require recording all spiking activity and, when a reward signal arrives, searching this data to find the synapses responsible for the reward. Fortunately, as Izhikevich (<xref ref-type="bibr" rid="B28">2007</xref>) described, the learning rule discussed in section 2.2 enables us to solve the credit assignment problem in networks of any size with minimal memory overhead and no requirement to search through synaptic data.</p>
<p>Izhikevich (<xref ref-type="bibr" rid="B28">2007</xref>) demonstrated a Pavlovian conditioning experiment in which a CS (<italic>S</italic><sub>1</sub>) is repeatedly injected into the sea of random neural activity and then followed by a reward, which reinforces the neural pathways going from neurons representing <italic>S</italic><sub>1</sub>. To simulate the experiment, 100 random sets of 50 neurons (each representing stimuli <italic>S</italic><sub>1</sub>&#x02026;<italic>S</italic><sub>100</sub>) are chosen from the pool of 1,000 neurons. To deliver these stimulus to the network, we stimulated the 50 neurons representing the chosen stimulus by injecting a 1 ms pulse of super-threshold current. Next, a continuous input stream is formed consisting of stimuli <italic>S</italic><sub><italic>k</italic></sub>(1 &#x02264; <italic>k</italic> &#x02264; 100) in a random order with random intervals between 100 and 300 ms. After every presentation of <italic>S</italic><sub>1</sub> a reward in the form of an increase of extra-cellular dopamine is delivered to all plastic synapse in the network after a random delay of up to 1 s. The delay is large enough to allow a few irrelevant input stimuli to be presented during the waiting period&#x02014;these can be considered as distractors. At the beginning of the experiment the neurons representing each stimuli <italic>S</italic><sub><italic>k</italic></sub>(1 &#x02264; <italic>k</italic> &#x02264; 100) respond equally. However, after many trials, the network starts to show reinforced response to the CS (<italic>S</italic><sub>1</sub>). Because synapses coming out of neurons representing <italic>S</italic><sub>1</sub> are always tagged with the eligibility trace when the reward is delivered, whereas the synapses connected to neurons representing irrelevant stimuli will only be occasionally tagged, the average strength of synaptic connections from neurons representing stimuli <italic>S</italic><sub>1</sub> becomes stronger than the mean synaptic connection strength in the rest of the network. Therefore, the other neurons in the network learn to listen more closely to the stimuli <italic>S</italic><sub>1</sub>, because the activation of this pathway causes a reward.</p>
<p>We reproduced Izhikevich&#x00027;s experiment on SpiNNaker using the three-factor learning rule presented in section 2.2. Our experimental set-up consists of a population with <italic>N</italic><sub><italic>T</italic></sub> Leaky Integrate-and-Fire (LIF) neurons, which are divided into 80% regular- and 20% fast-spiking (RS and FS, respectively); Table <xref ref-type="table" rid="T1">1</xref> shows the parametrization for each type. All neurons&#x02014;modeled using the PyNN IF_curr_exp model (Davison et al., <xref ref-type="bibr" rid="B10">2009</xref>)&#x02014;connect to each other with 10% probability. Connections originating from RS neurons are excitatory and permit synaptic weight changes through dopamine-modulated STDP (Table <xref ref-type="table" rid="T2">2</xref>) and FS neurons project through fixed inhibitory synapses.</p>
<table-wrap position="float" id="T1">
<label>Table 1</label>
<caption><p>IfCurrExp Neuron model parameters for the PyNN simulation.</p></caption>
<table frame="hsides" rules="groups">
<thead><tr>
<th valign="top" align="left"><bold>Type/Param</bold></th>
<th valign="top" align="center"><bold><italic>C</italic><sub><italic>m</italic></sub></bold></th>
<th valign="top" align="center"><bold><italic>I</italic><sub><italic>offset</italic></sub></bold></th>
<th valign="top" align="center"><bold>&#x003C4;<sub><italic>m</italic></sub></bold></th>
<th valign="top" align="center"><bold>&#x003C4;<sub><italic>refrac</italic></sub></bold></th>
<th valign="top" align="center"><bold>&#x003C4;<sub><italic>syn</italic>_<italic>E</italic></sub></bold></th>
<th valign="top" align="center"><bold>&#x003C4;<sub><italic>syn</italic>_<italic>I</italic></sub></bold></th>
<th valign="top" align="center"><bold><italic>V</italic><sub><italic>reset</italic></sub></bold></th>
<th valign="top" align="center"><bold><italic>V</italic><sub><italic>rest</italic></sub></bold></th>
<th valign="top" align="center"><bold><italic>V</italic><sub><italic>thresh</italic></sub></bold></th>
</tr>
<tr>
<th/>
<th valign="top" align="center"><bold>[nF]</bold></th>
<th valign="top" align="center"><bold>[nA]</bold></th>
<th valign="top" align="center"><bold>[ms]</bold></th>
<th valign="top" align="center"><bold>[ms]</bold></th>
<th valign="top" align="center"><bold>[ms]</bold></th>
<th valign="top" align="center"><bold>[ms]</bold></th>
<th valign="top" align="center"><bold>[mV]</bold></th>
<th valign="top" align="center"><bold>[mV]</bold></th>
<th valign="top" align="center"><bold>[mV]</bold></th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">Excitatory (RS)</td>
<td valign="top" align="center">0.3</td>
<td valign="top" align="center">0.005</td>
<td valign="top" align="center">10</td>
<td valign="top" align="center">4</td>
<td valign="top" align="center">1</td>
<td valign="top" align="center">1</td>
<td valign="top" align="center">&#x02212;70</td>
<td valign="top" align="center">&#x02212;65</td>
<td valign="top" align="center">&#x02212;55.4</td>
</tr>
<tr>
<td valign="top" align="left">Inhibitory (FS)</td>
<td valign="top" align="center">0.3</td>
<td valign="top" align="center">0</td>
<td valign="top" align="center">10</td>
<td valign="top" align="center">2</td>
<td valign="top" align="center">1</td>
<td valign="top" align="center">1</td>
<td valign="top" align="center">&#x02212;70</td>
<td valign="top" align="center">&#x02212;65</td>
<td valign="top" align="center">&#x02212;56.4</td>
</tr>
</tbody>
</table>
</table-wrap>
<table-wrap position="float" id="T2">
<label>Table 2</label>
<caption><p>STDP parameters.</p></caption>
<table frame="hsides" rules="groups">
<thead><tr>
<th valign="top" align="left"><bold>Parameter</bold></th>
<th valign="top" align="center"><bold><italic>A</italic><sub>&#x0002B;</sub></bold></th>
<th valign="top" align="center"><bold><italic>A</italic><sub>&#x02212;</sub></bold></th>
<th valign="top" align="center"><bold>&#x003C4;<sub>&#x0002B;</sub> [ms]</bold></th>
<th valign="top" align="center"><bold>&#x003C4;<sub>&#x02212;</sub>[ms]</bold></th>
<th valign="top" align="center"><bold>&#x003C4;<sub><italic>c</italic></sub> [ms]</bold></th>
<th valign="top" align="center"><bold>&#x003C4;<sub><italic>d</italic></sub> [ms]</bold></th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">Value</td>
<td valign="top" align="center">1</td>
<td valign="top" align="center">1</td>
<td valign="top" align="center">10</td>
<td valign="top" align="center">12</td>
<td valign="top" align="center">1,000</td>
<td valign="top" align="center">200</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>We designated <inline-formula><mml:math id="M21"><mml:msub><mml:mrow><mml:mi>N</mml:mi></mml:mrow><mml:mrow><mml:mi>g</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mi>N</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mn>10</mml:mn></mml:mrow></mml:mfrac></mml:math></inline-formula> (e.g., when <inline-formula><mml:math id="M22"><mml:msub><mml:mrow><mml:mi>N</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:msup><mml:mrow><mml:mn>0</mml:mn></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:mtext>&#x000A0;</mml:mtext><mml:msub><mml:mrow><mml:mi>N</mml:mi></mml:mrow><mml:mrow><mml:mi>g</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn>100</mml:mn></mml:math></inline-formula>) neural groups, with each group including <inline-formula><mml:math id="M23"><mml:msub><mml:mrow><mml:mi>N</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mi>g</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mi>N</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mn>20</mml:mn></mml:mrow></mml:mfrac></mml:math></inline-formula> (e.g., when <inline-formula><mml:math id="M24"><mml:msub><mml:mrow><mml:mi>N</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:msup><mml:mrow><mml:mn>0</mml:mn></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:mtext>&#x000A0;</mml:mtext><mml:msub><mml:mrow><mml:mi>N</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mi>g</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn>50</mml:mn></mml:math></inline-formula>) randomly selected neurons. Dopamine is delivered by a single neuron which projects to all of the neurons in the main population and, throughout the experiment, each neuron in the population is stimulated with a 10 Hz Poisson noise input. In Figure <xref ref-type="fig" rid="F5">5</xref> we demonstrate the results of this experiment with <italic>N</italic><sub><italic>T</italic></sub> &#x0003D; 1, 000 (which corresponds to the third column in Table <xref ref-type="table" rid="T3">3</xref>). Figure <xref ref-type="fig" rid="F5">5A</xref> shows that, over the course of 60 min of simulated time, the average strength (weight) of synapses coming from the neurons representing <italic>S</italic><sub>1</sub> gradually becomes greater than the average strength of all synapses in the network. In the early stages of the experiment the network responds similarly to all five randomly selected stimuli meaning that the network response to the neurons representing <italic>S</italic><sub>1</sub> being stimulated is indistinguishable from the response to other stimuli. However, after an hour of simulation, we can observe an increase in the activity of the neurons representing <italic>S</italic><sub>1</sub> when this stimuli is delivered (Figure <xref ref-type="fig" rid="F5">5C</xref>)&#x02014;showing that these neurons been selectively associated. Finally, based on this increased response to <italic>S</italic><sub>1</sub>, we can observe that the network learns which of the 100 stimuli brings rewards&#x02014;even though the activity of the neurons representing <italic>S</italic><sub>1</sub> is masked by distracting spiking activity and the reward is delayed for up to 1 s. Therefore, as Izhikevich (<xref ref-type="bibr" rid="B28">2007</xref>) reported, injection of a global dopaminergic signal into the network allows it to identify a group of neurons responsible for the rewards even in the presence of Poisson noise and unrelated activity from other groups.</p>
<fig id="F5" position="float">
<label>Figure 5</label>
<caption><p><bold>(A)</bold> Shows the average synaptic weight of synapses from the group of neurons representing <italic>S</italic><sub>1</sub> (green) and every synapse in the network (blue) for the first hour of the experiment. Randomly selected stimuli <italic>S</italic><sub><italic>k</italic></sub> are delivered to the network (black arrows), separated by random intervals of between 100 and 300 ms. These are visible in the synchronous spikes in <bold>(B,C)</bold>. Every time <italic>S</italic><sub>1</sub> is chosen, dopamine is delivered to the network (dashed line). Raster plot <bold>(B)</bold> depicts the first 1 s of network activity when <italic>S</italic><sub>1</sub> was delivered to the network; and <bold>(C)</bold> illustrates 1 s of activity after 1 h of simulation, showing how the neurons stimulated by <italic>S</italic><sub>1</sub> have learned to respond more strongly. Note that in <bold>(A)</bold>, the average of all the weights is increasing because, additionally to <italic>S</italic><sub>1</sub> always being rewarded, some stimuli <italic>S</italic><sub><italic>k</italic></sub> &#x02260; <italic>S</italic><sub>1</sub> also randomly get picked up soon before or after reward is delivered to the network.</p></caption>
<graphic xlink:href="fnins-12-00105-g0005.tif"/>
</fig>
<table-wrap position="float" id="T3">
<label>Table 3</label>
<caption><p>Effects of scaling conditioning network.</p></caption>
<table frame="hsides" rules="groups">
<tbody>
<tr>
<td valign="top" align="left">Neurons per core</td>
<td valign="top" align="center">90</td>
<td valign="top" align="center">90</td>
<td valign="top" align="center">90</td>
<td valign="top" align="center">90</td>
<td valign="top" align="center">90</td>
<td valign="top" align="center">90</td>
<td valign="top" align="center">60</td>
<td valign="top" align="center">60</td>
</tr>
<tr>
<td valign="top" align="left">Total neurons <italic>N</italic><sub><italic>T</italic></sub></td>
<td valign="top" align="center">200</td>
<td valign="top" align="center">500</td>
<td valign="top" align="center">1,000</td>
<td valign="top" align="center">2,000</td>
<td valign="top" align="center">4,000</td>
<td valign="top" align="center">6,000</td>
<td valign="top" align="center">8,000</td>
<td valign="top" align="center">10,000</td>
</tr>
<tr>
<td valign="top" align="left">Total synapses</td>
<td valign="top" align="center">4 K</td>
<td valign="top" align="center">25 K</td>
<td valign="top" align="center">100 K</td>
<td valign="top" align="center">400 K</td>
<td valign="top" align="center">1.6 M</td>
<td valign="top" align="center">3.6 M</td>
<td valign="top" align="center">6.4 M</td>
<td valign="top" align="center">10 M</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>In order to evaluate the scaling properties of our algorithm, we also simulated this network at the scales listed in Table <xref ref-type="table" rid="T3">3</xref> up to 10,000 neurons and 10 million synapses (keeping the connection probability and <italic>N</italic><sub><italic>g</italic></sub> constant). We found that the SpiNNaker system was able to simulate the experiment in real time at all of the listed network sizes. However, when the total number of neurons in the network reached 8,000, the increase in the number of incoming synapses per neuron required that we reduce the number of neurons simulated on each core to maintain real-time performance.</p>
</sec>
<sec>
<title>3.3. Performance</title>
<p>In this section we discuss performance statistics obtained by benchmarking the three-factor STDP learning rule running on SpiNNaker.</p>
<sec>
<title>3.3.1. Incoming spike processing performance</title>
<p>SpiNNaker machines have no form of global synchronization. Therefore, each core needs to update the state of each neuron it is responsible for simulating and process any incoming spikes it has received within a predetermined simulation time step (typically 1 ms). This means that the number of neurons simulated on each core, the complexity of the neuron or synapse model, the density of connectivity and the rate of incoming spikes all need to be balanced to guarantee real time operation.</p>
<p>In Figure <xref ref-type="fig" rid="F6">6</xref> we compare the incoming spike processing performance of a single SpiNNaker core simulating a population of leaky-integrate-and-fire neurons with standard STDP and three-factor STDP synapses. The extra local memory required to store dopamine trace values in the post-synaptic history structure means that, when using the three-factor STDP algorithm described in section 2.3, each core is limited to simulating 126 neurons. As Knight and Furber (<xref ref-type="bibr" rid="B33">2016</xref>) discussed, the length of synaptic matrix rows has a significant effect on synapse processing performance. This is because, beyond the computational cost of processing each synapse, there is a large fixed cost in processing each row meaning that the best performance is obtained with long row lengths. Therefore, following the procedure outlined by Knight and Furber, we stimulated our population of neurons with an increasing number of 10 Hz Poisson spike trains in order to determine the maximum incoming spike rate that the core could process in real time. Additionally, because the number of events in the post-synaptic history structure affects the performance of Algorithms 1 and 2, we varied the post-synaptic firing rate by injecting a fixed current into the simulated neurons. Because, in the case of three-factor STDP, incoming dopaminergic spikes also get added to the post-synaptic history structure, we also measured the performance with a single dopaminergic neuron, firing at 8 Hz, connected to all the neurons in the benchmark population.</p>
<fig id="F6" position="float">
<label>Figure 6</label>
<caption><p>Comparison between incoming spike processing performance of standard STDP (with an additive weight dependence) and three-factor STDP for different post-synaptic spiking rates.</p></caption>
<graphic xlink:href="fnins-12-00105-g0006.tif"/>
</fig>
<p>We find that the highest number of inputs into a single core can be achieved with rows approximately 60 synapses long (50 % connection density). Furthermore, as the post synaptic rate is increased, more synaptic history traces have to be processed on each pre-synaptic spike, so overall performance decreases. As predicted, we also find that performance with short synaptic rows (10&#x02013;40 synapses per neuron) suffers from the fixed row-processing overheads mentioned earlier in this section. It is also worth noting that with very long synaptic rows (80&#x02013;120 synapses per neuron) performance is also reduced. We predict that this is because, with very long rows that take a long time to process, even small variations in the number of spikes emitted by the Poisson sources each time-step can overrun the time available. The maximum number of inputs into a core simulating a network spiking at 10 Hz and neuromodulated with an 8 Hz dopaminergic signal was 0.38 million which is approximately two times slower than the simplest additive STDP rule.</p>
</sec>
<sec>
<title>3.3.2. Moving toward cortical levels of connectivity</title>
<p>SpiNNaker was designed around the assumption that each ARM core would be responsible for simulating 1,000 neurons with 1,000 input synapses, each receiving spikes at a mean rate of 10 Hz (Jin et al., <xref ref-type="bibr" rid="B29">2008</xref>). However, over recent years, it has been found that, on average, cortical neurons have 8,000 input synapses (Beaulieu and Colonnier, <xref ref-type="bibr" rid="B2">1989</xref>; Pakkenberg et al., <xref ref-type="bibr" rid="B43">2003</xref>; Braitenberg and Sch&#x000FC;z, <xref ref-type="bibr" rid="B5">2013</xref>) each receiving spikes at the lower average rate of around 3 Hz (Buzsaki and Mizuseki, <xref ref-type="bibr" rid="B6">2014</xref>). While Knight and Furber (<xref ref-type="bibr" rid="B33">2016</xref>) showed that SpiNNaker was capable of simulating neurons in real-time with these higher levels of connectivity, even when using standard STDP this required reducing the number of neurons simulated on each core to only around 30. The alternative is to slow down the simulation to some fixed fraction of real-time. In Figure <xref ref-type="fig" rid="F7">7</xref> we demonstrate how the number of neurons per core and the simulation speed can be traded off when simulating neurons with three-factor STDP and cortical levels of connectivity. Each neuron in the network is densely connected to 8,000 Poisson sources firing at 3 Hz as well as to a single dopaminergic neuron spiking at an average rate of 4.5 Hz. We found that, in order to simulate this network in real-time, the maximum number of neurons that could be simulated on each core was only 15. However, when we increased the number of neurons simulated on each core to the maximum of 126, we had to slow the simulation down by a factor of 11x.</p>
<fig id="F7" position="float">
<label>Figure 7</label>
<caption><p>Time to simulate 5 s of network activity with 8,000 inputs to each neuron. The mean firing rate of each input is 3 Hz, the post synaptic firing rate is 3 Hz, and the mean firing rate of the dopaminergic neuron is 4.5 Hz.</p></caption>
<graphic xlink:href="fnins-12-00105-g0007.tif"/>
</fig>
</sec>
<sec>
<title>3.3.3. Neuromodulated-STDP on SpiNNaker vs. GPUs</title>
<p>Neuromorphic architectures such as SpiNNaker have been specifically designed for the low-power simulation of spiking neuron networks. However, GPU architectures, although initially designed for accelerating the rendering of 3D graphics, have evolved into versatile accelerators which have been used in a wide range of HPC applications (Fan et al., <xref ref-type="bibr" rid="B13">2004</xref>; Kindratenko et al., <xref ref-type="bibr" rid="B31">2009</xref>)&#x02014;notable deep-learning (Chellapilla et al., <xref ref-type="bibr" rid="B7">2006</xref>; Cire&#x0015F;an et al., <xref ref-type="bibr" rid="B8">2010</xref>). Additionally, with the demands of edge computing (Shi et al., <xref ref-type="bibr" rid="B54">2016</xref>), GPUs are increasingly becoming available in form factors with comparable power requirements to neuromorphic hardware. One device of this type is the Jetson TX1, an embedded system with a peak power usage of only 18 W, yet still equipped with a 256 CUDA core &#x0201C;Maxwell&#x0201D; GPU as well as a 64 bit quad-core ARM Cortex-A57 and 4 GiB of LPDDR4 memory. Similarly to other GPU devices, the NVIDIA Jetson TX1 can be programmed using the Compute Unified Device Architecture (CUDA), meaning that a wealth of scientific software can be compiled for it including GeNN (Yavuz et al., <xref ref-type="bibr" rid="B61">2016</xref>)&#x02014;a code generation framework for spiking neural network simulations.</p>
<p>In this section we compare the performance of the Pavlovian conditioning experiment running on SpiNNaker that we presented in section 3.2 with the same model running on the Jetson TX1 using the GeNN simulator. Diamond et al. (<xref ref-type="bibr" rid="B12">2016</xref>) previously compared the performance of GeNN and SpiNNaker running a classification task but, although their model also used three-factor learning, Diamond et al. did not implement the learning rule on either SpiNNaker or GeNN. Instead Diamond et al. used standard STDP with a post-synaptic teaching signal on SpiNNaker and, when using GeNN, they performed learning on the host machine&#x00027;s CPU. However, based on Equation (9), we implemented a GeNN version of the dopamine modulated STDP rule described in section 2.2 so can provide a somewhat closer comparison. Furthermore, Diamond et al. (<xref ref-type="bibr" rid="B12">2016</xref>) compared SpiNNaker to an NVIDIA Titan Black&#x02014;a high-end gaming card which uses up to 250 W of power&#x02014;whereas the Jetson TX1&#x00027;s peak power usage of 18 W is much more comparable to the 26&#x02013;36 W consumed by a 48 chip SpiNNaker system (Stromatias et al., <xref ref-type="bibr" rid="B58">2013</xref>) making this an interesting comparison.</p>
<p>As discussed in section 3.2, we were able to run the Pavlovian conditioning experiment in real-time at all scales on SpiNNaker. However, GeNN simply runs the simulation as fast as possible and, as Figure <xref ref-type="fig" rid="F8">8</xref> shows, when simulating this model simulation times increase approximately linearly with the number of synapses. Using the NVIDIA profiling tools to further analyse the performance suggests that the majority of time (88 % in the 10 &#x000D7; 10<sup>3</sup> neuron model) is spent in the CUDA kernel responsible for applying weight updates resulting from post-synaptic spikes. Yavuz et al. (<xref ref-type="bibr" rid="B61">2016</xref>) also identified this as a bottleneck on mobile GPUs and suggested that this is due to the non-coalesced memory accesses that this kernel employs.</p>
<fig id="F8" position="float">
<label>Figure 8</label>
<caption><p>Time to simulate 1 h of the Pavlovian conditioning experiment described in section 3.2 at three different scales. SpiNNaker can simulate all configurations in real-time. The Jetson TX1 GPU and all CPUs are set to run at the maximum supported frequency.</p></caption>
<graphic xlink:href="fnins-12-00105-g0008.tif"/>
</fig>
</sec>
</sec>
</sec>
<sec sec-type="discussion" id="s4">
<title>4. Discussion</title>
<sec>
<title>4.1. Reinforcement learning</title>
<p>Reinforcement learning is a biologically inspired learning paradigm where an agent learns by interacting with the world around it and modifies its behavior based on sparse feedback (for example a reward signal). Reinforcement learning has been shown to work effectively in convolutional neural networks (Mnih et al., <xref ref-type="bibr" rid="B37">2015</xref>). However, it remains unclear how these techniques could be replicated in spiking neural networks and whether classical reinforcement learning (Sutton and Barto, <xref ref-type="bibr" rid="B59">1998</xref>) is at all analogous to dopamine modulated synaptic plasticity in the brain (Reynolds et al., <xref ref-type="bibr" rid="B51">2001</xref>; Pawlak and Kerr, <xref ref-type="bibr" rid="B46">2008</xref>).</p>
<p>Bridging the gap between classical reinforcement learning and synaptic plasticity could be key to understanding, and using, low power neuromorphic systems, eventually simulating the human brain at scales not currently possible even on super computers. <italic>Temporal Difference learning</italic> is one of the most common reinforcement learning algorithms (Sutton and Barto, <xref ref-type="bibr" rid="B59">1998</xref>) and some similarities between it and plasticity in the brain have been already observed (O&#x00027;Doherty et al., <xref ref-type="bibr" rid="B41">2004</xref>). Potjans et al. (<xref ref-type="bibr" rid="B49">2009</xref>) provided further evidence to support this link using a reinforcement learning framework implemented using a spiking neural network. In this framework reward is modeled as a real-valued signal which, rather than gating weight updates in the manner we describe in section 2.2, is simply added to the weight alongside any changes induced by Hebbian learning in the learning rule. However, weight changes induced by this learning rule can also cause weight changes in other synapses emanating from the same pre-synaptic neuron, even if they are not active. This would prove difficult to implement using the SpiNNaker framework described in section 2.3 as each synapse only has access to local information. Finally, both Potjans et al. (<xref ref-type="bibr" rid="B48">2011</xref>) and Fr&#x000E9;maux et al. (<xref ref-type="bibr" rid="B18">2013</xref>) suggest that a more biologically plausible model of reward signals, modeled as a concentration of dopamine which gates and scales weight changes, also provides an effective model of TD learning.</p>
</sec>
<sec>
<title>4.2. Improving performance</title>
<p>As the results presented in section 3.3.1 show, due to the increased complexity of Algorithm 2 compared to Algorithm 1, the incoming spike processing performance of the three-factor STDP rule is approximately half that of the standard SpiNNaker STDP rule. While this is an unavoidable consequence of a more complex learning rule, if we wish to simulate our model in real-time, the only way to reduce the load on each core is to reduce the number of neurons being simulated on the core. This has the unfortunate side effect of also reducing the length of synaptic matrix rows which, as Figure <xref ref-type="fig" rid="F6">6</xref> illustrates, reduces the efficiency of synaptic processing.</p>
<p>Knight and Furber (<xref ref-type="bibr" rid="B33">2016</xref>) developed an alternative method of mapping populations of neurons and their synapses to SpiNNaker which they called <italic>synapse-centric mapping</italic>. They split the time-driven simulation of neurons and the event-driven simulation of synapses between separate cores and these exchanged data using DMA transfers. This synapse-centric approach allows the processing of a synaptic matrix to be split between multiple cores in a row-wise manner. Unlike when the synaptic matrix is split in a column-wise manner&#x02014;which occurs when the number of neurons per core is reduced using the approach discussed in this paper&#x02014;this allows optimal synaptic matrix row lengths to be maintained. While Knight and Furber did not apply the synapse-centric approach to the three-factor STDP rule described in section 2.2, they demonstrated how it could be used to simulate highly-connected models using the spiking <italic>Bayesian Confidence Neural Network</italic> (BCPNN) learning rule (Tully et al., <xref ref-type="bibr" rid="B60">2014</xref>) in real-time. BCPNN has similar properties to our three-factor STDP rule in that each synapse contains a trace as well as a synaptic weight and the cost of updating each synapse is significantly higher than for normal STDP. Therefore, we believe that combining the synapse-centric mapping with our three-factor STDP implementation would allow models with cortical levels of neuromodulated connectivity to be simulated in real-time&#x02014;a significant improvement over the scaling properties illustrated in section 3.3.2.</p>
</sec>
<sec>
<title>4.3. Volume transmitters</title>
<p>Both chemical and electrical synapses are generally assumed to connect a pair of neurons in a one-to-one manner&#x02014; Zoli et al. (<xref ref-type="bibr" rid="B62">1999</xref>) classifies this as <italic>wired transmission</italic>. However, there are also several <italic>volume transmission</italic> mechanisms used by the brain for one-to-many modes of communication. In areas of the brain with a high density of dopaminergic axons such as the striatum, dopamine is transmitted in a wired manner (Gerfen, <xref ref-type="bibr" rid="B22">1988</xref>). However, Garris et al. (<xref ref-type="bibr" rid="B21">1994</xref>) showed that dopamine may also be transmitted extracellularly using volume transmission.</p>
<p>The method we have presented in this paper is well-suited to simulating wired dopamine transmission. However, if dopamine is delivered by volume-transmission, each synapses would receive spikes from all dopaminergic neurons within a volume with a radius of around 100 nm to 1 mm (Zoli et al., <xref ref-type="bibr" rid="B62">1999</xref>). As Potjans et al. (<xref ref-type="bibr" rid="B50">2010</xref>) state, this means that each synapse would be likely to receive substantially more dopaminergic than pre-synaptic spikes. Potjans et al. propose a novel approach for simulating such synapses on a distributed system where separate nodes handle the dopaminergic spikes arriving at each machine running the simulation. These nodes are responsible for sorting the dopaminergic spikes and delivering them, when requested by the equivalent of Algorithm 2, to the nodes simulating the synapses. Additionally, the volume transmitter nodes send dopaminergic spikes to the nodes simulating the synapses at regular intervals, minimizing the amount of memory required for dopaminergic spike storage. Potjans et al. demonstrated this approach by building a model consisting of 1 &#x000D7; 10<sup>5</sup> neurons and 1 &#x000D7; 10<sup>9</sup> synapses &#x02013; each of which received a total neuromodulatory spike rate of 500 Hz. They showed that, using their new approach, simulations of this model exhibited supralinear scaling up to 32 machines and, beyond that, linear scaling up to 1,024 machines.</p>
<p>In the context of SpiNNaker, the large numbers of dopaminergic spikes in the post-synaptic history structure that would result from simulating volume transmitters using the approach we presented in section 2.3 would be even more problematic. Firstly, Figure <xref ref-type="fig" rid="F6">6</xref> suggests that the spike handling performance of our implementation would be very low if each synapse received neuromodulatory spikes at the rates used in the model developed by Potjans et al. Secondly, the NEST simulator used by Potjans et al. stores post-synaptic history in a dynamic data structure (described in detail by Morrison et al., <xref ref-type="bibr" rid="B38">2007</xref>), whereas, due to each core&#x00027;s limited local memory, SpiNNaker uses a static data structure. Therefore, if the number of post-synaptic or dopaminergic spikes increases beyond the fixed capacity of this structure, spikes will not be processed and simulation results will be incorrect. We believe that the approach developed by Potjans et al. could be adapted to solve these issues by using one core on each SpiNNaker chip to manage the gathering of neuromodulatory spikes and delivering them by DMA to the cores responsible for simulating the neuromodulated STDP synapses. This core could also be responsible for performing the regular, time-driven weight updates due to dopaminergic spikes, perhaps using a similar approach to that proposed by Galluppi et al. (<xref ref-type="bibr" rid="B20">2015</xref>).</p>
</sec>
<sec>
<title>4.4. Robotics</title>
<p>One interesting future direction for this work would be to implement a reinforcement learning agent which could perform instrumental conditioning tasks using the SpiNNaker implementation of dopamine modulated STDP presented in this paper. Shim and Li (<xref ref-type="bibr" rid="B55">2017</xref>) did some work in this area and presented a collision avoidance agent using the same learning rule that we have implemented. However, they only tested these agents in a simulated environment whereas, using SpiNNaker, it would be possible to simulate the spiking neural network based controller in real-time so it could be evaluated, embodied in a real robot.</p>
</sec>
</sec>
<sec id="s5">
<title>Author contributions</title>
<p>JK: Developed the mathematical model; MM and JK: Developed and benchmarked the learning rule; GP: Developed the Pavlovian conditioning experiment; MM, JK, GP, and SF: Wrote the paper; SF: Provided supervision.</p>
<sec>
<title>Conflict of interest statement</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>
</body>
<back>
<ack>
<p>Firstly we would like to thank Jenia Jitsev, in whose &#x0201C;reward and punishment&#x0201D; discussion group at the CapoCaccia Neuromorphic Engineering Workshop 2014, work on three-factor learning on SpiNNaker first began. Furthermore, we extend our thanks to the organizers of the CapoCaccia Neuromorphic Engineering Workshop 2017 for providing a stimulating environment in which this project has gained acceleration. Finally we would like to thank SpiNNaker team members Robert James, Gabriel Fonseca Guerra, and Petrut Bogdan for suggestions and software bug capturing; and Thomas Nowotny for taking the time to read the paper and provide feedback.</p>
</ack>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Amit</surname> <given-names>D. J.</given-names></name></person-group> (<year>1992</year>). <source>Modeling Brain Function: The World of Attractor Neural Networks</source>. <publisher-loc>Cambridge</publisher-loc>: <publisher-name>Cambridge University Press</publisher-name>.</citation></ref>
<ref id="B2">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Beaulieu</surname> <given-names>C.</given-names></name> <name><surname>Colonnier</surname> <given-names>M.</given-names></name></person-group> (<year>1989</year>). <article-title>Number and size of neurons and synapses in the motor cortex of cats raised in different environmental complexities</article-title>. <source>J. Comp. Neurol.</source> <volume>289</volume>, <fpage>178</fpage>&#x02013;<lpage>187</lpage>. <pub-id pub-id-type="pmid">2808760</pub-id></citation></ref>
<ref id="B3">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Bi</surname> <given-names>G.-Q.</given-names></name> <name><surname>Poo</surname> <given-names>M.-M.</given-names></name></person-group> (<year>1998</year>). <article-title>Synaptic modifications in cultured hippocampal neurons: dependence on spike timing, synaptic strength, and postsynaptic cell type</article-title>. <source>J. Neurosci.</source> <volume>18</volume>, <fpage>10464</fpage>&#x02013;<lpage>10472</lpage>. <pub-id pub-id-type="pmid">9852584</pub-id></citation></ref>
<ref id="B4">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Brader</surname> <given-names>J. M.</given-names></name> <name><surname>Senn</surname> <given-names>W.</given-names></name> <name><surname>Fusi</surname> <given-names>S.</given-names></name></person-group> (<year>2007</year>). <article-title>Learning real-world stimuli in a neural network with spike-driven synaptic dynamics</article-title>. <source>Neural Comput.</source> <volume>19</volume>, <fpage>2881</fpage>&#x02013;<lpage>2912</lpage>. <pub-id pub-id-type="doi">10.1162/neco.2007.19.11.2881</pub-id><pub-id pub-id-type="pmid">17883345</pub-id></citation></ref>
<ref id="B5">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Braitenberg</surname> <given-names>V.</given-names></name> <name><surname>Sch&#x000FC;z</surname> <given-names>A.</given-names></name></person-group> (<year>2013</year>). <source>Cortex: Statistics and Geometry of Neuronal Connectivity</source>. <publisher-loc>Berlin</publisher-loc>: <publisher-name>Springer Science &#x00026; Business Media</publisher-name>.</citation></ref>
<ref id="B6">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Buzsaki</surname> <given-names>G.</given-names></name> <name><surname>Mizuseki</surname> <given-names>K.</given-names></name></person-group> (<year>2014</year>). <article-title>The log-dynamic brain: how skewed distributions affect network operations</article-title>. <source>Nat. Rev. Neurosci.</source> <volume>15</volume>, <fpage>264</fpage>&#x02013;<lpage>278</lpage>. <pub-id pub-id-type="doi">10.1038/nrn3687</pub-id><pub-id pub-id-type="pmid">24569488</pub-id></citation></ref>
<ref id="B7">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Chellapilla</surname> <given-names>K.</given-names></name> <name><surname>Puri</surname> <given-names>S.</given-names></name> <name><surname>Simard</surname> <given-names>P.</given-names></name></person-group> (<year>2006</year>). <article-title>High performance convolutional neural networks for document processing</article-title>, in <source>Tenth International Workshop on Frontiers in Handwriting Recognition</source> (<publisher-loc>La Baule</publisher-loc>: <publisher-name>Suvisoft</publisher-name>).</citation></ref>
<ref id="B8">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Cire&#x0015F;an</surname> <given-names>D. C.</given-names></name> <name><surname>Meier</surname> <given-names>U.</given-names></name> <name><surname>Gambardella</surname> <given-names>L. M.</given-names></name> <name><surname>Schmidhuber</surname> <given-names>J.</given-names></name></person-group> (<year>2010</year>). <article-title>Deep, big, simple neural nets for handwritten digit recognition</article-title>. <source>Neural Comput.</source> <volume>22</volume>, <fpage>3207</fpage>&#x02013;<lpage>3220</lpage>. <pub-id pub-id-type="doi">10.1162/NECO_a_00052</pub-id><pub-id pub-id-type="pmid">20858131</pub-id></citation></ref>
<ref id="B9">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Clopath</surname> <given-names>C.</given-names></name> <name><surname>B&#x000FC;sing</surname> <given-names>L.</given-names></name> <name><surname>Vasilaki</surname> <given-names>E.</given-names></name> <name><surname>Gerstner</surname> <given-names>W.</given-names></name></person-group> (<year>2010</year>). <article-title>Connectivity reflects coding: a model of voltage-based STDP with homeostasis</article-title>. <source>Nat. Neurosci.</source> <volume>13</volume>, <fpage>344</fpage>&#x02013;<lpage>352</lpage>. <pub-id pub-id-type="doi">10.1038/nn.2479</pub-id><pub-id pub-id-type="pmid">20098420</pub-id></citation></ref>
<ref id="B10">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Davison</surname> <given-names>A.</given-names></name> <name><surname>Brderle</surname> <given-names>D.</given-names></name> <name><surname>Eppler</surname> <given-names>J.</given-names></name> <name><surname>Kremkow</surname> <given-names>J.</given-names></name> <name><surname>Muller</surname> <given-names>E.</given-names></name> <name><surname>Pecevski</surname> <given-names>D.</given-names></name> <etal/></person-group>. (<year>2009</year>). <article-title>Pynn: a common interface for neuronal network simulators</article-title>. <source>Front. Neuroinformatics</source> <volume>2</volume>:<fpage>11</fpage>. <pub-id pub-id-type="doi">10.3389/neuro.11.011.2008</pub-id><pub-id pub-id-type="pmid">19194529</pub-id></citation></ref>
<ref id="B11">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Davison</surname> <given-names>A. P.</given-names></name> <name><surname>Fr&#x000E9;gnac</surname> <given-names>Y.</given-names></name></person-group> (<year>2006</year>). <article-title>Learning cross-modal spatial transformations through spike timing-dependent plasticity</article-title>. <source>J. Neurosci.</source> <volume>26</volume>, <fpage>5604</fpage>&#x02013;<lpage>5615</lpage>. <pub-id pub-id-type="doi">10.1523/JNEUROSCI.5263-05.2006</pub-id><pub-id pub-id-type="pmid">16723517</pub-id></citation></ref>
<ref id="B12">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Diamond</surname> <given-names>A.</given-names></name> <name><surname>Nowotny</surname> <given-names>T.</given-names></name> <name><surname>Schmuker</surname> <given-names>M.</given-names></name></person-group> (<year>2016</year>). <article-title>Comparing neuromorphic solutions in action: implementing a bio-inspired solution to a benchmark classification task on three parallel-computing platforms</article-title>. <source>Front. Neurosci.</source> <volume>9</volume>:<fpage>491</fpage>. <pub-id pub-id-type="doi">10.3389/fnins.2015.00491</pub-id><pub-id pub-id-type="pmid">26778950</pub-id></citation></ref>
<ref id="B13">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Fan</surname> <given-names>Z.</given-names></name> <name><surname>Qiu</surname> <given-names>F.</given-names></name> <name><surname>Kaufman</surname> <given-names>A.</given-names></name> <name><surname>Yoakum-Stover</surname> <given-names>S.</given-names></name></person-group> (<year>2004</year>). <article-title>GPU cluster for high performance computing</article-title>, in <source>Supercomputing, 2004. Proceedings of the ACM/IEEE SC2004 Conference</source> (<publisher-loc>Pittsburgh, PA</publisher-loc>), <fpage>47</fpage>.</citation></ref>
<ref id="B14">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Florian</surname> <given-names>R. V.</given-names></name></person-group> (<year>2007</year>). <article-title>Reinforcement learning through modulation of spike-timing-dependent synaptic plasticity</article-title>. <source>Neural Comput.</source> <volume>19</volume>, <fpage>1468</fpage>&#x02013;<lpage>1502</lpage>. <pub-id pub-id-type="doi">10.1162/neco.2007.19.6.1468</pub-id><pub-id pub-id-type="pmid">17444757</pub-id></citation></ref>
<ref id="B15">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Friedmann</surname> <given-names>S.</given-names></name> <name><surname>Fr&#x000E9;maux</surname> <given-names>N.</given-names></name> <name><surname>Schemmel</surname> <given-names>J.</given-names></name> <name><surname>Gerstner</surname> <given-names>W.</given-names></name> <name><surname>Meier</surname> <given-names>K.</given-names></name></person-group> (<year>2013</year>). <article-title>Reward-based learning under hardware constraints&#x02013;using a RISC processor embedded in a neuromorphic substrate</article-title>. <source>Front. Neurosci.</source> <volume>7</volume>:<fpage>160</fpage>. <pub-id pub-id-type="doi">10.3389/fnins.2013.00160</pub-id><pub-id pub-id-type="pmid">24065877</pub-id></citation></ref>
<ref id="B16">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Friedmann</surname> <given-names>S.</given-names></name> <name><surname>Schemmel</surname> <given-names>J.</given-names></name> <name><surname>Gruebl</surname> <given-names>A.</given-names></name> <name><surname>Hartel</surname> <given-names>A.</given-names></name> <name><surname>Hock</surname> <given-names>M.</given-names></name> <name><surname>Meier</surname> <given-names>K.</given-names></name></person-group> (<year>2017</year>). <article-title>Demonstrating hybrid learning in a flexible neuromorphic hardware system</article-title>. <source>IEEE Trans. Biomed. Circ. Syst.</source> <volume>11</volume>, <fpage>128</fpage>&#x02013;<lpage>142</lpage>. <pub-id pub-id-type="doi">10.1109/TBCAS.2016.2579164</pub-id><pub-id pub-id-type="pmid">28113678</pub-id></citation></ref>
<ref id="B17">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Fr&#x000E9;maux</surname> <given-names>N.</given-names></name> <name><surname>Gerstner</surname> <given-names>W.</given-names></name></person-group> (<year>2016</year>). <article-title>Neuromodulated spike-timing-dependent plasticity, and theory of three-factor learning rules</article-title>. <source>Front. Neural Circ.</source> <volume>9</volume>:<fpage>85</fpage>. <pub-id pub-id-type="doi">10.3389/fncir.2015.00085</pub-id><pub-id pub-id-type="pmid">26834568</pub-id></citation></ref>
<ref id="B18">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Fr&#x000E9;maux</surname> <given-names>N.</given-names></name> <name><surname>Sprekeler</surname> <given-names>H.</given-names></name> <name><surname>Gerstner</surname> <given-names>W.</given-names></name></person-group> (<year>2013</year>). <article-title>Reinforcement learning using a continuous time actor-critic framework with spiking neurons</article-title>. <source>PLoS Comput. Biol.</source> <volume>9</volume>:<fpage>e1003024</fpage>. <pub-id pub-id-type="doi">10.1371/journal.pcbi.1003024</pub-id><pub-id pub-id-type="pmid">23592970</pub-id></citation></ref>
<ref id="B19">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Furber</surname> <given-names>S. B.</given-names></name> <name><surname>Galluppi</surname> <given-names>F.</given-names></name> <name><surname>Temple</surname> <given-names>S.</given-names></name> <name><surname>Plana</surname> <given-names>L. A.</given-names></name></person-group> (<year>2014</year>). <article-title>The SpiNNaker project</article-title>. <source>Proc. IEEE</source> <volume>102</volume>, <fpage>652</fpage>&#x02013;<lpage>665</lpage>. <pub-id pub-id-type="doi">10.1109/JPROC.2014.2304638</pub-id></citation></ref>
<ref id="B20">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Galluppi</surname> <given-names>F.</given-names></name> <name><surname>Lagorce</surname> <given-names>X.</given-names></name> <name><surname>Stromatias</surname> <given-names>E.</given-names></name> <name><surname>Pfeiffer</surname> <given-names>M.</given-names></name> <name><surname>Plana</surname> <given-names>L. A.</given-names></name> <name><surname>Furber</surname> <given-names>S. B.</given-names></name> <etal/></person-group>. (<year>2015</year>). <article-title>A framework for plasticity implementation on the SpiNNaker neural architecture</article-title>. <source>Front. Neurosci.</source> <volume>8</volume>:<fpage>429</fpage>. <pub-id pub-id-type="doi">10.3389/fnins.2014.00429</pub-id><pub-id pub-id-type="pmid">25653580</pub-id></citation></ref>
<ref id="B21">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Garris</surname> <given-names>P. A.</given-names></name> <name><surname>Ciolkowski</surname> <given-names>E. L.</given-names></name> <name><surname>Pastore</surname> <given-names>P.</given-names></name> <name><surname>Wightman</surname> <given-names>R. M.</given-names></name></person-group> (<year>1994</year>). <article-title>Efflux of dopamine from the synaptic cleft in the nucleus accumbens of the rat brain</article-title>. <source>J. Neurosci.</source> <volume>14</volume>, <fpage>6084</fpage>&#x02013;<lpage>6093</lpage>. <pub-id pub-id-type="doi">10.1007/s00213-006-0502-4</pub-id><pub-id pub-id-type="pmid">7931564</pub-id></citation></ref>
<ref id="B22">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Gerfen</surname> <given-names>C. R.</given-names></name></person-group> (<year>1988</year>). <article-title>Synaptic organization of the striatum</article-title>. <source>Microsc. Res. Tech.</source> <volume>10</volume>, <fpage>265</fpage>&#x02013;<lpage>281</lpage>. <pub-id pub-id-type="pmid">3069970</pub-id></citation></ref>
<ref id="B23">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Gerstner</surname> <given-names>W.</given-names></name> <name><surname>Kempter</surname> <given-names>R.</given-names></name> <name><surname>van Hemmen</surname> <given-names>J. L.</given-names></name> <name><surname>Wagner</surname> <given-names>H.</given-names></name></person-group> (<year>1996</year>). <article-title>A neuronal learning rule for sub-millisecond temporal coding</article-title>. <source>Nature</source> <volume>383</volume>, <fpage>76</fpage>&#x02013;<lpage>78</lpage>. <pub-id pub-id-type="pmid">8779718</pub-id></citation></ref>
<ref id="B24">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Giudice</surname> <given-names>P. D.</given-names></name> <name><surname>Fusi</surname> <given-names>S.</given-names></name> <name><surname>Mattia</surname> <given-names>M.</given-names></name></person-group> (<year>2003</year>). <article-title>Modelling the formation of working memory with networks of integrate-and-fire neurons connected by plastic synapses</article-title>. <source>J. Physiol.</source> <volume>97</volume>, <fpage>659</fpage>&#x02013;<lpage>681</lpage>. <pub-id pub-id-type="doi">10.1016/j.jphysparis.2004.01.021</pub-id><pub-id pub-id-type="pmid">15242673</pub-id></citation></ref>
<ref id="B25">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Hebb</surname> <given-names>D. O.</given-names></name></person-group> (<year>1949</year>). <source>The Organization of Behavior</source>. <publisher-loc>New York, NY</publisher-loc>: <publisher-name>Wiley &#x00026; Sons</publisher-name>.</citation></ref>
<ref id="B26">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Hofstoetter</surname> <given-names>C.</given-names></name> <name><surname>Gil</surname> <given-names>M.</given-names></name> <name><surname>Eng</surname> <given-names>K.</given-names></name> <name><surname>Indiveri</surname> <given-names>G.</given-names></name> <name><surname>Mintz</surname> <given-names>M.</given-names></name> <name><surname>Kramer</surname> <given-names>J.</given-names></name> <etal/></person-group>. (<year>2005</year>). <article-title>The cerebellum chip: an analog vlsi implementation of a cerebellar model of classical conditioning</article-title>, in <source>Advances in Neural Information Processing Systems 17</source>, eds <person-group person-group-type="editor"><name><surname>Saul</surname> <given-names>L. K.</given-names></name> <name><surname>Weiss</surname> <given-names>Y.</given-names></name> <name><surname>Bottou</surname> <given-names>L.</given-names></name></person-group> (<publisher-loc>Vancouver, BC</publisher-loc>: <publisher-name>MIT Press</publisher-name>), <fpage>577</fpage>&#x02013;<lpage>584</lpage>.</citation></ref>
<ref id="B27">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Hopkins</surname> <given-names>M.</given-names></name> <name><surname>Furber</surname> <given-names>S.</given-names></name></person-group> (<year>2015</year>). <article-title>Accuracy and efficiency in fixed-point neural ODE solvers</article-title>. <source>Neural Comput.</source> <volume>27</volume>, <fpage>2148</fpage>&#x02013;<lpage>2182</lpage>. <pub-id pub-id-type="doi">10.1162/NECO_a_00772</pub-id><pub-id pub-id-type="pmid">26313605</pub-id></citation></ref>
<ref id="B28">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Izhikevich</surname> <given-names>E. M.</given-names></name></person-group> (<year>2007</year>). <article-title>Solving the distal reward problem through linkage of STDP and dopamine signaling</article-title>. <source>Cereb. Cortex</source> <volume>17</volume>, <fpage>2443</fpage>&#x02013;<lpage>2452</lpage>. <pub-id pub-id-type="doi">10.1093/cercor/bhl152</pub-id><pub-id pub-id-type="pmid">17220510</pub-id></citation></ref>
<ref id="B29">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Jin</surname> <given-names>X.</given-names></name> <name><surname>Furber</surname> <given-names>S. B.</given-names></name> <name><surname>Woods</surname> <given-names>J.</given-names></name></person-group> (<year>2008</year>). <article-title>Efficient modelling of spiking neural networks on a scalable chip multiprocessor</article-title>, in <source>2008 IEEE International Joint Conference on Neural Networks</source> (<publisher-loc>Hong Kong</publisher-loc>), <fpage>2812</fpage>&#x02013;<lpage>2819</lpage>.</citation></ref>
<ref id="B30">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Jin</surname> <given-names>X.</given-names></name> <name><surname>Rast</surname> <given-names>A.</given-names></name> <name><surname>Galluppi</surname> <given-names>F.</given-names></name></person-group> (<year>2010</year>). <article-title>Implementing spike-timing-dependent plasticity on SpiNNaker neuromorphic hardware</article-title>, in <source>The 2010 International Joint Conference on Neural Networks (IJCNN)</source> (<publisher-loc>Barcelona</publisher-loc>), <fpage>1</fpage>&#x02013;<lpage>8</lpage>.</citation></ref>
<ref id="B31">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Kindratenko</surname> <given-names>V. V.</given-names></name> <name><surname>Enos</surname> <given-names>J. J.</given-names></name> <name><surname>Shi</surname> <given-names>G.</given-names></name> <name><surname>Showerman</surname> <given-names>M. T.</given-names></name> <name><surname>Arnold</surname> <given-names>G. W.</given-names></name> <name><surname>Stone</surname> <given-names>J. E.</given-names></name> <etal/></person-group>. (<year>2009</year>). <article-title>GPU clusters for high-performance computing</article-title>, in <source>CLUSTER&#x00027;09. IEEE International Conference on Cluster Computing and Workshops, 2009</source> (<publisher-loc>New Orleans, LA</publisher-loc>), <fpage>1</fpage>&#x02013;<lpage>8</lpage>.</citation></ref>
<ref id="B32">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Klampfl</surname> <given-names>S.</given-names></name> <name><surname>Maass</surname> <given-names>W.</given-names></name></person-group> (<year>2013</year>). <article-title>Emergence of dynamic memory traces in cortical microcircuit models through STDP</article-title>. <source>J. Neurosci.</source> <volume>33</volume>, <fpage>11515</fpage>&#x02013;<lpage>11529</lpage>. <pub-id pub-id-type="doi">10.1523/JNEUROSCI.5044-12.2013</pub-id><pub-id pub-id-type="pmid">23843522</pub-id></citation></ref>
<ref id="B33">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Knight</surname> <given-names>J. C.</given-names></name> <name><surname>Furber</surname> <given-names>S. B.</given-names></name></person-group> (<year>2016</year>). <article-title>Synapse-centric mapping of cortical models to the SpiNNaker neuromorphic architecture</article-title>. <source>Front. Neurosci.</source> <volume>10</volume>:<fpage>420</fpage>. <pub-id pub-id-type="doi">10.3389/fnins.2016.00420</pub-id><pub-id pub-id-type="pmid">27683540</pub-id></citation></ref>
<ref id="B34">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Knight</surname> <given-names>J. C.</given-names></name> <name><surname>Tully</surname> <given-names>P. J.</given-names></name> <name><surname>Kaplan</surname> <given-names>B. A.</given-names></name> <name><surname>Lansner</surname> <given-names>A.</given-names></name> <name><surname>Furber</surname> <given-names>S. B.</given-names></name></person-group> (<year>2016</year>). <article-title>Large-scale simulations of plastic neural networks on neuromorphic hardware</article-title>. <source>Front. Neuroanat.</source> <volume>10</volume>:<fpage>37</fpage>. <pub-id pub-id-type="doi">10.3389/fnana.2016.00037</pub-id><pub-id pub-id-type="pmid">27092061</pub-id></citation></ref>
<ref id="B35">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Lagorce</surname> <given-names>X.</given-names></name> <name><surname>Stromatias</surname> <given-names>E.</given-names></name> <name><surname>Galluppi</surname> <given-names>F.</given-names></name> <name><surname>Plana</surname> <given-names>L. A.</given-names></name> <name><surname>Liu</surname> <given-names>S.-C.</given-names></name> <name><surname>Furber</surname> <given-names>S. B.</given-names></name> <etal/></person-group>. (<year>2015</year>). <article-title>Breaking the millisecond barrier on SpiNNaker: implementing asynchronous event-based plastic models with microsecond resolution</article-title>. <source>Front. Neurosci.</source> <volume>9</volume>:<fpage>206</fpage>. <pub-id pub-id-type="doi">10.3389/fnins.2015.00206</pub-id><pub-id pub-id-type="pmid">26106288</pub-id></citation></ref>
<ref id="B36">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Markram</surname> <given-names>H.</given-names></name> <name><surname>Lubke</surname> <given-names>J.</given-names></name> <name><surname>Frotscher</surname> <given-names>M.</given-names></name> <name><surname>Sakmann</surname> <given-names>B.</given-names></name></person-group> (<year>1997</year>). <article-title>Regulation of synaptic efficacy by coincidence of postsynaptic APs and EPSPs</article-title>. <source>Science</source> <volume>275</volume>, <fpage>213</fpage>&#x02013;<lpage>215</lpage>. <pub-id pub-id-type="pmid">8985014</pub-id></citation></ref>
<ref id="B37">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Mnih</surname> <given-names>V.</given-names></name> <name><surname>Kavukcuoglu</surname> <given-names>K.</given-names></name> <name><surname>Silver</surname> <given-names>D.</given-names></name> <name><surname>Rusu</surname> <given-names>A. A.</given-names></name> <name><surname>Veness</surname> <given-names>J.</given-names></name> <name><surname>Bellemare</surname> <given-names>M. G.</given-names></name> <etal/></person-group>. (<year>2015</year>). <article-title>Human-level control through deep reinforcement learning</article-title>. <source>Nature</source> <volume>518</volume>, <fpage>529</fpage>&#x02013;<lpage>533</lpage>. <pub-id pub-id-type="doi">10.1038/nature14236</pub-id><pub-id pub-id-type="pmid">25719670</pub-id></citation></ref>
<ref id="B38">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Morrison</surname> <given-names>A.</given-names></name> <name><surname>Aertsen</surname> <given-names>A.</given-names></name> <name><surname>Diesmann</surname> <given-names>M.</given-names></name></person-group> (<year>2007</year>). <article-title>Spike-timing-dependent plasticity in balanced random networks</article-title>. <source>Neural Comput.</source> <volume>19</volume>, <fpage>1437</fpage>&#x02013;<lpage>1467</lpage>. <pub-id pub-id-type="doi">10.1162/neco.2007.19.6.1437</pub-id><pub-id pub-id-type="pmid">17444756</pub-id></citation></ref>
<ref id="B39">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Morrison</surname> <given-names>A.</given-names></name> <name><surname>Diesmann</surname> <given-names>M.</given-names></name> <name><surname>Gerstner</surname> <given-names>W.</given-names></name></person-group> (<year>2008</year>). <article-title>Phenomenological models of synaptic plasticity based on spike timing</article-title>. <source>Biol. Cybern.</source> <volume>98</volume>, <fpage>459</fpage>&#x02013;<lpage>478</lpage>. <pub-id pub-id-type="doi">10.1007/s00422-008-0233-1</pub-id><pub-id pub-id-type="pmid">18491160</pub-id></citation></ref>
<ref id="B40">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Nichols</surname> <given-names>E.</given-names></name> <name><surname>Gardner</surname> <given-names>B.</given-names></name> <name><surname>Gruning</surname> <given-names>A.</given-names></name></person-group> (<year>2017</year>). <source>Supervised Learning on the SpiNNaker Neuromorphic Hardware</source>. <publisher-loc>Guildford, UK</publisher-loc>: <publisher-name>University of Surrey</publisher-name>.</citation></ref>
<ref id="B41">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>O&#x00027;Doherty</surname> <given-names>J.</given-names></name> <name><surname>Dayan</surname> <given-names>P.</given-names></name> <name><surname>Schultz</surname> <given-names>J.</given-names></name> <name><surname>Deichmann</surname> <given-names>R.</given-names></name> <name><surname>Friston</surname> <given-names>K.</given-names></name> <name><surname>Dolan</surname> <given-names>R. J.</given-names></name></person-group> (<year>2004</year>). <article-title>Dissociable roles of ventral and dorsal striatum in instrumental conditioning</article-title>. <source>Science</source> <volume>304</volume>, <fpage>452</fpage>&#x02013;<lpage>454</lpage>. <pub-id pub-id-type="doi">10.1126/science.1094285</pub-id><pub-id pub-id-type="pmid">15087550</pub-id></citation></ref>
<ref id="B42">
<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.</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>IEEE J. Solid-State Circ.</source> <volume>48</volume>, <fpage>1943</fpage>&#x02013;<lpage>1953</lpage>. <pub-id pub-id-type="doi">10.1109/JSSC.2013.2259038</pub-id></citation></ref>
<ref id="B43">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Pakkenberg</surname> <given-names>B.</given-names></name> <name><surname>Pelvig</surname> <given-names>D.</given-names></name> <name><surname>Marner</surname> <given-names>L.</given-names></name> <name><surname>Bundgaard</surname> <given-names>M. J.</given-names></name> <name><surname>Gundersen</surname> <given-names>H. J. G.</given-names></name> <name><surname>Nyengaard</surname> <given-names>J. R.</given-names></name> <etal/></person-group>. (<year>2003</year>). <article-title>Aging and the human neocortex</article-title>. <source>Exp. Gerontol.</source> <volume>38</volume>, <fpage>95</fpage>&#x02013;<lpage>99</lpage>. <pub-id pub-id-type="doi">10.1016/S0531-5565(02)00151-1</pub-id><pub-id pub-id-type="pmid">12543266</pub-id></citation></ref>
<ref id="B44">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Pavlov</surname> <given-names>I. P.</given-names></name> <name><surname>Thompson</surname> <given-names>W. H.</given-names></name></person-group> (<year>1902</year>). <source>The Work of the Digestive Glands: Lectures by Professor I. P. Pavlov /</source>. <publisher-loc>London</publisher-loc>: <publisher-name>C. Griffin</publisher-name>. Available online at: <ext-link ext-link-type="uri" xlink:href="https://www.biodiversitylibrary.org/bibliography/3784">https://www.biodiversitylibrary.org/bibliography/3784</ext-link></citation></ref>
<ref id="B45">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Pawlak</surname> <given-names>V.</given-names></name></person-group> (<year>2010</year>). <article-title>Timing is not everything: neuromodulation opens the STDP gate</article-title>. <source>Front. Synaptic Neurosci.</source> <volume>2</volume>:<fpage>416</fpage>. <pub-id pub-id-type="doi">10.3389/fnsyn.2010.00146</pub-id></citation></ref>
<ref id="B46">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Pawlak</surname> <given-names>V.</given-names></name> <name><surname>Kerr</surname> <given-names>J. N. D.</given-names></name></person-group> (<year>2008</year>). <article-title>Dopamine receptor activation is required for corticostriatal spike-timing-dependent plasticity</article-title>. <source>J. Neurosci.</source> <volume>28</volume>, <fpage>2435</fpage>&#x02013;<lpage>2446</lpage>. <pub-id pub-id-type="doi">10.1523/JNEUROSCI.4402-07.2008</pub-id><pub-id pub-id-type="pmid">18322089</pub-id></citation></ref>
<ref id="B47">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Pfister</surname> <given-names>J.-P.</given-names></name> <name><surname>Gerstner</surname> <given-names>W.</given-names></name></person-group> (<year>2006</year>). <article-title>Triplets of spikes in a model of spike timing-dependent plasticity</article-title>. <source>J. Neurosci.</source> <volume>26</volume>, <fpage>9673</fpage>&#x02013;<lpage>9682</lpage>. <pub-id pub-id-type="doi">10.1523/JNEUROSCI.1425-06.2006</pub-id><pub-id pub-id-type="pmid">16988038</pub-id></citation></ref>
<ref id="B48">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Potjans</surname> <given-names>W.</given-names></name> <name><surname>Diesmann</surname> <given-names>M.</given-names></name> <name><surname>Morrison</surname> <given-names>A.</given-names></name></person-group> (<year>2011</year>). <article-title>An imperfect dopaminergic error signal can drive temporal-difference learning</article-title>. <source>PLoS Comput. Biol.</source> <volume>7</volume>:<fpage>e1001133</fpage>. <pub-id pub-id-type="doi">10.1371/journal.pcbi.1001133</pub-id><pub-id pub-id-type="pmid">21589888</pub-id></citation></ref>
<ref id="B49">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Potjans</surname> <given-names>W.</given-names></name> <name><surname>Morrison</surname> <given-names>A.</given-names></name> <name><surname>Diesmann</surname> <given-names>M.</given-names></name></person-group> (<year>2009</year>). <article-title>A spiking neural network model of an actor-critic learning agent</article-title>. <source>Neural Comput.</source> <volume>21</volume>, <fpage>301</fpage>&#x02013;<lpage>339</lpage>. <pub-id pub-id-type="doi">10.1162/neco.2008.08-07-593</pub-id><pub-id pub-id-type="pmid">19196231</pub-id></citation></ref>
<ref id="B50">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Potjans</surname> <given-names>W.</given-names></name> <name><surname>Morrison</surname> <given-names>A.</given-names></name> <name><surname>Diesmann</surname> <given-names>M.</given-names></name></person-group> (<year>2010</year>). <article-title>Enabling functional neural circuit simulations with distributed computing of neuromodulated plasticity</article-title>. <source>Front. Comput. Neurosci.</source> <volume>4</volume>:<fpage>141</fpage>. <pub-id pub-id-type="doi">10.3389/fncom.2010.00141</pub-id><pub-id pub-id-type="pmid">21151370</pub-id></citation></ref>
<ref id="B51">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Reynolds</surname> <given-names>J. N. J.</given-names></name> <name><surname>Hyland</surname> <given-names>B. I.</given-names></name> <name><surname>Wickens</surname> <given-names>J. R.</given-names></name></person-group> (<year>2001</year>). <article-title>A cellular mechanism of reward-related learning</article-title>. <source>Nature</source> <volume>413</volume>, <fpage>67</fpage>&#x02013;<lpage>70</lpage>. <pub-id pub-id-type="doi">10.1038/35092560</pub-id><pub-id pub-id-type="pmid">11544526</pub-id></citation></ref>
<ref id="B52">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Schultz</surname> <given-names>W.</given-names></name></person-group> (<year>2000</year>). <article-title>Multiple reward signals in the brain</article-title>. <source>Nat. Rev. Neurosci.</source> <volume>1</volume>, <fpage>199</fpage>&#x02013;<lpage>207</lpage>. <pub-id pub-id-type="doi">10.1038/35044563</pub-id><pub-id pub-id-type="pmid">11257908</pub-id></citation></ref>
<ref id="B53">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Shen</surname> <given-names>W.</given-names></name> <name><surname>Flajolet</surname> <given-names>M.</given-names></name> <name><surname>Greengard</surname> <given-names>P.</given-names></name> <name><surname>Surmeier</surname> <given-names>D. J.</given-names></name></person-group> (<year>2008</year>). <article-title>Dichotomous dopaminergic control of striatal synaptic plasticity</article-title>. <source>Science</source> <volume>321</volume>, <fpage>848</fpage>&#x02013;<lpage>851</lpage>. <pub-id pub-id-type="doi">10.1126/science.1160575</pub-id><pub-id pub-id-type="pmid">18687967</pub-id></citation></ref>
<ref id="B54">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Shi</surname> <given-names>W.</given-names></name> <name><surname>Cao</surname> <given-names>J.</given-names></name> <name><surname>Zhang</surname> <given-names>Q.</given-names></name> <name><surname>Li</surname> <given-names>Y.</given-names></name> <name><surname>Xu</surname> <given-names>L.</given-names></name></person-group> (<year>2016</year>). <article-title>Edge computing: vision and challenges</article-title>. <source>IEEE Intern. Things J.</source> <volume>3</volume>, <fpage>637</fpage>&#x02013;<lpage>646</lpage>. <pub-id pub-id-type="doi">10.1109/JIOT.2016.2579198</pub-id></citation></ref>
<ref id="B55">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Shim</surname> <given-names>M. S.</given-names></name> <name><surname>Li</surname> <given-names>P.</given-names></name></person-group> (<year>2017</year>). <article-title>Biologically inspired reinforcement learning for mobile robot collision avoidance</article-title>, in <source>2017 International Joint Conference on Neural Networks (IJCNN)</source> (<publisher-loc>Anchorage, AK</publisher-loc>), <fpage>3098</fpage>&#x02013;<lpage>3105</lpage>.</citation></ref>
<ref id="B56">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Song</surname> <given-names>S.</given-names></name> <name><surname>Miller</surname> <given-names>K. D.</given-names></name> <name><surname>Abbott</surname> <given-names>L. F.</given-names></name></person-group> (<year>2000</year>). <article-title>Competitive Hebbian learning through spike-timing-dependent synaptic plasticity</article-title>. <source>Nat. Neurosci.</source> <volume>3</volume>, <fpage>919</fpage>&#x02013;<lpage>926</lpage>. <pub-id pub-id-type="doi">10.1038/78829</pub-id><pub-id pub-id-type="pmid">10966623</pub-id></citation></ref>
<ref id="B57">
<citation citation-type="web"><person-group person-group-type="author"><name><surname>Stokes</surname> <given-names>A. B.</given-names></name> <name><surname>Rowley</surname> <given-names>A. G. D.</given-names></name> <name><surname>Knight</surname> <given-names>J.</given-names></name> <name><surname>Lester</surname> <given-names>D. R.</given-names></name> <name><surname>Rast</surname> <given-names>A.</given-names></name> <name><surname>Hopkins</surname> <given-names>M. W.</given-names></name></person-group> (<year>2017</year>). <source>sPyNNaker 3.0.0</source>. Available online at: <ext-link ext-link-type="uri" xlink:href="https://github.com/SpiNNakerManchester/sPyNNaker/releases/tag/3.0.0">https://github.com/SpiNNakerManchester/sPyNNaker/releases/tag/3.0.0</ext-link></citation></ref>
<ref id="B58">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Stromatias</surname> <given-names>E.</given-names></name> <name><surname>Galluppi</surname> <given-names>F.</given-names></name> <name><surname>Patterson</surname> <given-names>C.</given-names></name> <name><surname>Furber</surname> <given-names>S. B.</given-names></name></person-group> (<year>2013</year>). <article-title>Power analysis of large-scale, real-time neural networks on SpiNNaker</article-title>, in <source>The 2013 International Joint Conference on Neural Networks (IJCNN)</source> (<publisher-loc>Dallas, TX</publisher-loc>), <fpage>1</fpage>&#x02013;<lpage>8</lpage>.</citation></ref>
<ref id="B59">
<citation citation-type="book"><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>1998</year>). <source>Introduction to Reinforcement Learning, 1st Edn</source>. <publisher-loc>Cambridge, MA</publisher-loc>: <publisher-name>MIT Press</publisher-name>.</citation></ref>
<ref id="B60">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Tully</surname> <given-names>P. J.</given-names></name> <name><surname>Hennig</surname> <given-names>M. H.</given-names></name> <name><surname>Lansner</surname> <given-names>A.</given-names></name></person-group> (<year>2014</year>). <article-title>Synaptic and nonsynaptic plasticity approximating probabilistic inference</article-title>. <source>Front. Synaptic Neurosci.</source> <volume>6</volume>:<fpage>8</fpage>. <pub-id pub-id-type="doi">10.3389/fnsyn.2014.00008</pub-id><pub-id pub-id-type="pmid">24782758</pub-id></citation></ref>
<ref id="B61">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Yavuz</surname> <given-names>E.</given-names></name> <name><surname>Turner</surname> <given-names>J.</given-names></name> <name><surname>Nowotny</surname> <given-names>T.</given-names></name></person-group> (<year>2016</year>). <article-title>GeNN: a code generation framework for accelerated brain simulations</article-title>. <source>Sci. Rep.</source> <volume>6</volume>:<fpage>18854</fpage>. <pub-id pub-id-type="doi">10.1038/srep18854</pub-id><pub-id pub-id-type="pmid">26740369</pub-id></citation></ref>
<ref id="B62">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zoli</surname> <given-names>M.</given-names></name> <name><surname>Jansson</surname> <given-names>A.</given-names></name> <name><surname>Sykov&#x000E1;</surname> <given-names>E.</given-names></name> <name><surname>Agnati</surname> <given-names>L. F.</given-names></name> <name><surname>Fuxe</surname> <given-names>K.</given-names></name></person-group> (<year>1999</year>). <article-title>Volume transmission in the CNS and its relevance for neuropsychopharmacology</article-title>. <source>Trends Pharmacol. Sci.</source> <volume>20</volume>, <fpage>142</fpage>&#x02013;<lpage>150</lpage>. <pub-id pub-id-type="doi">10.1016/S0165-6147(99)01343-7</pub-id><pub-id pub-id-type="pmid">10322499</pub-id></citation></ref>
</ref-list>
<fn-group>
<fn fn-type="financial-disclosure"><p><bold>Funding.</bold> The design and construction of the SpiNNaker machine was supported by EPSRC (the UK Engineering and Physical Sciences Research Council) under grants EP/D07908X/1 and EP/G015740/1, in collaboration with the universities of Southampton, Cambridge and Sheffield and with industry partners ARM Ltd, Silistix Ltd and Thales. Ongoing development of the software is supported by the EU ICT Flagship Human Brain Project (FP7-604102 &#x00026; H2020-720270), in collaboration with many university and industry partners across the EU and beyond, and exploration of the capabilities of the machine is supported by the European Research Council under the European Union&#x00027;s Seventh Framework Programme (FP7/2007-2013) / ERC grant agreement 320689. GP is funded by the Mexican National Council for Science and Technology (CONACyT). JK is funded by the EPSRC grant EP/P006094/1. MM is funded by EPSRC in the form of Kilburn studentship at the School of Computer Science.</p></fn>
</fn-group>
</back>
</article>
