ANN to SNN 学习算法

最近集中看了几篇ANN to SNN的学习算法,主要对里面的关键算法进行简单的总结,理解还不够透彻,欢迎私聊或者评论。
论文发表年份是从上到下,最好是从上到下看,因为其他作者的论文里面会写到前人的一些贡献和启发,虽然我第一篇看的是Spiking-YOLO。第二篇的作者公开了他的代码,Diehl大佬的两篇论文都公开了代码,可以加深对论文的理解。

  1. Spiking Deep Convolutional Neural Networks for Energy-Efficient Object Recognition
  2. Fast-Classifying, High-Accuracy Spiking Deep Networks Through Weight and Threshold Balancing
  3. Going deeper in spiking neural networks Vgg and residual architecture
  4. Spiking-YOLO Spiking Neural Network for Energy-Efficient Object Detection

第一篇:Spiking Deep Convolutional Neural Networks for Energy-Efficient Object Recognition

可以结合这篇博客进行理解:Spiking Deep Convolutional Neural Networks for Energy-Efficient Object Recognition

  1. 该论文描述了一种将CNN转换为SNN的方法:首先对CNN的结构进行裁剪,使其符合SNN的要求;然后对经过裁剪的CNN进行训练,得到权重,最后将学习到的网络权值直接应用到由裁剪的CNN所得到的SNN结构中。(这篇论文主要是写对网络架构的改变,没写到权重的映射、阈值的调整,后面的几篇论文的侧重点就是在权重和阈值了。)
  2. CNN如何进行裁剪(限制),得到SNN结构(emmm,这篇作者把网络结构介绍的相当仔细,生怕读者看不懂CNN到SNN的变化过程,爱了爱了)
    这是一个典型的CNN架构:

    这是一个被裁剪后的CNN架构:

    这是最终转换来的SNN架构(具体转换方法,看看论文里面的,比较简单)

    这是SNN架构的一些细节:包括脉冲编码,卷积层和池化层以及最后的全连接层
  3. 实验结果:写了识别率和能耗两个方面。

第二篇:Fast-Classifying, High-Accuracy Spiking Deep Networks Through Weight and Threshold Balancing

可以结合这篇博客进行理解:Fast-Classifying, High-Accuracy Spiking Deep Networks Through Weight and Threshold Balancing
这篇文章有具体的代码。提出需要同时控制阈值和权重,因此用一个缩放因子进行限制。两种归一化方法:model-based normalization 和 data-based normalization。对网络结构的转换和第一篇的转换思想类似。其中,model-based正则化:考虑所有可能的正的激活值,并且通过可能的最大激活值(同时也是下一层的输入)对权重缩放。如果最大的正输入仅仅对应单个脉冲,那么网络同一个神经元在一个timestep内至多发射一个脉冲。通过这样做,脉冲神经网络变得具有鲁棒性——可以接受任意高的输入发射率并且完全消除由于太多输入而导致的转换损失。data-based正则化:对于这个方法,在训练完网络后,训练集前向传播,我们将ReLU过后的激活值保存下来,接着,权重根据最大的可能激活值缩放,所以这种情况下也只会同时发射一个脉冲。另外,这种方法也需要将最大的输入权重考虑进去(即它的缩放因子是激活值和权重绝对值的最大值),因为如果不考虑权重的话还是有可能出现在一个timestep内需要发射多次脉冲,但这个方法需要训练集和测试集同分布。

第三篇:Going deeper in spiking neural networks Vgg and residual architecture

  1. 针对ANN转SNN,提出几个ANN结构的约束:不用Bias,使用dropout;池化层采用平均池化。
  2. 提出ANN转SNN的normalization方法:Spike-Norm 和之前的方法区别在于:前两种方法时对ANN层面进行改动,这个方法是对SNN层面进行修改的。对于一个经过训练的神经网络,第一步是在足够大的时间窗下为网络生成输入泊松脉冲序列。泊松脉冲序列允许我们记录加权脉冲的最大总和,这将被网络的第一神经层接收(输入编码过程)。为了使神经元的时间延迟最小化,同时保证神经元的触发阈值不过低,我们根据第一层接收到的最大尖峰输入对第一层进行加权归一化。设置第一层的阈值后,在第一层的输出端为我们提供一个具有代表性的脉冲序列,使我们能够为下一层生成输入脉冲流,依次类推。
  3. 提出一种可以用在SNN的残差结构块:两条通路连接处加入Relu函数,这和ResNet结构有所不同;残差网络的两条通路设置成相同的阈值;前几层网络采用较小的卷积层进行卷积。

第四篇:Spiking-YOLO Spiking Neural Network for Energy-Efficient Object Detection

可以结合这篇博客进行理解:Spiking-YOLO:脉冲神经网络高效的目标检测
作者贡献:

  1. 深度SNN的首个目标检测模型首次提出了一个在深度SNN中实现高效目标检测的模型Spiking YOLO。在非平凡数据集上,Spiking YOLO的结果与原始DNN相当,即98%。
  2. 逐通道归一化 提出了了一个针对深度SNN的细粒度归一化方法。所提出的方法能够在多个神经元中获得更高但适当的放电率,从而在深度SNN中实现了快速、准确的信息传输。(感觉结合作者的实验结果,这个归一化效果不是很明显)
  3. 阈值不平衡的有符号神经元提出了一种在SNN域中准确有效地实现leaky-ReLU的方法。该方法易于在最小开销的神经形态芯片上实现。(这个方法的效果比较明显,具有借鉴价值)

