两种方法将CNN转化成为SNN:

  • 直接训练一个类似CNN架构的SNN「虽然有类似于STDP等无监督方法,但是处于起步状态」
  • 训练初始的CNN,将训练得到的权重直接应用于类似于CNN架构的SNN「将CNN转化为SNN的时候,训练的准确性可能无法保证」

准确性损失的原因:

  • CNN中的负值在SNN中无法准确表示,原因是:a.sigmoid函数tanh()的输出值介于-1.0和1.0之间;b.在每个卷积层中,每个输出特征映射的值都是输入加上偏差的加权和,权重和偏差都可能为负,导致输出值为负;c.预处理的输出值(例如颜色变换和空间标准化)可能会产生负值。「虽然抑制性神经元可以表示负值,但是需要增加很多的神经元,会增加计算成本。」
  • 不同于CNN,SNN不能表示误差。每个卷积层中的误差可能是正的也可能是负的,在SNN中不能表示。
  • 最大池化需要两层SNN。在CNN中,空间最大池化被限制在输入中一个小的图像邻域上获取最大输出值,在SNN中需要两层神经网络,第一层用来侧向抑制,第二层用来在小图像区域上进行聚集,这种方法需要更多的神经元,并且可能损失复杂性。

改进:

  • 使所有层的输出值变为正值。a.在预处理后面加一个abs()函数,使得所有的值变为正值;b.将sigmoid函数从tanh()改成HalfRect(x),定义为\(HalfRect(x)=max(x,0)\),有很多优点,比如在训练的时候收敛的快,而且在\(x>0\)的时候是线性的,将转化的误差降到了最低。
  • 消除所有卷积层和全联接层的误差。在每次训练迭代后将所有的误差值置0。
  • 不用空间最大池化,而用空间线性子采样。空间线性子采样采用一个单一形式的权重核,将所有像素添加到一个小图像邻域上。空间线性子采样函数可以很容易地转换为脉冲域。

采用上述三条改进,可以将CNN转化为定制CNN。

integrate-and-fire neuron model模型进行更新:

\(V(t)=V(t-1)+L+X(t)\)

\(如果V(t)\geq \theta,脉冲和复位V(t)=0\)

\(如果V(t)<V_{min},复位后V(t)=V_{min}\)

\(L\)是常数,为泄漏参数;\(X(t)\)是连接的神经元的所有突触在时间\(t\)的总输入。当神经元电压\(V(t)\)超过阈值\(\theta\)的时候,神经元会激发一个脉冲,并且其膜电位\(V(t)\)置0。膜电位不能低于静止状态\(V_{min}\)。

第\(i\)层的神经元\((i,j)\)可以定义为:

\(X_{i,j}(t)=\displaystyle\sum_{p,q=-3}^3A_{p+i,q+j}(t)K_{pq}\)

其中\(A_{p+i,q+j}\)是来自前一层的输入脉冲(0或者1),\(K_{pq}\)是大小为7$\times$7的卷积核权重,由同一映射中的神经元共享。

ANN2SNN不仅局限于使用integrate-and-fire neuronmodel模型,还可以使用其他模型进行训练。

脉冲生成层的定义:\(I_{ijk}\)是输入到脉冲生成层的图像匹配。在时间\(t\)内,如果满足\(rand()<cI_{ijk}\),第\(k\)层图像匹配的神经元\((i,j)\)发射一个脉冲。其中,\(rand()\)是\((0.0,1.0)\)之间的随机数生成器,\(c\)是一个常数,用来缩放生成脉冲的频率。

实验结果

Neovision2 Tower Dataset:

CIFAR-10 Dataset:

硬件:

\(Total\ energy=(5\times 10^5+2\times 10^7)]\alpha\\\cong2\times 10^7\alpha\ Joules/chip\)

\(P=2\times 10^7\alpha Joules/chip\times 30frame/s\times 5chips/ram=3\times 10^9\alpha Joules/s=3\times 10^9\alpha Watts\)







