Fast-classifying, high-accuracy spiking deep networks through weight and threshold balancing


**Title**:**[Fast-classifying, high-accuracy spiking deep networks through weight and threshold balancing](https://services.ini.uzh.ch/admin/extras/doc_get.php?id=54478)**

Author: Peter U. Diehl, Daniel Neil, Jonathan Binas, Matthew Cook, Shih-Chii Liu, and Michael Pfeiffer

Institution: Institute of Neuroinformatics, University of Zurich and ETH Zurich

本文提出一个deep ANN和SNN的转换方法,通过引入归一化方法减少整合时间,同时保证了较高精度,此外,分析了相关参数选择对转换的影响/转换过程中的性能损失来源。


1. 贡献

  • 分析了脉冲神经元的发射率和阈值这些参数的选择对ANNs转换为SNNs的影响;
  • 展示了一组优化技术来最小化转换过程中的性能损失
    • 训练期间使用修正后的零偏置的线性单元(如ReLUs)
    • 使用一种新的权重正则化方法帮助正则化发射率

==> 使ANN to SNN转换实现了低延迟、高精度,与此前的SNN相比,在没有增加训练时间的情况下提高了性能。

2. 方法

2.1 spiking network conversion

ANN转SNN的几点tips(适用于全连接层和卷积层):

  • Use ReLUs for all units of the network.

  • Fix the bias to zero throughout training, and train with backpropagation.

  • Directly map the weights from the ReLU network to a network of IF units.

  • Use weight normalization to obtain near-lossless accuracy and faster convergence.

  • 对于网络中的所有单元使用ReLUs;

  • 在训练过程中将偏置设置为0,并利用反向传播更新网络参数;

  • 直接将ReLU网络的权重映射为IF单元网络;

  • 使用权重正则化来获得接近无损的精度和更快的收敛;

一旦ANN中的ReLUs在训练后被IF神经元取代,那么在固定仿真期间的性能损失主要来源于三个因素:

  • The unit did not receive sufficient input to cross its threshold, meaning its rate is lower than it should be;

  • The unit received so much input that the ReLU model predicts more than one output spike per timestep. This can happen either because there are too many input spikes in one timestep or if some of the input weights are higher than the neuron threshold.

  • Due to the probabilistic nature of the spiking input, it can happen that a set of spikes over- or under-activate a specific feature set due to non-uniformity of the spike trains.

  • 单元没有接受充分的输入使得膜电位超过阈值,即发射率低于它原来应该达到的发射率;

  • 在一个时间步长内,ReLU模型接受了过多的输入从而预测的输出脉冲不止一个,这种情况发生,可能是因为在单个timestep内输入脉冲太多,或者一些输入权重高于神经元阈值

  • 由于脉冲输入的概率属性,由于脉冲序列的不均匀性,一系列脉冲会过激活或者欠激活

==> 需要权衡在脉冲阈值、输入权重和输入发射率。

高的输入阈值(或低的输入权重)会减小过激活和非理想脉冲序列的错误,然而同样增加了欠激活的风险,反之亦然。

只有脉冲阈值输入权重比率决定了整合数量,进而影响脉冲发射率,而非各自的值。

==> 调节网络权重,即计算权重的缩放因子(权重归一化),以调节脉冲阈值和输入权重的比率

2.2 weight normalization

目的:网络权重归一化,确保激活值足够小以防止ReLU过高估计输出激活值。

方法一:Model-based normalization

最安全、最保守的方法就是考虑所有可能的正的激活值,并且通过可能的最大激活值(同时也是下一层的输入)对权重缩放。

**优点:**如果最大的正输入仅仅对应单个脉冲,那么网络同一个神经元在一个timestep内至多发射一个脉冲。这样SNN变得具有鲁棒性,即可以接受任意高的输入发射率并且完全消除由于太多输入而导致的转换损失。

**缺点:**为了产生一个脉冲整合数据可能要花费很长时间。

方法二:Data-based normalization

  • 训练完网络后,训练集前向传播,将ReLU过后的激活值保存下来,而后权重根据最大的可能激活值缩放
  • 同时考虑最大的单个输入权重,否则可能出现在一个timestep内需要发射多次脉冲的情况

优点:只会同时发射一个脉冲,延迟低,精度高
缺点:不能很好地保证在测试集中可以保持性能

previous _ factor = applied _ factor

伪代码中,previous _ factor = scale _ factor,但这样会导致applied_factor的结果经常为1,无法起到权重缩放的效果。

两种权重缩放的伪代码如下:

[图片上传失败…(image-8cfa2f-1569814907960)]

3. 评估

数据集:MNIST

脉冲输入:先将MNIST图片的像素点都归一化到0-1,然后基于这些像素点,对于每个像素点利用泊松分布产生与像素值成正比的脉冲序列。

网络结构:

Architecture A

  • 4层全连接,784-1200-1200-10
  • 固定学习率为1,动量为0.5,batchsize为100,50个epochs,50%的dropout,权重随机初始化到 [-0.1, 0.1]
  • 训练集精度99.87%,测试集精度为98.68%

Architecture B

  • ConvNet,28x28-12c5-2s-64c5-2s-10o,输入为28x28x1,12个5x5的卷积核,2x2的平均池化
  • 固定学习率为1,没有动量,零偏置,batchsize为50,50个epochs,50%的dropout
  • 训练集精度99.19%,测试集精度为99.14%

结果对比:

  • 转换和参数选择
  • 精度
  • 收敛时间

4. 知识点补充

A. SNN的事件驱动

ANN与SNN数据传入网络的形式区别?

  • ANN “同步” :在同一时间送入整个输入向量,后逐层处理,后产生输出值
  • SNN “伪同步”:在一个时间段内,以事件流形式送入网络,整合,产生脉冲将信息传递给后续层,最终驱动输出神经元发射脉冲

SNN事件驱动的优势?

  • 输入和输出的“伪同步”可以实现
  • 时变输入可以更高效地处理
  • 在特殊硬件上的更加高效的计算可以实现。

怎么理解伪同步???

B. ReLU函数

函数表示: ReLU(x) = max(0, x)

为什么使用ReLU?

  • 单侧抑制

  • 相对宽阔的兴奋边界

  • 稀疏激活性

    • 标准的sigmoid函数输出不具备稀疏性,需要用一些惩罚因子来训练出一大堆接近0的冗余数据来,从而产生稀疏数据,例如L1、L1/L2或Student-t作惩罚因子,因此需要进行无监督的预训练;

    • ReLU是线性修正,是purelin的折线版,它的作用是如果计算出的值小于0,就让它等于0,否则保持原来的值不变,这是一种简单粗暴地强制某些数据为0的方法,然而经实践证明,训练后的网络完全具备适度的稀疏性,而且训练后的可视化效果和传统方式预训练出的效果很相似,这也说明了ReLU具备引导适度稀疏的能力,ReLu的使用,使得网络可以自行引入稀疏性,同时大大地提高了训练速度。

C. 使用ReLU的ANN与SNN的关系

  • ReLU近似于绝对不应期的IF神经元的发射率,因此ReLU的输出应该与给定时间窗口内IF神经元发射的脉冲数量成比例;
  • ReLU的分段常量导数使得权重的更新形式更为简单;
  • 针对分类任务,在输出层的所有神经元的最大值非常重要,这允许整个发射率按照一个常量因子缩放;
  • 没有偏置提供一个额外的参考值,神经元权重和阈值之间的相对比例是唯一重要的参数。

参考资料

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值