IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 脉冲神经网络(SNN)论文阅读(三)-----高精度低时延的ANN转换SNN方法 -> 正文阅读

[人工智能]脉冲神经网络(SNN)论文阅读(三)-----高精度低时延的ANN转换SNN方法

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

目录

说明

准备将自己读的一些和SNN(脉冲神经网络)相关的一些论文记录下来,方便自己以后回看也希望能够帮到有需要的人。
删除了文中一些自认为不重要的内容而用自己的话进行简洁描述(很少,比如引言的一些内容),其他部分尽量使用专业用语进行翻译,如果有什么出错或不恰当的地方希望各位批评指出。

相关信息

论文地址: Optimal ANN-SNN Conversion for High-accuracy and Ultra-low-latency Spiking Neural Networks
论文由北京大学(于肇飞组)研究人员发表于ICLR 2022,代码发布于here

主要贡献

论文首先分析了ANN转SNN过程中的一些转换误差,然后提出了quantization clip-floor-shift activation function去替换ANN中的ReLU激活函数,这样转换后的SNN能够在较低的time step内达到较高的精度。

ANN转SNN相关公式以及动机

  • 符号定义:首先,定义 a l \boldsymbol{a^l} al表示ANN中第 l l l层中所有神经元的输出,令 m l ( t ) m^l(t) ml(t)表示在t时刻( t i m e s t e p = t time step=t timestep=t时)脉冲神经元接收到前一层的输入后但并未发放脉冲前的膜电势,令 v l ( t ) v^l(t) vl(t)表示在t时刻( t i m e s t e p = t time step=t timestep=t时)脉冲神经元接收到前一层的输入并发放脉冲后的膜电势。
  • θ l \theta^l θl表示脉冲神经元的放电阈值, s l ( t ) \boldsymbol{s}^l(t) sl(t)表示在时刻 t t t l l l层中所有脉冲神经元发放的脉冲,假设神经元放电后传出的脉冲大小等于阈值 θ l \theta^l θl,令 x l ( t ) = s l ( t ) θ l x^l(t)=s^l(t) \theta^l xl(t)=sl(t)θl表示第 l l l层的神经元向下一层传递的脉冲信息, W l \boldsymbol{W}^l Wl表示第 l l l层神经元和第 l ? 1 l-1 l?1层神经元之间的权值。
  • ANN转SNN:在ANN中有
    a l = h ( W l a l ? 1 ) (1) \boldsymbol{a^l} = h(\boldsymbol{W}^l\boldsymbol{a}^{l-1}) \tag{1} al=h(Wlal?1)(1)
    ,其中 h ( . ) h(.) h(.)表示ReLU激活函数。在SNN中有
    v l ( t ) ? v l ( t ? 1 ) = W l x l ? 1 ( t ) ? s l ( t ) θ l (2) \boldsymbol{v}^l(t) - \boldsymbol{v}^l(t-1) = \boldsymbol{W}^l\boldsymbol{x}^{l-1}(t) - \boldsymbol{s}^l(t)\theta^l \tag{2} vl(t)?vl(t?1)=Wlxl?1(t)?sl(t)θl(2)
    通过将等式2从time step1累加到T,可以得到:
    v l ( t ) ? v l ( 0 ) T = W l ∑ i = 1 T x l ? 1 ( i ) T ? ∑ i = 1 T s l ( i ) θ l T (3) \frac {\boldsymbol{v}^l(t) - \boldsymbol{v}^l(0)}{T} = \frac{\boldsymbol{W}^l \sum_{i=1}^T\boldsymbol{x}^{l-1}(i)}{T} - \frac{\sum_{i=1}^T\boldsymbol{s}^l(i)\theta^l}{T} \tag{3} Tvl(t)?vl(0)?=TWli=1T?xl?1(i)??Ti=1T?sl(i)θl?(3)
    使用 ? l ? 1 ( T ) = ∑ i = 1 T x l ? 1 ( i ) T \phi^{l-1}(T)=\frac{\sum_{i=1}^T \boldsymbol{x}^{l-1}(i)}{T} ?l?1(T)=Ti=1T?xl?1(i)?表示从时刻0到T内的平均突触后电势,可以得到:
    ? l ( T ) = W l ? l ? 1 ( T ) ? v l ( t ) ? v l ( 0 ) T (4) \phi^l(T) = \boldsymbol{W}^l \phi^{l-1}(T) - \frac {\boldsymbol{v}^l(t) - \boldsymbol{v}^l(0)}{T} \tag{4} ?l(T)=Wl?l?1(T)?Tvl(t)?vl(0)?(4)
    等式4描述了相邻层之间脉冲神经元的平均突触后电势( ? \phi ?)的关系。由于 ? ( T ) ≥ 0 \phi(T) \geq 0 ?(T)0,如果让初始膜电势 v l ( 0 ) = 0 \boldsymbol{v}^l(0)=0 vl(0)=0并且忽略掉 v l ( T ) T \frac{\boldsymbol{v}^l(T)}{T} Tvl(T)?,当令T(time step)足够大时等式4就几乎等同于等式1,即此时的SNN公式和ANN公式相等。然而太大的time step会导致很高的推理时间,从而影响SNN的实际应用,因此本文旨在在极低的延迟(time step)下实现高性能的ANN转换SNN。