SNN_文献阅读_Spiking Deep Convolutional Neural Networks for Energy-Efficient Object Recognition的更多相关文章

  1. ImageNet Classification with Deep Convolutional Neural Networks(译文)转载

    ImageNet Classification with Deep Convolutional Neural Networks Alex Krizhevsky, Ilya Sutskever, Geo ...

  2. AlexNet论文翻译-ImageNet Classification with Deep Convolutional Neural Networks

    ImageNet Classification with Deep Convolutional Neural Networks 深度卷积神经网络的ImageNet分类 Alex Krizhevsky ...

  3. Understanding the Effective Receptive Field in Deep Convolutional Neural Networks

    Understanding the Effective Receptive Field in Deep Convolutional Neural Networks 理解深度卷积神经网络中的有效感受野 ...

  4. 【文献阅读】Augmenting Supervised Neural Networks with Unsupervised Objectives-ICML-2016

    一.Abstract 从近期对unsupervised learning 的研究得到启发,在large-scale setting 上,本文把unsupervised learning 与superv ...

  5. Deep learning_CNN_Review:A Survey of the Recent Architectures of Deep Convolutional Neural Networks——2019

    CNN综述文章 的翻译 [2019 CVPR] A Survey of the Recent Architectures of Deep Convolutional Neural Networks 翻 ...

  6. 《ImageNet Classification with Deep Convolutional Neural Networks》 剖析

    <ImageNet Classification with Deep Convolutional Neural Networks> 剖析 CNN 领域的经典之作, 作者训练了一个面向数量为 ...

  7. Image Scaling using Deep Convolutional Neural Networks

    Image Scaling using Deep Convolutional Neural Networks This past summer I interned at Flipboard in P ...

  8. 中文版 ImageNet Classification with Deep Convolutional Neural Networks

    ImageNet Classification with Deep Convolutional Neural Networks 摘要 我们训练了一个大型深度卷积神经网络来将ImageNet LSVRC ...

  9. 深度卷积神经网络用于图像缩放Image Scaling using Deep Convolutional Neural Networks

    This past summer I interned at Flipboard in Palo Alto, California. I worked on machine learning base ...

  10. [论文阅读] ImageNet Classification with Deep Convolutional Neural Networks(传说中的AlexNet)

    这篇文章使用的AlexNet网络,在2012年的ImageNet(ILSVRC-2012)竞赛中获得第一名,top-5的测试误差为15.3%,相比于第二名26.2%的误差降低了不少. 本文的创新点: ...

随机推荐

  1. 分布式ID性能评测:CosId VS 美团 Leaf

    分布式ID性能评测:CosId VS 美团 Leaf 基准测试环境 MacBook Pro (M1) JDK 17 JMH 1.36 运行在本机的Docker 的 mariadb:10.6.4 运行基 ...

  2. java使用apache.poi导出word文件

    功能说明: 将试卷导出word,并可以打印,装订,效果图: 下面是实现代码: package com.xxxxx.business.course.utils; import com.alibaba.f ...

  3. JVM调优篇:探索Java性能优化的必备种子面试题

    JVM内存模型 首先面试官会询问你在进行JVM调优之前,是否了解JVM内存模型的基础知识.这是一个重要的入门问题.JVM内存模型主要包括程序计数器.堆.本地方法栈.Java栈和方法区(1.7之后更改为 ...

  4. 跟运维学 Linux - 03

    权限机制和性能指标 前面我们学完了操作文件和用户相关知识,本篇学习权限和性能相关知识. 文件的属性看起 看 linux 的权限,先从文件的属性看起 ls -l 加 -d 是只看这个文件夹: pjl@p ...

  5. linux基础:编译

    程序编译 在linux中,gnu项目提供了gcc编译器.g++编译器和gdb调试器. C和C++语言正在不断发展,为了保持兼容程序语言的最新特性,开发者通常选择GCC来编译C语言编写的源代码,选择G+ ...

  6. asset module type 替代 loader 处理图片字体等文件资源

    前面文章中 体验了webpack的打包 .解析css资源 ,接下来看看项目中常用到的图片.字体.文件该怎么处理吧~ 项目路径如下,在上一篇 解析css资源 项目基础上增加了一些文件 demo ├─ s ...

  7. ros源的移除

    在Ubuntu上卸载了ros系统后,每次运行源更新命令 sudo apt update 都会报错,提示ros源找不到等问题. 这时,只需要 cd /etc/apt/souce.list.d sudo ...

  8. Go 并发编程 - runtime 协程调度(三)

    Go Runtime Go runtime 可以形象的理解为 Go 程序运行时的环境,类似于 JVM.不同于 JVM 的是,Go 的 runtime 与业务程序直接打包在一块,是一个可执行文件,直接运 ...

  9. 在.NET Framework中使用RocketMQ(阿里云版)实战【第二章】

    章节 第一章:https://www.cnblogs.com/kimiliucn/p/17662052.html 第二章:https://www.cnblogs.com/kimiliucn/p/176 ...

  10. Linux 内核设备驱动程序的IO寄存器访问 (下)

    Linux 内核设备驱动程序通过 devm_regmap_init_mmio() 等函数获得 struct regmap 结构对象,该对象包含可用于访问设备寄存器的全部信息,包括定义访问操作如何执行的 ...