Advertisement

Conversion of Continuous-Valued Deep Networks to Efficient Event-Driven Networks for Image Classific

阅读量:

从深层网络到有效的事件驱动网络,对于图片分类

这篇文章展现出脉冲等价于这些操作,因此循序任何CNN结构的转化为SNN.
snn可以在分类错误率和可用操作数量之间进行权衡,而深度连续值神经网络则需要固定数量的操作才能实现分类错误率.snn可以在2倍的减少操作行为,相对于原始的CNN.
这里面也提到了,置零和减去固定阈值的两种重置模式

2.1

因此一个神经元i在第l层,将会接受到一个脉冲序列,以更低的脉冲速率,降低的幅度是根据前期层神经元的误差\Delta V决定的。这个误差累积起来,在高层,这也解释了为什么它需要更长的时间去实现高相关性,和为什么SNN放电速率在高层恶化。

2.2 这节我们来介绍一种新的方法提高deep SNNs的分类正确率

这些方式既允许更大范围ANN的转化,也能降低近似误差。

2.2.1转换偏置

偏置在ANN中是标准存在的,但是一般在之前的方法中,我们都是被去掉了,当转换为SNN时候。在脉冲神经网络,偏置可以简单的使用输入电流来代替偏置。当然,也可以提出带有逮捕脉冲输入常规速率比例,即使一个人可能必须转换这个脉冲 的极性到计数负偏置。2.1节的理论能够应用在带有偏置的神经元上,而且2.2.2展示了参数正则化如何被用在偏置上的。

2.2.2参数正则化

一个主要的近似误差是由于在时间步的模拟中,神经元被限制了放电速率,范围是[0,r_{max}],然而典型的ANN是没有这个限制的。权重正则化就是被Diehl et al.(2015) 介绍,作为一个手段去避免近似误差,由于太低或者太高的放电率。这项工作展示重要性,关于提高SNN的转换性能,通过使用数据基础的权重正则化机制。我们将这种方法扩展到有偏置的神经元这种情况上,而且建议一个新的方法使得正则化过程更加有鲁棒性。

2.2.2.1 带偏置的正则化

这个基于数据的权重正则化机制是基于ReLU单元的线性性质。它能够简单的被扩展到偏置,通过线性扩张所有的权重和偏置,这样ANN激活a 是比…更小。为了阻止信息编码在一个层内,一个层的参数需要被联合缩放。设RuLU的最大值激活在l层的值为\lambda^l=max[a^l],权重W^l和偏置b^l被正则化

2.2.2.2 鲁棒性正则化

尽管权重正则化避免了放电速率,因此增加延迟直到信息到达最高层。我们参考算法,之前段落描述的,就是所谓“最大正则化”,因为正则化因子\lambda^l是被设置到最大的ANN激活,在一个层中,这个层里,激活被使用一个很大的训练数据子集,这是一个非常保守的途径。这确保了SN放电率将最可能不超过最大放电率。这个的缺点是,非常容易受到奇异值的影响,导致非常高的点火速率。而对于主要的其他样本,则保持相当低的最大速率。

这些分布解释了为什么归一化通过最大值能够导致潜在的更差的分类性能,对于SNN.

我们提出了一个更加鲁棒性的替代方案:我们设置\lambda^l为第l^4层的第p百分位。这个选择将会抱起极端的隔离,而且增加SNN的放电率,对于更大比例的样本。所以这里牵涉一个权衡和折中,关于过饱和与放电率不足。在接下来,我们引用百分位p作为正则化规模。而且注意到“最大正则化”手段被认为是p=100.
对于p的典型值在[99,99.999]之间表现良好。一般情况下,一小部分的神经元饱和将会导致更低的网络恶化,相对于使用太低的脉冲速率。

2.3转换批正则化层

批正则化。
一个输入x被转换为批正则化:BN[x]=\gamma/\sigma(x-\mu)+\beta,\mu为均值,\sigma为方差,而且两个学习参数\beta\gamma

2.2.4 模拟输入到第一隐藏层

