Advertisement

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

阅读量:

Spatio-temporal backpropagation used in training high-performance spiking neural networks

ABSTRACT

STBP:Spatio-Temporal Backpropagation

1.探索SNN的一个重要原因:spikes的相关编码可以包含很多的时空信息。

目前有很多相关性研究主要局限于神经网络的空间域特性(这篇文章发之前),这在一定程度上限制了相关性研究的深入发展。此外,还有少部分研究则仅专注于独立时域的信息分析。

3.spike activity是无法微分的,这给SNN的训练造成了很大的困难。

本文开发了迭代LIF模型,在便于梯度下降算法进行训练的同时,综合考虑了层与层之间在空间域上的相互关系以及各自独立的时间域特征。

5.提出了spike activity导数的近似处理函数。

6.本文涉及到的训练没有采用任何复杂的训练trick。

所采用的数据集包括静态MNIST、自建的目标检测数据集以及动态N-MNIST。

INTRODUCTION

SNN的两大显著特点为时序可变性和硬件兼容性(耗时耗能极低, 如神经形态处理器)。

2.三种SNN的训练方法:

无监督学习 (利用生物突触可塑性)

例如spiking timing dependent plasticity(STDP),然而它仅考虑到当前神经元随时间的变化而表现出的效果并不显著。

间接监督学习 (ANN2SNN)

在训练阶段首先建立一个人工神经网络(ANN),随后将其映射至 spike-based神经网络(SNN)架构。其中突触传递过程通过 spike事件来模拟人工神经网络中的神经元通信机制。该方法在生物学上具有一定的可行性但存在一定程度上的局限性。

直接监督学习 (如本文采用的STBP方法)

这种方法在过去的研究中主要局限于spatial domain, 而未涉及temporal domain. 然而提升其性能却需要大量的复杂训练手段. 相较之下STBP则无需经历如此繁复的训练过程.

这种方法在过去的研究中主要局限于spatial\ domain, 而未涉及temporal\ domain. 然而提升其性能却需要大量的复杂训练手段. 相较之下STBP则无需经历如此繁复的训练过程.

基于SNN的动力学特性构建了一个迭代LIF模型;该模型对梯度下降算法具有良好的兼容性。提出了近似导数的方法来解决不可微问题;通过三个不同的数据集进行验证。

4.分析了时间动态性以及不同导数近似方法对最后结果的影响。

正文部分

LIF模型如下:

\tau\frac{du(t)}{dt} = -u(t) + I(t)

该研究系统中涉及的关键变量包括:被观察神经元的膜电位状态由u(t)表示;传递信号的时间常数参数为\tau;来自前一层次的输入信号I(t)则由前层神经元活动、外部噪声以及突触强度共同作用而产生。当膜电位达到阈值水平时(即当膜电位超过阈值V_{th}时),该神经元将触发并产生一个动作电位脉冲;随后迅速回复至静息电位水平(即恢复至u_{rest}状态)。

相较于DNN的传播过程而言,SNN的每一个神经元均通过自反馈注入机制完成信息处理,并能在时域上积累稳定的电位变化特征。

对LIF模型适当简化,并且遵循事件驱动迭代的更新规则,有下式:

u(t) = u(t_{i-1})e^\frac{t_{i-1}-t}{\tau} + I(t)

膜电位以快速下降的方式持续降低直至神经元接收到来自前突触的信号,在下一个更新周期内该神经元才具备产生动作电位的可能性。一个神经元的状态由上式右侧两方面的因素共同决定,分别对应时域效应与空间域影响

SNN(STBP)的整体(SD&TD)结构图如下:

xxxx.png

在SD和TD同时进行迭代,如下式:

x_i^{t+1,n} = \sum_{j=1}^{l(n-1)}w_{ij}^no_j^{t+1,n-1}

u_i^{t+1,n} = u_i^{t,n}f(o_i^{t,n})+x_i^{t+1,n} + b_i^n

O_i^{t+1,n} = g(u_i^{t+1,n})

