目录
文章链接:https://arxiv.org/pdf/1903.06530.pdf
主要贡献:1.第一次将深度SNN应用到目标检测领域
2.channel-wise normalization (一种新的标准化方法,方便数据的处理)
3.signed neuron with imbalanced threshold (一种新的激活函数)
baseline:Tiny YOLO(文中说8个卷积层,我硬是没找到这是YOLO的哪个版本。YOLO v1中的Fast YOLO有9个卷积层)
一、脉冲神经网络(spiking neural network,简称 SNN)
第一代神经网络是感知器,它是一个简单的神经元模型并且只能处理二进制数据。第二代神经网络包括比较广泛,包括应用较多的BP神经网络。但是从本质来讲,这些神经网络都是基于神经脉冲的频率进行编码( rate coded)。
个人理解,第二代的神经网络的反向传播算法无生物基础,大脑中没有类似机制;而SNN将时间概念引入后,具有较强的生物基础。最大的区别在于传统的神经网络认为神经元的输入都在同一时间点上,而SNN的输入是出于不同时间点的脉冲(spike)。目前SNN的中文资料很少,第一次接触,可参考以下链接:
https://www.jiqizhixin.com/articles/2018-01-13-7.
https://zhuanlan.zhihu.com/p/45208720.
https://zhuanlan.zhihu.com/p/66907747.
二、Method
1、channel-wise normalization(逐通道标准化)
Layer-wise (逐层标准化):即选取每一层中的最大值(maximum activation)对输入进行标准化。对于输入进行归一化,必须选取合适的maximum activation,过大会导致under-activation,而过小会导致over- activation。
这种方法,对输入进行标准化等同于对该层参数进行标准化,即
问题:应用该种方法检测效果不佳
分析:如下图所示,使用该种方法进行标准化,会使得标准化后的某些值趋于零。而对于回归问题,数据的精确传输必然会影响回归的效果。举个例子,如果要传输0.007,则在一个周期T内需要的脉冲数量为1000,如果脉冲数不够(这可能和SNN的机制有关系,不是很了解),那么就无法传输,从而导致信息的丢失,影响回归的精确度。
总结:作者的思路清晰,从发现问题、分析问题、解决问题、进行验证,论述有理有据。虽然说这种方法在原文中method这部分被作者写得十分有用,但在最后的实验中,其对最终的检测效果所起作用不如下文中的方法大。
2、Signed neuron featuring imbalanced threshold(阈值失衡的标签神经元)
Leaky-ReLU:(一种激活函数,文章中将得很清楚,如下图)
问题:目前的大部分DNN-SNN转换过程中都忽略了激活函数的负数域。可以注意到Tiny YOLO中负值占到了51%(个人觉得这是这篇文章最大的贡献,也是最大的额问题所在,同时也是效果提升的关键所在)。但是在neuromorphic chips(神经形态芯片)中准确的实现leaky-ReLU非常有难度。(为什么难以实现我也不是很清楚)
解决:一种新的激活函数,如下公式和图6所示。
三、结果
1、检测结果
可以看到,文中提出的第二种方法对检测效果的提升作用最大。Vmem 和spike count的区别??(这个我还没搞清楚)
从上图可以看出channel-norm的spiking-YOLO比layer-norm的spiking-YOLO速度更快。这是逐层标准化的第二个作用吧。
2、耗能的比较
可以看出,spiking-YOLO相比Tiny-YOLO耗能更小,而通过逐层标准化的耗能小于逐通道标准化。
四、全文总结与展望
SNN第一次应用于目标检测领域,虽然当前的mAP不是很高,但其在耗能更少,且具有前端性。毕竟SNN被称为第三代人工神经网络,更加符合类脑的逻辑。
(持续完善、更新中,希望能与大家交流,共同进步!!!)