因为事件基础的基准数据集比较少,传统的基于帧。这里,我们将模拟输入激活解释为恒定电流。
然后脉冲输出从第一个隐藏层开始。根据经验,我们发现这在神经网络单位的低激活状态下特别有效,在这种状态下,脉冲神经元的低采样通常对成功转换构成挑战。先前的ANN-to-SNN转换方法并没有转换softmax层,只是简单地预测了对应于在刺激呈现时激增最多的神经元的输出类别。然而,当最后一层的所有神经元都接收到负输入时,这种方法就失败了,因此不会出现尖峰。
我们更喜欢第二种变体,因为它不依赖于额外的超参数。一位审稿人提出了第三种变体:由于softmax应用于网络的最后一层,人们可以简单地从softmax计算的膜电位推断分类输出,而不需要另一种脉冲产生机制。

2.2.6脉冲的最大池化层

最成功的ANN使用最大池化去时空下采样,特征图。然而,这没有被用在SNN上,因为计算脉冲神经元的最大值是非平凡的。取而代之的,在Cao2015年的论文中,使用简单的平均池化,导致更弱的ANN被训练,在转换之前。侧抑制,作为建议,没有很好的完成这个工作。因为它只选择胜利者,但是没有真正最大化放电率。另外一个建议是用时域的赢者通吃,基于首发脉冲时间编码,也就是说第一个神经元放电被认为最大的放点那个。

这里,我们提出了一个简单的机制来脉冲最大池化:
输出单元包含门函数,只让从最大放电神经元的脉冲通过,然而护士其他的神经元。
门函数是被控制通过计算突触前放电率。举例来说,一个在线或者指数的权重平均速率。实际中,我饿么你发现几种方法都工作的很好。但是只展示了结果:使用有限脉冲反应滤波器去控制门函数、。

2.3操作计数

为了获取在分类中网络操作的数量,我们定义网络的输入为f_in为输入的连接去神经元,而且相似的,定义f_out作为投射到下一层神经元的数量。下面给出一个例子。在一个卷积层,输入是被给一个2维的卷积核诚意通道数量,在之前的那层。在一个全连接层,输入数量简单的等于神经元的数量在前一层。输出层的神经元数量(在第l层)是被跟在后面的l+1层,通常依赖于第l+1层的步长。如果步长为1,输出数量是简单被给通过2维卷积核
对于ANN来说,一帧分类的浮点运算数为:
在这里插入图片描述
n_l是第l层神经元的数量。第二个因素来自于这样一个事实:每一个输入操作包含一个乘加运算。通过+1我们计算操作需要加上这个偏置,池化操作没有被考虑进去。

在SNN的情况下,只有神经元状态更新时,才需要加法运算。我们接受Merolla et al. (2014)的符号。而且报告突触操作。神经元的更新只会被前一层神经元的脉冲所造成。在SNN中,神经元计算的总数在模拟时间T是
在这里插入图片描述
这里,s_l(t)表示l层在时间t的脉冲发射数量。

在ANN中,操作的数量需要被分类一个图片,是一个常量,它包含了一个完整的正向传递的成本。
在SNN中,图片被展示给网络作为一个确定的模拟过程,而且网络输出一个分类猜测在每一个时间步。
随着操作数量的增加,我们能够展示SNN的错误分类率是如何降低的。

一个我们都知道的试试就是,加法所需要的要比乘加运算要简单的多,计算代价要小的多。例如,我们在28nm制程的模拟表明,执行32位浮点加法的成本比MAC操作低14倍,并且相应的芯片面积减少了21倍。它还表明,存储传输比计算的能量成本要高两个数量级。
在神经网络中,从内存中读取权重核和神经元状态,并将状态写回到内存中只在向前传递一个样本时执行一次。

在SpiNNaker或TrueNorth等专用的spiking硬件平台上直接实现snn的工作将留给未来的工作,这对于估算在定制的ANN硬件加速器上实现原始ANN的实际能源成本是必要的

3结果

这里有两个方式提高SNN的分类错误率,铜鼓转换,(1)转换前训练一个更好的ANN
(2)提高转换能力通过排除近似误差。我们提出了好几种技术对于这两个途径,在第二节。在3.1和3.2我们评估了他们的效果使用CIFAR-10分类数据集。在3.3我们扩展了SNN转换手段,在3.4我们展示SNN特征一个正确率和操作的权衡,这个允许调谐网络的性能,通过一个计算预算。,整个过程使用的Keras