转换误差分析

本部分详细分析ANN转换SNN中每一层存在的一些误差,此时假设ANN和SNN从前一层接收到的输入相等,即假设 a l ? 1 = ? l ? 1 \boldsymbol{a}^{l-1} = \boldsymbol{\phi}^{l-1} al?1=?l?1,然后开始分析第 l l l层存在的误差。

  • 为了简化后续公式,使用 z l = W l ? l ? 1 ( T ) = W l a l ? 1 \boldsymbol{z}^l = \boldsymbol{W}^l\boldsymbol{\phi}^{l-1}(T) = \boldsymbol{W}^l\boldsymbol{a}^{l-1} zl=Wl?l?1(T)=Wlal?1表示第 l ? 1 l-1 l?1层传递至 l l l层的输入(ANN和SNN均如此)。
  • 绝对转换误差 = 转换后的SNN的输出减去原始ANN的输出:
    E r r l = ? l ( T ) ? a l = z l ? v l ( t ) ? v l ( 0 ) T ? h ( z l ) (5) \boldsymbol{Err}^l = \boldsymbol{\phi}^l(T) - \boldsymbol{a}^l = \boldsymbol{z}^l - \frac {\boldsymbol{v}^l(t) - \boldsymbol{v}^l(0)}{T} - h(\boldsymbol{z}^l) \tag{5} Errl=?l(T)?al=zl?Tvl(t)?vl(0)??h(zl)(5)
    从等式5中可以看到如果 z l > 0 \boldsymbol{z}^l > 0 zl>0 v l ( t ) ? v l ( 0 ) ≠ 0 \boldsymbol{v}^l(t) - \boldsymbol{v}^l(0) \ne 0 vl(t)?vl(0)?=0则转化误差就不为0。事实上,转换误差由以下三个因素造成:
  1. Clipping error:
    由于脉冲神经元的阈值为 θ l \theta^l θl,所以SNN的输出 ? l ( T ) = ∑ i = 1 T x l ( i ) T = ∑ i = 1 T s l ( i ) T θ l ∈ [ 0 , θ l ] \phi^l(T)= \frac{\sum_{i=1}^T \boldsymbol{x}^l(i)}{T} = \frac{\sum_{i=1}^T \boldsymbol{s}^l(i)}{T}\theta^l \in [0,\theta^l] ?l(T)=Ti=1T?xl(i)?=Ti=1T?sl(i)?θl[0,θl],但是ANN的输出 a l ∈ [ 0 , a m a x l ] \boldsymbol{a}^l \in [0,\boldsymbol{a}^l_{max}] al[0,amaxl?],其中 a m a x l \boldsymbol{a}^l_{max} amaxl?表示 a l \boldsymbol{a}^l al的最大值。如图1a所示, a l \boldsymbol{a}^l al可以通过下式映射到 ? l ( T ) \phi^l(T) ?l(T)
    ? l ( T ) = c l i p ( θ l T ? a l T λ l ? , 0 , θ l ) . (6) \phi^l(T) = clip(\frac{\theta^l}{T} \lfloor \frac{a^lT}{\lambda^l} \rfloor, 0, \theta^l). \tag{6} ?l(T)=clip(Tθl??λlalT??,0,θl).(6)
    这里的 c l i p ( x , a , b ) clip(x,a,b) clip(x,a,b)函数表示当 x < a x<a x<a时结果为a, x > b x>b x>b时结果为b, x ∈ [ a , b ] x \in [a,b] x[a,b]时结果为x, ? . ? \lfloor . \rfloor ?.?表示向下取整, λ l \lambda^l λl表示将 a l a^l al映射为 θ l \theta^l θl a l a^l al的值。在ANN中的位于 λ l \lambda^l λl a m a x l a^l_{max} amaxl?之间的激活值都被映射为SNN中的 λ l \lambda^l λl,这样造成的转换误差称为clipping error
    图1
  2. Quantization error(flooring error):
    输出脉冲 s l ( t ) s^l(t) sl(t)是离散事件,因此 ? l ( T ) \phi^l(T) ?l(T)在经过 θ l T \frac {\theta^l}{T} Tθl?量化后也是离散的,当把 a l a^l al映射为 ? l ( T ) \phi^l(T) ?l(T)时,不可避免地存在着一些量化误差。例如图1a中所示,ANN中位于 [ λ l T , 2 λ l T ] [\frac{\lambda^l}{T}, \frac{2\lambda^l}{T}] [Tλl?,T2λl?]之间的激活值在SNN中都被映射为 θ l T \frac{\theta^l}{T} Tθl?
  3. Unevenness error:
    不均匀误差是由于输入脉冲的不均匀造成的。同样的脉冲数量,如果脉冲到达的时间不一样,产生的输出也不一样,可能会产生比预期更多或更少的输出。
    举个例子:
    假设在源ANN中第 l ? 1 l-1 l?1层中的两个神经元和第 l l l层一个神经元的连接权值分别是2和-2,第 l ? 1 l-1 l?1层两个神经元的输出是[0.6, 0.4]。在转换后的SNN中假设 l ? 1 l-1 l?1层的两个脉冲神经元在5个time step内(time step=5)分别发放3个脉冲和2个脉冲,令阈值 θ l = 1 \theta^l =1 θl=1。因此有 ? l ? 1 ( T ) = [ 0.6 , 0.4 ] \phi^{l-1}(T) = [0.6, 0.4] ?l?1(T)=[0.6,0.4]。即使 ? l ? 1 ( T ) = a l ? 1 \phi^{l-1}(T) = a^{l-1} ?l?1(T)=al?1且ANN和SNN中的权值相等 ? l ( T ) \phi^l(T) ?l(T)也会随着脉冲到达的时间不同而变化。ANN中的 a l = [ 2 , ? 1 ] [ 0.6 , 0.4 ] T = 0.4 a^l = [2, -1][0.6, 0.4]^T = 0.4 al=[2,?1][0.6,0.4]T=0.4,对于SNN有如图1b-d所示的三种情况。
    如果两个权值为2和-2的神经元发放脉冲时间分别为 t = 1 , 3 , 5 t=1,3,5 t=1,3,5 t = 2 , 4 t=2,4 t=2,4,突触后神经元将会在 t = 1 , 3 t=1,3 t=1,3时刻发放脉冲,且 ? l ( T ) = 0.4 = a l \phi^l(T)=0.4=a^l ?l(T)=0.4=al。然而如果两个神经元发放脉冲时间分别为 t = 1 , 2 , 3 t=1,2,3 t=1,2,3 t = 4 , 5 t=4,5 t=4,5,突触后神经元将会在 t = 1 , 2 , 3 , 4 t=1,2,3,4 t=1,2,3,4时刻发放四个脉冲且 ? l ( T ) = 0.8 > a l \phi^l(T)=0.8 > a^l ?l(T)=0.8>al;如果两个神经元发放脉冲时间分别为 t = 3 , 4 , 5 t=3,4,5 t=3,4,5 t = 1 , 2 t=1,2 t=1,2,突触后神经元将只会在 t = 5 t=5 t=5时刻发放一个脉冲且 ? l ( T ) = 0.2 < a l \phi^l(T)=0.2 < a^l ?l(T)=0.2<al

