Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

刘方鑫,赵文博,蒋力作者

降低百倍时间步,精度媲美传统神经网络:上交等机构提出ANN-SNN 转换框架SpikeConverter

当前精度最高的脉冲神经网络(SNN)往往是从ANN转化而来。SNN的优势主要体现在用加法取代乘法,用bit数据取代整数/浮点数的高能效计算方式。然而,在当前的同步计算机制下,SNN完成一次前向推理通常需要几百至几千时间步长的模拟,导致了极大的额外延迟和能耗,与SNN的设计初衷相悖。如何能在保持高精度的前提下充分发挥SNN的能效和延迟优势成为一大挑战。 文章通过系统建模分析了当前SNN中神经元的执行机制,设计了全新的ANN转SNN框架,极大减少模拟时间步长。包括脉冲序列的生成方法、神经元函数设计、脉冲信号处理过程。在当前同步计算机制下,最大程度地利用了层间并行,仅需要8个时间步长即可完成一次SNN的前向推理,实现了数量级上的性能和能效提升。


论文链接:https://www.aaai.org/AAAI22Papers/AAAI-364.LiuF.pdf

脉冲神经网络(Spiking Neural Network, SNN)被誉为第三代的神经网络,以其丰富的时空领域的神经动力学特性、多样的编码机制、事件驱动的优势引起了学者的关注。由于生物合理性与任务需求间存在不同程度的取舍,对网络使用的神经元模型、编码方式等各有差异,这造成了 SNN 的多样化。与向量乘法为基础的传统人工神经网络(ANN)不同,SNN 通过模拟大脑的功能结构,以神经元为计算、存储单元,通过累积在膜电压上由相邻神经元发出的脉冲信号,并在超过阈值电位时发射脉冲的方式传递信息。由于其计算可以完全由加法完成,需要的计算量和功耗大幅减少[1]。此外,由于 SNN 中神经元的执行、学习机制,使得 SNN 与一些新兴器件天然结合在一起[2]。

脉冲神经网络的目标是在基于异步电路的实现,每个神经元可以异步接收和发射脉冲信号。然而这种大规模的异步电路目前还无法实现,脉冲神经网络中的所有脉冲信号需要对齐至时钟信号。这样做会带来两个问题:其一,为了精确表达脉冲发射的时间,需要将一次推理分割成大量的时间步(time step),使得脉冲序列变的十分冗长;其二,脉冲序列中的脉冲数量没有变化,使得脉冲序列出现不规则的稀疏脉冲。现有的同步脉冲神经网络芯片,例如 Loihi,在一定程度上利用了稀疏性。但是,时间步增加导致的推理时间延长问题依然存在。


现有的脉冲神经网络的训练方法分为两种方法:直接训练和通过传统神经网络转换得来。

直接训练的 SNN:可以进一步划分为有监督训练和无监督训练。有监督训练的 SNN 是基于脉冲的反向传播算法,然而神经元函数不可微,导致传统的反向传播算法没办法直接应用在 SNN 上。无监督训练的 SNN 是利用突触可塑性规则的仿生学习算法。例如:脉冲时序依赖的突触可塑性(Spike-Timing Dependent Plasticity, STDP)是最具代表性的无监督 SNN,根据神经元激发的先后顺序,调整神经元之间连接的强弱。

基于转换的 SNN:为了在已发展的深度学习成果上进一步利用脉冲神经网络低能耗的特点,从 ANN 的视角出发,将连续的激活函数值通过 SNN 中频率编码下的平均脉冲发放率进行替代,并且使用神经元函数替换 ANN 中的 ReLU 函数,再通过特定手段将其转换为 SNN。从本质上说,基于转换的 SNN 其训练仍然依赖于 ANN 中的反向传播算法,因此它避免了对 SNN 进行直接训练的困难。就性能表现而言,基于转换的 SNN 保持着与 ANN 发展相匹配的进程。

然而,现有的 SNN 在实现超大规模的网络结构上,仍然面临梯度消失、训练资源开销大甚至算法收敛性的问题,一般只能应用在浅层的 SNN 中,并且精度还距离 ANN 有一定的差距。

而现有的转换方法应用在更深的网络或更复杂的数据集时,需要大量的时间步长表示脉冲序列(例如:在 ImageNet 中,VGG 转换而来的 SNN 需要的时间步数量高达 2048[3,4])。相比于进行一次 ANN 的推理只需要执行一次前向传递过程;SNN 在每个时间步都需要执行一次前向传递。因此,时间步的数量过多会引入极大的推理延迟,导致了转换后的 SNN 网络难以胜任对实时性有要求的应用。

