优化低延迟尖峰神经网络的潜在初始化
作者:Tong Bu,Jianhao Ding, Zhaofei Yu, Tiejun Huang
发布时间:2022.2.3
机构:北京大学人工智能研究所,北京大学计算机科学与技术系
摘要
背景:
- 训练深度snn最有效的方法是通过ANN-to-SNN转换,这种方法在深度网络结构和大规模数据集中获得了最好的性能。
问题:
- 然而,准确性和延迟之间存在权衡。为了实现与原始人工神经网络的高精度,需要较长的模拟时间将尖峰神经元的放电速率与模拟神经元的激活值相匹配,这阻碍了SNN的实际应用。
工作:
- 我们旨在以极低的延迟(少于 32 个时间步长)实现高性能转换 SNN。
- 我们首先从理论上分析 ANN-to-SNN 转换,并表明缩放阈值确实与权重归一化具有相似的作用。
- 我们通过优化初始膜电位来减少每一层的转换损失,应用了更直接的方法。此外,我们证明了膜电位的最佳初始化可以实现预期的无误差ANN-toSNN转换。
- 在 CIFAR10、CIFAR-100 和 ImageNet 数据集上评估我们的算法,并使用更少的时间步长实现了最先进的准确性。
I. 引言
SNN背景与发展,优势:事件驱动的计算、稀疏激活和无乘法特性,具有固有的对抗鲁棒性。
SNN 的使用仍然有限,因为训练高性能 SNN 仍然具有挑战性。
训练多层SNN主要有两种方法:
(1)直接训练
虽然已经提出了替代梯度方法来缓解snn阈值触发发射的不可微问题(Shrestha和Orchard 2018;Wu等人2018;Neftci, Mostafa和Zenke 2019),但当层深入时梯度变得不稳定时,它仍然局限于浅层snn(Zheng et al. 2021)。此外,基于梯度的优化方法比 ANN 训练需要更多的 GPU 计算。
(2)ANNto-SNN转换。
ANN-to-SNN 转换需要与 ANN 训练几乎相同的 GPU 计算时间,并且在深度网络结构和大规模数据集中产生了最佳性能。尽管有这些优势,但准确性和延迟之间存在权衡。
图1·CIFAR-10 数据集上具有/不具有膜电位初始化的 VGG-16 转换 SNN 的传播延迟的比较。
虽然膜电位的零初始化可以使模拟神经元的激活与尖峰神经元的动力学联系起来更容易,但它也不可避免地存在长延迟问题。如图 1 所示,我们发现如果没有适当的初始化,转换后的 SNN 中的神经元需要很长时间来触发第一个尖峰,因此网络在前几个时间步中是“不活跃的”。在此基础上,从理论上分析了ANN-to-SNN转换,并证明了当初始膜电位是放电阈值的一半时,平方转换误差的期望达到最小值。同时,转换误差的期望为零。
主要贡献:
- 从理论上分析了 ANN-to-SNN 转换,并表明缩放阈值确实起到了与权重归一化相似的作用
- 证明了膜电位的初始化(对于所有神经元通常选择为零)可以被优化以实现预期的无误差ANN到SNN的转换。
- 在CIFAR-10、CIFAR100和ImageNet数据集上证明了所提出的方法在深度网络架构中的有效性。
- 我们表明,我们的方法可以应用于其他ANNSNN转换方法,并在时间步长较小时显著提高性能。
II.相关工作
基于梯度的优化
基于梯度的优化方法通过反向传播直接计算梯度,主要有两类:
(1)基于激活的方法
由于激活相对于膜电位的梯度是不可微的,因此经常使用代理梯度。然而,缺乏对代理梯度的严格理论分析,当snn层变得更深(>50层)时,梯度变得不稳定,网络会出现退化问题。
(2)基于时间的方法
基于时间的方法利用一些近似方法来估计发射尖峰相对于尖峰定时膜电位的时间梯度,这可以显着提高 BP 训练的运行时效率。然而,它们通常仅限于浅层网络(<10层)。
ANN-to-SNN转化
这种方法使用ReLU激活训练ANN,然后通过用峰值神经元替换激活将ANN转换为SNN。
已经提出了进一步的方法来分析转换损失并提高转换 SNN 的整体性能,例如权重归一化和阈值平衡(Diehl 等人 2015;Rueckauer 等人 2016;Sengupta 等人 2019)。在之前的工作中,对 IF 神经元应用了软重置机制(Rueckauer 等人,2016;Han、Srinivasan 和 Roy 2020),以避免神经元重置时信息丢失。这些工作可以通过较长的推理时间步骤实现无损失的转换(Kim et al. 2020),但在相对较小的时间步长下仍然存在严重的精度损失。
在最近的工作中,大多数研究侧重于使用转换后的 SNN 加速推理。Stockl 和 Maass (2021) 提出了新的尖峰神经元,以更好地将 ANN 与 SNN 联系起来。Han 和 Roy (2020) 使用基于时间的编码方案来加速推理。RMP (Han, Srinivasan, and Roy 2020)、RNL (Ding et al. 2021)和TCL (Ho and Chang 2020)试图通过动态调整阈值来缓解准确性和延迟之间的权衡。Ding等人(2021)提出了一种最优拟合曲线来量化ann激活和snn放电速率之间的拟合,并证明了通过优化拟合曲线的上界可以减少推理时间。Hwang等人(2021)提出了一种分层搜索算法,并进行了充分的实验来探索膜电位的最佳初始值。Deng等人(2020)和Li等人(2021)提出了一种新的方法,在每一层中移动权重、偏差和膜电位,使转换后的snn具有相对较低的延迟。
与上述方法不同,我们直接优化了初始膜电位,以提高低推理时间的性能。
III.方法
ANNs and SNNs
1.ANN
具体地说,对于ANN,层 l l l(l=1,2,…, l l l)中模拟神经元的ReLU激活函数可以描述为
a l = max ( W l a l − 1 + b l , 0 ) ( 1 ) \boldsymbol{a}^l=\max(W^l\boldsymbol{a}^{l-1}+\boldsymbol{b}^l,0)\quad\quad\quad\quad\quad\quad(1) al=max(Wlal−1+bl,0)(1)
其中,向量 a l a^l al表示 l l l层中所有神经元的输出激活值, W l W^l Wl是 l − 1 l−1 l−1层中神经元和 l l l层中神经元之间的权重矩阵, b l b^l bl是 l l l层中的神经元的偏差。
2.SNN
对SNN来说,我们考虑神经元模型为IF模型(Integrate-and-Fire model),如果层内的峰值神经元在t时刻接收到输入 x l − 1 ( t ) x^{l−1}(t) xl−1(t),则时间膜电位 v t e m p l ( t ) v^l_{temp}(t) vtempl(t)表示为其在 t − 1 t−1 t−1时刻的膜电位 v l ( t − 1 ) v^l(t−1) vl(t−1)的相加和加权输入之和:
v t e m p l ( t ) = v l ( t − 1 ) + W l x l − 1 ( t ) + b l ( 2 ) \boldsymbol{v}_{temp}^l(t)=\boldsymbol{v}^l(t-1)+W^l\boldsymbol{x}^{l-1}(t)+\boldsymbol{b}^l\quad\quad(2) vtempl(t)=vl(t−1)+Wlxl−1(t)+bl(2)
式中, x l − 1 ( t ) x^{l−1}(t) xl−1(t)表示第 l l l层突触前神经元在时刻 t − 1 t-1 t−1的未加权突触后电位, W l W ^l Wl为突触权值, b l b^l bl为第 l l l层尖峰神经元的偏置电位。当 v t e m p l ( t ) v^l_{temp}(t) vtempl(t)中的任何元素 v t e m p , i l ( t ) v^l_ {temp,i}(t) vtemp,il(t)超过第 l l l层的放电阈值 V t h l V^l_ {th} Vthl时,该神经元将引发一个未加权突触后电位 V t h l V^l_ {th} Vthl的尖峰;
s i l ( t ) = { 1 , i f v t e m p , i l ( t ) > V t h l 0 , o t h e r w i s e , ( 3 ) x l ( t ) = s l ( t ) V t h l . ( 4 ) \begin{aligned}&\boldsymbol{s}_i^l\left(t\right)=\begin{cases}1,&\mathrm{if}\quad\boldsymbol{v}_{temp,i}^l(t)>V_{th}^l\\0,&\mathrm{otherwise}&\end{cases}\quad,\quad(3)\\&\boldsymbol{x}^l(t)=\boldsymbol{s}^l\left(t\right)V_{th}^l.\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad(4)\end{aligned} sil(t)={
1,0,ifvtemp,il(t)>Vthlotherwise,(3)xl(t)=sl(t)Vthl.(4)
这里 s i l ( t ) s^l_ i(t) sil(t) 是 s l ( t ) s^l(t) sl(t)的第 i i i 个元素,它表示时刻 t t t 的输出尖峰,如果有尖峰则等于1,否则等于0。在触发一个尖峰后,在下一个时间步 t t t处的膜电位 v l ( t ) v^l(t) vl(t) 将回到重置值。两种方法通常用于复位电势 : “复位到零”和“减法复位”。为避免更大的损失,我们采用“减法重置”机制,具体来说,在放电后,膜电位降低的量等于放电阈值。因此膜电位的更新是根据公式(5):
v l ( t ) = v l ( t − 1 ) + W l x l − 1 ( t ) + b l − s l ( t ) V t h l . (5) \boldsymbol{v}^l(t)=\boldsymbol{v}^l(t-1)+W^l\boldsymbol{x}^{l-1}(t)+\boldsymbol{b}^l-\boldsymbol{s}^l\left(t\right)V_{th}^l.\quad\text{(5)} vl(t)=vl(t−1)+Wlxl−1(t)+bl−sl(t)Vth