SNN论文系列-ANN to SNN 学习算法相关推荐

  1. 分类系列之感知器学习算法PLA 和 口袋算法Pocket Algorithm

    我们有一堆数据,默认他们是线性可分的.  定义f为这个数据分割线的最优解,但是我们不知道他的值.  我们仅有一个函数集H,这个函数一般是无穷大的.我们的目的就是从H中找出一条线g来尽可能的接近f.但是 ...

  2. Petuum提出序列生成学习算法通用框架

    近日,来自人工智能创业公司 Petuum 的研究人员发表论文,提出序列生成学习算法的通用框架--广义的熵正则化策略优化框架(Generalized Entropy-Regularized Policy ...

  3. em算法 实例 正态分布_Petuum提出序列生成学习算法通用框架

    近日,来自人工智能创业公司 Petuum 的研究人员发表论文,提出序列生成学习算法的通用框架--广义的熵正则化策略优化框架(Generalized Entropy-Regularized Policy ...

  4. AlphaZero炼成最强通用棋类AI,DeepMind强化学习算法8小时完爆人类棋类游戏

    [新智元导读]或许"智能爆炸"不会发生,但永远不要低估人工智能的发展.推出最强围棋AI AlphaGo Zero不到50天,DeepMind又一次超越了他们自己,也刷新了世人对人工 ...

  5. 【重磅】AlphaZero炼成最强通用棋类AI,DeepMind强化学习算法8小时完爆人类棋

    原文链接:点击打开链接 摘要: 或许"智能爆炸"不会发生,但永远不要低估人工智能的发展.推出最强围棋AI AlphaGo Zero不到50天,DeepMind又一次超越了他们自己, ...

  6. 【重磅】AlphaZero炼成最强通用棋类AI,DeepMind强化学习算法8小时完爆人类棋类游戏...

    2019独角兽企业重金招聘Python工程师标准>>> 世界最强围棋AI AlphaGo Zero带给世人的震撼并没有想象中那么久--不是因为大家都去看谁(没)跟谁吃饭了,而是Dee ...

  7. 【重磅】AlphaZero炼成最强通用棋类AI,DeepMind强化学习算法8小时完爆人类棋类游戏

    世界最强围棋AI AlphaGo Zero带给世人的震撼并没有想象中那么久--不是因为大家都去看谁(没)跟谁吃饭了,而是DeepMind再次迅速超越了他们自己,超越了我们剩下所有人的想象. 12月5日 ...

  8. 脉冲神经网络(SNN)论文阅读(三)-----高精度低时延的ANN转换SNN方法

    原文链接:CSDN-脉冲神经网络(SNN)论文阅读(三)-----高精度低时延的ANN转换SNN方法 Optimal ANN-SNN Conversion for High-accuracy and ...

  9. 玻尔兹曼机的学习算法--Hinton论文系列《A learning algorithm for Boltzmann machines》

    1 简介 本文根据1985年Hinton等人写的<A learning algorithm for Boltzmann machines>翻译总结的.即玻尔兹曼机的学习算法. 连接主义认为 ...

  10. OpenAI发布可扩展的元学习算法Reptile | 论文+代码+Demo

    安妮 编译自 OpenAI官方博客 量子位 出品 | 公众号 QbitAI 昨天,OpenAI发布了一种新型的可扩展元学习算法Reptile,还能在线试玩. 何为Reptile?难道是-- 咳咳严肃一 ...

最新文章

  1. jquery防止冒泡
  2. TZOJ上的C语言作业答案,C语言编程练习
  3. 数据库配置,参考django框架,采用嵌套的字典实现
  4. 九度OJ1486 /POJ 1029/2012北京大学研究生复试上机
  5. java 方法 示例_Java语言环境getDisplayCountry()方法与示例
  6. nanshan 钥匙在您那儿的
  7. VSCode 设置 Tab 空格
  8. Python批量检测服务器端口可用性与Socket函数使用
  9. transformers model inputs
  10. python高端写法_python高级篇:使用元类方式实现单例模式详解
  11. CentOS 5.11下Oracle 11G R2 Dataguard搭建
  12. UtIL DBUtil
  13. 贾俊平《统计学》常用公式
  14. 机械工业出版社6000册图书都有哪些?
  15. Android网络框架(三)——iptables
  16. 11、生成带参数二维码应用场景
  17. String对象intern方法
  18. edge浏览器,无法继续下载,提示检测到病毒的问题
  19. php获取蓝凑云文件列表,PHP获取蓝奏云直链方法
  20. 聚合收款码怎么推广?

热门文章

  1. 编码器高速脉冲计数器Modbus RTU模块IBF150
  2. Ubuntu配置GPU版本pytorch环境(含NVIDIA驱动+Cuda+Cudnn)
  3. 树莓派开发板入门学习笔记1:[转]资料收集及树莓派系统在Ubuntu安装
  4. 【MQTT学习】lesson8. :Retained 消息和 LWT
  5. 兵家必争之地——关于O2O商业模式的一点遐想
  6. 统计局:1月份中国制造业采购经理指数为49.5%
  7. R包安装--以4.1.2安装DMwR为例
  8. html和css中盒子大小,CSS大小设置实例——盒子模型
  9. 测试工程师如何规划自己的职业生涯
  10. java 字符串 空白字符_Java String中移除空白字符的多种方式汇总