论文笔记 Optimal Conversion of Convolutional Artificial Neural Networks to Spiking Neural Networks

这篇是ICLR2021在审匿名论文《Optimal Conversion of Convolutional Artificial Neural Networks to Spiking Neural Networks》。

文章针对ANN到SNN的转化进行了误差分析,结论是网络的整体误差来源于每层的误差累积,提出减少每一层的误差的方法:1使用Threshold来抑制过多的激活值,从而能用更少的timesteps(simulation time);2使用Shift的方法补偿激活函数的误差。

方法

对ANN到SNN的建模

  • ANN d=h(Wa)
  • SNN $a’_{l+1}=h’(Wa’)$
    • 其中a’是post synaptic potential(PSP)突触后电位,化学突触的突触后末端的膜电位的变化,也就是前一层由于spike的减少的电位
  • $a’_{l+1}=Wa’-v(T)/T$
    • v(T)是T时刻的膜电位
  • $a’{l+1}=h’(Wa’)=V{th}/T*clip(floor(TWa/V_{th}),0,T)$
    • 输出脉冲等于输入脉冲造成的膜电位影响能被当前层PSP,也就是V_{th}的多少倍

分解转化误差到每层

  • 通过理论分析将转化误差问题化归为最小化每层的激活值误差问题

减少误差的方法

  • ANN上使用Threshold(类似ReLU6)来抑制过多的激活值
    • 取1或者2
  • SNN上使用Shift来减少激活函数带来的误差
    • h’(z)和h(z)存在系统误差,需要将数值shift一下
    • $E_z[h’(z-\delta)-h(z)]^2$
    • $\delta=V_{th}/2T$
  • 最后总误差控制到$\Delta L\approx LV_{th}^2/4T$

转换流程

  • 初始化V_th=0
  • 采样一系列samples
    • $V_{th}^l=max(V_{th}^l,max(a_l))$
  • weight:=ANN.weight
  • bias:=ANN.bias+V_{th}/2T

实验

  • ANN上使用Threshold对结果影响不大,甚至还有提升
  • timesteps可以讲到50以下基本不掉精度
    • Shift单独用可以在80以下不掉精度
    • Threshold单独用可以在60以下不掉精度

总结

这篇paper从理论的角度来探讨了ANN转换SNN的技术,思路非常棒,使用PSP也给我提供了一个新的视角。
但是这个既没有Quantization也没处理Pooling和BN层,所以仅从Conv上可以参考。

#
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×