SNN_文献阅读_Effective and Efficient Computation with Multiple-timescaleSpiking Recurrent Neural Networks
Adaptive SRNN
基于多时间尺度脉冲循环神经网络的高效计算(SRNN)
中心思想:
使用替代梯度进行训练,克服SNN中梯度不连续的问题。
在PyTorch中直接使用BPTT进行训练。
结构
本文讨论由一个或者多个递归层组成的SNN——SRNN。
使用LIF神经元+Adaptive脉冲神经元

「具有两个循环层的SNN,循环层内神经元完全循环连接,层与层之间的神经元完全前向连接。」
基本组成
LIF神经元:
\(\hat{f_s}(u_t,\theta)\),其中\(u_t\)为膜电位,\(\theta\)为阈值。
对应公式:
\(\tau_{m} \frac{d u}{d t}=-\left(u_{t}-u_{r}\right)+R_{m} I_{t}\)
\(s_{t}=\hat{f}_{s}\left(u_{t}, \theta\right)\)
\(u_{t}=u_{t}\left(1-s_{t}\right)+u_{r} s_{t}\)
其中,\(I_t=\sum_{t_i}\delta (t_i)\)为输入,表示为脉冲串\(\{t_i\}\),\(u_t\)是按照时间常数\(\tau_m\)随指数衰减的膜电位,\(R_m\)是膜电阻,脉冲发射是阈值和电位的非线性函数\(S_{pike}=\hat{f}_{s}(u_{t})\)。
Adaptive脉冲神经元:
每次放电后阈值都会增加,随着时间常数\(\tau_{adp}\)指数衰减。用前向欧拉一阶指数积分器的方法在\(dt=1ms\)的离散时间内模拟连续神经元模型:
\(\alpha=\exp \left(-d t / \tau_{m}\right)\)
\(\rho=\exp \left(-d t / \tau_{a d p}\right)\)
\(\eta_{t}=\rho \eta_{t-1}+(1-\rho) S_{t-1}\)
\(\theta=b_{0}+\beta \eta_{t}\)
\(u_{t}=\alpha u_{t-1}+(1-\alpha) R_{m} I_{t}-S_{t-1} \theta\) &
\(\theta\)为动态阈值,\(\rho\)表示单时间步衰减。