上述三种误差中存在一些相互依赖关系,特别是如果 v l ( T ) ∈ [ 0 , θ l ] v^l(T) \in [0, \theta^l] vl(T)[0,θl],不均匀误差会退化为量化误差,因此假设 v l ( T ) ∈ [ 0 , θ l ] v^l(T) \in [0, \theta^l] vl(T)[0,θl]时可以忽略掉不均匀误差的影响从而估计SNN的激活函数。在转换后的SNN中估计输出值 ? l ( T ) \phi^l(T) ?l(T)可以使用 c l i p ( . ) clip(.) clip(.) f l o o r ( . ) floor(.) floor(.)函数来表示:
? l ( T ) ≈ θ l c l i p ( 1 T ? z l T + v l ( 0 ) θ l ? , 0 , 1 ) . (7) \phi^l(T) \approx \theta^lclip(\frac{1}{T} \lfloor \frac{z^lT+v^l(0)}{\theta^l} \rfloor, 0, 1). \tag{7} ?l(T)θlclip(T1??θlzlT+vl(0)??,0,1).(7)
详细推导过程在论文的附录中,感兴趣的朋友可以去查看原始论文。
根据等式7,estimated conversion error E r r ~ l \widetilde{Err}^l Err l可以由下式得出:
E r r ~ l = θ l c l i p ( 1 T ? z l T + v l ( 0 ) θ l ? , 0 , 1 ) ? h ( z l ) ≈ E r r l . (8) \widetilde{Err}^l = \theta^lclip(\frac{1}{T} \lfloor \frac{z^lT+v^l(0)}{\theta^l} \rfloor, 0, 1) - h(z^l) \approx Err^l. \tag{8} Err l=θlclip(T1??θlzlT+vl(0)??,0,1)?h(zl)Errl.(8)

