"Spike-Driven"
2ephyrus opened this issue · 4 comments
2ephyrus commented
作者您好,
首先祝贺Spike-Driven v2取得优异的性能。
在Spike-Driven v1中,明确给出了定义,如下:
这里严格区分了整形运算与二进制运算,显然,Spike-Driven v1是完全意义上的脉冲驱动结构,即使在数据提取的第一阶段涉及到一次浮点型的卷积运算。
在Spike-Driven v2中,你们引入了新的结构,将v1的哈达玛积替换为矩阵乘法,问题是,第二个矩阵乘法不再是二进制运算,而是整形与二进制的矩阵乘法,它并不是完全意义的二进制运算。
- 观察到文中的这段引用,试问整形运算是否也可通过寻址算法转为加法运算?
- spike-driven的定义是否应当进行调整,只要卷积层输入保证01矩阵,是否就可称作spike-driven?
- 分类器前的SN是否必须?否则它将不是峰值驱动?
- 注意到文中使用了深度可分离卷积用来降低模型参数,问题是,第二个卷积的输入变成了浮点型。
- 目前很多其他形式的spikingtransformer架构,并不满足spike-driven。甚至存在浮点型与二进制的混合运算,您如何看待这种现象?这是否违背SNN的初衷,还是说这是一种新的路线?
jkhu29 commented
- 寻址操作全称为寻找地址。当GEMM一侧为01矩阵时,即可简化为寻址与加法,只是加法变为了整数加法。
- 不应当。卷积层/线性层输入保证01矩阵仅是最最基本的SNN特性,或叫event-driven。event代指01矩阵中的1。
- 分类头前SN是必要的,这与spike-driven无关。
- 请学习“重参数化”概念,推荐:DBB。
- Spike-driven为最严苛的SNN特性,从算法角度来说满足spike-driven的网络具有更低的能耗,为低能耗模型(当然SNN目前最主要的优势也就是低能耗)提供了一种思路。当然这并不意味着其他路线是错误(或所谓违背初衷)的。目前的硬件完全可以做到加载Hybrid ANN&SNN。
2ephyrus commented
- 当GEMM一侧为01矩阵时,即可简化为寻址与加法。是否说明矩阵运算只需保证一侧为01矩阵,另一侧为浮点型矩阵也可以?
- 能否说明,Spikformer等脉冲形式的transformer结构,未在分类头前保证01输入的原因?如果在分类器前使用平均池化,是否也要使用SN?
- 如果使用堆叠的卷积块,是否只需要在第一个卷积块前加上SN?
jkhu29 commented
- 转变为寻址与浮点加法,浮点加法在神经形态硬件上并不好实现。
- 使用AvgPool后仍要使用SN。Spikformer等脉冲形式的transformer结构在avgpool前保证了整数输入。也就是最后一层分类头能够重参数化为整数输入。
- 是的。但是没有非线性激活的单纯堆叠卷积块,网络的表征能力极低。
2ephyrus commented
十分感谢作者的回复!