为了确定SNN的有效性,可以将SNN转换为具有ReLU激活功能的RNN网络,即在每个时间步将膜电位而不是偶尔的脉冲信号传递给其他的神经元,即将&替换为:
\(S_t=ReLU(u_t-\theta)\)
(即RELU SRNN)
BPTT:时间反向传播算法
用于训练SRNN。将输出预测值和输出目标之间的差值从输出传递回输入,包括过去的输入,通过梯度下降来优化权重和更新参数。
应用了交替梯度算法:通过放电神经元的不连续脉冲产生器来逼近误差梯度,替代梯度方法用一个将输出脉冲与膜电位联系起来的导数来代替不存在的梯度。
利用高斯分布:\(\hat{f}_{s}^{\prime}\left(u_{t}\right)=\mathcal{N}\left(u_{t} \mid \theta, \sigma^{2}\right)\)
其期望为阈值\(\theta\),方差为0.5,用来表示误差反向传播的膜电位值。
定义BPTT算法的损失函数并最小化损失函数,需要考虑不同任务下的标签类型:对于顺序分类任务,在序列末尾作为误差;对于时间流任务,在每一个时间步长生成一个输出并对其作为误差。
解码SRNN:解码SRNN的输出是对脉冲神经元行为的解释。输出神经元的膜电位和脉冲历史,频率编码或者到达时间编码都可以代表每一类神经元的信念。本文定义了一些输出编码方法和相关的损失函数。
基于脉冲的分类:
神经元发出脉冲的原因是膜电位到达了阈值。
分类任务中,最简单的方法就是统计某一段时间窗口内的脉冲数目,虽然简单但容易出错:(1)一些输出神经元可能发出相同数目的脉冲(2)神经元的重置和重现机制可能会降低强刺激脉冲的放电率(3)单个神经元的实时读出是不可行的。
因此,我们使用在每个时间步可用的输出神经元直接进行测量。
直接测量:输出神经元的膜电位可以用于分类,因为其代表了输出神经元的历史测量值。
定义了几种从膜电势历史中进行解码结果的方法:(1)最后时间步长的膜电势,即取样本最后一个时间步长的输出膜电位值作为输出。(2)最大的随时间变化的膜电位为:在呈现样本期间达到的最大膜电位作为输出神经元的值。(3)读出积分器:虽然膜电位可以被解释为神经元激活的移动平均,但脉冲引起的集合不符合这一概念。因此我们定义了一个非脉冲读出层,那里的膜电位是在没有神经元脉冲和重置的情况下计算的,这避免了脉冲神经元的重置机制对分类性能的影响。读出积分器被定义为:\(u_{t}=\alpha u_{t}+(1-\alpha) x_{t}\),其中\(u_t\)是输出膜电势,\(x_t\)是输入脉冲串,\(\alpha =e^{-\frac{\tau_m}{dt}}\),其中\(\tau_m\)是不可训练的时间常数,我们对非脉冲读出神经元使用随时间变化的平均值。
在【The Heidelberg spiking datasets for the systematic evaluation ofspiking neural networks】中使用了所有三种方法的变体,即对于流任务,每个时间步都需要分类,并且当只使用单个神经元来表示输出的时候,只能直接测量。为了训练网络,应用数据集8的时候使用交叉熵函数作为误差函数。在流任务中,读出膜电势被用作输出,在每个时间步与对应的目标进行比较。在分类任务中,将读取整个序列后的输出序列与正确标签进行比较。
我们在PyTorch中实现了各种SRNN,其中代理梯度的使用允许我们应用BPTT来有效地最小化损失,并利用标准的深度学习优化,包括对脉冲神经元参数的训练。
实验过程
QTDP、S-MNIST、PS-MNIST、SHD
编码和解码:
编码:DVS传感器转化 或者 基于速率的泊松时间编码。
解码:针对不同任务采用不同解码方式,QTDP任务采用膜电位直接解码方法;MNIST任务采用脉冲计数解码方法;SHD任务采用读出积分器方法。
能效
一个争议的问题为,SNN与ANN相比,是否能实现平均功率的降低。在这里,我们根据寄存器传输逻辑(RTL)级别的功率数从中推导出45nm CMOS工艺的理论能量值。
我们通过计算每个时间步所需的运算量来计算循环网络的理论能耗。我们计算了乘法和累加运算和累加运算。标准的人工神经元对每个输入都需要乘法和加法运算;相反,脉冲神经元只要求每个输入脉冲的累加运算,而它的内部状态动力学需要一些乘法和加法运算。
因此,在网络中,我们需要考虑神经元输入连接的数量、层中神经元的数量以及内部计算的成本。例如,考虑第l层的循环层,定义为:\(y_{l, t}=f\left(W \cdot x_{t}+W_{r e c} \cdot y_{l, t-1}\right)+b\),输入大小为m层,输出大小为n层:这需要两次乘法运算和一次累加运算。对于每一个时间步长,RNN所需要的能量计算为: \(Energy_{r n n}=(m n+n n) E_{MAC}\)。在SNN中,需要考虑稀疏脉冲活动(平均激发速率为\(F_r\)): \(Energy_{s r n n}=(m n+n n) E_{A C} F r\),且在稀疏脉冲的SRNN中, \(F r<<1\)。
我们计算了RNN的所有层l和所有时间步T的理论能量成本总和,\(E_{rnn}=\displaystyle\sum_{t\in T}\displaystyle\sum_{l\in L}Energy_{l,t}\):我们计算了表格2中的各种循环网络MACS/AC的能量消耗。

表格2:不同神经元的每层能量消耗。网络层的输入大小是m,输出大小是n。\(E_{AC}\)是每次累加运算的能量成本,\(E_{MAC}\)是每次长发和加法运算的成本。Adaptative*是非脉冲自适应神经元。

表格3:模型性能和能耗,实际相对能量成本。为了进行比较,将Adaptive SRNN的能耗和错误率设置为1倍。能量(energy)/误差(error)比被计算为能量(energy)/误差(error)相对于自适应SRNN的比率。效率定义为能量(energy)和错误率(error retio)的乘积。对于能耗测量\(E_{MAC}\)和\(E_{AC}\),使用[28]:一个32位MAC需要3.2pJ,一个32位AC需要0.1pJ。

