Loading...

Rethinking the performance comparison between SNNS and ANNS

🔗:https://zhuanlan.zhihu.com/p/416187474

需要知道的问题

  • 1.要了解深入,一个模型为什么好?
  • 2.以前的模型为什么不好?

除了脉冲驱动处理带来的低功耗属性优势之外,SNN 的性能通常比 ANN 差,尤其是在应用准确性方面

  • 3.哪个关键点对性能提升最大?
  • 4.编程怎么实现?
  • 5.论文源代码和paper匹配度怎么样、都覆盖了吗
  • 6.哪些数学运算是关键的?
  • 7.整个全流程是怎么走的?
  • 8.数据是怎样流动的?其中是怎样变换的?各个变换有什么实际意义?
  • 9.既要关注具体实现思路、也要关注上层抽象意义。作者灵感从何而来?
  • 10.作者思考路线如何?

abstract

脉冲神经网络(SNN):一类模拟大脑神经元动力学的有前景的模型

长期以来,对于 SNN 在实际应用中的价值一直存在争论和怀疑。除了脉冲驱动处理带来的低功耗属性优势之外,SNN 的性能通常比 ANN 差,尤其是在应用准确性方面。

最近,研究人员试图通过借鉴 ANN 的学习方法(例如反向传播)来训练高精度 SNN 模型来解决这个问题。该领域的快速进步不断产生令人惊叹的结果,网络规模不断扩大,其成长路径似乎与深度学习的发展相似。尽管这些方法赋予 SNN 接近 ANN 准确性的能力,但由于使用面向 ANN 的工作负载和简单化的评估指标,SNN 的天然优势和超越 ANN 的方式可能会丢失。

在本文中,我们以视觉识别任务作为案例研究,回答“什么工作负载对于 SNN 来说是理想的以及如何评估 SNN 是否有意义”的问题。我们使用不同类型的数据集(面向 ANN 和 SNN)、不同的处理模型、信号转换方法和学习算法设计了一系列对比测试。我们提出了关于应用程序准确性和内存计算成本的综合指标来评估这些模型,并进行广泛的实验。我们证明了这样一个事实:在面向 ANN 的工作负载上,SNN 无法击败其 ANN 同行;而在面向 SNN 的工作负载上,SNN 完全可以表现得更好。我们进一步证明,在 SNN 中,应用程序准确性和执行成本之间存在权衡,这将受到模拟时间窗口和触发阈值的影响。


1.Introduction

人工神经网络(ANNs)能够通过深度层次从大量输入数据中学习高级特征。例如:

  • MLP/CNN:图像识别,语音识别,语言处理,目标检测,医疗诊断,游戏等
  • RNN:语音识别,语言处理,状态控制等
  • CNN x RNNs
  • 大数据资源(如图像识别的ImageNet数据集(Deng et al., 2009))和高性能计算平台(如GPU)

脉冲神经网络(SNN)密切模仿生物神经回路的行为。它们以连续的时空动态和事件驱动的发射活动(0-无/1-脉冲事件)进行操作。由于异步脉冲机制,SNN 在基于事件的场景中表现出了优势,也有望解决一些有趣的问题。此外,SNN 广泛部署在用于类脑计算的神经形态设备中。然而,长期以来,关于 SNN 作为计算工具的实际价值在人工智能和神经形态计算社区中一直存在争论,特别是与 ANN 相比时。这些怀疑减缓了过去几年神经​​形态计算的发展,而神经形态计算又被深度学习的快速进步抢了风头。研究人员试图通过训练算法设计等手段强化 SNN,从根本上缓解这一问题


SNN 研究的最大困难之一:复杂的动态和不可微的脉冲活动导致的训练难度

SNN 在视觉识别任务中正在逐渐接近 ANN 级别的应用精度

  • 改进传统的脉冲时间依赖可塑性 (STDP) 无监督学习规则:例如通过添加横向抑制和自适应阈值 或奖励机制。
  • 预训练了适应的 ANN 并将其转换为 SNN:ANN 中的适应通常包括消除偏差、使用 ReLU 激活函数(或其变体)、将最大池化更改为平均池化等,以增强与 SNN 模型的兼容性。从 ANN 到 SNN 的转换通常会引入权重/激活归一化、阈值调整、采样误差补偿等,以保持准确性。
  • 借用人工神经网络中的有监督BP学习来直接训练准确的SNN:执行 BP 时,梯度可以通过聚合时间维度上的脉冲来仅沿空间方向传播,也可以通过直接计算每个时间步的膜电位和脉冲活动的导数来沿时间和空间维度传播。
  • BP 和 STDP 学习的结合:例如在每次训练迭代的 BP 更新后应用 STDP 更新或在 STDP 预训练后应用 BP 微调。

由于缺乏专门的 SNN 基准测试工作负载,大量工作直接从 ANN 领域移植测试工作负载来验证 SNN 模型。用于 ANN 验证的图像数据集只需转换为用于 SNN 训练和测试的脉冲版本:这似乎是合理的,因为当 SNN 运行时,输入数据被编码为脉冲。然而,ANN 的原始数据集只是静态图像,即使将其转换为脉冲模式,也无法充分利用 SNN 的时空优势。

由于工作负载和评估指标不合适,当前的 SNN 无法击败 ANN

出现了两个悬而未决的问题:

  • 什么工作负载对于 SNN 来说是理想的
  • 如何评估 SNN 才有意义

所做工作

  • 通过使用不同领域的数据集、不同的处理模型、信号转换方法和学习算法设计一系列对比测试,我们比较了 ANN 和 SNN(带有速率编码)的性能。
  • 提出了关于应用程序准确性、内存成本和计算成本的综合指标,以评估这些模型并进行广泛的分析。
  • 证明了一个事实:在面向 ANN 的工作负载上,在相同网络规模下,SNN 在准确性方面无法击败 ANN,但具有高效处理的潜力;而在面向 SNN 的工作负载上,SNN 完全可以表现得更好
  • 进一步证明:模拟时间窗口和触发阈值的变化将在应用程序准确性和执行成本之间产生权衡

