IJCV 2015 ANN2SNN的开山之作
摘要
本文提出一个将深度CNN转换为SNN的新方法,使得CNN可以直接映射到神经形态硬件上实现低耗高性能。首先将CNN裁剪满足SNN的要求,训练CNN,最后将CNN权重直接应用于SNN。在Neovision2 Tower and CIFAR-10数据集上达到与源CNN 相当的准确率。这种基于脉冲硬件比基于FPGA硬件上实现CNN节能两个数量级。
背景
CNN适合在具有显著数据处理能力的传统CPU上实现,尽管它很适合处理视觉问题并具有高准确率,但CNN变得越来越复杂,需要更多算力,限制了CNN的应用。而基于脉冲的硬件具有低能耗的优势,于是本文考虑将CNN转换为SNN。
主要内容与做法
CNN直接转换成SNN造成难以接受的精度损失原因:
- CNN中负输出值在SNN中很难准确表示,负值产生原因:
a. tanh()输出在-1.0到1.0
b. 卷积层输出是权重 * 输入 + 偏置,当权重与偏执均为负会造成输出为负
c. 预处理可能产生负值
尽管可以通过抑制性神经元表示负值,但会使神经元数量增加一倍,会带来更大的硬件资源与功耗,并不可取。 - SNN不好表示bias
- 最大池化需要两层SNN,增加复杂性可能导致精度损失
为使其适合SNN,对CNN结构的调整:
- 使所有层的输出值为正:
a.对预处理结果使用abs()
b.使用ReLU作为激活函数 - 去掉所有卷积层和全连接层的bias
- 使用平均池化代替最大池化
图1. 源CNN结构
图2. 调整后的CNN结构
图3. 转换后的SNN结构
图4. SNN具体结构(本文使用IF神经元模型)
注意:本文提出的方法并不局限于IF神经元模型,也可以使用其他的脉冲神经元模型,但需要其特性与CNN激活函数匹配。
总结
本文提出了一种将CNN转换为SNN的新方法,适用映射到基于脉冲的神经形态硬件,可以将任意大小的CNN映射到SNN并获得源CNN的性能优势。