<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Neurosci.</journal-id>
<journal-title>Frontiers in Neuroscience</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Neurosci.</abbrev-journal-title>
<issn pub-type="epub">1662-453X</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3389/fnins.2021.773954</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>Revisiting Batch Normalization for Training Low-Latency Deep Spiking Neural Networks From Scratch</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name><surname>Kim</surname> <given-names>Youngeun</given-names></name>
<xref ref-type="corresp" rid="c001"><sup>&#x0002A;</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/1395288/overview"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Panda</surname> <given-names>Priyadarshini</given-names></name>
<uri xlink:href="http://loop.frontiersin.org/people/474514/overview"/>
</contrib>
</contrib-group>
<aff><institution>Department of Electrical Engineering, Yale University</institution>, <addr-line>New Haven, CT</addr-line>, <country>United States</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: Jason Eshraghian, University of Michigan, United States; Elena Cerezuela, Sevilla University, Spain; Yujie Wu, Tsinghua University, China</p></fn>
<corresp id="c001">&#x0002A;Correspondence: Youngeun Kim <email>youngeun.kim&#x00040;yale.edu</email></corresp>
<fn fn-type="other" id="fn001"><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>09</day>
<month>12</month>
<year>2021</year>
</pub-date>
<pub-date pub-type="collection">
<year>2021</year>
</pub-date>
<volume>15</volume>
<elocation-id>773954</elocation-id>
<history>
<date date-type="received">
<day>10</day>
<month>09</month>
<year>2021</year>
</date>
<date date-type="accepted">
<day>08</day>
<month>11</month>
<year>2021</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#x000A9; 2021 Kim and Panda.</copyright-statement>
<copyright-year>2021</copyright-year>
<copyright-holder>Kim and Panda</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/"><p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p></license>
</permissions>
<abstract><p>Spiking Neural Networks (SNNs) have recently emerged as an alternative to deep learning owing to sparse, asynchronous and binary event (or spike) driven processing, that can yield huge energy efficiency benefits on neuromorphic hardware. However, SNNs convey temporally-varying spike activation through time that is likely to induce a large variation of forward activation and backward gradients, resulting in unstable training. To address this training issue in SNNs, we revisit Batch Normalization (BN) and propose a temporal Batch Normalization Through Time (BNTT) technique. Different from previous BN techniques with SNNs, we find that varying the BN parameters at every time-step allows the model to learn the time-varying input distribution better. Specifically, our proposed BNTT decouples the parameters in a BNTT layer along the time axis to capture the temporal dynamics of spikes. We demonstrate BNTT on CIFAR-10, CIFAR-100, Tiny-ImageNet, event-driven DVS-CIFAR10 datasets, and Sequential MNIST and show near state-of-the-art performance. We conduct comprehensive analysis on the temporal characteristic of BNTT and showcase interesting benefits toward robustness against random and adversarial noise. Further, by monitoring the learnt parameters of BNTT, we find that we can do temporal early exit. That is, we can reduce the inference latency by &#x0007E;5 &#x02212; 20 time-steps from the original training latency. The code has been released at <ext-link ext-link-type="uri" xlink:href="https://github.com/Intelligent-Computing-Lab-Yale/BNTT-Batch-Normalization-Through-Time">https://github.com/Intelligent-Computing-Lab-Yale/BNTT-Batch-Normalization-Through-Time</ext-link>.</p></abstract>
<kwd-group>
<kwd>spiking neural network</kwd>
<kwd>batch normalization</kwd>
<kwd>image recognition</kwd>
<kwd>event-based processing</kwd>
<kwd>energy-efficient deep learning</kwd>
</kwd-group>
<counts>
<fig-count count="8"/>
<table-count count="7"/>
<equation-count count="16"/>
<ref-count count="40"/>
<page-count count="13"/>
<word-count count="7898"/>
</counts>
</article-meta>
</front>
<body>
<sec sec-type="intro" id="s1">
<title>1. Introduction</title>
<p>Artificial Neural Networks (ANNs) have shown state-of-the-art performance across various computer vision tasks. Nonetheless, huge energy consumption incurred for implementing ANNs on conventional von-Neumann hardware limits their usage in low-power and resource-constrained Internet of Things (IoT) environment, such as mobile phones, drones among others. In the context of low-power machine intelligence, Spiking Neural Networks (SNNs) have received considerable attention in the recent past (Cao et al., <xref ref-type="bibr" rid="B5">2015</xref>; Diehl and Cook, <xref ref-type="bibr" rid="B10">2015</xref>; Roy et al., <xref ref-type="bibr" rid="B31">2019</xref>; Comsa et al., <xref ref-type="bibr" rid="B6">2020</xref>; Panda et al., <xref ref-type="bibr" rid="B27">2020</xref>). Inspired by biological neuronal mechanisms, SNNs process visual information with discrete spikes or events over multiple time-steps. Recent works have shown that the event-driven behavior of SNNs can be implemented on emerging neuromorphic hardware to yield 1&#x02013;2 order of magnitude energy efficiency over ANNs (Akopyan et al., <xref ref-type="bibr" rid="B1">2015</xref>; Davies et al., <xref ref-type="bibr" rid="B7">2018</xref>). Despite the energy efficiency benefits, SNNs have still not been widely adopted due to inherent training challenges. The training issue arises from the non-differentiable characteristic of a spiking neuron, generally, Integrate-and-Fire (IF) type (Burkitt, <xref ref-type="bibr" rid="B4">2006</xref>), that makes SNNs incompatible with gradient descent training.</p>
<p>To address the training issue of SNNs, several methods, such as, <italic>Conversion</italic> and <italic>Surrogate Gradient Descent</italic> have been proposed. In ANN-SNN conversion (Diehl et al., <xref ref-type="bibr" rid="B11">2015</xref>; Rueckauer et al., <xref ref-type="bibr" rid="B32">2017</xref>; Sengupta et al., <xref ref-type="bibr" rid="B34">2019</xref>; Han et al., <xref ref-type="bibr" rid="B15">2020</xref>), off-the-shelf trained ANNs are converted to SNNs using normalization methods to transfer ReLU activation to IF spiking activity. The advantage here is that training happens in the ANN domain leveraging widely used machine learning frameworks like, PyTorch, that yield short training time and can be applied to complex datasets. But the ANN-SNN conversion method requires large number of time-steps (&#x0007E; 500 &#x02212; 1, 000) for inference to yield competitive accuracy, which significantly increases the latency and energy consumption of the SNN. On the other hand, directly training SNNs with a surrogate gradient function (Wu et al., <xref ref-type="bibr" rid="B38">2018</xref>; Neftci et al., <xref ref-type="bibr" rid="B25">2019</xref>; Lee et al., <xref ref-type="bibr" rid="B22">2020</xref>) exploits temporal dynamics of spikes, resulting in lesser number of time-steps (&#x0007E; 100 &#x02212; 150). However, the discrepancy between forward spike activation function and backward surrogate gradient function during backpropagation restricts the training capability. Therefore, naive SNNs without additional optimization techniques are difficult to be trained on large-scale datasets (e.g., CIFAR-100 and Tiny-ImageNet). Recently, a hybrid method (Rathi et al., <xref ref-type="bibr" rid="B30">2020</xref>) that combines the conversion method and the surrogate gradient-based method shows state-of-the-art performance at reasonable latency (&#x0007E;250 time-steps). However, the hybrid method incurs sequential processes, i.e., training ANN from scratch, conversion of ANN to SNN, and training SNNs using surrogate gradient descent, that increases the total computation cost to obtain the final SNN model. Overall, training high-accuracy and low-latency SNNs from scratch still remains an open problem.</p>
<p>In this paper, we investigate the temporal characteristics of Batch Normalization (BN) for more advanced SNN training. The BN layer (Ioffe and Szegedy, <xref ref-type="bibr" rid="B16">2015</xref>) has been used extensively in deep learning to accelerate the training process of ANNs. It is well known that BN reduces internal covariate shift (or soothing optimization landscape Santurkar et al., <xref ref-type="bibr" rid="B33">2018</xref>) mitigating the problem of exploding/vanishing gradients. In SNN literature, there are a few recent works that leverage BN layers during training and have shown competitive performance for image classification tasks with low latency. Ledinauskas et al. (<xref ref-type="bibr" rid="B21">2020</xref>) use a standard BN layer and show the scalability of SNNs toward deep architectures with BN layers. Fang et al. (<xref ref-type="bibr" rid="B13">2020</xref>) propose a learnable membrane time constant with a standard BN layer. Zheng et al. (<xref ref-type="bibr" rid="B40">2020</xref>) present the advantage of scaling BN parameter according to the neuronal firing threshold. Even though the previous BN approaches show performance/latency improvement, we assert that there is need to explore the advantage of BN in the temporal dimension since SNNs convey information through time. The previous BN works with SNNs use a single BN parameter across all time-steps. We are essentially motivated by the question, <italic>Can a single learnable parameter in the BN layer learn the temporal characteristics of the input spikes that vary across different time-steps?</italic></p>
<p>Different from previous works, we highlight the importance of temporal characterization of BN technique. To this end, we propose a new SNN-crafted batch normalization layer called Batch Normalization Through Time (BNTT) that decouples the parameters in the BN layer across different time-steps. BNTT is implemented as an additional layer in SNNs and is trained with surrogate gradient backpropagation. To investigate the effect of our BNTT, we compare the statistics of spike activity of BNTT with previous approaches: Conversion (Sengupta et al., <xref ref-type="bibr" rid="B34">2019</xref>) and standard Surrogate Gradient Descent (Neftci et al., <xref ref-type="bibr" rid="B25">2019</xref>), as shown in <xref ref-type="fig" rid="F1">Figure 1</xref>. Interestingly, different from the conversion method and surrogate gradient method (without BNTT) that maintain reasonable spike activity during the entire time period across different layers, spike activity of layers trained with BNTT follows a gaussian-like trend. BNTT imposes a variation in spiking across different layers, wherein, each layer&#x00027;s activity peaks in a particular time-step range and then decreases. Moreover, the peaks for early layers occur at initial time-steps and latter layers peak at later time-steps. This phenomenon implies that learnable parameters in BNTT enable the networks to pass the visual information temporally from shallow to deeper layers in an effective manner.</p>
<fig id="F1" position="float">
<label>Figure 1</label>
<caption><p>Visualization of the average number of spikes in each layer with respect to time-steps. Compared to <bold>(A)</bold> ANN-SNN conversion and <bold>(B)</bold> surrogate gradient-based backpropagation, our <bold>(C)</bold> BNTT captures the temporal dynamics of spike activation with learnable parameters, enabling low-latency (i.e., small time-steps) and low-energy (i.e., less number of spikes) training. All experiments are conducted on CIFAR-10 with VGG9.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnins-15-773954-g0001.tif"/>
</fig>
<p>The newly observed characteristics of BNTT brings several advantages. First, similar to BN, the BNTT layer enables SNNs to be trained stably from scratch even for large-scale datasets. Second, learnable parameters in BNTT enable SNNs to be trained with low latency (&#x0007E; 25 &#x02212; 50 time-steps) and impose optimum spike activity across different layers for low-energy inference. Finally, the distribution of the BNTT learnable parameter (i.e., &#x003B3;) is a good representation of the temporal dynamics of spikes. Hence, relying on the observation that low &#x003B3; value induces low spike activity and vice-versa, we further propose a temporal early exit algorithm. Here, an SNN can predict at an earlier time-step and does not need to wait till the end of the time period to make a prediction.</p>
<p>In summary, our key contributions are as follows: (i) We explore the temporal characteristics of BN for SNNs and propose a temporally adaptive BN approach, called BNTT. (ii) BNTT allows SNNs to be implemented in a low-latency and low-energy environment. (iii) We further propose a temporal early exit algorithm at inference time by monitoring the learnable parameters in BNTT. (iv) To ascertain that BNTT captures the temporal characteristics of SNNs, we mathematically show that proposed BNTT has similar effect as controlling the firing threshold of the spiking neuron at every time step during inference.</p>
</sec>
<sec id="s2">
<title>2. Batch Normalization</title>
<p>Batch Normalization (BN) reduces the internal covariate shift (or variation of loss landscape Santurkar et al., <xref ref-type="bibr" rid="B33">2018</xref>) caused by the distribution change of input signal, which is a known problem of deep neural networks (Ioffe and Szegedy, <xref ref-type="bibr" rid="B16">2015</xref>). Instead of calculating the statistics of total dataset, the intermediate representations are standardized with a mini-batch to reduce the computation complexity. Given a mini-batch <inline-formula><mml:math id="M1"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">B</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mo>&#x02026;</mml:mo><mml:mo>,</mml:mo><mml:mi>m</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo>}</mml:mo></mml:mrow></mml:math></inline-formula>, the BN layer computes the mean and variance of the mini-batch as:</p>
<disp-formula id="E1"><label>(1)</label><mml:math id="M2"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">B</mml:mi></mml:mrow></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:mfrac><mml:mstyle displaystyle="true"><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>b</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:munderover></mml:mstyle><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>;</mml:mo><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:msubsup><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">B</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:mfrac><mml:mstyle displaystyle="true"><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>b</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:munderover></mml:mstyle><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">B</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Then, the input features in the mini-batch are normalized with calculated statistics as:</p>
<disp-formula id="E2"><label>(2)</label><mml:math id="M3"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mover accent="false"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">B</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msqrt><mml:mrow><mml:msubsup><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">B</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003F5;</mml:mi></mml:mrow></mml:msqrt></mml:mrow></mml:mfrac><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where, &#x003F5; is a small constant for numerical stability. To further improve the representation capability of the layer, learnable parameters &#x003B3; and &#x003B2; are used to transform the input features that can be formulated as <inline-formula><mml:math id="M4"><mml:mi>B</mml:mi><mml:mi>N</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mi>&#x003B3;</mml:mi><mml:msub><mml:mrow><mml:mover accent="false"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003B2;</mml:mi></mml:math></inline-formula>. At inference time, BN uses the running average of mean and variance obtained from training. In this work, different from the static BN, we explore the temporal characteristics of BN with SNNs by enabling temporally-varying parameters in BN.</p>
</sec>
<sec sec-type="methods" id="s3">
<title>3. Methodology</title>
<sec>
<title>3.1. Spiking Neural Networks</title>
<p>Different from conventional ANNs, SNNs transmit information using binary spike trains. To leverage the temporal spike information, Leaky-Integrate-and-Fire (LIF) model (Dayan and Abbott, <xref ref-type="bibr" rid="B8">2001</xref>) is widely used to emulate neuronal functionality in SNNs, which can be formulated as a differential equation:</p>
<disp-formula id="E3"><label>(3)</label><mml:math id="M5"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mfrac><mml:mrow><mml:mi>d</mml:mi><mml:msub><mml:mrow><mml:mi>U</mml:mi></mml:mrow><mml:mrow><mml:mi>m</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:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>U</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:mi>R</mml:mi><mml:mi>I</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></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, <italic>U</italic><sub><italic>m</italic></sub> represents the membrane potential of the neuron that characterizes the internal state of the neuron, &#x003C4;<sub><italic>m</italic></sub> is the time constant of membrane potential decay. Also, <italic>R</italic> and <italic>I</italic>(<italic>t</italic>) denote the input resistance and the input current at time <italic>t</italic>, respectively. Following the previous work (Wu et al., <xref ref-type="bibr" rid="B39">2019</xref>), we convert this continuous dynamic equation into a discrete equation for digital simulation. For a single post-synaptic neuron <italic>i</italic>, we can represent the membrane potential <inline-formula><mml:math id="M6"><mml:msubsup><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> at time-step <italic>t</italic> as:</p>
<disp-formula id="E4"><label>(4)</label><mml:math id="M7"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msubsup><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:mi>&#x003BB;</mml:mi><mml:msubsup><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo>&#x0002B;</mml:mo><mml:mstyle displaystyle="true"><mml:munder><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:munder></mml:mstyle><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:msubsup><mml:mrow><mml:mi>o</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Here, <italic>j</italic> is the index of a pre-synaptic neuron, &#x003BB; is a leak factor with value less than 1, <italic>o</italic><sub><italic>j</italic></sub> is the binary spike activation, and <italic>w</italic><sub><italic>ij</italic></sub> is the weight of the connection between pre- and post-neurons. From Equation (4), the membrane potential of a neuron decreases due to leak and increases due to the weighted sum of incoming input spikes.</p>
<p>If the membrane potential <italic>u</italic> exceeds a pre-defined firing threshold &#x003B8;, the LIF neuron <italic>i</italic> generates a binary spike output <italic>o</italic><sub><italic>i</italic></sub>. After that, we perform a soft reset, where the membrane potential <italic>u</italic><sub><italic>i</italic></sub> is reset by reducing its value by the threshold &#x003B8;. Compared to a hard reset (resetting the membrane potential <italic>u</italic><sub><italic>i</italic></sub> to zero after neuron <italic>i</italic> spikes), the soft reset minimizes information loss by maintaining the residual voltage and carrying it forward to the next time step, thereby achieving better performance (Han et al., <xref ref-type="bibr" rid="B15">2020</xref>). <xref ref-type="fig" rid="F2">Figure 2A</xref> illustrates the membrane potential dynamics of a LIF neuron.</p>
<fig id="F2" position="float">
<label>Figure 2</label>
<caption><p><bold>(A)</bold> Illustration of spike activities in Leaky-Integrate-and-Fire neurons. <bold>(B)</bold> The approximated gradient value with respect to the membrane potential.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnins-15-773954-g0002.tif"/>
</fig>
<p>For the output layer, we discard the thresholding functionality so that neurons do not generate any spikes. We allow the output neurons to accumulate the spikes over all time-steps by fixing the leak parameter (&#x003BB; in Equation 4) as one. This enables the output layer to compute probability distribution after softmax function without information loss. As with ANNs, the number of output neurons in SNNs is identical to the number of classes <italic>C</italic> in the dataset. From the accumulated membrane potential, we can define the cross-entropy loss for SNNs as:</p>
<disp-formula id="E5"><label>(5)</label><mml:math id="M8"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mi>L</mml:mi><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:munder><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:munder></mml:mstyle><mml:msub><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mi>l</mml:mi><mml:mi>o</mml:mi><mml:mi>g</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:msup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:msubsup><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:mstyle displaystyle="true"><mml:msubsup><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>C</mml:mi></mml:mrow></mml:msubsup></mml:mstyle><mml:msup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:msubsup><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup></mml:mrow></mml:msup></mml:mrow></mml:mfrac></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, <italic>y</italic> is the ground-truth label, and <italic>T</italic> represents the total number of time-steps. Then, the weights of all layers are updated by backpropagating the loss value with gradient descent.</p>
<p>To compute the gradients of each layer <italic>l</italic>, we use back-propagation through time (BPTT), which accumulates the gradients over all time-steps (Wu et al., <xref ref-type="bibr" rid="B38">2018</xref>; Neftci et al., <xref ref-type="bibr" rid="B25">2019</xref>). These approaches can be implemented with auto-differentiation tools, such as PyTorch (Paszke et al., <xref ref-type="bibr" rid="B29">2017</xref>), that enable backpropagation on the unrolled network. To this end, we compute the loss function at time-step <italic>T</italic> and use gradient descent optimization. Mathematically, we can define the accumulated gradients at the layer <italic>l</italic> by chain rule as:</p>
<disp-formula id="E6"><label>(6)</label><mml:math id="M9"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr columnalign="left"><mml:mtd><mml:mfrac><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:msub><mml:mrow><mml:mi>W</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mrow><mml:mtable style="text-align:axis;" equalrows="false" columnlines="none" equalcolumns="false" class="array"><mml:mtr columnalign="left"><mml:mtd><mml:mstyle displaystyle="true"><mml:msub><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msub></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:msubsup><mml:mrow><mml:mi>O</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow></mml:mfrac><mml:mfrac><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:msubsup><mml:mrow><mml:mi>O</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:msubsup><mml:mrow><mml:mi>U</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow></mml:mfrac><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:msubsup><mml:mrow><mml:mi>U</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:mfrac><mml:mfrac><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:msubsup><mml:mrow><mml:mi>U</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:msubsup><mml:mrow><mml:mi>U</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mfrac><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:msubsup><mml:mrow><mml:mi>U</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:msub><mml:mrow><mml:mi>W</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mo>,</mml:mo></mml:mtd><mml:mtd><mml:mtext class="textrm" mathvariant="normal">if&#x000A0;</mml:mtext><mml:mstyle class="math"><mml:mi>l</mml:mi><mml:mtext class="textrm" mathvariant="normal">= hidden layer</mml:mtext></mml:mstyle></mml:mtd></mml:mtr><mml:mtr columnalign="left"><mml:mtd><mml:mstyle displaystyle="true"><mml:msub><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msub></mml:mstyle><mml:mfrac><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:msubsup><mml:mrow><mml:mi>U</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup></mml:mrow></mml:mfrac><mml:mfrac><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:msubsup><mml:mrow><mml:mi>U</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:msub><mml:mrow><mml:mi>W</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mo>.</mml:mo></mml:mtd><mml:mtd><mml:mtext class="textrm" mathvariant="normal">if&#x000A0;</mml:mtext><mml:mstyle class="math"><mml:mi>l</mml:mi><mml:mtext class="textrm" mathvariant="normal">= output layer</mml:mtext></mml:mstyle></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Here, <italic>O</italic><sub><italic>l</italic></sub> and <italic>U</italic><sub><italic>l</italic></sub> are output spikes and membrane potential at layer <italic>l</italic>, respectively. For the output layer, we get the derivative of the loss <italic>L</italic> with respect to the membrane potential <inline-formula><mml:math id="M10"><mml:msubsup><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> at final time-step <italic>T</italic>:</p>
<disp-formula id="E7"><label>(7)</label><mml:math id="M11"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mfrac><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:msubsup><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:msup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:msubsup><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:mstyle displaystyle="true"><mml:msubsup><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>C</mml:mi></mml:mrow></mml:msubsup></mml:mstyle><mml:msup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:msubsup><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup></mml:mrow></mml:msup></mml:mrow></mml:mfrac><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>This derivative function is continuous and differentiable for all possible membrane potential values.</p>
<p>On the other hand, LIF neurons in hidden layers generate spike output only if the membrane potential <inline-formula><mml:math id="M12"><mml:msubsup><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> exceeds the firing threshold, leading to non-differentiability. To deal with this problem, we introduce an approximate gradient (<xref ref-type="fig" rid="F2">Figure 2B</xref>):</p>
<disp-formula id="E8"><label>(8)</label><mml:math id="M13"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mfrac><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:msubsup><mml:mrow><mml:mi>o</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:msubsup><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mi>&#x003B1;</mml:mi><mml:mtext>&#x000A0;max</mml:mtext><mml:mrow><mml:mo stretchy="false">{</mml:mo><mml:mrow><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mtext>&#x000A0;</mml:mtext><mml:mo stretchy="false">|</mml:mo><mml:mfrac><mml:mrow><mml:mstyle displaystyle="true"><mml:msubsup><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mstyle><mml:mo>-</mml:mo><mml:mi>&#x003B8;</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x003B8;</mml:mi></mml:mrow></mml:mfrac><mml:mtext>&#x000A0;</mml:mtext><mml:mo stretchy="false">|</mml:mo></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, &#x003B1; is a damping factor for back-propagated gradients. Note, a large &#x003B1; value causes unstable training as gradients are summed over all time-steps. Hence, we set &#x003B1; to 0.3. Overall, we update the network parameters at the layer <italic>l</italic> based on the gradient value (Equation 6) as <italic>W</italic><sub><italic>l</italic></sub> &#x0003D; <italic>W</italic><sub><italic>l</italic></sub> &#x02212; &#x003B7;&#x00394;<italic>W</italic><sub><italic>l</italic></sub>.</p>
</sec>
<sec>
<title>3.2. Batch Normalization Through Time (BNTT)</title>
<p>In this work, we present a new temporally-variant Batch Normalization for accelerating SNN training. We first visualize the distribution of the input signal of standard BN at layer 5 in VGG9 SNN with surrogate-gradients based training (<xref ref-type="fig" rid="F3">Figure 3</xref>). The results show that the input signal to the BN layer varies with time. Therefore, we assert that if we enable temporal flexibility to BN parameters (e.g., global mean &#x003BC;, global variation &#x003C3;, and learnable parameter &#x003B3;), the representation power of the networks might be improved.</p>
<fig id="F3" position="float">
<label>Figure 3</label>
<caption><p>SNNs with standard BN: <bold>(A)</bold> Distributions of the input activation of BN at time-step 1, 10, and 20. <bold>(B)</bold> While the mean of input activation varies with time, stored mean in standard BN layer has constant value at inference. This will create discrepancy and inhibit the BN layer to learn well. This suggests a temporally varying BN technique.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnins-15-773954-g0003.tif"/>
</fig>
<p>To this end, we vary the internal parameters in a BN layer through time, that we define as, BNTT. Similar to the digital simulation of LIF neuron across different time-steps, one BNTT layer is expanded temporally with a local learning parameter associated with each time-step. This allows the BNTT layer to capture temporal statistics (see section 3.3 for mathematical analysis). The proposed BNTT layer is easily applied to SNNs by inserting the layer after convolutional/linear operations as:</p>
<disp-formula id="E9"><label>(9)</label><mml:math id="M14"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msubsup><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:mi>&#x003BB;</mml:mi><mml:msubsup><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo>&#x0002B;</mml:mo><mml:mi>B</mml:mi><mml:mi>N</mml:mi><mml:mi>T</mml:mi><mml:msub><mml:mrow><mml:mi>T</mml:mi></mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mi>&#x003B3;</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mstyle displaystyle="true"><mml:munder><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:munder></mml:mstyle><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:msubsup><mml:mrow><mml:mi>o</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo>=</mml:mo><mml:mi>&#x003BB;</mml:mi><mml:msubsup><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo>&#x0002B;</mml:mo><mml:msubsup><mml:mrow><mml:mi>&#x003B3;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mstyle displaystyle="true"><mml:msub><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mstyle><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:msubsup><mml:mrow><mml:mi>o</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:msubsup><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:msqrt><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003F5;</mml:mi></mml:mrow></mml:msqrt></mml:mrow></mml:mfrac></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>During the training process, we compute the mean <inline-formula><mml:math id="M15"><mml:msubsup><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> and variance <inline-formula><mml:math id="M16"><mml:msubsup><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> from the samples in a mini-batch <inline-formula><mml:math id="M17"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">B</mml:mi></mml:mrow></mml:math></inline-formula> for each time step <italic>t</italic>, as shown in <xref ref-type="table" rid="TA1">Algorithm 1</xref>. Note, for each time-step <italic>t</italic>, we apply an exponential moving average to approximate global mean <inline-formula><mml:math id="M18"><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mo>&#x0002D;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> and variance <inline-formula><mml:math id="M19"><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mo>&#x0002D;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> over training iterations. These global statistics are used to normalize the test data at inference. Also, we do not utilize &#x003B2; as in conventional BN, since it adds redundant voltage to the membrane potential of SNNs.</p>
<table-wrap position="float" id="TA1">
<label>Algorithm 1</label>
<caption><p>BNTT layer</p></caption>
<table frame="hsides" rules="groups">
<tbody>
<tr>
<td align="left" valign="top"><bold>Input:</bold> mini-batch <inline-formula><mml:math id="M41"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">B</mml:mi></mml:mrow></mml:math></inline-formula> at time step <italic>t</italic> (<inline-formula><mml:math id="M42"><mml:msubsup><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo>{</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>&#x02026;</mml:mo><mml:mi>m</mml:mi></mml:mrow><mml:mo>}</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula>), learnable parameter (&#x003B3;<sup><italic>t</italic></sup>), update factor (&#x003B1;)</td>
</tr>
<tr>
<td align="left" valign="top"><bold>Output:</bold> <inline-formula><mml:math id="M43"><mml:mrow><mml:mo>{</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mstyle class="text"><mml:mtext class="textup" mathvariant="normal">BNTT</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mi>&#x003B3;</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo>}</mml:mo></mml:mrow></mml:math></inline-formula></td>
</tr>
<tr>
<td align="left" valign="top">1: &#x000A0;<inline-formula><mml:math id="M44"><mml:msup><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msup><mml:mo>&#x02190;</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:mfrac><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>b</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:munderover><mml:msubsup><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>b</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula>
</td>
</tr>
<tr><td align="left" valign="top">2: &#x000A0;<inline-formula><mml:math id="M45"><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x02190;</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:mfrac><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>b</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:munderover><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>b</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:msup><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>
</td>
</tr>
<tr><td align="left" valign="top">3: &#x000A0;<inline-formula><mml:math id="M46"><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:msup><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msup><mml:mo>-</mml:mo><mml:msup><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:msqrt><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003F5;</mml:mi></mml:mrow></mml:msqrt></mml:mrow></mml:mfrac></mml:math></inline-formula>
</td>
</tr>
<tr><td align="left" valign="top">4: &#x000A0;<inline-formula><mml:math id="M47"><mml:msup><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msup><mml:mo>&#x02190;</mml:mo><mml:msup><mml:mrow><mml:mi>&#x003B3;</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msup><mml:mo>&#x02261;</mml:mo><mml:msub><mml:mrow><mml:mstyle class="text"><mml:mtext class="textup" mathvariant="normal">BNTT</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mi>&#x003B3;</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>
</td>
</tr>
<tr><td align="left" valign="top">5: &#x000A0;% Exponential moving average
</td>
</tr>
<tr><td align="left" valign="top">6: &#x000A0;<inline-formula><mml:math id="M48"><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mo>&#x0002D;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msup><mml:mo>&#x02190;</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mi>&#x003B1;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mo>&#x0002D;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msup><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003B1;</mml:mi><mml:msup><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula>
</td>
</tr>
<tr><td align="left" valign="top">7: &#x000A0;<inline-formula><mml:math id="M49"><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mo>&#x0002D;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msup><mml:mo>&#x02190;</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mi>&#x003B1;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mo>&#x0002D;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msup><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003B1;</mml:mi><mml:msup><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula>
</td>
</tr> 
</tbody>
</table>
</table-wrap>
<p>Adding the BNTT layer to LIF neurons changes the gradient calculation for backpropagation. Given that <inline-formula><mml:math id="M20"><mml:msubsup><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><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:msubsup><mml:mrow><mml:mi>o</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> is an input signal to the BNTT layer, we can calculate the gradient value passed through lower layers by the BNTT layer as:</p>
<disp-formula id="E10"><label>(10)</label><mml:math id="M21"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mfrac><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:msubsup><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>b</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:msqrt><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003F5;</mml:mi></mml:mrow></mml:msqrt></mml:mrow></mml:mfrac><mml:mrow><mml:mo stretchy="true">(</mml:mo><mml:mrow><mml:mi>m</mml:mi><mml:mfrac><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>b</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow></mml:mfrac><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:munderover></mml:mstyle><mml:mfrac><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow></mml:mfrac><mml:mo>-</mml:mo><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>b</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup><mml:mstyle displaystyle="true"><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:munderover></mml:mstyle><mml:mfrac><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow></mml:mfrac><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></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>Here, we omit a neuron index <italic>i</italic> for simplicity. Also, <italic>m</italic> and <italic>b</italic> denote the batch size and batch index (see <xref ref-type="supplementary-material" rid="SM1">Supplementary Material A</xref> for more detail). Thus, for every time-step <italic>t</italic>, gradients are calculated based on the time-specific statistics of input signals. This allows the networks to take into account temporal dynamics for training weight connections. Moreover, a learnable parameter &#x003B3; is updated to restore the representation power of the batch normalized signal. Since we use different &#x003B3;<sup><italic>t</italic></sup> values across all time-steps, &#x003B3;<sup><italic>t</italic></sup> finds an optimum over each time-step for efficient inference. We update gamma &#x003B3;<sup><italic>t</italic></sup> &#x0003D; &#x003B3;<sup><italic>t</italic></sup> &#x02212; &#x003B7;&#x00394;&#x003B3;<sup><italic>t</italic></sup> where:</p>
<disp-formula id="E11"><label>(11)</label><mml:math id="M22"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mo>&#x00394;</mml:mo><mml:msup><mml:mrow><mml:mi>&#x003B3;</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:msup><mml:mrow><mml:mi>&#x003B3;</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:msup><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:mfrac><mml:mfrac><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:msup><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:msup><mml:mrow><mml:mi>&#x003B3;</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:munderover></mml:mstyle><mml:mfrac><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:msubsup><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow></mml:mfrac><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
</sec>
<sec>
<title>3.3. Mathematical Analysis</title>
<p>In this section, we discuss the connections between BNTT and the firing threshold of a LIF neuron. Specifically, we formally prove that using BNTT has a similar effect as varying the firing threshold over different time-steps, thereby ascertaining that BNTT captures temporal characteristics in SNNs. Recall that BNTT normalizes the input signal using stored approximated global average <inline-formula><mml:math id="M23"><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mo>&#x0002D;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> and standard deviation <inline-formula><mml:math id="M24"><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo>&#x0002D;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> at inference. From Equation (9), we can calculate a membrane potential at time-step <italic>t</italic> &#x0003D; 1, given that initial membrane potential <inline-formula><mml:math id="M25"><mml:msubsup><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula> has a zero value:</p>
<disp-formula id="E12"><label>(12)</label><mml:math id="M26"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msubsup><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mrow><mml:mi>&#x003B3;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mstyle displaystyle="true"><mml:msub><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mstyle><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:msubsup><mml:mrow><mml:mi>o</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mo>&#x0002D;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:msqrt><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mo>&#x0002D;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003F5;</mml:mi></mml:mrow></mml:msqrt></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo>&#x02248;</mml:mo><mml:mfrac><mml:mrow><mml:msubsup><mml:mrow><mml:mi>&#x003B3;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:msqrt><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mo>&#x0002D;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003F5;</mml:mi></mml:mrow></mml:msqrt></mml:mrow></mml:mfrac><mml:mstyle displaystyle="true"><mml:munder><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:munder></mml:mstyle><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:msubsup><mml:mrow><mml:mi>o</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:msubsup><mml:mrow><mml:mi>&#x003B3;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:msqrt><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mo>&#x0002D;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003F5;</mml:mi></mml:mrow></mml:msqrt></mml:mrow></mml:mfrac><mml:msubsup><mml:mrow><mml:mi>&#x00169;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Here, we assume <inline-formula><mml:math id="M27"><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mo>&#x0002D;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula> can be neglected with small signal approximation due to the spike sparsity in SNNs, and <inline-formula><mml:math id="M28"><mml:msubsup><mml:mrow><mml:mi>&#x00169;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><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:msubsup><mml:mrow><mml:mi>o</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula> is membrane potential at time-step <italic>t</italic> &#x0003D; 1 without BNTT (obtained from Equation 4). We can observe that the membrane potential with BNTT is proportional to the membrane potential without BNTT at <italic>t</italic> &#x0003D; 1. For time-step <italic>t</italic> &#x0003E; 1, we should take into account the membrane potential from the previous time-step, which is multiplied by leak &#x003BB;. To this end, by substituting (Equation 12) in the BNTT equation (Equation 9), we can formulate the membrane potential at <italic>t</italic> &#x0003D; 2 as:</p>
<disp-formula id="E13"><label>(13)</label><mml:math id="M29"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msubsup><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup><mml:mo>&#x02248;</mml:mo><mml:mi>&#x003BB;</mml:mi><mml:msubsup><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:msubsup><mml:mrow><mml:mi>&#x003B3;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:msqrt><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003F5;</mml:mi></mml:mrow></mml:msqrt></mml:mrow></mml:mfrac><mml:mstyle displaystyle="true"><mml:munder><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:munder></mml:mstyle><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:msubsup><mml:mrow><mml:mi>o</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo>=</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mi>&#x003BB;</mml:mi><mml:msubsup><mml:mrow><mml:mi>&#x003B3;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:msqrt><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003F5;</mml:mi></mml:mrow></mml:msqrt></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:msubsup><mml:mrow><mml:mi>&#x00169;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:msubsup><mml:mrow><mml:mi>&#x003B3;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:msqrt><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003F5;</mml:mi></mml:mrow></mml:msqrt></mml:mrow></mml:mfrac><mml:mstyle displaystyle="true"><mml:munder><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:munder></mml:mstyle><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:msubsup><mml:mrow><mml:mi>o</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo>&#x02248;</mml:mo><mml:mfrac><mml:mrow><mml:msubsup><mml:mrow><mml:mi>&#x003B3;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:msqrt><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003F5;</mml:mi></mml:mrow></mml:msqrt></mml:mrow></mml:mfrac><mml:mrow><mml:mo stretchy="false">{</mml:mo><mml:mrow><mml:mi>&#x003BB;</mml:mi><mml:msubsup><mml:mrow><mml:mi>&#x00169;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo>&#x0002B;</mml:mo><mml:mstyle displaystyle="true"><mml:munder><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:munder></mml:mstyle><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:msubsup><mml:mrow><mml:mi>o</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:mrow><mml:mo stretchy="false">}</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:msubsup><mml:mrow><mml:mi>&#x003B3;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:msqrt><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003F5;</mml:mi></mml:mrow></mml:msqrt></mml:mrow></mml:mfrac><mml:msubsup><mml:mrow><mml:mi>&#x00169;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>In the third line, the learnable parameter <inline-formula><mml:math id="M30"><mml:msubsup><mml:mrow><mml:mi>&#x003B3;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> and <inline-formula><mml:math id="M31"><mml:msubsup><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> have similar values in adjacent time intervals (<italic>t</italic> &#x0003D; 1, 2) because of continuous time property. Hence, we can approximate <inline-formula><mml:math id="M32"><mml:msubsup><mml:mrow><mml:mi>&#x003B3;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula> and <inline-formula><mml:math id="M33"><mml:msubsup><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula> as <inline-formula><mml:math id="M34"><mml:msubsup><mml:mrow><mml:mi>&#x003B3;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula> and <inline-formula><mml:math id="M35"><mml:msubsup><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, respectively. Finally, we can extend the equation of BNTT to the time-step <italic>t</italic>:</p>
<disp-formula id="E14"><label>(14)</label><mml:math id="M36"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msubsup><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup><mml:mo>&#x02248;</mml:mo><mml:mfrac><mml:mrow><mml:msubsup><mml:mrow><mml:mi>&#x003B3;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:msqrt><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003F5;</mml:mi></mml:mrow></mml:msqrt></mml:mrow></mml:mfrac><mml:msubsup><mml:mrow><mml:mi>&#x00169;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Considering that a neuron produces an output spike activation whenever the membrane potential <inline-formula><mml:math id="M37"><mml:msubsup><mml:mrow><mml:mi>&#x00169;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> exceeds the pre-defined firing threshold &#x003B8;, the spike firing condition with BNTT can be represented <inline-formula><mml:math id="M38"><mml:msubsup><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup><mml:mo>&#x02265;</mml:mo><mml:mi>&#x003B8;</mml:mi></mml:math></inline-formula>. Comparing with the threshold of a neuron without BNTT, we can reformulate the firing condition as:</p>
<disp-formula id="E15"><label>(15)</label><mml:math id="M39"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msubsup><mml:mrow><mml:mi>&#x00169;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup><mml:mo>&#x02265;</mml:mo><mml:mfrac><mml:mrow><mml:msqrt><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003F5;</mml:mi></mml:mrow></mml:msqrt></mml:mrow><mml:mrow><mml:msubsup><mml:mrow><mml:mi>&#x003B3;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow></mml:mfrac><mml:mi>&#x003B8;</mml:mi><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Thus, we can infer that using a BNTT layer changes the firing threshold value by <inline-formula><mml:math id="M40"><mml:msqrt><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003F5;</mml:mi></mml:mrow></mml:msqrt><mml:mo>/</mml:mo><mml:msubsup><mml:mrow><mml:mi>&#x003B3;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> at every time-step. In practice, BNTT results in an optimum &#x003B3; during training that improves the representation power, producing better performance and low-latency SNNs. This observation allows us to consider the advantages of time-varying learnable parameters in SNNs. This implication is in line with previous work (Han et al., <xref ref-type="bibr" rid="B15">2020</xref>), which insists that manipulating the firing threshold improves the performance and latency of the ANN-SNN conversion method. However, Han et al. change the threshold value in a heuristic way without any optimization process and fix the threshold value across all time-steps. On the other hand, our BNTT yields time-specific &#x003B3;<sup><italic>t</italic></sup> which can be optimized via back-propagation.</p>
</sec>
<sec>
<title>3.4. Early Exit Algorithm</title>
<p>The main objective of early exit is to reduce the latency during inference (Panda et al., <xref ref-type="bibr" rid="B28">2016</xref>; Teerapittayanon et al., <xref ref-type="bibr" rid="B37">2016</xref>). Most previous methods (Wu et al., <xref ref-type="bibr" rid="B38">2018</xref>; Sengupta et al., <xref ref-type="bibr" rid="B34">2019</xref>; Han et al., <xref ref-type="bibr" rid="B15">2020</xref>; Lee et al., <xref ref-type="bibr" rid="B22">2020</xref>; Rathi et al., <xref ref-type="bibr" rid="B30">2020</xref>) accumulate output spikes till the end of the time-sequence, at inference, since all layers generate spikes across all time-steps as shown in <xref ref-type="fig" rid="F1">Figures 1A,B</xref>. On the other hand, learnable parameters in BNTT manipulate the spike activity of each layer to produce a peak value, which falls again (a gaussian-like trend), as shown in <xref ref-type="fig" rid="F1">Figure 1C</xref>. This phenomenon shows that SNNs using BNTT convey little information at the end of spike trains.</p>
<p>Inspired by this observation, we propose a temporal early exit algorithm based on the value of &#x003B3;<sup><italic>t</italic></sup>. From Equation (15), we know that a low &#x003B3;<sup><italic>t</italic></sup> value increases the firing threshold, resulting in low spike activity. A high &#x003B3;<sup><italic>t</italic></sup> value, in contrast, induces more spike activity. It is worth mentioning that <inline-formula><mml:math id="M53"><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> shows similar values across all time-steps and therefore we only focus on &#x003B3;<sup><italic>t</italic></sup>. Given that the intensity of spike activity is proportional to &#x003B3;<sup><italic>t</italic></sup>, we can infer that spikes will hardly contribute to the classification result once &#x003B3;<sup><italic>t</italic></sup> values across every layer drop to a minimum value. Therefore, we measure the average of &#x003B3;<sup><italic>t</italic></sup> values in each layer <italic>l</italic> at every time-step, and terminate the inference when &#x003B3;<sup><italic>t</italic></sup> value in every layer is below a pre-determined threshold. For example, as shown in <xref ref-type="fig" rid="F4">Figure 4</xref>, we observe that all averaged &#x003B3;<sup><italic>t</italic></sup> values are lower than threshold 0.1 after <italic>t</italic> &#x0003E; 20. Therefore, we define the early exit time at <italic>t</italic> &#x0003D; 20. Note that we can determine the optimum time-step for early exit before forward propagation without any additional computation. In summary, the temporal early exit method enables us to find the earliest time-step during inference that ensures integration of crucial information, in turn reducing the inference latency without significant loss of accuracy.</p>
<fig id="F4" position="float">
<label>Figure 4</label>
<caption><p>The average value of &#x003B3;<sup><italic>t</italic></sup> at each layer over all time-steps (upper panel). Maximum averaged &#x003B3;<sup><italic>t</italic></sup> for each time-step (lower panel). Early exit time can be calculated as <italic>t</italic> &#x0003D; 20 since &#x003B3;<sup><italic>t</italic></sup> values at every layer have lower value than threshold 0.1 after time-step 20 (blue shaded area). Here, we use a VGG9 architecture on CIFAR-10.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnins-15-773954-g0004.tif"/>
</fig>
</sec>
<sec>
<title>3.5. Overall Optimization</title>
<p><xref ref-type="table" rid="TA2">Algorithm 2</xref> summarizes the whole training process of SNNs with BNTT. Our proposed BNTT acts as a regularizer, unlike previous methods (Lee et al., <xref ref-type="bibr" rid="B23">2016</xref>, <xref ref-type="bibr" rid="B22">2020</xref>; Sengupta et al., <xref ref-type="bibr" rid="B34">2019</xref>; Rathi et al., <xref ref-type="bibr" rid="B30">2020</xref>) that use dropout to perform regularization. Our training scheme is based on widely used rate coding where the spike generator produces a Poisson spike train (see <xref ref-type="supplementary-material" rid="SM1">Supplementary Material B</xref>) for each pixel in the image with frequency proportional to the pixel intensity (Roy et al., <xref ref-type="bibr" rid="B31">2019</xref>). For all layers, the weighted sum of the input signal is passed through a BNTT layer and then is accumulated in the membrane potential. If the membrane potential exceeds the firing threshold, the neuron generates an output spike. For last layer, we accumulate the input voltage over all time-steps without leak, that we feed to a softmax layer to output a probability distribution. Then, we calculate a cross-entropy loss function and gradients for weight of each layer with the approximate gradient function. During the training phase, a BNTT layer computes the time-dependent statistics (i.e., &#x003BC;<sup><italic>t</italic></sup> and &#x003C3;<sup><italic>t</italic></sup>) and stores the moving-average global mean and variance. At inference, we first define the early exit time-step based on the value of &#x003B3; in BNTT. Then, the networks classify the test input (note, test data normalized with pre-computed global <inline-formula><mml:math id="M54"><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mo>&#x0002D;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mo>&#x0002D;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> BNTT statistics) based on the accumulated output voltage at the pre-computed early exit time-step.</p>
<table-wrap position="float" id="TA2">
<label>Algorithm 2</label>
<caption><p>Training process with BNTT</p></caption>
<table frame="hsides" rules="groups">
<tbody>
<tr>
<td align="left" valign="top"><bold>Input:</bold> mini-batch (<italic>X</italic>); label set (<italic>Y</italic>); max_timestep (<italic>T</italic>)</td>
</tr>
<tr>
<td align="left" valign="top"><bold>Output:</bold> updated network weights</td>
</tr>
<tr>
<td align="left" valign="top">1: &#x000A0;<bold>for</bold> <italic>i</italic> &#x02190; 1 to <italic>max</italic>_<italic>iter</italic> <bold>do</bold></td>
</tr>
<tr>
<td align="left" valign="top">2: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; fetch a mini batch X</td>
</tr>
<tr>
<td align="left" valign="top">3: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; <bold>for</bold> <italic>t</italic> &#x02190; 1 to <italic>T</italic> <bold>do</bold></td>
</tr>
<tr>
<td align="left" valign="top">4: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; O &#x02190; PoissonGenerator(X)</td>
</tr>
<tr>
<td align="left" valign="top">5: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; <bold>for</bold> <italic>l</italic> &#x02190; 1 to <italic>L</italic>&#x02212;1 <bold>do</bold></td>
</tr>
<tr>
<td align="left" valign="top">6: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; <inline-formula><mml:math id="M50"><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>O</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mrow><mml:mi>U</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x02190;</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>&#x003BB;</mml:mi><mml:mo>,</mml:mo><mml:msubsup><mml:mrow><mml:mi>U</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mstyle class="text"><mml:mtext class="textup" mathvariant="normal">BNTT</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mi>&#x003B3;</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>W</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msubsup><mml:mrow><mml:mi>O</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td>
</tr>
<tr>
<td align="left" valign="top">7: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; <bold>end for</bold></td>
</tr>
<tr>
<td align="left" valign="top">8: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; % For the final layer <italic>L</italic>, stack the voltage</td>
</tr>
<tr>
<td align="left" valign="top">9: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; <inline-formula><mml:math id="M51"><mml:msubsup><mml:mrow><mml:mi>U</mml:mi></mml:mrow><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup><mml:mo>&#x02190;</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>U</mml:mi></mml:mrow><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mstyle class="text"><mml:mtext class="textup" mathvariant="normal">BNTT</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mi>&#x003B3;</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>W</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msubsup><mml:mrow><mml:mi>O</mml:mi></mml:mrow><mml:mrow><mml:mi>L</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td>
</tr>
<tr>
<td align="left" valign="top">10: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; <bold>end for</bold></td>
</tr>
<tr>
<td align="left" valign="top">11: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; % Calculate the loss and back-propagation</td>
</tr>
<tr>
<td align="left" valign="top">12: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; <inline-formula><mml:math id="M52"><mml:mi>L</mml:mi><mml:mo>&#x02190;</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>U</mml:mi></mml:mrow><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:mi>Y</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td>
</tr>
<tr>
<td align="left" valign="top">13: &#x000A0;<bold>end for</bold></td>
</tr> 
</tbody>
</table>
</table-wrap>
</sec>
</sec>
<sec id="s4">
<title>4. Experiments</title>
<p>In this section, we carry out comprehensive experiments on public classification datasets. We first compare our BNTT with previous SNNs training methods. Then, we quantitatively and qualitatively demonstrate the effectiveness of our proposed BNTT.</p>
<sec>
<title>4.1. Experimental Setup</title>
<p>We evaluate our method on three static datasets (i.e., CIFAR-10, CIFAR-100, Tiny-ImageNet), one neuromophic dataset (i.e., DVS-CIFAR10), and one sequential dataset (i.e., Sequential MNIST). <bold>CIFAR-10</bold> (Krizhevsky and Hinton, <xref ref-type="bibr" rid="B17">2009</xref>) consists of 60,000 images (50,000 for training/10,000 for testing) with 10 categories. All images are RGB color images whose size are 32 &#x000D7; 32. <bold>CIFAR-100</bold> has the same configuration as CIFAR-10, except it contains images from 100 categories. <bold>Tiny-ImageNet</bold> is the modified subset of the original ImageNet dataset. Here, there are 200 different classes of ImageNet dataset (Deng et al., <xref ref-type="bibr" rid="B9">2009</xref>), with 100,000 training and 10,000 validation images. The resolution of the images is 64 &#x000D7; 64 pixels. <bold>DVS-CIFAR10</bold> (Li et al., <xref ref-type="bibr" rid="B24">2017</xref>) has the same configuration as CIFAR-10. This discrete event-stream dataset is collected by moving the event-driven camera. We follow the similar data pre-processing protocol and a network architecture used in previous work (Wu et al., <xref ref-type="bibr" rid="B39">2019</xref>) (details in <xref ref-type="supplementary-material" rid="SM1">Supplementary Material C</xref>). <bold>Sequential MNIST</bold> (Le et al., <xref ref-type="bibr" rid="B19">2015</xref>) is the variant of MNIST (LeCun et al., <xref ref-type="bibr" rid="B20">1998</xref>). Instead of showing the whole image to the networks, this dataset presents each pixel in an image pixel by pixel. Our implementation is based on Pytorch (Paszke et al., <xref ref-type="bibr" rid="B29">2017</xref>). We train the networks with standard SGD with momentum 0.9, weight decay 0.0005 and also apply random crop and horizontal flip to input images. The base learning rate is set to 0.3 and we use step-wise learning rate scheduling with a decay factor 10 at 50, 70, and 90% of the total number of epochs. Here, we set the total number of epochs to 120, 240, 90, and 60 for CIFAR-10, CIFAR-100, Tiny-ImageNet, and DVS-CIFAR10, respectively.</p>
</sec>
<sec>
<title>4.2. Comparison With Previous Methods</title>
<p>On public datasets, we compare our proposed BNTT method with previous rate-coding based SNN training methods, including ANN-SNN conversion (Cao et al., <xref ref-type="bibr" rid="B5">2015</xref>; Sengupta et al., <xref ref-type="bibr" rid="B34">2019</xref>; Han et al., <xref ref-type="bibr" rid="B15">2020</xref>), surrogate gradient back-propagation (Lee et al., <xref ref-type="bibr" rid="B22">2020</xref>), and hybrid (Rathi et al., <xref ref-type="bibr" rid="B30">2020</xref>) methods. From <xref ref-type="table" rid="T1">Table 1</xref>, we can observe some advantages and disadvantages of each training method. The ANN-SNN conversion method performs better than the surrogate gradient method across all datasets. However, they require large number of time-steps for training and testing, which is energy-inefficient and impractical in a real-time application. The hybrid method aims to resolve this high-latency problem, but it still requires over hundreds of time-steps. The surrogate gradient method (denoted as <italic>Baseline</italic>) suffers from poor optimization and hence cannot be scaled to larger datasets such as CIFAR-100 and Tiny-ImageNet. The results show that the performance improvement of SNN models is because of BNTT, and not because of applying the loss to the membrane potential which can improve the performance of SNNs (Eshraghian et al., <xref ref-type="bibr" rid="B12">2021</xref>). Using standard BN with surrogate gradient training (i.e., <italic>Baseline</italic> &#x0002B; <italic>standard BN</italic>) improves the optimization capability of SNNs enabling us to train deep SNNs for complex datasets, however, there is performance degradation. Increasing the number of time-steps to &#x0003E; 100 &#x02212; 150 does improve the performance, but that would also lead to increased computation. Our BNTT is based on the surrogate gradient method (i.e., Baseline &#x0002B; BNTT), and it enables SNNs to achieve high performance even for more complicated datasets. At the same time, we reduce the latency due to the inclusion of learnable parameters and temporal statistics in the BNTT layer. As a result, BNTT can be trained with 25 time-steps on a simple CIFAR-10 dataset, while preserving state-of-the-art accuracy. For CIFAR-100, we achieve about 40&#x000D7; and 2&#x000D7; faster inference speed compared to the conversion methods and the hybrid method, respectively. Interestingly, for Tiny-ImageNet, BNTT achieves better performance and shorter latency compared to previous conversion method. Note that ANN with VGG11 architecture used for ANN-SNN conversion achieves 56.3% accuracy. Moreover, using an early exit algorithm further reduces the latency by &#x0007E;20%, which enables the networks to be implemented with lower-latency and energy-efficiency. It is worth mentioning that surrogate gradient method without BNTT (<italic>Baseline</italic> in <xref ref-type="table" rid="T1">Table 1</xref>) only converges on CIFAR-10. For neuromorphic DVS-CIFAR10 dataset (<xref ref-type="table" rid="T2">Table 2</xref>), using BNTT improves the stability of training compared to a surrogate gradient baseline, and achieves state-of-the-art performance. These results show that our BNTT technique is very effective on event-driven data and hence well-suited for neuromorphic applications. We also compare the performance of BNTT with previous works on Sequential MNIST in <xref ref-type="table" rid="T3">Table 3</xref>. Here, we use 3-layer SNN architecture: FC(1,256)-FC(256,256)-FC(256,10). Without BNTT, <italic>Baseline</italic> has difficulty in capturing the sequential pattern of input data, resulting in low performance. Adding BNTT to <italic>Baseline</italic> enhances the training capability of SNNs, resulting in a slightly better performance than the state-of-the-art (Bellec et al., <xref ref-type="bibr" rid="B3">2018</xref>).</p>
<table-wrap position="float" id="T1">
<label>Table 1</label>
<caption><p>Classification accuracy (%) on CIFAR-10, CIFAR-100, and Tiny-ImageNet.</p></caption>
<table frame="hsides" rules="groups">
<thead><tr>
<th/>
<th valign="top" align="left"><bold>Dataset</bold></th>
<th valign="top" align="left"><bold>Training method</bold></th>
<th valign="top" align="left"><bold>Architecture</bold></th>
<th valign="top" align="center"><bold>Time-steps</bold></th>
<th valign="top" align="center"><bold>Accuracy (%)</bold></th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">Cao et al. (<xref ref-type="bibr" rid="B5">2015</xref>)</td>
<td valign="top" align="left">CIFAR-10</td>
<td valign="top" align="left">ANN-SNN Conversion</td>
<td valign="top" align="left">3Conv, 2Linear</td>
<td valign="top" align="center">400</td>
<td valign="top" align="center">77.4</td>
</tr>
<tr>
<td valign="top" align="left">Sengupta et al. (<xref ref-type="bibr" rid="B34">2019</xref>)</td>
<td valign="top" align="left">CIFAR-10</td>
<td valign="top" align="left">ANN-SNN Conversion</td>
<td valign="top" align="left">VGG16</td>
<td valign="top" align="center">2500</td>
<td valign="top" align="center">91.5</td>
</tr>
<tr>
<td valign="top" align="left">Lee et al. (<xref ref-type="bibr" rid="B22">2020</xref>)</td>
<td valign="top" align="left">CIFAR-10</td>
<td valign="top" align="left">Surrogate Gradient</td>
<td valign="top" align="left">VGG9</td>
<td valign="top" align="center">100</td>
<td valign="top" align="center">90.4</td>
</tr>
<tr>
<td valign="top" align="left">Rathi et al. (<xref ref-type="bibr" rid="B30">2020</xref>)</td>
<td valign="top" align="left">CIFAR-10</td>
<td valign="top" align="left">Hybrid</td>
<td valign="top" align="left">VGG16</td>
<td valign="top" align="center">200</td>
<td valign="top" align="center">92.0</td>
</tr>
<tr>
<td valign="top" align="left">Han et al. (<xref ref-type="bibr" rid="B15">2020</xref>)</td>
<td valign="top" align="left">CIFAR-10</td>
<td valign="top" align="left">ANN-SNN Conversion</td>
<td valign="top" align="left">VGG16</td>
<td valign="top" align="center">2048</td>
<td valign="top" align="center">93.6</td>
</tr>
<tr>
<td valign="top" align="left">Baseline</td>
<td valign="top" align="left">CIFAR-10</td>
<td valign="top" align="left">Surrogate Gradient</td>
<td valign="top" align="left">VGG9</td>
<td valign="top" align="center">100</td>
<td valign="top" align="center">88.7</td>
</tr>
<tr>
<td valign="top" align="left">Baseline &#x0002B; standard BN</td>
<td valign="top" align="left">CIFAR-10</td>
<td valign="top" align="left">Surrogate Gradient</td>
<td valign="top" align="left">VGG9</td>
<td valign="top" align="center">25</td>
<td valign="top" align="center">84.3</td>
</tr>
<tr>
<td valign="top" align="left"><bold>Baseline &#x0002B; BNTT (ours)</bold></td>
<td valign="top" align="left">CIFAR-10</td>
<td valign="top" align="left">Surrogate Gradient</td>
<td valign="top" align="left">VGG9</td>
<td valign="top" align="center">25</td>
<td valign="top" align="center">90.5</td>
</tr>
<tr style="border-bottom: thin solid #000000;">
<td valign="top" align="left"><bold>Baseline &#x0002B; BNTT &#x0002B; Early Exit (ours)</bold></td>
<td valign="top" align="left">CIFAR-10</td>
<td valign="top" align="left">Surrogate Gradient</td>
<td valign="top" align="left">VGG9</td>
<td valign="top" align="center">20</td>
<td valign="top" align="center">90.3</td>
</tr> <tr>
<td valign="top" align="left">Sengupta et al. (<xref ref-type="bibr" rid="B34">2019</xref>)</td>
<td valign="top" align="left">CIFAR-100</td>
<td valign="top" align="left">ANN-SNN Conversion</td>
<td valign="top" align="left">VGG16</td>
<td valign="top" align="center">2500</td>
<td valign="top" align="center">70.9</td>
</tr>
<tr>
<td valign="top" align="left">Rathi et al. (<xref ref-type="bibr" rid="B30">2020</xref>)</td>
<td valign="top" align="left">CIFAR-100</td>
<td valign="top" align="left">Hybrid</td>
<td valign="top" align="left">VGG16</td>
<td valign="top" align="center">125</td>
<td valign="top" align="center">67.8</td>
</tr>
<tr>
<td valign="top" align="left">Han et al. (<xref ref-type="bibr" rid="B15">2020</xref>)</td>
<td valign="top" align="left">CIFAR-100</td>
<td valign="top" align="left">ANN-SNN Conversion</td>
<td valign="top" align="left">VGG16</td>
<td valign="top" align="center">2048</td>
<td valign="top" align="center">70.9</td>
</tr>
<tr>
<td valign="top" align="left">Baseline</td>
<td valign="top" align="left">CIFAR-100</td>
<td valign="top" align="left">Surrogate Gradient</td>
<td valign="top" align="left">VGG11</td>
<td valign="top" align="center">n/a</td>
<td valign="top" align="center">n/a</td>
</tr>
<tr>
<td valign="top" align="left">Baseline &#x0002B; standard BN</td>
<td valign="top" align="left">CIFAR-100</td>
<td valign="top" align="left">Surrogate Gradient</td>
<td valign="top" align="left">VGG11</td>
<td valign="top" align="center">50</td>
<td valign="top" align="center">43.0</td>
</tr>
<tr>
<td valign="top" align="left"><bold>Baseline &#x0002B; BNTT (ours)</bold></td>
<td valign="top" align="left">CIFAR-100</td>
<td valign="top" align="left">Surrogate Gradient</td>
<td valign="top" align="left">VGG11</td>
<td valign="top" align="center">50</td>
<td valign="top" align="center">66.6</td>
</tr>
<tr style="border-bottom: thin solid #000000;">
<td valign="top" align="left"><bold>Baseline &#x0002B; BNTT &#x0002B; Early Exit (ours)</bold></td>
<td valign="top" align="left">CIFAR-100</td>
<td valign="top" align="left">Surrogate Gradient</td>
<td valign="top" align="left">VGG11</td>
<td valign="top" align="center">30</td>
<td valign="top" align="center">65.8</td>
</tr> <tr>
<td valign="top" align="left">Sengupta et al. (<xref ref-type="bibr" rid="B34">2019</xref>)</td>
<td valign="top" align="left">Tiny-ImageNet</td>
<td valign="top" align="left">ANN-SNN Conversion</td>
<td valign="top" align="left">VGG11</td>
<td valign="top" align="center">2500</td>
<td valign="top" align="center">54.2</td>
</tr>
<tr>
<td valign="top" align="left">Baseline</td>
<td valign="top" align="left">Tiny-ImageNet</td>
<td valign="top" align="left">Surrogate Gradient</td>
<td valign="top" align="left">VGG11</td>
<td valign="top" align="center">n/a</td>
<td valign="top" align="center">n/a</td>
</tr>
<tr>
<td valign="top" align="left">Baseline &#x0002B; standard BN</td>
<td valign="top" align="left">Tiny-ImageNet</td>
<td valign="top" align="left">Surrogate Gradient</td>
<td valign="top" align="left">VGG11</td>
<td valign="top" align="center">30</td>
<td valign="top" align="center">32.7</td>
</tr>
<tr>
<td valign="top" align="left"><bold>Baseline &#x0002B; BNTT (ours)</bold></td>
<td valign="top" align="left">Tiny-ImageNet</td>
<td valign="top" align="left">Surrogate Gradient</td>
<td valign="top" align="left">VGG11</td>
<td valign="top" align="center">30</td>
<td valign="top" align="center">57.8</td>
</tr>
<tr>
<td valign="top" align="left"><bold>Baseline &#x0002B; BNTT &#x0002B; Early Exit (ours)</bold></td>
<td valign="top" align="left">Tiny-ImageNet</td>
<td valign="top" align="left">Surrogate Gradient</td>
<td valign="top" align="left">VGG11</td>
<td valign="top" align="center">25</td>
<td valign="top" align="center">56.8</td>
</tr>
</tbody>
</table>
</table-wrap>
<table-wrap position="float" id="T2">
<label>Table 2</label>
<caption><p>Classification accuracy (%) on DVS-CIFAR10.</p></caption>
<table frame="hsides" rules="groups">
<thead><tr>
<th valign="top" align="left"><bold>Method</bold></th>
<th valign="top" align="left"><bold>Type</bold></th>
<th valign="top" align="center"><bold>Accuracy (%)</bold></th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">Orchard et al. (<xref ref-type="bibr" rid="B26">2015</xref>)</td>
<td valign="top" align="left">Random forest</td>
<td valign="top" align="center">31.0</td>
</tr>
<tr>
<td valign="top" align="left">Lagorce et al. (<xref ref-type="bibr" rid="B18">2016</xref>)</td>
<td valign="top" align="left">HOTS</td>
<td valign="top" align="center">27.1</td>
</tr>
<tr>
<td valign="top" align="left">Sironi et al. (<xref ref-type="bibr" rid="B36">2018</xref>)</td>
<td valign="top" align="left">HAT</td>
<td valign="top" align="center">52.4</td>
</tr>
<tr>
<td valign="top" align="left">Sironi et al. (<xref ref-type="bibr" rid="B36">2018</xref>)</td>
<td valign="top" align="left">Gabor-SNN</td>
<td valign="top" align="center">24.5</td>
</tr>
<tr>
<td valign="top" align="left">Wu et al. (<xref ref-type="bibr" rid="B39">2019</xref>)</td>
<td valign="top" align="left">Surrogate gradient</td>
<td valign="top" align="center">60.5</td>
</tr>
<tr>
<td valign="top" align="left">Baseline</td>
<td valign="top" align="left">Surrogate gradient</td>
<td valign="top" align="center">n/a</td>
</tr>
<tr>
<td valign="top" align="left"><bold>Baseline &#x0002B; BNTT (ours)</bold></td>
<td valign="top" align="left">Surrogate gradient</td>
<td valign="top" align="center">63.2</td>
</tr>
</tbody>
</table>
</table-wrap>
<table-wrap position="float" id="T3">
<label>Table 3</label>
<caption><p>Classification accuracy (%) on sequential MNIST.</p></caption>
<table frame="hsides" rules="groups">
<thead><tr>
<th valign="top" align="left"><bold>Method</bold></th>
<th valign="top" align="center"><bold>Accuracy (%)</bold></th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">LIF (Bellec et al., <xref ref-type="bibr" rid="B3">2018</xref>)</td>
<td valign="top" align="center">63.3</td>
</tr>
<tr>
<td valign="top" align="left">LSNN (Bellec et al., <xref ref-type="bibr" rid="B3">2018</xref>)</td>
<td valign="top" align="center">93.7</td>
</tr>
<tr>
<td valign="top" align="left">DEEP R LSNN (Bellec et al., <xref ref-type="bibr" rid="B3">2018</xref>)</td>
<td valign="top" align="center">96.4</td>
</tr>
<tr>
<td valign="top" align="left">Baseline</td>
<td valign="top" align="center">36.2</td>
</tr>
<tr>
<td valign="top" align="left"><bold>Baseline &#x0002B; BNTT (ours)</bold></td>
<td valign="top" align="center">96.6</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec>
<title>4.3. Comparison With the Previous BN Techniques for SNNs</title>
<p>We compare our temporal BNTT technique with the previous BN approaches for SNN in <xref ref-type="table" rid="T4">Table 4</xref>. The approaches with the standard BN (Fang et al., <xref ref-type="bibr" rid="B13">2020</xref>; Ledinauskas et al., <xref ref-type="bibr" rid="B21">2020</xref>) do not show scalability to complicated datasets such as CIFAR-100 and Tiny-ImageNet. Compared to this, our approach enables training SNNs with low latency on such datasets. Zheng et al. (<xref ref-type="bibr" rid="B40">2020</xref>) show the advantage of scaling BN parameter according to the firing threshold, which shows good performance for large-scale datasets, including ImageNet. Our objective is to study the effect of BN in temporal domain, not enhance the capability of BN itself, which is different from their approach. Combining these two orthogonal approaches in order to achieve further performance gain can be a good topic for future work.</p>
<table-wrap position="float" id="T4">
<label>Table 4</label>
<caption><p>Comparison between different BN techniques for SNNs.</p></caption>
<table frame="hsides" rules="groups">
<thead><tr>
<th/>
<th valign="top" align="left"><bold>Method</bold></th>
<th valign="top" align="center"><bold>CIFAR-10</bold></th>
<th valign="top" align="center"><bold>CIFAR-100</bold></th>
<th valign="top" align="center"><bold>Tiny-imageNet</bold></th>
<th valign="top" align="center"><bold>ImageNet</bold></th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">Ledinauskas et al. (<xref ref-type="bibr" rid="B21">2020</xref>)</td>
<td valign="top" align="left">Standard BN</td>
<td valign="top" align="center">90.2</td>
<td valign="top" align="center">58.5</td>
<td valign="top" align="center">-</td>
<td valign="top" align="center">-</td>
</tr>
<tr>
<td valign="top" align="left">Fang et al. (<xref ref-type="bibr" rid="B13">2020</xref>)</td>
<td valign="top" align="left">Standard BN</td>
<td valign="top" align="center">93.5</td>
<td valign="top" align="center">-</td>
<td valign="top" align="center">-</td>
<td valign="top" align="center">-</td>
</tr>
<tr>
<td valign="top" align="left">Zheng et al. (<xref ref-type="bibr" rid="B40">2020</xref>)</td>
<td valign="top" align="left">Threshold-dependent BN</td>
<td valign="top" align="center">93.2</td>
<td valign="top" align="center">-</td>
<td valign="top" align="center">-</td>
<td valign="top" align="center">67.1</td>
</tr>
<tr>
<td valign="top" align="left">BNTT (ours)</td>
<td valign="top" align="left">Temporal BN</td>
<td valign="top" align="center">90.5</td>
<td valign="top" align="center">66.6</td>
<td valign="top" align="center">57.8</td>
<td valign="top" align="center">-</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec>
<title>4.4. Spike Activity Analysis</title>
<p>We compare the layer-wise spiking activities of our BNTT with two widely-used methods, i.e., ANN-SNN conversion method (Sengupta et al., <xref ref-type="bibr" rid="B34">2019</xref>) and surrogate gradient method (without BNTT) (Neftci et al., <xref ref-type="bibr" rid="B25">2019</xref>). Specifically, we calculate the spike rate of each layer <italic>l</italic>, which can be defined as the total number of spikes at layer <italic>l</italic> over total time-steps <italic>T</italic> divided by the number of neurons in layer <italic>l</italic> (see <xref ref-type="supplementary-material" rid="SM1">Supplementary Material D</xref> for the equation of spike rate). In <xref ref-type="fig" rid="F5">Figure 5</xref>, converted SNNs show a high spike rate for every layer as they forward spike trains through a larger number of time-steps compared to other methods. Even though the surrogate gradient method uses less number of time-steps, it still requires nearly hundreds of spikes for each layer. Compared to these methods, we can observe that BNTT significantly improves the spike sparsity across all layers. In addition, we conduct further energy comparison on Neuromorphic architecture in <xref ref-type="supplementary-material" rid="SM1">Supplementary Material E</xref>.</p>
<fig id="F5" position="float">
<label>Figure 5</label>
<caption><p>Visualization layer-wise spike activity (log scale) in VGG9 on CIFAR-10 dataset.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnins-15-773954-g0005.tif"/>
</fig>
</sec>
<sec>
<title>4.5. Analysis on Learnable Parameters in BNTT</title>
<p>The key observation of our work is the change of &#x003B3; across time-steps. To analyze the distribution of the learnable parameters in our BNTT, we visualize the histogram of &#x003B3; in conv1, conv4, and conv7 layers in VGG9 as shown in <xref ref-type="fig" rid="F6">Figure 6</xref>. Interestingly, all layers show different temporal evolution of gamma distributions. For example, conv1 has high &#x003B3; values at the initial time-steps which decrease as time goes on. On the other hand, starting from small values, the &#x003B3; values in conv4 and conv7 layers peak at <italic>t</italic> &#x0003D; 9 and <italic>t</italic> &#x0003D; 13, respectively, and then shrink to zero at later time-steps. Notably, the peak time is delayed as the layer goes deeper, implying that the visual information is passed through the network sequentially over a period of time similar to <xref ref-type="fig" rid="F1">Figure 1C</xref>. This gaussian-like trend with rise and fall of &#x003B3; across different time-steps can support the explanation of overall low spike activity compared to other methods (<xref ref-type="fig" rid="F5">Figure 5</xref>).</p>
<fig id="F6" position="float">
<label>Figure 6</label>
<caption><p>Histogram visualization (x axis: &#x003B3; value, y axis: frequency) at conv1 (row1), conv4 (row2), and conv7 (row3) layers in VGG9 across all time-steps. We normalize the frequency into range [0, 1] for better visualization. The experiments are conducted on CIFAR-10 with 25 time-steps.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnins-15-773954-g0006.tif"/>
</fig>
</sec>
<sec>
<title>4.6. Analysis on Early Exit</title>
<p>Recall that we measure the average of &#x003B3; values in each layer at every time-step, and stop the inference when all &#x003B3; values in every layer is lower than a predetermined threshold. To further investigate this, we vary the predetermined threshold and show the accuracy and exit time T<sub><italic>exit</italic></sub> trend. As shown in <xref ref-type="fig" rid="F7">Figure 7</xref>, we observe that high threshold enables the networks to infer at earlier time-steps. Although we use less number time-steps during inference, the accuracy drops marginally. This implies that BNTT rarely sends crucial information at the end of spike train (see <xref ref-type="fig" rid="F1">Figure 1C</xref>). Note that the temporal evolution of learnable parameter &#x003B3; with our BNTT allows us to exploit the early exit algorithm that yields a huge advantage in terms of reduced latency at inference. Such strategy has not been proposed or explored in any prior works that have mainly focused on reducing the number of time-steps during training without effectively using temporal statistics.</p>
<fig id="F7" position="float">
<label>Figure 7</label>
<caption><p>Visualization of accuracy and early exit time with respect to the threshold value for &#x003B3;. <bold>(A)</bold> CIFAR-10. <bold>(B)</bold> CIFAR-100. <bold>(C)</bold> Tiny-ImageNet.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnins-15-773954-g0007.tif"/>
</fig>
</sec>
<sec>
<title>4.7. Analysis on Robustness</title>
<p>Finally, we highlight the advantage of BNTT in terms of the robustness to noisy input. To investigate the effect of our BNTT for robustness, we evaluate the performance change in the SNNs as we feed in inputs with varying levels of noise. We generate the noisy input by adding Gaussian noise (0, &#x003C3;<sup>2</sup>) to the clean input image. From <xref ref-type="fig" rid="F8">Figure 8A</xref>, we observe the following: (i) The accuracy of conversion method degrades considerably for &#x003C3; &#x0003E; 0.4. (ii) Compared to ANNs, SNNs trained with surrogate gradient back-propagation shows better performance at higher noise intensity. Still, they suffer from large accuracy drops in presence of noisy inputs. (iii) BNTT achieves significantly higher performance than the other methods across all noise intensities. This is because using BNTT decreases the overall number of time-steps which is a crucial contributing factor toward robustness (Sharmin et al., <xref ref-type="bibr" rid="B35">2020</xref>). These results imply that, in addition to low-latency and energy-efficiency, our BNTT method also offers improved robustness for suitably implementing SNNs in a real-world scenario.</p>
<fig id="F8" position="float">
<label>Figure 8</label>
<caption><p><bold>(A)</bold> Performance change with respect to the standard deviation of the Gaussian noise. <bold>(B)</bold> Performance change with respect to the attack intensity (&#x003F5;, denoted in x-axis) of the FGSM attack.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnins-15-773954-g0008.tif"/>
</fig>
<p>In order to further validate the robustness of BNTT, we conduct experiments on adversarial inputs. We use FGSM (Goodfellow et al., <xref ref-type="bibr" rid="B14">2014</xref>) to generate adversarial samples for ANN. For a given image <italic>x</italic>, we compute the loss function <inline-formula><mml:math id="M55"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">L</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> with the ground truth label <italic>y</italic>. The objective of FGSM attack is to change the pixel intensity of the input image that maximizes the cost function:</p>
<disp-formula id="E16"><label>(16)</label><mml:math id="M56"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>a</mml:mi><mml:mi>d</mml:mi><mml:mi>v</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi>x</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003F5;</mml:mi><mml:mo>&#x000D7;</mml:mo><mml:mi>s</mml:mi><mml:mi>i</mml:mi><mml:mi>g</mml:mi><mml:mi>n</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mo>&#x02207;</mml:mo></mml:mrow><mml:mrow><mml:mi>x</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mi mathvariant="-tex-caligraphic">L</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></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>We call <italic>x</italic><sub><italic>adv</italic></sub> as &#x0201C;adversarial sample.&#x0201D; Here, &#x003F5; denotes the strength of the attack. To conduct the FGSM attack for SNN, we use the SNN-crafted FGSM method proposed in Sharmin et al. (<xref ref-type="bibr" rid="B35">2020</xref>). In <xref ref-type="fig" rid="F8">Figure 8B</xref>, we show the classification performance for varying intensities of FGSM attack. The SNN approaches (e.g., BNTT and Surrogate BP) show more robustness than ANN due to the temporal dynamics and stochastic neuronal functionality. We highlight that our proposed BNTT shows much higher robustness compared to others. Thus, we assert that BNTT improves robustness of SNNs in addition to energy efficiency and latency.</p>
</sec>
<sec>
<title>4.8. Comparison With Layer Norm</title>
<p>Layer Normalization (LN) (Ba et al., <xref ref-type="bibr" rid="B2">2016</xref>) is an optimization method for recurrent neural networks (RNNs). The authors asserted that directly applying BN layers is hardly applicable since RNNs vary with the length of the input sequence. To this end, an LN layer calculates the mean and the variance for every single layer. As SNNs also take time-sequence data as input, we compare our BNTT with Layer Normalization in <xref ref-type="table" rid="T5">Table 5</xref>. For all experiments, we use a VGG9 architecture. Also, we set a base learning rate to 0.3 and we use step-wise learning rate scheduling as described in section 4.1. The results show that BNTT is more suitable structure to capture the temporal dynamics of Poisson encoded spikes.</p>
<table-wrap position="float" id="T5">
<label>Table 5</label>
<caption><p>Comparison with layer normalization on CIFAR-10 dataset.</p></caption>
<table frame="hsides" rules="groups">
<thead><tr>
<th valign="top" align="left"><bold>Method</bold></th>
<th valign="top" align="center"><bold>Acc (%)</bold></th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">Layer normalization (Ba et al., <xref ref-type="bibr" rid="B2">2016</xref>)</td>
<td valign="top" align="center">75.4</td>
</tr>
<tr>
<td valign="top" align="left">BNTT</td>
<td valign="top" align="center">90.5</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
</sec>
<sec sec-type="conclusions" id="s5">
<title>5. Conclusion</title>
<p>In this paper, we revisit the batch normalization technique and propose a novel mechanism for training low-latency, energy-efficient, robust, and accurate SNNs from scratch. Our key idea is to investigate the temporal characteristics of Batch Normalization (BN) with time-specific learnable parameters and statistics. Note, BN is known as an effective way of addressing vanishing/exploding gradients problem in ANNs. We discover that optimizing time-dependent learnable parameters &#x003B3; captures the temporally varying input distribution so that it stabilizes the backward gradients during training and enables better learning of SNN representations. Our experiments reveal interesting benefits of BNTT for temporal early exit during inference as well as sturdy robustness against adversarial attacks. As previous SNN-based BN works (Fang et al., <xref ref-type="bibr" rid="B13">2020</xref>; Ledinauskas et al., <xref ref-type="bibr" rid="B21">2020</xref>; Zheng et al., <xref ref-type="bibr" rid="B40">2020</xref>), this work showcases the importance of incorporating dynamic time-dependent parameters during surrogate gradient-based training to enable large-scale SNN implementations. By showing the importance of addressing the unstable gradient problem in SNN, we suggest future direction for better SNN training. Today, SNNs have few advanced optimization techniques (such as, weight initialization, skip connection that are common in ANN optimization suite) for addressing such issues. Our proposed BNTT can be considered to be one SNN-crafted optimization technique that can relieve the gradient problem, resulting in performance improvement. We hope this work fosters future work on advanced SNN optimization.</p>
</sec>
<sec sec-type="data-availability" id="s6">
<title>Data Availability Statement</title>
<p>The original contributions presented in the study are included in the article/<xref ref-type="sec" rid="s10">Supplementary Material</xref>, further inquiries can be directed to the corresponding author.</p>
</sec>
<sec id="s7">
<title>Author Contributions</title>
<p>YK and PP conceived the work and contributed to the writing of the manuscript. YK carried out experiments. Both authors contributed to the article and approved the submitted version.</p>
</sec>
<sec sec-type="funding-information" id="s8">
<title>Funding</title>
<p>This work was supported in part by the Center for Brain-inspired Computing (C-BRIC) which is a JUMP center sponsored by DARPA and SRC, the National Science Foundation (Grant&#x00023;1947826), the Technology Innovation Institute, Abu Dhabi and the Amazon Research Award.</p>
</sec>
<sec sec-type="COI-statement" id="conf1">
<title>Conflict of Interest</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
<sec sec-type="disclaimer" id="s9">
<title>Publisher&#x00027;s Note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
</body>
<back><sec sec-type="supplementary-material" id="s10">
<title>Supplementary Material</title>
<p>The Supplementary Material for this article can be found online at: <ext-link ext-link-type="uri" xlink:href="https://www.frontiersin.org/articles/10.3389/fnins.2021.773954/full#supplementary-material">https://www.frontiersin.org/articles/10.3389/fnins.2021.773954/full#supplementary-material</ext-link></p>
<supplementary-material xlink:href="Data_Sheet_1.pdf" id="SM1" mimetype="application/pdf" xmlns:xlink="http://www.w3.org/1999/xlink"/>
</sec>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Akopyan</surname> <given-names>F.</given-names></name> <name><surname>Sawada</surname> <given-names>J.</given-names></name> <name><surname>Cassidy</surname> <given-names>A.</given-names></name> <name><surname>Alvarez-Icaza</surname> <given-names>R.</given-names></name> <name><surname>Arthur</surname> <given-names>J.</given-names></name> <name><surname>Merolla</surname> <given-names>P.</given-names></name> <etal/></person-group>. (<year>2015</year>). <article-title>Truenorth: Design and tool flow of a 65 mw 1 million neuron programmable neurosynaptic chip</article-title>. <source>IEEE Trans. Comput. Aided Design Integr. Circ. Syst</source>. <volume>34</volume>, <fpage>1537</fpage>&#x02013;<lpage>1557</lpage>. <pub-id pub-id-type="doi">10.1109/TCAD.2015.2474396</pub-id><pub-id pub-id-type="pmid">27295638</pub-id></citation></ref>
<ref id="B2">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Ba</surname> <given-names>J. L.</given-names></name> <name><surname>Kiros</surname> <given-names>J. R.</given-names></name> <name><surname>Hinton</surname> <given-names>G. E.</given-names></name></person-group> (<year>2016</year>). <article-title>Layer normalization</article-title>. <source>arXiv preprint</source> arXiv:1607.06450.</citation>
</ref>
<ref id="B3">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Bellec</surname> <given-names>G.</given-names></name> <name><surname>Salaj</surname> <given-names>D.</given-names></name> <name><surname>Subramoney</surname> <given-names>A.</given-names></name> <name><surname>Legenstein</surname> <given-names>R.</given-names></name> <name><surname>Maass</surname> <given-names>W.</given-names></name></person-group> (<year>2018</year>). <article-title>Long short-term memory and learning-to-learn in networks of spiking neurons</article-title>. <source>arXiv preprint</source> arXiv:1803.09574.</citation>
</ref>
<ref id="B4">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Burkitt</surname> <given-names>A. N.</given-names></name></person-group> (<year>2006</year>). <article-title>A review of the integrate-and-fire neuron model: I. homogeneous synaptic input</article-title>. <source>Biol. Cybern</source>. <volume>95</volume>, <fpage>1</fpage>&#x02013;<lpage>19</lpage>. <pub-id pub-id-type="doi">10.1007/s00422-006-0068-6</pub-id><pub-id pub-id-type="pmid">16622699</pub-id></citation></ref>
<ref id="B5">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Cao</surname> <given-names>Y.</given-names></name> <name><surname>Chen</surname> <given-names>Y.</given-names></name> <name><surname>Khosla</surname> <given-names>D.</given-names></name></person-group> (<year>2015</year>). <article-title>Spiking deep convolutional neural networks for energy-efficient object recognition</article-title>. <source>Int. J. Comput. Vis</source>. <volume>113</volume>, <fpage>54</fpage>&#x02013;<lpage>66</lpage>. <pub-id pub-id-type="doi">10.1007/s11263-014-0788-3</pub-id></citation>
</ref>
<ref id="B6">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Comsa</surname> <given-names>I. M.</given-names></name> <name><surname>Fischbacher</surname> <given-names>T.</given-names></name> <name><surname>Potempa</surname> <given-names>K.</given-names></name> <name><surname>Gesmundo</surname> <given-names>A.</given-names></name> <name><surname>Versari</surname> <given-names>L.</given-names></name> <name><surname>Alakuijala</surname> <given-names>J.</given-names></name></person-group> (<year>2020</year>). <article-title>&#x0201C;Temporal coding in spiking neural networks with alpha synaptic function,&#x0201D;</article-title> in <source>ICASSP 2020-2020 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP)</source> (<publisher-loc>Barcelona</publisher-loc>: <publisher-name>IEEE</publisher-name>), <fpage>8529</fpage>&#x02013;<lpage>8533</lpage>.<pub-id pub-id-type="pmid">33900924</pub-id></citation></ref>
<ref id="B7">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Davies</surname> <given-names>M.</given-names></name> <name><surname>Srinivasa</surname> <given-names>N.</given-names></name> <name><surname>Lin</surname> <given-names>T.-H.</given-names></name> <name><surname>Chinya</surname> <given-names>G.</given-names></name> <name><surname>Cao</surname> <given-names>Y.</given-names></name> <name><surname>Choday</surname> <given-names>S. H.</given-names></name> <etal/></person-group>. (<year>2018</year>). <article-title>Loihi: A neuromorphic manycore processor with on-chip learning</article-title>. <source>IEEE Micro</source> <volume>38</volume>, <fpage>82</fpage>&#x02013;<lpage>99</lpage>. <pub-id pub-id-type="doi">10.1109/MM.2018.112130359</pub-id><pub-id pub-id-type="pmid">27295638</pub-id></citation></ref>
<ref id="B8">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Dayan</surname> <given-names>P.</given-names></name> <name><surname>Abbott</surname> <given-names>L. F.</given-names></name></person-group> (<year>2001</year>). <source>Theoretical Neuroscience.</source> vol. <volume>806</volume>.</citation>
</ref>
<ref id="B9">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Deng</surname> <given-names>J.</given-names></name> <name><surname>Dong</surname> <given-names>W.</given-names></name> <name><surname>Socher</surname> <given-names>R.</given-names></name> <name><surname>Li</surname> <given-names>L.-J.</given-names></name> <name><surname>Li</surname> <given-names>K.</given-names></name> <name><surname>Fei-Fei</surname> <given-names>L.</given-names></name></person-group> (<year>2009</year>). <article-title>&#x0201C;Imagenet: a large-scale hierarchical image database,&#x0201D;</article-title> in <source>2009 IEEE Conference on Computer Vision and Pattern Recognition</source> (<publisher-loc>Miami, FL</publisher-loc>: <publisher-name>IEEE</publisher-name>), <fpage>248</fpage>&#x02013;<lpage>255</lpage>.</citation>
</ref>
<ref id="B10">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Diehl</surname> <given-names>P. U.</given-names></name> <name><surname>Cook</surname> <given-names>M.</given-names></name></person-group> (<year>2015</year>). <article-title>Unsupervised learning of digit recognition using spike-timing-dependent plasticity</article-title>. <source>Front. Comput. Neurosci</source>. <volume>9</volume>:<fpage>99</fpage>. <pub-id pub-id-type="doi">10.3389/fncom.2015.00099</pub-id><pub-id pub-id-type="pmid">26941637</pub-id></citation></ref>
<ref id="B11">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Diehl</surname> <given-names>P. U.</given-names></name> <name><surname>Neil</surname> <given-names>D.</given-names></name> <name><surname>Binas</surname> <given-names>J.</given-names></name> <name><surname>Cook</surname> <given-names>M.</given-names></name> <name><surname>Liu</surname> <given-names>S.-C.</given-names></name> <name><surname>Pfeiffer</surname> <given-names>M.</given-names></name></person-group> (<year>2015</year>). <article-title>&#x0201C;Fast-classifying, high-accuracy spiking deep networks through weight and threshold balancing,&#x0201D;</article-title> in <source>2015 International Joint Conference on Neural Networks (IJCNN)</source> (<publisher-loc>Killarney</publisher-loc>: <publisher-name>IEEE</publisher-name>), <fpage>1</fpage>&#x02013;<lpage>8</lpage>.</citation>
</ref>
<ref id="B12">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Eshraghian</surname> <given-names>J. K.</given-names></name> <name><surname>Ward</surname> <given-names>M.</given-names></name> <name><surname>Neftci</surname> <given-names>E.</given-names></name> <name><surname>Wang</surname> <given-names>X.</given-names></name> <name><surname>Lenz</surname> <given-names>G.</given-names></name> <name><surname>Dwivedi</surname> <given-names>G.</given-names></name> <etal/></person-group>. (<year>2021</year>). <article-title>Training spiking neural networks using lessons from deep learning</article-title>. <source>arXiv preprint</source> arXiv:2109.12894.</citation>
</ref>
<ref id="B13">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Fang</surname> <given-names>W.</given-names></name> <name><surname>Yu</surname> <given-names>Z.</given-names></name> <name><surname>Chen</surname> <given-names>Y.</given-names></name> <name><surname>Masquelier</surname> <given-names>T.</given-names></name> <name><surname>Huang</surname> <given-names>T.</given-names></name> <name><surname>Tian</surname> <given-names>Y.</given-names></name></person-group> (<year>2020</year>). <article-title>Incorporating learnable membrane time constant to enhance learning of spiking neural networks</article-title>. <source>arXiv preprint</source> arXiv:2007.05785.</citation>
</ref>
<ref id="B14">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Goodfellow</surname> <given-names>I. J.</given-names></name> <name><surname>Shlens</surname> <given-names>J.</given-names></name> <name><surname>Szegedy</surname> <given-names>C.</given-names></name></person-group> (<year>2014</year>). <article-title>Explaining and harnessing adversarial examples</article-title>. <source>arXiv preprint</source> arXiv:1412.6572.</citation>
</ref>
<ref id="B15">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Han</surname> <given-names>B.</given-names></name> <name><surname>Srinivasan</surname> <given-names>G.</given-names></name> <name><surname>Roy</surname> <given-names>K.</given-names></name></person-group> (<year>2020</year>). <article-title>&#x0201C;Rmp-snn: residual membrane potential neuron for enabling deeper high-accuracy and low-latency spiking neural network,&#x0201D;</article-title> in <source>Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition</source> (<publisher-loc>IEEE</publisher-loc>), <fpage>13558</fpage>&#x02013;<lpage>13567</lpage>.</citation>
</ref>
<ref id="B16">
<citation citation-type="other"><person-group person-group-type="author"><name><surname>Ioffe</surname> <given-names>S.</given-names></name> <name><surname>Szegedy</surname> <given-names>C.</given-names></name></person-group> (<year>2015</year>). <article-title>Batch normalization: accelerating deep network training by reducing internal covariate shift</article-title>. <source>arXiv preprint</source> arXiv:1502.03167.</citation>
</ref>
<ref id="B17">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Krizhevsky</surname> <given-names>A.</given-names></name> <name><surname>Hinton</surname> <given-names>G.</given-names></name></person-group> (<year>2009</year>). <article-title>Learning multiple layers of features from tiny images</article-title>.<pub-id pub-id-type="pmid">33561989</pub-id></citation></ref>
<ref id="B18">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Lagorce</surname> <given-names>X.</given-names></name> <name><surname>Orchard</surname> <given-names>G.</given-names></name> <name><surname>Galluppi</surname> <given-names>F.</given-names></name> <name><surname>Shi</surname> <given-names>B. E.</given-names></name> <name><surname>Benosman</surname> <given-names>R. B.</given-names></name></person-group> (<year>2016</year>). <article-title>Hots: a hierarchy of event-based time-surfaces for pattern recognition</article-title>. <source>IEEE Trans. Pattern Anal. Mach. Intell</source>. <volume>39</volume>, <fpage>1346</fpage>&#x02013;<lpage>1359</lpage>. <pub-id pub-id-type="doi">10.1109/TPAMI.2016.2574707</pub-id><pub-id pub-id-type="pmid">27411216</pub-id></citation></ref>
<ref id="B19">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Le</surname> <given-names>Q. V.</given-names></name> <name><surname>Jaitly</surname> <given-names>N.</given-names></name> <name><surname>Hinton</surname> <given-names>G. E.</given-names></name></person-group> (<year>2015</year>). <article-title>A simple way to initialize recurrent networks of rectified linear units</article-title>. <source>arXiv preprint</source> arXiv:1504.00941.</citation>
</ref>
<ref id="B20">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>LeCun</surname> <given-names>Y.</given-names></name> <name><surname>Bottou</surname> <given-names>L.</given-names></name> <name><surname>Bengio</surname> <given-names>Y.</given-names></name> <name><surname>Haffner</surname> <given-names>P.</given-names></name></person-group> (<year>1998</year>). <article-title>Gradient-based learning applied to document recognition</article-title>. <source>Proc. IEEE</source> <volume>86</volume>, <fpage>2278</fpage>&#x02013;<lpage>2324</lpage>. <pub-id pub-id-type="doi">10.1109/5.726791</pub-id><pub-id pub-id-type="pmid">27295638</pub-id></citation></ref>
<ref id="B21">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Ledinauskas</surname> <given-names>E.</given-names></name> <name><surname>Ruseckas</surname> <given-names>J.</given-names></name> <name><surname>Jur&#x00161;&#x00117;nas</surname> <given-names>A.</given-names></name> <name><surname>Bura&#x0010D;as</surname> <given-names>G.</given-names></name></person-group> (<year>2020</year>). <article-title>Training deep spiking neural networks</article-title>. <source>arXiv preprint</source> arXiv:2006.04436.<pub-id pub-id-type="pmid">34288879</pub-id></citation></ref>
<ref id="B22">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Lee</surname> <given-names>C.</given-names></name> <name><surname>Sarwar</surname> <given-names>S. S.</given-names></name> <name><surname>Panda</surname> <given-names>P.</given-names></name> <name><surname>Srinivasan</surname> <given-names>G.</given-names></name> <name><surname>Roy</surname> <given-names>K.</given-names></name></person-group> (<year>2020</year>). <article-title>Enabling spike-based backpropagation for training deep neural network architectures</article-title>. <source>Front. Neurosci</source>. <volume>14</volume>:<fpage>119</fpage>. <pub-id pub-id-type="doi">10.3389/fnins.2020.00119</pub-id><pub-id pub-id-type="pmid">32180697</pub-id></citation></ref>
<ref id="B23">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Lee</surname> <given-names>J. H.</given-names></name> <name><surname>Delbruck</surname> <given-names>T.</given-names></name> <name><surname>Pfeiffer</surname> <given-names>M.</given-names></name></person-group> (<year>2016</year>). <article-title>Training deep spiking neural networks using backpropagation</article-title>. <source>Front. Neurosci</source>. <volume>10</volume>:<fpage>508</fpage>. <pub-id pub-id-type="doi">10.3389/fnins.2016.00508</pub-id><pub-id pub-id-type="pmid">27877107</pub-id></citation></ref>
<ref id="B24">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Li</surname> <given-names>H.</given-names></name> <name><surname>Liu</surname> <given-names>H.</given-names></name> <name><surname>Ji</surname> <given-names>X.</given-names></name> <name><surname>Li</surname> <given-names>G.</given-names></name> <name><surname>Shi</surname> <given-names>L.</given-names></name></person-group> (<year>2017</year>). <article-title>Cifar10-dvs: an event-stream dataset for object classification</article-title>. <source>Front. Neurosci</source>. <volume>11</volume>:<fpage>309</fpage>. <pub-id pub-id-type="doi">10.3389/fnins.2017.00309</pub-id><pub-id pub-id-type="pmid">28611582</pub-id></citation></ref>
<ref id="B25">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Neftci</surname> <given-names>E. O.</given-names></name> <name><surname>Mostafa</surname> <given-names>H.</given-names></name> <name><surname>Zenke</surname> <given-names>F.</given-names></name></person-group> (<year>2019</year>). <article-title>Surrogate gradient learning in spiking neural networks</article-title>. <source>IEEE Signal. Process. Mag</source>. <volume>36</volume>, <fpage>61</fpage>&#x02013;<lpage>63</lpage>. <pub-id pub-id-type="doi">10.1109/MSP.2019.2931595</pub-id><pub-id pub-id-type="pmid">33513328</pub-id></citation></ref>
<ref id="B26">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Orchard</surname> <given-names>G.</given-names></name> <name><surname>Meyer</surname> <given-names>C.</given-names></name> <name><surname>Etienne-Cummings</surname> <given-names>R.</given-names></name> <name><surname>Posch</surname> <given-names>C.</given-names></name> <name><surname>Thakor</surname> <given-names>N.</given-names></name> <name><surname>Benosman</surname> <given-names>R.</given-names></name></person-group> (<year>2015</year>). <article-title>Hfirst: a temporal approach to object recognition</article-title>. <source>IEEE Trans. Pattern Anal. Mach. Intell</source>. <volume>37</volume>, <fpage>2028</fpage>&#x02013;<lpage>2040</lpage>. <pub-id pub-id-type="doi">10.1109/TPAMI.2015.2392947</pub-id><pub-id pub-id-type="pmid">26353184</pub-id></citation></ref>
<ref id="B27">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Panda</surname> <given-names>P.</given-names></name> <name><surname>Aketi</surname> <given-names>S. A.</given-names></name> <name><surname>Roy</surname> <given-names>K.</given-names></name></person-group> (<year>2020</year>). <article-title>Toward scalable, efficient, and accurate deep spiking neural networks with backward residual connections, stochastic softmax, and hybridization</article-title>. <source>Front. Neurosci</source>. <volume>14</volume>:<fpage>653</fpage>. <pub-id pub-id-type="doi">10.3389/fnins.2020.00653</pub-id><pub-id pub-id-type="pmid">32694977</pub-id></citation></ref>
<ref id="B28">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Panda</surname> <given-names>P.</given-names></name> <name><surname>Sengupta</surname> <given-names>A.</given-names></name> <name><surname>Roy</surname> <given-names>K.</given-names></name></person-group> (<year>2016</year>). <article-title>&#x0201C;Conditional deep learning for energy-efficient and enhanced pattern recognition,&#x0201D;</article-title> in <source>2016 Design, Automation &#x00026;Test in Europe Conference &#x00026;Exhibition (DATE)</source> (<publisher-loc>Dresden</publisher-loc>: <publisher-name>IEEE</publisher-name>), <fpage>475</fpage>&#x02013;<lpage>480</lpage>.</citation>
</ref>
<ref id="B29">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Paszke</surname> <given-names>A.</given-names></name> <name><surname>Gross</surname> <given-names>S.</given-names></name> <name><surname>Chintala</surname> <given-names>S.</given-names></name> <name><surname>Chanan</surname> <given-names>G.</given-names></name> <name><surname>Yang</surname> <given-names>E.</given-names></name> <name><surname>DeVito</surname> <given-names>Z.</given-names></name> <etal/></person-group>. (<year>2017</year>). <article-title>&#x0201C;Automatic differentiation in pytorch,&#x0201D;</article-title> in <source>NIPS-W</source>. <publisher-loc>Long Beach, CA</publisher-loc>.</citation>
</ref>
<ref id="B30">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Rathi</surname> <given-names>N.</given-names></name> <name><surname>Srinivasan</surname> <given-names>G.</given-names></name> <name><surname>Panda</surname> <given-names>P.</given-names></name> <name><surname>Roy</surname> <given-names>K.</given-names></name></person-group> (<year>2020</year>). <article-title>Enabling deep spiking neural networks with hybrid conversion and spike timing dependent backpropagation</article-title>. <source>arXiv preprint</source> arXiv:2005.01807.</citation>
</ref>
<ref id="B31">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Roy</surname> <given-names>K.</given-names></name> <name><surname>Jaiswal</surname> <given-names>A.</given-names></name> <name><surname>Panda</surname> <given-names>P.</given-names></name></person-group> (<year>2019</year>). <article-title>Towards spike-based machine intelligence with neuromorphic computing</article-title>. <source>Nature</source> <volume>575</volume>, <fpage>607</fpage>&#x02013;<lpage>617</lpage>. <pub-id pub-id-type="doi">10.1038/s41586-019-1677-2</pub-id><pub-id pub-id-type="pmid">31776490</pub-id></citation></ref>
<ref id="B32">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Rueckauer</surname> <given-names>B.</given-names></name> <name><surname>Lungu</surname> <given-names>I.-A.</given-names></name> <name><surname>Hu</surname> <given-names>Y.</given-names></name> <name><surname>Pfeiffer</surname> <given-names>M.</given-names></name> <name><surname>Liu</surname> <given-names>S.-C.</given-names></name></person-group> (<year>2017</year>). <article-title>Conversion of continuous-valued deep networks to efficient event-driven networks for image classification</article-title>. <source>Front. Neurosci</source>. <volume>11</volume>:<fpage>682</fpage>. <pub-id pub-id-type="doi">10.3389/fnins.2017.00682</pub-id><pub-id pub-id-type="pmid">29375284</pub-id></citation></ref>
<ref id="B33">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Santurkar</surname> <given-names>S.</given-names></name> <name><surname>Tsipras</surname> <given-names>D.</given-names></name> <name><surname>Ilyas</surname> <given-names>A.</given-names></name> <name><surname>Madry</surname> <given-names>A.</given-names></name></person-group> (<year>2018</year>). <article-title>&#x0201C;How does batch normalization help optimization?&#x0201D;</article-title> in <source>Advances in Neural Information Processing Systems</source> (<publisher-loc>Montreal, CA</publisher-loc>), <fpage>2483</fpage>&#x02013;<lpage>2493</lpage>.</citation>
</ref>
<ref id="B34">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Sengupta</surname> <given-names>A.</given-names></name> <name><surname>Ye</surname> <given-names>Y.</given-names></name> <name><surname>Wang</surname> <given-names>R.</given-names></name> <name><surname>Liu</surname> <given-names>C.</given-names></name> <name><surname>Roy</surname> <given-names>K.</given-names></name></person-group> (<year>2019</year>). <article-title>Going deeper in spiking neural networks: Vgg and residual architectures</article-title>. <source>Front. Neurosci</source>. <volume>13</volume>:<fpage>95</fpage>. <pub-id pub-id-type="doi">10.3389/fnins.2019.00095</pub-id><pub-id pub-id-type="pmid">30899212</pub-id></citation></ref>
<ref id="B35">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Sharmin</surname> <given-names>S.</given-names></name> <name><surname>Rathi</surname> <given-names>N.</given-names></name> <name><surname>Panda</surname> <given-names>P.</given-names></name> <name><surname>Roy</surname> <given-names>K.</given-names></name></person-group> (<year>2020</year>). <article-title>Inherent adversarial robustness of deep spiking neural networks: effects of discrete input encoding and non-linear activations</article-title>. <source>arXiv preprint</source> arXiv:2003.10399. <pub-id pub-id-type="doi">10.1007/978-3-030-58526-6_24</pub-id></citation>
</ref>
<ref id="B36">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Sironi</surname> <given-names>A.</given-names></name> <name><surname>Brambilla</surname> <given-names>M.</given-names></name> <name><surname>Bourdis</surname> <given-names>N.</given-names></name> <name><surname>Lagorce</surname> <given-names>X.</given-names></name> <name><surname>Benosman</surname> <given-names>R.</given-names></name></person-group> (<year>2018</year>). <article-title>&#x0201C;Hats: histograms of averaged time surfaces for robust event-based object classification,&#x0201D;</article-title> in <source>Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition</source> (<publisher-loc>Salt Lake City, UT</publisher-loc>: <publisher-name>IEEE</publisher-name>), <fpage>1731</fpage>&#x02013;<lpage>1740</lpage>.</citation>
</ref>
<ref id="B37">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Teerapittayanon</surname> <given-names>S.</given-names></name> <name><surname>McDanel</surname> <given-names>B.</given-names></name> <name><surname>Kung</surname> <given-names>H.-T.</given-names></name></person-group> (<year>2016</year>). <article-title>&#x0201C;Branchynet: fast inference via early exiting from deep neural networks,&#x0201D;</article-title> in <source>2016 23rd International Conference on Pattern Recognition (ICPR)</source> (<publisher-loc>Cancun</publisher-loc>: <publisher-name>IEEE</publisher-name>), <fpage>2464</fpage>&#x02013;<lpage>2469</lpage>.</citation>
</ref>
<ref id="B38">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Wu</surname> <given-names>Y.</given-names></name> <name><surname>Deng</surname> <given-names>L.</given-names></name> <name><surname>Li</surname> <given-names>G.</given-names></name> <name><surname>Zhu</surname> <given-names>J.</given-names></name> <name><surname>Shi</surname> <given-names>L.</given-names></name></person-group> (<year>2018</year>). <article-title>Spatio-temporal backpropagation for training high-performance spiking neural networks</article-title>. <source>Front. Neurosci</source>. <volume>12</volume>:<fpage>331</fpage>. <pub-id pub-id-type="doi">10.3389/fnins.2018.00331</pub-id><pub-id pub-id-type="pmid">29875621</pub-id></citation></ref>
<ref id="B39">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Wu</surname> <given-names>Y.</given-names></name> <name><surname>Deng</surname> <given-names>L.</given-names></name> <name><surname>Li</surname> <given-names>G.</given-names></name> <name><surname>Zhu</surname> <given-names>J.</given-names></name> <name><surname>Xie</surname> <given-names>Y.</given-names></name> <name><surname>Shi</surname> <given-names>L.</given-names></name></person-group> (<year>2019</year>). <article-title>Direct training for spiking neural networks: faster, larger, better</article-title>. <source>Proc. AAAI Conf. Artif. Intell</source>. <volume>33</volume>, <fpage>1311</fpage>&#x02013;<lpage>1318</lpage>. <pub-id pub-id-type="doi">10.1609/aaai.v33i01.33011311</pub-id></citation>
</ref>
<ref id="B40">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Zheng</surname> <given-names>H.</given-names></name> <name><surname>Wu</surname> <given-names>Y.</given-names></name> <name><surname>Deng</surname> <given-names>L.</given-names></name> <name><surname>Hu</surname> <given-names>Y.</given-names></name> <name><surname>Li</surname> <given-names>G.</given-names></name></person-group> (<year>2020</year>). <article-title>Going deeper with directly-trained larger spiking neural networks</article-title>. <source>arXiv preprint</source> arXiv:2011.05280.</citation>
</ref>
</ref-list>
</back>
</article>