主要贡献

  • 考虑应用准确性和执行成本之间的权衡,提出了急需的SNN 和ANN 综合评估指标。使用不同的基准数据集、处理模型、信号转换和学习算法进行广泛的实验和分析,演示了各种比较方法和可视化手段。
  • 为每个工作负载推荐最佳模型
  • 直接将工作负载从 ANN 移植到 SNN 是不合适的,至少是不明智的,尽管许多工作正在这样做。创建更多面向 SNN 的数据集并构建具有更广泛任务的基准框架对于 SNN 社区来说是紧迫的

本文其余部分的组织如下:

  • 第 2 节介绍了 ANN 和 SNN 的一些预备知识,以及典型的网络拓扑和基准数据集;
  • 第 3 节系统地提出了信号转换方法、测试工作负载、训练算法和评估指标;
  • 第 4 节提供了实验设置、结果分析以及可视化;
  • 最后,第 5 节总结并讨论了本文

2.Preliminaries

视觉识别的 ANN 和 SNN 的初步知识:

  • 神经元模型
  • 网络拓扑
  • 基准数据集

神经元是基本的计算单元,由丰富的突触连接形成神经网络。如果我们将神经网络视为图,则每个神经元和突触可以分别视为节点和边。


神经网络分类

  • ANN
  • SNN

2.1 Artificial neural networks

图(a)描绘了典型的人工神经元的模型。计算过程由:y=ψ\psi(b + j\sum_jxjx_jwjw_j) (1)

  • x:输入激活
  • y:输出激活
  • w:突触权重
  • b:偏差
  • j:输入神经元的索引
  • ψ\psi:非线性激活函数

人工神经网络中的神经元使用以高精度和连续值编码的激活相互通信,并且仅在空间域(即逐层)传播信息。


2.2 Spiking neural networks

(b)展示了一个典型的脉冲神经元,与ANN神经元相比,它具有相似的结构,但行为不同。相比之下,脉冲神经元通过二进制事件编码的脉冲序列进行通信,而不是人工神经网络中的连续激活。树突整合输入脉冲,soma进而进行非线性变换,产生输出脉冲序列。

行为通常由流行的 LIF 模型建模,描述为:

τ\taudu(t)dt\frac{du(t)}{dt} = - [u(t) - ur1u_{r1}] + j\sum_jωj\omega_jtjkSjTw\sum_{t_{j}^{k} \in S_j^{T_w}}K(t - tjkt_j^k) (2)

s(t)=1 & u(t)=ur2u_{r2} , if u(t) \geq uthu_{th}

s(t)=0 , if u(t) < uthu_{th}

  • (t):时间步长,时间离散化单位,模型中的微分方程会根据t进行更新
  • τ:时间常数
  • u:膜电位
  • s:输出脉冲
  • ur1:静息电位,指神经元在没有接收到任何突触输入时的电位水平。它通常被设置为一个负值,比如-70mV。这个负值意味着当神经元不被激活时,内部是趋向稳定的状态。
  • ur2:复位电位,当神经元放电产生脉冲后,为了准备下一次积分放电,需要将电位重新设置到一个复位值。这个值通常接近甚至等于静息电位,比如也设为-70mV。它使得神经元在放电后快速返回静息,准备下一次信息编码。
  • wjw_j: 第 j 个输入神经元的突触权重
  • tjkt^k_j:第 j 个输入神经元的第 k 个脉冲在TWT_W的积分时间窗口内激发的时间(总共 SjTwS^{Tw}_j脉冲序列),发放脉冲的时间
  • K():描述时间衰减效应的核函数
  • uthu_{th}:决定是否发射脉冲的发射阈值

SNN 通常可以实现更低的功耗

  • 与 ANN 不同,SNN 以脉冲模式表示信息,每个脉冲神经元都会经历丰富的动态行为
  • 具体来说,除了空间域中的信息传播之外,当前状态还受到时间域中过去历史的紧密影响
  • 主要通过空间传播和连续激活的 ANN 相比,SNN 通常具有更多的时间多功能性,但精度较低
  • 脉冲仅在膜电位超过阈值时触发,因此整个脉冲信号通常是稀疏的,并且计算可以是事件驱动的(仅在脉冲输入到达时启用)。
  • 脉冲是二进制的,即 0 或 1

2.3 Typical network topologies

构建神经网络的基本层拓扑

  • 全连接(FC)层:多层感知器(MLP)
  • 循环层:RNN
  • 卷积(Conv)层(以及池化层):CNN

MLP 和 RNN 仅包含堆叠的 FC 层,每层中带有或不带有循环连接,分别如图 2(a) 和 (b) 所示。对于图 2(c)所示的 CNN,它们直接针对 2D 特征的处理,而不是 MLP 和 RNN 中的 1D 特征。

卷积 (Conv) 层中的每个神经元仅接收来自上一层中所有特征图 (FM) 的局部感受野 (RF) 的输入。每个神经元的基本计算与式(1)或(2)相同。此外,CNN还使用池化层通过输出每个RF的最大值(即最大池化)或平均值(即平均池化)来单独对每个FM的大小进行下采样,并使用FC层进行最终分类。


2.4 Benchmark datasets

图3展示了我们用于视觉识别的两种不同类型的基准数据集:

  • MNIST和CIFAR10:基于帧的静态图像,并被广泛用于人工神经网络,我们称它们为面向人工神经网络的数据集
  • N-MNIST和dvs-cifar10:数据格式是spike事件,通过使用动态视觉传感器(DVS)扫描每个图像从上述静态数据集转换而来。除了与面向神经网络的数据集相似的空间信息外,它还包含更多的动态时间信息,并且脉冲事件与snn中的信号格式自然兼容,因此称为面向snn的数据集。

MNIST:

  • 60,000 个标记手写数字的训练集
  • 10,000 个标记数字的测试集
  • 每个数字样本都是一个 28 × 28 的灰度图像。