其中f(x) = \tau e^{-\frac{x}{\tau}}g(x)=\left\{ \begin{aligned} 1 & & x \geq V_{th} \\ 0 & & x \right.

t代表时间点;n代表神经元所处层级;l(n)代表第n层神经元的数量;w_{ij}代表从j层到i层之间的连接强度;当o_j=1时表明该神经元产生了动作电位;当o_j=0则说明未发生任何反应;x_i代表了第i个神经元接收的所有前向输入信号总和;u_i即为该神经元当前所处的膜电位状态;b_i是一个受阈值V_th调节的关键参数

u_i^{t+1,n} = u_i^{t,n}f(o_i^{t,n})+x_i^{t+1,n} + b_i^nO_i^{t+1,n} = g(u_i^{t+1,n})是由LSTM模型 的灵感得到。

\tau 是一个较小的正时间常数,则有:

f(o_i^{t,n})=\left\{ \begin{aligned} \tau & & o_i^{t,n} = 0 \\ 0 & & o_i^{t,n} = 1 \end{aligned} \right.

在时间窗口T上用均方误差制定损失函数如下:

L = \frac{1}{2S} \sum_{s=1}^{S}||y_s - \frac{1}{T} \sum_{t =1}^{T} o_s^{t,N}||^2_2

其中y_so_s分别代表标签向量及第N层的输出向量。可以看出L = f(\mathbf{W}, \mathbf{b})是一个关于参数矩阵\mathbf{W}以及偏置向量\mathbf{b}的函数关系。假设我们已经计算出每一层在各个时间点处的导数值\frac{\partial L}{\partial o_i}以及\frac{\partial L}{\partial u_i},这对计算梯度\frac{\partial L}{\partial \mathbf{W}}\frac{\ partial L}{\ partial \mathbf{b}}至关重要。根据链式法则,我们需要推导四种情况下的梯度下降过程,暂时忽略(主要是为了推导中间变量梯度)

下面是在STD上误差传播的示意图:

1111.png

a图显示SD误差传播在垂直方向和水平方向上分别涉及了相应的传播路径。b图进一步发展为网络级别的整体架构示意图。

关于\frac{\partial L}{\partial W}\frac{\partial L}{\partial b},有下面的式子:

在这里插入图片描述

其中和\frac{\partial L}{\partial u^{t,n}}可以根据之前推导的过程得出。

在之前的研究中已经推导出基于STBP方法的梯度信息,在这一基础上我们解决了无法对脉冲触发点进行有效微分的问题。主要关注于函数g(u), 其数学导数在零点处趋于无穷大,在其他位置均为零的状态会导致在误差传递过程中出现梯度消失或爆炸现象。目前常用的方法是将该不连续性视为噪声源,并声称这种处理方式能够提升模型的鲁棒性;然而这种方法并未从根本上解决根本问题。

下面是本文提出的四种曲线来近似g(u)的导数:

h_1(u) = \frac{1}{a_1}sign(|u-V_{th}| < \frac{a_1}{2})

h_2(u) = (\frac{\sqrt{a_2}}{2}-\frac{a_2}{4}|u-V_{th}|)sign(\frac{2}{\sqrt{a_2}}-|u-V_{th}|)

h_3(u) = \frac{1}{a_3}\frac{e^{\frac{V_th-u}{a_3}}}{(1+e^{\frac{V_th-u}{a_3}})^2}

h_4(u) = \frac{1}{\sqrt{2\pi a_4}}e^{\frac{(u-V_th)^2}{a_4}}

参数a_i主要影响了曲线的形状特征。事实上这四种曲线分别属于矩形多项式sigmoid和高斯累积分布函数的不同形式。通过调节参数a_i使得每个曲线下面积等于1我们可以进一步推导出以下方程:

\lim_{a_i = 0^+}h_i(u) = \frac{dg}{du},i = 1,2,3,4

进一步得到下面的近似:

\frac{dg}{du} \approx \frac{dh_i}{du}

下面是g(u)和它导数以及各个曲线的示意图:

在这里插入图片描述

结果

参数初始化

本文固定阈值为一常数,调整weight来控制spiking活动的平衡。

首先将所有的权重参数标准均匀分布在-1到1之间:W \sim U[-1,1]

然后normalize所有参数: w_{i,j}^n = \frac{ w_{i,j}^n}{\sqrt{\sum_{j=1}^{l(n-1)}{w_{i,j}^n}^2}}

其他参数见下图:

444.png

各个数据集的实验

为了实现将静态的数据集转化为spike event stream,本文通过伯努利采样的方法将原始像素密度被转换为spike rate。

全连接网络

一、静态数据集的相关实验(主要)

对该网络进行测试所使用的数据集包括MNIST数据集与一个自定义的目标检测数据集两种类型的数据。其中MNIST作为手写字体识别基准数据库使用了6万张带有标注的手写数字图像作为训练样本,并使用了1万张作为测试样本每张手写数字图片均为28x28像素的灰色图像;而目标检测数据集则是一个二分类图像集合用于判断是否存在行人该集合包含了1509张训练用例和631张测试样例同样遵循28x28像素的灰度图格式

具体网络进行的工作与一些相关操作:

1.限定一个时间窗口,例如20ms,程序中即依次仿真0-19时刻。

对于每个时刻而言,在执行以下步骤时:首先将输入(形状为(1,28,28))的图像被转换为784维的列向量,并经过标准化处理以使其中每个元素都被调整到0至1的范围内。接着通过与随机参考向量进行比较的方法对这个784维向量进行赋值操作,并将其结果作为输入信号spike提供给后续过程使用。

3.网络框架:784-800-10。

  1. 在窗口时间段内最后观察到的末尾编号为0至9的神经元(标签是0-9)的动作电位频率大小决定了该图片表示的数字。

注意事项:在目标检测数据集中, 其中在目标检测数据集下训练得到的输入脉冲具有较高的激发率, 相较于MNIST 数据集而言, 相应地, 在目标检测数据集中需要调整的阈值有所提升。

下面两幅图是实验结果(和其他方法对比):

在这里插入图片描述

二、动态数据集的相关实验

动态数据集相比静态数据集能提供更多时域特征。N-MNIST数据集是基于动态视觉传感器(DVS)将静态MNIST数据转换为动态版本的输入信号。

调节DVS使其沿着等腰三角形的三条边依次运动,在像素强度发生变化时立即触发并生成相应的spike train信号。如图所示为实验结果图谱:

在这里插入图片描述

因为每个像素点的强度变化有两种情况——变亮或变暗——所以DVS能够捕获这两种spike事件类型(即on-event与off-event)。而N-MNIST则允许图像在其扫描过程中发生相对偏移,在这种情况下其覆盖范围为 34\times34 像素区域。

通过查看上图可以看出on-event与off-event之间的差异非常显著。因此,在图形中使用两个通道能够有效鉴别这两种事件类型;网络架构则设计为:34\times34\times2-400-400-10

下图是用N-MNIST数据集进行各种方法的结果比较(两层400合成了一层800):

678.png

基于人工神经网络的方法通常采用固定架构模型。然而由于动态数据集中的图像质量相对较低 这种方法在实际应用中表现出色并不理想 且不得不放弃采用硬件友好型事件驱动架构这一特点。相比之下 在处理事件流图像方面具有明显优势的是突触响应网络(SNN)。

卷积网络

扩展将SNN的全连接网络引入到卷积架构中能够显著提升网络深度,并整合更多时序数据特征。从处理输入数据的方式来看,在卷积架构与全连接架构之间存在显著差异。在每个多通道的滤波器作用下,在卷积层中每个神经元都会接收到对应区域的空间滤波输出,并通过Leaky Integrate-and-Fire(LIF)模型动态地更新其权重参数。对于池化操作而言,在SNN架构中平均池化(average pooling)被选用替代传统的最大值池化(max pooling),因为后者无法有效利用二值化的神经信号。

同样在MNIST和目标检测数据集进行测试。

在MNIST数据集上训练时,该模型采用了一个由多个卷积层构成的架构;这些卷积层交错设置并包含了两个交错设置的平均池化模块以及一个全连接层。与经典CNN架构相似,在输入数据预处理阶段采用了通过弹性变形(elastic deformation)技术对输入数据进行预处理的方法。

下面是卷积网络的结果比较(MNIST&objection detection dataset):

555.png

一些分析

导数近似的曲线选择及其相关参数设置对结果的影响程度:尽管存在不同选择之间的差异不大(即差异较小),但当参数a_i设置过大或过小时(即超出合理范围),会导致计算效果显著下降甚至失败(即结果质量较差)。值得注意的是,在用曲线模拟脉冲活动进行导数计算时(即求解过程中的核心操作),核心在于准确捕捉非线性特征(即模型的关键特性),而其形状并非决定性因素。

2.与SDBP相比,在本研究中特别增加了时间因素的影响,从而提升了结果的准确率.例如,请参考下图

666.png
  1. SNN网络的训练过程对参数初始化极为敏感。然而,在本文提出的方法中这种敏感性较低,在采用侧抑制技术、正则化处理以及标准化处理等技巧后能有效降低这种敏感性。为了使SNN网络展现出更好的稳定性与鲁棒性特征,则需要充分考虑其动态特性的变化情况。

未来的研究工作将围绕两个重点展开:其一是拓展本文所提出的框架至涉及时间特性的领域中去,在动态数据处理、视频流鉴定以及语音识别等多个方面展开探索;其二是如何提升SNN在GPU/CPU以及神经形态芯片上的训练效率

code reference

全部评论 (0)

还没有任何评论哟~