摘要

我们提出一种神经元正则化技术去调整神经元分立,而且发展了一种直接的训练算法对于深层SNN.
通过缩小速率编码窗口和转换LIF模型到精确的迭代版本,我们提出了基于pytorch版本的手段去训练深度SNN,提高了数十倍的速度。

准确的LIF迭代模型

原来的LIF模型是这样的变化模式

其中uuu是膜电压,ttt代表时间,III代表外部输入,uresetu_{reset}ureset​代表重置电压。

更换成迭代模式变成如下图

其中,ot,n+1o^{t,n+1}ot,n+1是t+1t+1t+1步的输入,ot+1,n+1o^{t+1,n+1}ot+1,n+1是输出
最终,输出的是ut+1,n+1u^{t+1,n+1}ut+1,n+1,也就是膜电压。和ot+1,n+1o^{t+1,n+1}ot+1,n+1也就是是否有脉冲。

正则化

随着网络层数的加深,目的是为了避免脉冲消退或者爆炸。

整体训练部署

我们定义一个损失函数L表示在平均投票结果和标签向量Y之间的均方误差。在给定的时间窗口T中,

这里ot,No^{t,N}ot,N代表最后一层在时间步t的时候的投票结果。M代表常量投票矩阵。
从这个精确的迭代LIF模型中,我们可以看到这个脉冲信号不仅仅通过层与层之间时域的传播,而且通过时域影响神经元的状态。因此,当计算梯度需要考虑两个域。

实验

从两个方面:
1.训练加速,
2.应用准确性

网络结构

表1和表2提供加速分析和准确度评估。


pytorch能够提供数十倍的训练加速,在所有3个数据集上。这个性能可能是由于在pytorch上卷积操作的优化。另一方面,当前这些优化没有能够很好的支持大多数存在的SNN平台。.
为此,我们比较了不同网络规模下的精度,如图4所示。随着尺寸的增大,snn的精度有明显提高的趋势,这与ann是一致的。

模拟长度

SNN 需要足够模拟步数才能够模拟神经元动态变化和编码信息。给定模拟步数T,这意味着我们需要重复推理过程T次来计算脉冲发放速率。所以网络功耗可以表示为O(T)O(T)O(T),对于深层的SNN,前期的工作需要100甚至1000个step,也就是步长来达到比较好的准确度。 (Sengupta et al. 2018),这就带来了巨大的功耗,与原先的目的背道而驰。幸运的是,通过本文提出的编码框架,模拟步长可以大幅缩短,而准确率没有降低。
下图是我们不同模拟步数的一个准确率表示:

只需要很少的步数(4-8)步,就能够达到比较理想的效果。尤其值得注意的是,甚至在只有1步的时候,它依然可以实现一个不太坏的性能,但是反应速度和功耗却大大降低了。它保证了在响应时间和能量消耗方面有极端限制的应用场景。譬如说,火星车,太阳能电池支持的卫星等等。

结论

在这篇文章中,我们展现了一个直接训练SNN的算法。我们提出了神经元正则化方法。还有,我们优化了速率编码,从编码和解码两个层面,而且转换原始的连续的LIF模型为一个精确迭代的模型。最后,通过数十倍训练加速和更大的网络规模,我们实验了最好的准确率再神经态的数据集和相当精准的准确率,在ANN。就我们所知,这是第一时间报告如此高性能的直接训练SNN模型的方法。在主流机器学习框架上的实现可以促进SNN的发展

Direct Training for Spiking Neural Networks: Faster, Larger, Better相关推荐

  1. 论文略读1《Direct training for spiking neural networks:faster,larger,better》

    发布时间2019-07-17,AAAI 文章链接Direct Training for Spiking Neural Networks: Faster, Larger, Better | Procee ...

  2. Spatio-Temporal Backpropagation for Training High-performance Spiking Neural Networks笔记

    <Spatio-Temporal Backpropagation for Training High-performance Spiking Neural Networks>笔记 ABST ...

  3. 【阅读】A Comprehensive Survey on Distributed Training of Graph Neural Networks——翻译

    转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] (本文中,涉及到公式部分的翻译不准确,请看对应原文.) 另一篇:[阅读]Distributed Graph Neural Networ ...

  4. Paper:Xavier参数初始化之《Understanding the difficulty of training deep feedforward neural networks》的翻译与解读

    Paper:Xavier参数初始化之<Understanding the difficulty of training deep feedforward neural networks>的 ...

  5. Mapping Spiking Neural Networks的论文汇总以及思考

    首先感谢CSDN平台,发现不是我一个人在SNN Mapping方面纠结着.去年看了Mapping方面的内容后感觉想创新还是有点难度的,毕竟优化就是生物进化算法类似的套路,可是你会发现自己实现的结果就是 ...

  6. Spiking neural networks 2017 进展

     The Brain as an Efficient and Robust Adaptive Learner Training Spiking Neural Networks for Cognit ...

  7. 论文精翻《Progressive Tandem Learning for Pattern Recognition With Deep Spiking Neural Networks》

    目录 0 摘要/Abstract 1 简介/Introduction 2 相关工作/Related Work 3 重新思考ANN-to-SNN的转换/Rethinking ANN-to-SNN Con ...

  8. 二值网络训练--Training Competitive Binary Neural Networks from Scratch

    Training Competitive Binary Neural Networks from Scratch https://github.com/hpi-xnor/BMXNet-v2 MXNet ...

  9. Paper之DL之BP:《Understanding the difficulty of training deep feedforward neural networks》

    Paper之DL之BP:<Understanding the difficulty of training deep feedforward neural networks> 目录 原文解 ...

最新文章

  1. 搭建ngrok服务器之扩展
  2. 在redhat9上安装firefox
  3. 【学术技巧】让你的 GitHub 秒变高大上!
  4. spring配置详解-复杂类型注入
  5. CodeForces - 1288C Two Arrays(组合数学)
  6. CRM呼叫中心inbox的调试步骤
  7. html隐藏块元素过度动画,CSS3实现DIV图层隐藏到显示的过渡效果
  8. eureka server配置_springcloud项目搭建第三节:eureka集群
  9. 如何查看windows xp系统的位数?
  10. 如何删除Mac OS X上隐藏的文件?
  11. [Liferay6.2]Liferay Dynamic Query API示例
  12. [转载] C#面向对象设计模式纵横谈——11. Facede外观模式
  13. sparksql优化_Spark SQL | 目前Spark社区最活跃的组件之一
  14. 建行u盾弹不出来_建行网银不自动跳出网页 建行u盾不能弹出快捷登录
  15. xp无法访问win7计算机提示无权限,解决WinXP无法访问Win7文件问题
  16. Java tif转jpg代码实现
  17. wps右下角弹窗广告(WPS购物或叫WPS热点)彻底关闭
  18. 从html到pug模板,html 模板 pug
  19. 【转载】Java并发编程:volatile关键字解析 by 海子
  20. 每周分享第 36 期

热门文章

  1. windows 8,关闭随意窗体都提示“已停止工作”的解决的方法
  2. PAT-乙级-1034 有理数四则运算
  3. Mysq数据库备份(win)
  4. maven 学习笔记--仓库,聚合和继承,私服搭建
  5. 坚果云开发团队分享高效代码审查经验
  6. 学习C#十五天的总结
  7. vs2008 编译libtorrent
  8. 如何应对糟糕的面试官(2)
  9. 二叉树——二叉树的深度(洛谷 P4913)
  10. C语言课后习题(50)