优化的ANN转换SNN

quantization clip-floor activation function

由等式8可以得出,如果将ANN中的ReLU函数替换为带有一定量化步长L的clip-floor函数是不是能够消除掉在time step T=L时刻的转换误差呢?从而能够解决掉低时延的性能退化问题。
由上述思路,论文作者提出了quantization clip-floor activation function去训练ANN:
a l = h ( z l ) = λ l c l i p ( 1 L ? z l L λ l ? , 0 , 1 ) (9) a^l = h(z^l) = \lambda^l clip(\frac{1}{L} \lfloor \frac{z^lL}{\lambda^l} \rfloor,0, 1) \tag{9} al=h(zl)=λlclip(L1??λlzlL??,0,1)(9)
其中的超参数 L L L表示ANN中的量化步长(quantization step),而 λ l \lambda^l λl是可训练的参数,决定着将ANN中 a l a^l al映射到SNN中 ? l ( T ) \phi^l(T) ?l(T)的最大值对应的最大值(比较绕,其实说白了就是 f ( λ l ) = ? l ( T ) m a x f(\lambda^l) = \phi^l(T)_{max} f(λl)=?l(T)max?)。使用这样一个新的激活函数,满足以下几个条件时ANN和转换后的SNN之间的转换误差为0:

  • 条件:量化步长L=time step T; θ l = λ l \theta^l = \lambda^l θl=λl v l ( 0 ) = 0 v^l(0)=0 vl(0)=0
  • 缺陷:在 L ≠ T L \neq T L?=T时误差不一定为0。

进一步改进的quantization clip-floor-shift activation function

基于以上缺陷,论文作者又提出了进一步改进的quantization clip-floor-shift activation function:
a l = h ^ ( z l ) = λ l c l i p ( 1 L ? z l L λ l + φ ? , 0 , 1 ) . (10) a^l = \hat h(z^l) = \lambda^lclip(\frac{1}{L} \lfloor \frac{z^lL}{\lambda^l}+ \varphi \rfloor,0, 1). \tag{10} al=h^(zl)=λlclip(L1??λlzlL?+φ?,0,1).(10)
和式9相比,式10多了一个超参数向量 φ \varphi φ来控制激活函数的偏移(shift)。当 L ≠ T L \neq T L?=T时虽然不能保证转换误差为0,但是可以估计转换误差的期望值。相似于Deng & Gu, 20201,这里同样假设 z i l z^l_i zil?服从一定的均匀分布,当满足以下条件时,可以证明当源ANN中的 φ = 1 2 \varphi= \frac{1}{2} φ=21?时对于任意的T和L,转换误差的期望值接近于0。

  • 条件: θ l = λ l \theta^l = \lambda^l θl=λl v l ( 0 ) = θ l φ v^l(0)=\theta^l \varphi vl(0)=θlφ
    证明过程在论文附录中给出,感兴趣的朋友可以去查看原始论文。
    结果表示当 φ = 1 2 \varphi= \frac{1}{2} φ=21?时即使 L ≠ T L \neq T L?=T平均转换误差也接近于0,从而能够在极低的time step内实现高性能的转换后的SNN。

用于带有quantization clip-floor-shift activation function的训练算法

训练带有quantization clip-floor-shift activation function的ANN也是一个问题。在训练时,论文作者采用straight-through estimatorBengio et al., 20132作为floor函数的导数,即令 d ? x ? d x = 1 \frac{d\lfloor x \rfloor}{dx} = 1 dxd?x??=1。整体的导数规则如下式17所示:训练梯度
其中的 z i l z^l_i zil?表示 z l z^l zl的第 i i i个元素。在训练ANN中使用该梯度结合随机梯度下降算法优化即可。

实验部分

作者使用VGG-16、ResNet-18、ResNet-20等网络结构在CIFAR-10、CIFAR-100和ImageNet数据集上做了实验证明了该方法的优越性。另外表示随着L的增加,转换后的SNN在time step较小时的精度也会随之下降,即L过大过小都不行,推荐的L为4或8.

部分参考文献

本文由CSDN-lan人啊原创,转载请注明!


  1. Shikuang Deng and Shi Gu. Optimal conversion of conventional artificial neural networks to spiking neural networks. In International Conference on Learning Representations, 2020. ??

  2. Yoshua Bengio, Nicholas L′eonard, and Aaron Courville. Estimating or propagating gradients through stochastic neurons for conditional computation. arXiv preprint arXiv:1308.3432, 2013. ??

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-06-20 23:00:25  更:2022-06-20 23:01:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/30 0:54:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码