CIFAR10

  • 训练集:包含 50,000 张带标签的训练图像以及环境中的自然和人造物体
  • 其他 10,000 个测试图像
  • 每个样本都是 32 × 32 × 3 RGB 图像

DVS:

  • 9000张图像用于训练
  • 1000张用于测试
  • 可以沿着给定的方向扫描原始静态图像,并收集由每个像素的强度变化触发的脉冲序列。
  • 由于它有两种改变方式(增加或减少),DVS产生两个脉冲事件通道,分别称为On和Off事件(图3中的红色和蓝色)
  • 将每个图像转换为行×深× 2 × T的脉冲模式,其中T是记录时间长度
  • 从原始CIFAR10数据集转换10 000幅图像,其中每个类有1000个脉冲模式,大小为128 × 128 × 2 × T

N-MNIST:

  • 将原始MNIST转换为spike版本
  • 60,000个训练样本
  • 10,000个测试样本
  • 每个样本都是一个大小为34 × 34 × 2 × T的时空脉冲模式

3.Benchmarking methodology

  • ANN和SNN域之间的信号转换
  • 设计了六个基准模型以及用于对比测试的训练算法
  • 提出了三个评估指标以供后续模型评估和比较

3.1 Data signal conversion

ANN 接收实际值的基于帧的图像,而 SNN 接收事件驱动的脉冲信号。因此,有时需要将相同的数据资源转换成不同的形式以便在另一个域中进行处理。这里我们以视觉识别任务为例,主要介绍如下四种信号转换方法。


3.1.1 Image to spike pattern

图像到脉冲模式:由于像素强度的实值信号不适合基于脉冲的 SNN,因此在面向 ANN 的数据集上测试 SNN 模型时需要转换为脉冲序列。普遍的策略之一是概率抽样。在每个时间步长,它将原始像素强度(通常标准化为 [0, 1])采样为二进制值,其中 1(发射脉冲)的概率等于强度值。采样遵循特定的概率分布,例如伯努利分布或泊松分布。例如,图 4(a) 中的 i1 神经元对应于归一化强度为 0.8 的左上角像素,产生一个二进制脉冲序列,遵循伯努利分布 B(0.8,T),这里T是给定的采样时间窗口。


在短时间窗的情况下,上述元素采样通常会遭受精度损失(参见第4.2节)。为了规避这个问题,modern works (Esser等人,2016)添加了一个编码层来全局产生脉冲信号,如图4(b)所示。该层中的每个神经元接收多个像素的强度值作为输入(即树突以正常输入权重MAC操作的ANN模式工作),同时产生脉冲作为输出(即soma以LIF动力学的SNN模式工作)。尽管编码层是ANN-SNN混合层,而不是像网络中的后续层那样的完整SNN层,但其权重是可训练的,因为本文对SNN的训练方法对ANNs也是bp兼容的(见第3.4节)。由于神经元数量可灵活定制,且参数可训练,因此可以适应全局优化问题,获得更好的精度


3.1.2 Spike pattern to image

脉冲模式到图像:为了在面向 SNN 的数据集上测试 ANN 模型,我们需要将脉冲模式转换为基于帧的图像。

存在两种可能的输出格式:

  • (i)具有 0/1 像素的二值图像;
  • (ii) 具有实值像素的强度图像。


脉冲模式转换为二值图像的直观策略是首先沿着时间维度从所有神经元位置扩展脉冲序列。然后,如图4(c)所示,扩展的2D脉冲模式(位置索引与时间)可以直接视为二值图像(每个脉冲事件代表像素强度为1,否则像素强度为0)。原始记录时间长度T通常较长,这可能会导致图像尺寸过大。因此,沿时间方向的尖峰事件需要以适度的滑动时间窗口(例如每 1 ms)定期聚合或采样。这里,聚合意味着如果窗口中存在脉冲,则所得尖峰事件为 1,否则为 0。即使如此,2D 位置(图 4© 中的左侧)也将展开为 1D 位置向量(图4©)右侧的Y轴也产生大图像尺寸


为了转换成强度图像,需要脉冲事件的时间累积(计算脉冲数量)。图4(d)描绘了100毫秒内脉冲序列的累积过程。累积的尖峰数将被标准化为具有适当强度值的像素。由于 DVS 的相对运动和固有噪声,所得图像常常模糊且边缘特征模糊。这种转换只有在强有力的假设下才允许,即每个脉冲位置不应随着 t 的演变而移开其起始位置,否则将严重损害所得图像的质量。


3.2 ANN-oriented workloads

目标:识别基于帧的数据集(例如 MNIST 和 CIFAR10)中的图像

为了处理此类工作负载,我们引入了三个基准模型:

  • Model-1: 具有 ANN 训练和 ANN 推理的自然 ANN
  • Model-2: 经过 ANN 训练和 SNN 推理转换后的 SNN
  • Model-3: 通过 SNN 训练和 SNN 推理强制执行 SNN

3.2.1 Model-1: natural ANN with ANN training and ANN inference

5(a) 所示,具有“ANN 训练 ANN 推理”的自然 ANN: 使用强度图像以 ANN 模式(参考式1)充分训练网络,然后在同一域中进行后续推理。训练遵循ANN领域最广泛使用的BP算法。


3.2.2 Model-2: converted SNN with ANN training and SNN inference

此外,SNN 社区的许多工作也使用这些数据集来测试 SNN 的性能。由于在这些情况下网络工作在 SNN 模式下,因此输入数据需要从基于帧的图像转换为脉冲事件,如图 4(a) 或 (b) 所示。信号转换后,我们进一步提供两个建模分支。

如图 5(b)所示,首先使用 BP 算法在原始图像数据集上训练 ANN,然后将预训练的 ANN 适应具有相同结构但不同神经元模型的 SNN 对应部分。此转换后的 SNN 在推理阶段接收具有脉冲事件的数据集变体。