方法介绍

本文提出一种基于高效且准确的 ANN-SNN 转换框架,不仅可以应用到传统神经网络的最新发展,而且大幅度降低了时间步的数量。只需要 8-16 个时间步就可以达到和传统神经网络几乎一致的精度,节省了百倍的时间延迟。

转换中的一致性关系

首先,我们在神经元发射脉冲之后采用了软重置的策略,在当前的膜电位中减去阈值电位的值,从而保留了超出阈值的部分。在之前的大部分文章中,采用的是硬重置策略,当膜电压超过阈值时发射脉冲并将膜电压直接重置为 0。这样做的好处是尽可能多的保留了膜电压中包含的信息,并且能够在输入的微小扰动下保持相对一致的输出结果。软重置方法可以用公式表达为


其中 V[t]是 t 时刻的膜电压,k 是每个时间步之间的膜电压衰减系数。Xi 是第 i 个相邻神经元的脉冲序列,0 表示 t 时没有脉冲传输。Y 是当前神经元的输出脉冲序列。将公式 (1) 在 t=1 到 T 累加,我们可以得到


在理想情况下,最后神经元内没有膜电压存留,即 V[T]=0。此时,公式 (2) 可以简化为


不难发现,公式 (3) 与传统神经网络的 MAC 计算模式十分相似,而事实上之前最为常用的基于 ANN 转换的 SNN,将 ANN 的激活值作为 SNN 中的神经元发射脉冲的频率,正是公式 (3) 在 k=1 的特例。

然而,公式 (3) 在很多情况下并不成立。最明显的一种情况,是膜电压在最后并不一定会等于 0 或一个相对较小的数。事实上,由于神经元之间的权重有负值,导致很多时候膜电压最终是一个负数。SNN 的神经元模型的机制决定了其只会对正的电压做出反应而累积的负膜电位则会被保留,从而导致公式 (3) 的等号并不成立,信息无法准确表达,使得脉冲神经网络的精度低于传统神经网络。例如当 k=1 以及阈值电位 = 1 的情况下,如果输入总膜电位分别为 1,1,-1,-1,则会在前两个时间步产生脉冲信号;而后两个 - 1 则被累积在膜电位中无法消耗。此时公式左边 = 0 而右边 = 2,公式并不成立。

神经元计算中的时域分离

针对这一点,文章采用了时域分离的方法,将膜电压的累积过程和膜电压释放脉冲的过程在时域上分离开,避免膜电压累积信息丢失的情况出现。为了实现时域分离的效果,即发射脉冲在累积电压之后,应使得较晚时间的膜电压在没有额外输入的情况下要大于之前的膜电压。这在之前的 leaky integrate-and-fire 模型中是无法做到的。文章提出了与传统 LIF 相反的模型,iLIF,在每个时间步结束后增幅而不是减少模电压,即在公式中的模电压衰减系数 k 现在是一个大于 1 的数,被称作为电压增幅系数。

然而,时域分离的方法使得完成一个神经元计算的时间翻倍,文章通过流水线的方法,在前一层的脉冲输出阶段直接将信号传输至下一层作为输入信号。在消除了时域分离带来的额外运行时间的同时,也减少了需要临时存储的内容。


以上示意图展示了图片推理的执行示意图。核心是利用层间并行,实现不同图片的两个执行阶段重叠,降低推理时延。

参数选择方面,主要是电压增幅系数的选择。文章考虑了不同的时间步数量和增幅系数的情况下,平均的转化误差。实验表明在不同的时间步选择下,k=2 都是最优选择。


以上示意图展示了在不同参数选择下,转化误差的变化情况。K=2 时,在各个时间步下,转换误差最小,可以膜电压累积表示的信息最准确。

实验结果

文章使用 CIFAR-10/100,以及 ImageNet 数据集进行实验。实验结果表明文章提出的方法在仅需要 16 个时间步的情况下,可以达到和传统神经网络几乎一致的精度。极大节省空间存储和计算代价的情况下取得了最佳的性能,具体实验结果参见论文。部分结果如下。


未来方向

脉冲神经网络还有较大的挖掘空间,还有许多领域 SNN 未能成功应用,可以在视频识别、机器人控制等方面继续研究。

蒋力老师团队主要从事计算机体系架构与芯片设计自动化(EDA)研究。作者刘方鑫主要研究方向包括存内计算,神经模态计算,以及神经网络软硬件协同设计。作为第一作者发表在TCAD, DAC, ICCAD, ICCD, ICCV, AAAI, SIGIR等顶级期刊,会议上发表论文10余篇。