图8:各种网络精确度与能量比。SRNN的解决方案位于节能和高效网络的Pareto front,Adaptive SRNN获得了接近RELU SRNN的性能,但理论上的能源效率高出28-243倍。与更复杂的SHD和PSMNIST任务相比,我们计算出SRNN的能量效率高出100倍以上,因为在更大的网络中,输入端数量和稀疏性都增加了。
SNN_文献阅读_Effective and Efficient Computation with Multiple-timescaleSpiking Recurrent Neural Networks的更多相关文章
- 《The Unreasonable Effectiveness of Recurrent Neural Networks》阅读笔记
李飞飞徒弟Karpathy的著名博文The Unreasonable Effectiveness of Recurrent Neural Networks阐述了RNN(LSTM)的各种magic之处, ...
- 迁移学习《Pseudo-Label : The Simple and Efficient Semi-Supervised Learning Method for Deep Neural Networks》
论文信息 论文标题:Pseudo-Label : The Simple and Efficient Semi-Supervised Learning Method for Deep Neural Ne ...
- 【文献阅读】An efficient motion planning based on grid map: Predicted Trajectory Approach with global path guiding
(1)主要工作内容 本文提出了一种基于轨迹预测法的欠驱动无人艇的全局运动规划算法.该方法考虑了无人艇的所有动力学约束,并且能找到一条根据船舶自身操纵系统进行跟踪的全局轨迹. 根据USV数学模型生成的预 ...
- 文献阅读报告 - Social GAN: Socially Acceptable Trajectories with Generative Adversarial Networks
paper:Gupta A , Johnson J , Fei-Fei L , et al. Social GAN: Socially Acceptable Trajectories with Gen ...
- Paper | Adaptive Computation Time for Recurrent Neural Networks
目录 1. 网络资源 2. 简介 3. 自适应运算时间 3.1 有限运算时间 3.2 误差梯度 1. 网络资源 这篇文章的写作太随意了,读起来不是很好懂(掺杂了过多的技术细节).因此有作者介绍会更好. ...
- facebook 摘要生成阅读笔记(二) Abstractive Sentence Summarization with Attentive Recurrent Neural Networks
整体流程与第一篇差不多,只是在encoder和decoder加入了RNN Encoder: 1. ai=xi+li ai=词向量+词在序列中的位置信息(相当于一个权重,[M, 1]) 流程: 先是CN ...
- 论文阅读笔记(二十二)【CVPR2017】:See the Forest for the Trees: Joint Spatial and Temporal Recurrent Neural Networks for Video-based Person Re-identification
Introduction 在视频序列中,有些帧由于被严重遮挡,需要被尽可能的“忽略”掉,因此本文提出了时间注意力模型(temporal attention model,TAM),注重于更有相关性的帧. ...
- phd文献阅读日志-博一下学期
博一下学期: 1.week1,2018.2.26 2006-Extreme learning machine: theory and applications 期刊来源:Huang G B, Zhu ...
- 论文翻译:2020_WaveCRN: An efficient convolutional recurrent neural network for end-to-end speech enhancement
论文地址:用于端到端语音增强的卷积递归神经网络 论文代码:https://github.com/aleXiehta/WaveCRN 引用格式:Hsieh T A, Wang H M, Lu X, et ...
- 文献阅读笔记——group sparsity and geometry constrained dictionary
周五实验室有同学报告了ICCV2013的一篇论文group sparsity and geometry constrained dictionary learning for action recog ...
随机推荐
- OlllyDbg调试器和IDA调试器
OllyDbg调试器 OllyDbg称为Ring3级的首选工具.可以识别数千个被和Windows频繁使用的函数,并能将其注释出来.它会自动分析函数过程.循环语句等 OllyDbg主界面 快捷键 Add ...
- 小程序软键盘&SM2解密方式
小程序软键盘&SM2解密方式 转载请著名出处:https://www.cnblogs.com/funnyzpc/p/17572445.html SM2基本信息 私钥(primary key) ...
- Linux Crontab 使用单行命令需要注意使用命令的绝对路径
crontab 中不支持||的写法,但是支持&&所以用 xxx ; [ $? -ne 0] && xxx的格式就没有问题. crontab 中环境变量与shell中不一 ...
- win10安装Redis5、配置自启动教程
前提条件:首先我安装的是压缩包版的Redis5.0.14.1,下载链接为 https://github.com/tporadowski/redis/releases 安装教程 下载软件并解压 进入软件 ...
- 使用 docker 打包构建部署 Vue 项目,一劳永逸解决node-sass安装问题
文章源于 Jenkins 构建 Vue 项目失败,然后就把 node_modules 删了重新构建发现 node-sass 安装不上了,折腾一天终于可以稳定构建了. 犹记得从学 node 的第一天,就 ...
- 快手根据关键词取商品列表 API 返回值说明
item_search-根据关键词取商品列表 注册开通 ks.item_search 公共参数 名称 类型 必须 描述 key String 是 调用key(必须以GET方式拼接在URL中) secr ...
- 使用vscodep快速编写markdown
写在前面 这是一篇基于 vscode 配置,用于书写 markdown 的文章 为了方便快速书写 markdown 真想使用一些便捷的快捷键去生成一些自己常用的格式或者是模版,于是自己基于自己的个人习 ...
- 线段树hdu-4027
Smiling & Weeping ---- 姑娘,倘若,我双手合十的愿望里有你呢 Problem Description A lot of battleships of evil are ...
- Unity 游戏开发、02 基础篇 | 知识补充、简单使用动画、动画状态机
前置笔记(由浅入深) Unity 游戏开发.01 基础篇 2 场景操作 3D场景 Q 手型工具(鼠标中键):上下左右移动场景 ALT + 鼠标左键:以视图为中心旋转 鼠标右键:以观察者为中心旋转 SH ...
- netstat命令输出详解
netstat命令输出详解 1. 列出所有的TCP和UDP端口 2. 命令输出详解 Proto:协议名(tcp协议还是udp协议) recv-Q:网络接收队列,send-Q:网路发送队列 a. rec ...