3.1改进ANN结构的贡献

ANN能够达到的12.14%的分类错误率,当把偏置改到0,错误率增加到12.27%。使用平均池化代替最大池化进一步降低了性能到12.31%。不用softmax,只用ReLU在输出层,导致了一个大的丢弃,到30.6%。因此,通过我们的新方法,我们可以用比以前更好的ann开始转换

3.2 改进SNN转换手段的贡献

默认的配置:
没有正则化,
泊松脉冲序列的输入,重置到0的规则

默认的规则,错误率达到了83%,使用权重正则化,会降低到40.8%,使用“减去阈值”的重置方式,将会使得准确率再提高20%、选择在第一个隐藏层,使用模拟输入代替泊松脉冲序列会得到16.4%的错误率。最后使用99.9%分位的激活对于鲁棒性权重正则化,会导致12.18%的错误率。
在这里插入图片描述
转换为SNN几乎是无损的。这个结果在MNIST上也有足够的竞争力。

SNN有所谓的准确率-延迟的权衡,这意味着网络模拟时间越长,错误率越低。
然而,我们之前的最大正则化手段收敛非常慢,对于ANN错误率,因为权重规模已经过度降低了,而且脉冲活动已经很低了。
通过一个鲁棒性更强的正则化,也就是使用99.9百分位的活动分布,权重更大了,而且收敛快多了。根据经验,从99%分位到99.9%的正则化因子都是最好的结果,这允许网络快速收敛到ANN相似的错误率。
这个正确率和时间的权衡十分明显在经典的leNet网络中。当ANN实现1.04%的误差是,

3.3.1传输动态和电压钳

虽然第2节中列出的转换管道可以提供转换后的神经网络,在MNIST和CIFAR-10数据集上产生与原始神经网络相同的错误率,但转换后的Inception-V3的错误率最初与神经网络的错误率相差很远。

一个主要原因是神经元在模拟开始时会经历一个暂态阶段,因为少数神经元有较大的偏置或输入权重。
在最初的几个时间步骤中,每个神经元的膜电位需要积累输入脉冲才能产生输出。第一层神经元的放电速率需要几个时间步才能收敛到一个稳定的速率,这种收敛时间在较高的层中增加。
高频输入的神经元收敛时间减少了,而整合低频脉冲的神经元收敛时间增加了。

为了克服神经元动力学中瞬态的负面影响,
我们发现最成功的方法是在第一个前N个时间步内将膜电位控制在零,其中N随层深l线性增加:
参数斜率d代表时间延迟,在连续的层之间抬起夹钳。。
延迟d越长,在下一层开始对其输出进行积累之前,前一层就有越多的时间收敛到稳态。
低精度的目标激活可以使用少量的脉冲时间更快更准确的近似。例如,表示{1,2,3,……10}脉冲神经元可以完美的表示每一个值在最多10个时间步中。
为了近似使用16位的浮点数,神经元必须在2^{16}=65536时间步中表述。

4讨论

这个工作展现了两个发展。
第一个就是一个新的理论,描述SNN放电率的近似对于他的等价ANN
第二种是将几乎任意连续值的cnn转换成脉冲等效的技术.

更好的错误分类到目前为止是Esser在2016年发表的论文,达到错误率12.5%被报道对于一个非常大的网络,使用8片TureNorth,使用三元权重和乘以1*1
为了提高性能,我们提供使用一个简单的IF神经元模型。
通过使用二元网络(8层CNN使用二元权重和激活在CIFAR-10上测试),我们证明,低精度模型能够很好的适合转换为脉冲网络。然而,原始网络要求一个总数在1.23G的浮点运算,对于一帧图像,当误差率为11.57%时。SNN可在不同次数的操作下查询分类结果。例如,在15.13%的错误率的情况下,使用的是0.46次浮点运算。
当一个增加的操作是被用来分类样本,最终的错误率在脉冲网络中将会迅速下降。
这些节省没有成规模的增加到非常大的网络就行VGG-16和Inception-V3
一个原因就是每个增加的层在SNN,介绍另一个阶段,这个阶段高精度激活需要被近似通过分立的脉冲。

Mostafa et al. (2017)显示的是一个单脉冲去训练网络是区别MNIST

全部评论 (0)

还没有任何评论哟~