[1] Roy, K.; Jaiswal, A.; and Panda, P. 2019. Towards spike based machine intelligence with neuromorphic computing. Nature, 575(7784): 607–617.
[2] Woźniak, Stanisław, et al. "Deep learning incorporating biologically inspired neural dynamics and in-memory computing." Nature Machine Intelligence 2.6 (2020): 325-336.
[3] Han, Bing, Gopalakrishnan Srinivasan, and Kaushik Roy. "Rmp-snn: Residual membrane potential neuron for enabling deeper high-accuracy and low-latency spiking neural network." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020.
[4] Han, Bing, and Kaushik Roy. "Deep spiking neural network: Energy efficiency through time based coding." European Conference on Computer Vision. Springer, Cham, 2020.
理论上海交通大学AAAI脉冲神经网络
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

激活函数技术

在 计算网络中, 一个节点的激活函数定义了该节点在给定的输入或输入的集合下的输出。标准的计算机芯片电路可以看作是根据输入得到"开"(1)或"关"(0)输出的数字网络激活函数。这与神经网络中的线性感知机的行为类似。 一种函数(例如 ReLU 或 S 型函数),用于对上一层的所有输入求加权和,然后生成一个输出值(通常为非线性值),并将其传递给下一层。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

VGG技术

2014年,牛津大学提出了另一种深度卷积网络VGG-Net,它相比于AlexNet有更小的卷积核和更深的层级。AlexNet前面几层用了11×11和5×5的卷积核以在图像上获取更大的感受野,而VGG采用更小的卷积核与更深的网络提升参数效率。VGG-Net 的泛化性能较好,常用于图像特征的抽取目标检测候选框生成等。VGG最大的问题就在于参数数量,VGG-19基本上是参数量最多的卷积网络架构。VGG-Net的参数主要出现在后面两个全连接层,每一层都有4096个神经元,可想而至这之间的参数会有多么庞大。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

脉冲神经网络技术

第三代神经网络,脉冲神经网络(Spiking Neural Network,SNN),旨在弥合神经科学和机器学习之间的差距,使用最拟合生物神经元机制的模型来进行计算。脉冲神经网络与目前流行的神经网络和机器学习方法有着根本上的不同。SNN 使用脉冲——这是一种发生在时间点上的离散事件——而非常见的连续值。每个峰值由代表生物过程的微分方程表示出来,其中最重要的是神经元的膜电位。本质上,一旦神经元达到了某一电位,脉冲就会出现,随后达到电位的神经元会被重置。对此,最常见的模型是 Integrate-And-Fire(LIF)模型。此外,SNN 通常是稀疏连接的,并会利用特殊的网络拓扑。

收敛技术

在数学,计算机科学和逻辑学中,收敛指的是不同的变换序列在有限的时间内达到一个结论(变换终止),并且得出的结论是独立于达到它的路径(他们是融合的)。 通俗来说,收敛通常是指在训练期间达到的一种状态,即经过一定次数的迭代之后,训练损失和验证损失在每次迭代中的变化都非常小或根本没有变化。也就是说,如果采用当前数据进行额外的训练将无法改进模型,模型即达到收敛状态。在深度学习中,损失值有时会在最终下降之前的多次迭代中保持不变或几乎保持不变,暂时形成收敛的假象。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

反向传播算法技术

反向传播(英语:Backpropagation,缩写为BP)是“误差反向传播”的简称,是一种与最优化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见方法。该方法计算对网络中所有权重计算损失函数的梯度。这个梯度会反馈给最优化方法,用来更新权值以最小化损失函数。 在神经网络上执行梯度下降法的主要算法。该算法会先按前向传播方式计算(并缓存)每个节点的输出值,然后再按反向传播遍历图的方式计算损失函数值相对于每个参数的偏导数。

神经元技术

(人工)神经元是一个类比于生物神经元的数学计算模型,是神经网络的基本组成单元。 对于生物神经网络,每个神经元与其他神经元相连,当它“兴奋”时会向相连的神经元发送化学物质,从而改变这些神经元的电位;神经元的“兴奋”由其电位决定,当它的电位超过一个“阈值”(threshold)便会被激活,亦即“兴奋”。 目前最常见的神经元模型是基于1943年 Warren McCulloch 和 Walter Pitts提出的“M-P 神经元模型”。 在这个模型中,神经元通过带权重的连接接处理来自n个其他神经元的输入信号,其总输入值将与神经元的阈值进行比较,最后通过“激活函数”(activation function)产生神经元的输出。

推荐文章
暂无评论
暂无评论~