两种方法将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. Redis 集群偶数节点跨地域部署之高可用测试

    笔者目前所在公司存在多套 Redis 集群: A 集群 主 + 从 共 60 个分片,部署在 3 + 3 台物理机上,每台机器各承载 10 个端口 主库 30 个端口在广州,从库 30 个端口在中山 ...

  2. 看element源码学到的小技巧

    中午无休的时候有点无聊, 看了一下昨天clone 的 element-ui 源码, 发现很多优雅之处, 记录一下让我直接用到项目中的一个点 那就是绝对定位的元素放到body 里面的 同级.这么做的好处 ...

  3. git关于分支的常用命令

    上家公司实习,一个人干一个项目,没有用git管理代码,导致我以前学的命令都忘了 git checkout -b xxx 创建xxx分支 并切换到xxx分支 等价于 git branch xxx git ...

  4. 用户空间协议栈设计和netmap综合指南

    本文分享自华为云社区<用户空间协议栈设计和netmap综合指南,将网络效率提升到新高度>,作者:Lion Long . 协议概念 1.1.七层网络模型和五层网络模型 应用层: 最接近用户的 ...

  5. Ubuntu20.04 下编译和运行 FreeSWITCH的问题汇总

    1. Ubuntu20.04 下编译和运行 FreeSWITCH的问题汇总 1.1. 环境 Ubuntu20.04.2 LTS (Linux 5.4.0-152-generic x86_64 GNU/ ...

  6. 可实现自动驾驶的飞机大战(C++)

    PS:觉得可以的uu帮忙点个star啦,最近在找工作,希望star多一点能写到简历上 B站演示视频: 基于C++实现的可自动驾驶的飞机大战_单机游戏热门视频 (bilibili.com) Github ...

  7. [Lua][Love] "图块集与地图" 加载显示功能 TileMap

    效果 安装库 安装两个库,分别用来读xml和csv,如果有luarocks,执行下列命令 luarocks install xml2lua luarocks install ftcsv manoelc ...

  8. 浅谈基于QT的截图工具的设计与实现

    本人一直在做属于自己的一款跨平台的截图软件(w4ngzhen/capi(github.com)),在软件编写的过程中有一些心得体会,所以有了本文.其实这篇文章酝酿了很久,现在这款软件有了雏形,也有空梳 ...

  9. nmcli 命令设置网络

    nmcli 命令设置网络 设置静态 IP 地址 sudo nmcli connection modify "连接名称" ipv4.addresses IP地址/子网掩码 设置网关 ...

  10. Go语言中JSON的反序列化规则

    Unmarshal 解析 func Unmarshal(data []byte, v any) error Unmarshal 解析 JSON 编码的数据,并将结果存储在 v 指向的值中.如果 v 为 ...