3.2.3 Model-3: enforced SNN with SNN training and SNN inference.

如图 5© 所示的强制 SNN,其中 SNN 模型直接在转换后的脉冲数据集上从头开始训练,并在同一域中进行测试。考虑到Pytorch的开源性,我们选择STBP作为snn的直接训练模型。


3.3 SNN-oriented workloads

目标:识别无帧脉冲数据集中的图像(例如N-MNIST和DVS-CIFAR10)


三个基准模型:

  • Model-4:使用转换后的二进制或强度图像的强制二元 ANN
  • Model-5: 强制强度 ANN,用于 ANN 训练和 ANN 推理
  • Model-6: 具有 SNN 训练和 SNN 推理的自然 SNN

3.3.1 Model-4 or Model-5: enforced binary ANN or enforced intensity ANN using converted binary or intensity images, respectively, for ANN training and ANN inference

前两个工作在 ANN 模式下(见图 6(a)),其中输入数据被转换为图像。这些模型使用 ANN 的常规 BP 算法进行训练,并在 ANN 领域进行测试


脉冲事件到图像的数据转换有两种方法,分别如图 4© 和 (d) 所示:

  • (i) 直接接收展开的脉冲模式的二值图像;
  • (ii) 通过沿时间维度压缩脉冲模式来获得强度图像

3.3.2 Model-6: natural SNN with SNN training and SNN inference

图6(b)给出了另一个在自然 SNN 模式下工作的基准模型。该网络直接使用原始脉冲数据集进行训练和测试,学习算法仍然是如上面 Model-3 中的 BP 启发


3.4 Training algorithms

在上一节中,我们提到了六个基准模型的两种训练算法

  • (i) ANN 的 BP
  • (ii) 受 BP 启发的 SNN 变体

BP算法: 式(3)

