这篇文章是2019年发在frontiers in Neuroscience的《Going Deeper in Spiking Neural Networks:VGG and Residual Architectures》,作者来自于普渡大学的Kaushik Roy组(负责Nanoelectronics Research Laboratory),第一作者是Abhronil Sengupta(18年毕业,现在在宾州州立做助理教授),还有和facebook reality labs的人员参与。
文章提出了一种将更深层的ANN转化成SNN的算法,可以实现VGG和ResNet的转化,在CIFAR-10和ImageNet上测试。
方法
SNN模型
- 输入使用泊松随机产生500-1000个timesteps
- 使用了激活后降低到0的neuron模型
网络限制
- 不用bias
- BN层换成dropout来做正则化
- Pooling层使用avgpool
VGG转化
- 激活阈值Vthr设置成最大ReLU的激活值
- 被叫做”weight-normalization”或者”threshold-balancing”
- weight normalization是将weight scale到和最大neural activation,Vthr设置为1
- threshold-balancing是保持weight大小,Vthr设置到最大激活
- 被叫做”weight-normalization”或者”threshold-balancing”
- Spike-Norm
- 由于使用了降低到0的neuron模型,输入信息会有损失
- 一层一层单独来转,保证最小化neuron的temporal delay,同时保证阈值不会太小
- temporal delay是由于evidence integration导致的输入spike到输出spike的时间差
- evidence integration(证据整合),就是乘累加计算
- 每层的weight-normalization/threshold-balancing根据spike的输入来确定
- Vthr=max(Vthr,max(Wx))
ResNet转化
- 在加法之后加入ReLU
- 因为ReLU才会Spike,因此ResBlock的第二层Conv和输入共同evidence integration,整合后转化成IF
- 提供了一个时序balancing的作用
- 输入layers使用相同threshold
- 因为网络第一层conv出来的threshold比较高,但是ResBlock的conv出来的threshold比较低,junction layer的spike会被identity mapping的输入主导,需要balance
- 两支的threshold都设为1
- 7x7转为3x3的卷积
- threshold-balancing更好
实验
- VGG CIFAR-10 ANN 91.7%,SNN 91.5%
- VGG ImageNet ANN 70.5% SNN 70%
- ResNet-20 CIFAR-10 ANN 89.1% SNN 87.5%
- ResNet-34 ImageNet ANN 70.7% SNN 65.5%
总结
论文将ANN全转化到SNN上,通过对VGG和ResNet的实践,发现不同网络需要特定处理。并且提供了一层一层转化的思路,直接利用Spike的信息,值得借鉴。