Lyin\frac{\partial L}{\partial y^n_i} = j\sum_j Lyjn+1\frac{\partial L}{\partial y_j^{n+1}}ψjn+1\psi_j^{'n+1}ωjin+1\omega_{ji}^{n+1}

\nablawjinw_{ji}^n = Lyjn+1\frac{\partial L}{\partial y_j^{n+1}}ψjn+1\psi_j^{'n+1}yiny_i^n , \nablabjnb_j^n = Lyjn+1\frac{\partial L}{\partial y_j^{n+1}}ψjn+1\psi_j^{'n+1}

  • i和j:是前一层 n 和当前层 (n+1) 中的神经元索引
  • ψjn+1\psi_j^{'n+1}: 层 (n+1) 中第 j 个神经元的激活导数
  • L: 优化损失函数。通常,我们可以简单地使用均方误差(MSE)作为要最小化的成本,即令 L = 12\frac{1}{2}||YlabelYY^{label} - Y||。这里 YYYlabelY^{label}分别是实际输出和标记的真实值

选择 STBP来训练我们的 SNN。它基于式(2)中原始 LIF 模型的迭代版本。具体来说,它产生: 式(4)

uit+1,n+1u_i^{t+1,n+1} = edtτe^{- \frac{dt}{\tau}}uit,n+1u_i^{t,n+1}(1-oit,n+1o_i^{t,n+1}) + jωijnojt+1,n\sum_j\omega_{ij}^{n}o_j^{t+1,n}

ojt+1,n+1o_j^{t+1,n+1} = f(uit+1,n+1u_i^{t+1,n+1} - uthu_{th})

  • dt是模拟时间步的长度
  • o表示神经元脉冲输出
  • t和n分别是时间步和层索引
  • edtτe^{- \frac{dt}{\tau}}:反映了膜电位的衰减效应。
  • f(·) 是阶跃函数,当 x ≥ 0 时,满足 f (x) = 1,否则 f (x) = 0。

这种迭代 LIF 格式包含原始神经元模型中的所有行为,包括积分、激发和重置。请注意,为了简单起见,这里我们在原始 LIF 模型中设置 ur1u_{r1} = ur2u_{r2} = 0、TwT_w = 1、K (·) ≡ 1。


给定迭代 LIF 模型,梯度沿时间和空间维度传播,参数更新可相应推导如下: 式(5)

Loit,n\frac{\partial L}{o_i^{t,n}} = jLojt,n+1ojt,n+1oit,n\sum_j \frac{\partial L}{\partial o_j^{t,n+1}}\frac{\partial o_j^{t,n+1}}{\partial o_i^{t,n}} + Loit+1,noit+1,noit,n\frac{\partial L}{\partial o_i^{t+1,n}}\frac{\partial o_i^{t+1,n}}{\partial o_i^{t,n}} ,

Luit,n\frac{\partial L}{\partial u_i^{t,n}} = Loit,noit,nuit,n\frac{\partial L}{\partial o_i^{t,n}}\frac{\partial o_i^{t,n}}{\partial u_i^{t,n}} + Loit+1,noit+1,nuit,n\frac{\partial L}{\partial o_i^{t+1,n}}\frac{\partial o_i^{t+1,n}}{\partial u_i^{t,n}} ,

ωjin\nabla \omega_{ji}^n = n=1TLujt,n+1oit,n\sum_{n=1}^T \frac{\partial L}{\partial u_j^{t,n+1}} o_i^{t,n}


为了解决不可微问题,在计算ou\frac{\partial o}{\partial u} 时引入了辅助函数来逼近阶跃函数f(·)的导数,满足:ou\frac{\partial o}{\partial u} \approx 1a\frac{1}{a}sign(|u - uthu_{th}| < a2\frac{a}{2})

  • 参数 a: 决定梯度宽度
  • 当 x > 0 时,sign(x) = 1;当 x = 0 时,sign(x) = 0
  • 损失函数 L:测量给定时间窗口 T 内的真实值与最后一层 N 的平均发射率之间的差异,L = 12\frac{1}{2}Ylabel1Tt=1TOt,N22||Y^{label} - \frac{1}{T}\sum_{t=1}^T O^{t,N}||^2_2

3.5 Evaluation metrics

众所周知,基于SNNs的大脑在绝对识别精度方面通常无法击败当前基于ANNs的人工智能系统,而真实的大脑在其他指标(例如运行效率)上表现更好。然而,在最近的工作中,识别精度仍然是判断哪个模型(ANN 或 SNN)更好的主流指标,特别是在算法研究中。这不够公平,因为 ANN 和 SNN 具有非常不同的特征。例如,ANN 中的数据精度远高于 SNN,这使得 ANN 更容易在相同网络规模下获得更好的识别精度。这些都表明模型评估需要更全面的指标。除了常见的精度比较之外,这里我们进一步引入内存和计算成本作为补充评估指标。请注意,这只是一个开始,未来预计会有更多有洞察力的指标(请参阅第 5.2 节中的讨论)。


3.5.1 Recognition accuracy

这里我们使用 top-1 精度。在人工神经网络中,这种准确性意味着正确识别样本的百分比。如果标签类别与激活值最大的模型预测的标签类别相同,则当前样本的识别正确。在 SNN 中,我们首先计算给定时间窗口 T 内输出神经元的发射率(脉冲数量)以进行速率编码,然后根据发射率值确定预测类别 。随后的精度计算与 ANN 中的相同。一种广为接受的解码方法可以定义如下

C^\hat{C} = argmaxi1Tt=1Toit,Nargmax_i {\frac{1}{T} \sum^T_{t=1}o_i^{t,N}}

  • 其中oit,No_i^{t,N} 表示最后一层 N 中第 i 个神经元在第 t个时间步 的脉冲输出

3.5.2 Memory cost

ANN内存成本:M=Mw+MaM = M_w + M_a

  • 权重内存
  • 激活内存

SNN内存成本: M=Mw+Mp+MsM = M_w + M_p + M_s

  • 权重内存
  • 膜电位内存
  • 脉冲内存(峰值内存开销仅在峰值触发时发生)

其中 MwMaMpMsM_w、M_a、M_p 和 M_s 分别表示权重、激活、膜电位和脉冲的内存成本。与由网络结构决定的静态值MwMaMpM_w、M_a和M_p相比,MsM_s是由某个时间步长的最大尖峰事件数动态确定的。这里为了清楚起见,假设除了 1 位尖峰数据之外的所有数据都以 32 位存储。


3.5.3 Compute cost

ANN计算成本主要由式(1) 中的 MAC 运算决定

SNN主要的计算开销是式(2) 中脉冲驱动的输入积分

应该强调SNN与 ANN 的两个区别

  • (i)由于二进制脉冲输入,如果 TwT_w = 1 且 K (·) == 1 实际上满足这些条件,那么树突积分就变得无乘数,如 jwjsj=jwj\sum_j w_j· s_j = \sum_{j'} w_{j'}(如果 sjs_{j′} = 1);
  • (ii) 积分是事件驱动的,这意味着如果没有收到尖峰,则不会发生计算。计算成本可以通过以下方式计算: ANN: C= Cmul+CaddC_{mul} + C_{add};SNN: C= CaddC_{add} ,其中 CmulCaddC_{mul} 和 C_{add} 分别是乘法和加法的计算成本。

4.Experimental results

4.1 Experimental setup

作为开始工作,为了简单起见,我们更多地讨论了 MLP 和(普通)CNN 的结果,最后仅提供其他模型(例如 RNN 和时态 CNN)在面向 SNN 的工作负载上的结果。

在面向 ANN 的工作负载上,我们评估了 Model-1/2/3 在 MNIST 和 CIFAR10 数据集上的性能。由于 MLP 无法处理更大规模的 CIFAR10,我们仅展示 CNN 在该数据集上的结果。

在面向 SNN 的工作负载上,我们评估了 Model-4/5/6 在上述数据集的神经形态版本(即 N-MNIST 和 DVS-CIFAR10)上的性能。


整体实验流程图


主要网络结构


面向ann的工作负载参数配置:

面向snn的工作负载参数配置:

由于这些工作负载通常具有不同的输入转换编码格式,为了清晰起见,我们只显示隐藏层的参数配置。在所有Conv层中,我们将padding值设置为1。由于模型-4的输入尺寸较大,我们在那里设置步幅值为2,在其他模型中设置步幅值为1。在所有SNN模型(Model-2/3/6)中,池化层中的每个单元都是一个独立的神经元,这保证了池化层的输出仍然是spike格式。这种池化配置不同于之前的工作(Wu等人,2018,2019)。在模型3/6中,我们使用等式(4)中描述的完整的LIF神经元模型,而在模型2中,我们使用IF神经元模型(没有LIF中的泄漏项),这是之前转换的snn中流行的选择

我们在 Pytorch 框架中实现所有模型。在 MNIST 和 N-MNIST 数据集上,我们采用 Adam(自适应矩估计(Kingma Ba,2014))优化器,默认参数设置(α = 0.0001,β1 = 0.9,β2 = 0.999,ϵ = 10−8);而在 CIFAR10 和 DVS-CIFAR10 数据集上,我们使用 SGD(随机梯度下降)优化器,初始学习率 r = 0.1,动量为 0.9,其中 r 每 35 个训练周期衰减 10 倍.


4.2 Accuracy analysis

不同模型在基准工作负载上的准确性结果:

  • a指使用概率采样进行输入信号转换的模型
  • b指使用编码层对输入信号进行转换的模型。

MNIST上:

  • 简单的自然神经网络(模型-1)可以达到最好的精度,即MLP的98.60%和CNN的99.31%,因为它们自然地与基于帧的数据集兼容。
  • 基于预训练神经网络(Model-2)转换的snn的精度分数与自然神经网络相当,但略差。在转换后的spike数据集上,由bp启发算法训练的强制SNNs (Model-3)达到了最差的精度。

请注意,尽管我们也观察到强制的SNN偶尔可以超过转换的SNN(例如在CNN结构上),但它从来没有比自然的ANN更好。


CIFAR10:

  • 准确度差异变得更加明显
  • 从最好到最差遵循“自然 ANN (Model-1) ⇒ 转换的 SNN (Model-2) ⇒ 强制 SNN (Model3)”(即 78.16% ⇒ 76.81% ⇒ 63.19%)

尽管通过使用额外的编码层(图 4(b))进行信号转换,强制 SNN 的准确率可以提高到 74.23%,但它仍然无法击败自然 ANN.



面向 ANN 的数据集上模拟时间窗口 T 的敏感性分析:

  • (a) 采样图像;
  • (b) 平均绝对误差(MAE)曲线;
  • © 强制 SNN 的训练曲线。

准确性差距的根本原因:

  • 图 8(a) 显示了将原始图像转换为脉冲信号以进行后续 SNN 处理时的信息损失(在 Model-2 Model-3 中)。这里我们以图4(a)中的概率采样为例。我们首先计算模拟时间窗口 T 内每个像素的概率采样产生的脉冲总数,然后将脉冲数归一化后可视化为图像。随着 T 的增加,图像变得更加清晰,这表明信号转换中的精度损失较小。但T太大会导致仿真时间过长。在我们的实验中,我们设置T = 15,但是信号转换的精度损失仍然存在。
  • 图8(b)描绘了原始像素值和归一化尖峰数之间的平均绝对误差(MAE)以及由于非确定性采样而导致的MAE方差。最后,我们研究T如何影响训练收敛,这由不同T配置下的训练曲线显示。通常,T越长,收敛速度越快,最终精度越高,这主要是因为输入信号转换时的精度损失较小。总之,从图像到尖峰的信号转换会导致信息丢失,并使 SNN 模型失去在面向 ANN 的工作负载上超越自然 ANN 的机会。此外,仿真时间窗口T的长度显着影响模型的收敛性。


在面向 ANN 的数据集上转换后的 SNN 的精度分析

  • (a) 测试自然 ANN、约束 ANN 和转换后的 SNN 之间的精度比较;
  • (b) 转换精度损失曲线,记录自然 ANN 和转换后的 SNN 之间随着时间步长增加的精度差距。

转换后的 SNN 与自然 ANN 相比也会损失准确性: 转换后的 SNN 基于预训练的 ANN 模型。为了与转换后的最终IF模型兼容,ANN的预训练通常会添加一些约束,称为约束ANN。 Diehl 等人的约束包括消除偏差、仅允许 ReLU 激活函数、将最大池化更改为平均池化等。 (2015)以及亨斯伯格和埃利亚史密斯(2016)。这些约束通常会导致精度损失,如图 9(a)所示。然后,从预训练的 ANN 到转换后的 SNN 的转换将在上述信号转换和新发生的参数自适应(例如权重/激活归一化和阈值调整)期间遭受进一步的精度损失。在 CIFAR10 上,模型转换的精度损失明显大于小型 MNIST 上的损失。仿真时间窗口T的影响如图9(b)所示,其中T越小,精度损失明显越大。因此,转换后的 SNN 通常需要更长的 T 才能恢复精度。综上所述,由于预训练和有损模型转换的约束,转换后的 SNN 无法优于自然 ANN。最近越来越多的工作使用转换后的 SNN 在面向 ANN 的数据集上对 SNN 性能进行基准测试(Diehl 等人,2015;Hu 等人,2018;Sengupta 等人,2019)。虽然这种方式表明 SNN 仍然可以在这些面向 ANN 的工作负载上很好地工作,但这也使 SNN 失去了成为胜利者的机会。


不同模型在 面向 SNN 的工作负载上的准确性 结果:

自然 SNN(Model-6)在这些网络和数据集上始终可以达到最佳准确率(N-MNIST 上的 MLP 为 98.61%,N-MNIST 上的 CNN 为 99.42%,DVS-CIFAR10 上的 CNN 为 60.30%),这这归功于与无帧尖峰事件的天然兼容性。在强制 ANN 中,除了 CNN 在 N-MNIST 上的一种偶然情况外,基于强度图像的 ANN(模型 5)通常比基于二值图像的 ANN(模型 4)表现更好。原因与面向 ANN 的工作负载类似,因为 N-MNIST 的相对简单性缩小了不同模型之间的准确性差距。


表 5 中所有模型的相应训练曲线如图 10 所示。总体而言,在这些面向 SNN 的工作负载上,自然 SNN 能够比转换为 ANN 域中处理的其他模型更好地收敛。


本文试图对精度结果进行全面的解释。图11可视化了在面向snn的工作负载下注入到三个模型(Model-4/5/6)的不同输入。对于前两种模型,分别按照图4©或(d)中的信号转换方法将脉冲事件转换为二值图像或强度图像。由于Model-4直接接收每个脉冲模式(0/1)为二值图像,特征不够直观且过于稀疏,如图11(a)所示。不同的是,模型-5沿着时间维度累积每个像素的脉冲,然后将脉冲数目归一化为强度值。如图11(b)所示,物体轮廓可以在很大程度上保持,但是细节的尖锐特征被模糊。与上述两种基于帧的模型相比,Model6可以自然地接收脉冲事件。图11©的奇数列显示了每个时间步长的原始脉冲模式(实际上它仍然需要聚合每3 ms的脉冲事件以缩小总的模拟时间长度)。回想式(4),如果我们为简单起见忽略点火后的电位重置,snn中的膜电位实际上用时间衰减因子累积了所有先前的输入。为了模拟最终注入膜电位的等效输入,我们绘制了以前脉冲模式在每个时间步的衰减积累,并在图11©的偶数列中显示它们。可以看到,自然SNN (Model-6)很好地保留了spike事件中包含的细节特征,这是为什么它在面向SNN的工作负载上可以表现更好的原因之一。


除了输入信号的可视化之外,我们还进一步可视化激活(在 ANN 中)和发射率(在 SNN 中),以比较这三个模型的识别能力。图 12 提供了由非线性降维算法、t 分布随机邻域嵌入 (t-SNE) 生成的 2D 嵌入结果(Matten Hinton,2008)。它可以将高维嵌入投影到低维嵌入以进行数据可视化。由于 t-SNE 对困惑度(ppl)值设置的敏感性,我们根据 Matten 和 Hinton(2008)建议的范围在每个数据集上采用两个 ppl 值(ppl = 5,ppl = 50)。通过这种方式,我们将最后一个隐藏层的 256 维激活或激发率投影到二维。具有相同颜色的点具有相同的标签,具有不同颜色的点属于不同的类。因此,相同颜色的集中点越多,不同颜色的发散点越多,反映出模型的分类性能越好。尽管不同的 ppl 设置确实会导致模式变化,但随着 ppl 值的变化,三个模型之间的相对聚类效果保持一致。在 N-MNIST 上,三种模型都能够将不同类别的数据投影到不同的点簇中。与 Model-4 和 Model-5 相比,Model-6 可以将每个类内的点吸引得更紧凑,并将类推得更远,这表明 Model-6 的性能最好。在 DVS-CIFAR10 上,所有模型都存在较大的聚类重叠。这意味着无法获得与简单 N-MNIST 任务类似的准确度分数。可以明显看出,从Model-4到Model-6的聚类效应逐渐增强。结合 N-MNIST 和 DVS-CIFAR10 上的结果,证实了 Model-6 在面向 SNN 的工作负载上的优越性,这与表 5 中的结果一致。请注意,模型的分类性能已在表 4 中得到证明和5,t-SNE模拟只是一种辅助的可视化方式,以便更好地理解(不是本工作的重点)。这就是为什么我们只在面向 SNN 的数据集上显示表 5 中模型 4/5/6 的 t-SNE 结果,而不对表 4 中模型 1/2/3 重复相同的实验。


4.3 Cost analysis

在本小节中,我们计算表 4 和表 5 中所有模型的内存和计算成本


4.3.1 Memory cost analysis

ANN模型内存成本:

  • 权重内存
  • 激活内存

在面向 ANN 的工作负载上,SNN 的内存成本与 ANN 相当。在面向 SNN 的工作负载上,可以得出类似的结论,但 Model-4(强制二元 ANN)除外。 Model-4 的输入大小比 Model-5/6 大得多(见图 4),这显着增加了特征图大小和内存/计算成本。


4.3.2 Compute cost analysis

与由内存消耗最大的时间步确定的内存成本不同,计算成本考虑了整个模拟时间窗口(T)内所有时间步的总操作。

观察到两个主要结论:
-(1)所有 SNN 都可以消除昂贵的乘法运算(在上述 Tw = 1 的条件下),这对于降低功耗和能量非常有帮助;不包括带有编码层的 Model-3,其第一层工作在 ANN-SNN 混合模式下,导致额外的乘法和更多的加法。
-(2)SNN 中的加法运算数量可能超过ANN 或至少处于同一级别,因为 SNN 需要处理持续时间,即 T 来完成速率编码方案下的实际任务。结论有点违反常识,即 SNN 的发射活动非常稀疏,即应该是低成本的。

在面向 ANN 的工作负载上,由于提到的速率编码时间窗口,SNN 的加法运算量高于 ANN。具体来说,我们发现强制 SNN 的 Model-3 比转换的 SNN 的 Model-2 消耗的添加量更少。这是因为 Model-2 需要更长的时间窗口(高达 66.7x,见表 2)来恢复模型转换后的精度损失。在面向 SNN 的工作负载上,由于前面提到的较大的特征尺寸,强制二元 ANN 的 Model-4 会消耗更高的计算成本。自然 SNN 的 Model-6 消除了昂贵的乘法;此外,它比强制强度 ANN 的模型 5 消耗更少的添加量,与模型 1/2/3 的情况相比,模型 5 呈现相反的观察结果。这表明神经形态数据集(例如 N-MNIST 和 DVS-CIFAR10)的脉冲序列比转换后的面向 ANN 的数据集(例如 MNIST 和 CIFAR10)稀疏得多。因此,神经形态数据集上的 SNN 模型可以抑制速率编码窗口带来的额外成本。

由以上分析可知,SNNs中的点火活动会极大地影响精度和计算成本。因此,以Model-6在DVS-CIFAR10数据集上的敏感性分析为例,进一步进行如图13所示的敏感性分析。我们忽略了内存开销,因为它只由特定时间步长的峰值事件的最大值决定,而不是整个时间窗口的总峰值。考虑了两个因素,即T和uth。我们可以得到两个观察结果:(1)显然,较大的T通常可以带来更高的精度,但会导致更多的计算成本;(2)适当增大uth值可以同时提高精度和计算成本。过小的uth将产生更多的峰值,不仅增加了计算成本,而且由于模式可区分性较低,降低了模型精度。虽然过大的uth会显著稀疏脉冲,但会影响网络的表达能力,导致精度降低。


4.4 Additional comparison

除了 SNN 之外,神经网络家族中的 RNN 和时间 CNN 也能够处理时间信息。因此,在这里我们对 N-MNIST 和 DVS-CIFAR10 数据集上的 RNN、时序 CNN 和 SNN 进行了额外的比较,如表 7-8 所示。我们在这两个数据集上实现了非尖峰版本的普通 RNN、长短期记忆 (LSTM) 和时态 CNN 模型,以及尖峰版本的 SNN。我们还参考了其他报告的结果。所有网络结构都很详细,有助于理解。首先,我们的 SNN 结果比之前报道的参考文献要先进,这得益于我们选择了优越的训练算法和信号转换方法。与最近的工作(Wu et al., 2019)相比,准确性略有下降,因为我们使用了较小的网络,并且没有采用神经元归一化和基于投票的分类技术。我们想强调的是,这项工作的重点是提供一种全面的基准测试方法,而不是击败之前的工作,因此我们放弃了可能的优化技术。我们的 LSTM 结果与之前的工作一致(Liu et al., 2018),这也反映了我们实现的可靠性。

其次,关于SNN和RNN (LSTM)/temporal CNN模型的比较,似乎自然SNN模型(model -6)具有更大的潜力,表现得更好。虽然我们的自然SNN在N-MNIST上的表现比时间CNN稍差,但我们应该注意到,后者由于3D卷积具有更多的权重参数。我们尽量解释SNNs在神经形态工作负载上的优势如下:(1)对历史信息的时间整合可以更好地自然地保持稀疏数据的细节特征(见图11);(2)每个神经元中的泄漏和阈值点火机制可以协同帮助去除冗余信息,从而保持有用的特征(Evangelos et al., 2015;Gutig, 2016)。


5. Conclusion and discussion

5.1. Brief summary

在这项工作中,我们设计了全面的实验来回答“什么工作负载最适合 SNN 以及如何评估 SNN 有意义”的问题。具体来说,我们使用不同的基准数据集(面向 ANN 和 SNN)、处理模型(ANN 和 SNN)、信号转换方法(图像⇔尖峰)和学习算法(直接和间接监督训练)进行广泛的工作负载分析。考虑到应用程序准确性和内存/计算成本之间的权衡,提出了综合评估指标。通过各种比较、可视化和敏感性研究,我们给出了以下建模见解

  • 对于简单的面向 ANN 的工作负载(例如 MNIST),Model-3(强制 SNN)是更好的选择,具有可接受的精度和较低的计算成本(无需昂贵的乘法和稍多的加法)。
  • 在更复杂的面向 ANN 的工作负载(例如 CIFAR10)上,首选 Model-1(自然 ANN)来保持模型准确性。虽然需要乘法,但加法的数量是最少的。
  • 在面向 SNN 的工作负载上,Model-6(自然 SNN)是最佳选择,具有更高的精度和更低的计算成本。

一方面,由于 ANN 预训练期间的额外约束以及 SNN 转换期间有损信号转换参数自适应,转换后的 SNN 与原始 ANN 相比,其准确性有所下降;另一方面,由于精度恢复的时间窗口更长,因此与强制 SNN 相比也会损失效率。在SNN建模中,面向SNN的数据集的稀疏活动显着有利于计算成本的降低,适当较大的触发阈值可以提高准确性和计算成本。此外,我们在接下来的讨论中首次指出,尽管许多工作正在这样做,但直接移植 ANN 工作负载来评估 SNN 是不明智的,并且 SNN 覆盖更广泛任务、数据集和指标的基准测试框架正在酝酿之中。紧急需要。


5.2. Future opportunities

编码方案和学习算法。 SNN的应用精度和执行成本主要由编码方案和学习算法决定。研究速率编码之外的新编码方案是一个有吸引力的主题,可以在不影响表达能力(即保持准确性)的情况下缩小时间窗口(即实现更快的响应和更低的计算成本)。还需要强大的学习算法来进一步探索这些编码方案的潜力。此外,修改简单的MSE损失函数也是进一步提高网络分类性能的一种有前途的方法。所有这些方向都有助于以更少的计算成本训练 SNN 或将当前模型扩展到更大的规模,例如ImageNet 级任务(Deng 等人,2009)。

数据集、基准、指标和应用程序。本文强调,用面向ann的基准数据集直观地测试snn是不明智的。更有趣的是,提出一个问题:当前面向snn的数据集是否足够神经形态,即它们是否可以帮助充分探索snn的特性。在Iyer、Chua和Li(2018)中,作者声称,即使在神经形态数据集(如N-MNIST)上,SNNs也未能胜过人工神经网络,而且当前神经形态数据集中的时间信息并不重要。我们发现他们的比较有点不公平,因为他们使用的ann的网络大小比SNN基线大。但它们仍然为神经形态社区提出了一个有趣的问题:什么是以及如何构建一个好的神经形态数据集?尽管神经形态数据集存在不同类型的生成方法(Li等人,2017;Mueggler, Rebecq, Gallego, Delbruck, & Scaramuzza, 2017;Orchard等,2015;Serrano-Gotarredona & Linares-Barranco, 2015),使用类似dvs的设备将静态图像数据集扫描到脉冲版本仍然是当前的常见做法。然而,这可能不是利用SNNs的时空处理能力的最佳方法。

其次,大多数现有基准测试都是基于视觉任务,尤其是图像识别。它们不足以展示 SNN 处理时间或不确定信息的能力。我们需要为 SNN 提供更广泛的基准任务来推动研究创新。例如,除了视觉识别应用之外,处理具有内在时间属性的听觉和语言信息或寻找不需要高解精度的优化问题的快速解决方案可能非常适合 SNN。另一个例子是,大容量视频中的对象检测(Binas、Neil、Liu、Delbruck,2017;Zhu、Yuan、Chaney、Daniilidis,2018)有望从 SNN 的事件驱动范式中获益匪浅,从而实现低成本。此外,除了所提出的识别精度和内存/计算成本之外,还需要更多的评估指标。比如,如何评估设备的时间关联能力、记忆能力、容错能力、实际运行效率等都是很有趣的。

此外,识别图像只是大脑可以执行的大量任务之一。应进行广泛的努力来探索 SNN 的更多功能潜力。一个有前途的方向是从更全局的角度研究网络动态。 SNN 中的每个神经元都是一个具有区别于 ANN 的放电活动的动态模型,可以在时域中带来丰富的响应行为。例如,SNN 可以记住以亚稳态编码的多个场景,并可以在不同刺激下输出相应的响应轨迹。即使对于一种刺激,改变输入尖峰的顺序也可以产生完全不同的响应。因此,如何通过外部刺激精确控制反应轨迹对于记忆行为的探索是很有趣的。总体而言,SNN 具有巨大的行为空间,值得未来深入分析。在本文中,我们只是提供几点来展开讨论。预计会有更多调查,需要整个社区的努力。