Page 362 - 《软件学报》2025年第4期
P. 362
1768 软件学报 2025 年第 36 卷第 4 期
构在图像数据与序列数据处理上拥有的优势, 也吸收了脉冲序列作为传递的信息时在功耗方面的优化, 更利于边
缘部署. 然而, 这种结构无法彻底解决传统 ANN 固有的缺陷, 如模型过于复杂时训练难度增加, 可解释性弱, 以及
对于硬件故障的容错能力差等.
1.4.2 动态拓扑 SNN
进化算法 (evolutionary algorithm, EA) 是一种基于种群的元启发式算法, 可用于直接优化网络拓扑结构和模
型超参数, 或优化突触权重和延迟 [103,104] . ESNN 是一种结合了 SNN 和进化算法的神经网络模型. 在 ESNN 中, 输
入数据被编码成脉冲序列并传递到网络中, 利用脉冲网络的进化结构动态生成新的脉冲神经元, 并将其添加到相
应的神经元储备类别中. 目前, 常用的进化算法有差分进化、语法进化、和谐搜索算法和粒子群优化等 [105−107] .
除了采用进化算法外, 对神经元模型进行改进, 让脉冲神经元获得不断自我优化的能力, 也可以得到 ESNN.
文献 [108] 在传统 LIF 脉冲神经元模型的基础上提出了进化脉冲神经元和进一步改进的模型——自适应进化脉
冲神经元, 所提出的神经元模型能根据突触前的输入和随后的神经元发射事件, 自适应地调整突触前的输入电流.
实验证明, 所提出的进化模型还能降低网络发射活动的速率, 使网络对输入的响应速度更快, 但触发的脉冲信号和
计算操作更少, 有助于在神经形态硬件上实现 SNN 模型的低功耗计算.
目前, ESNN 在神经形态硬件上的实现很受欢迎, 因为这类动态拓扑的 SNN 不依赖于模型的特定特征, 可以
灵活地发挥所选择硬件平台的特有优势, 适用于各种设备和应用程序. 然而, 目前对于较为复杂的模型或应用程
序, ESNN 也存在收敛速度较慢的问题, 未来还需要不断优化 ESNN 的训练算法.
2 神经形态计算工具链
本节将对 SNN 边缘部署的工具链进行介绍, 包括软件编程框架和仿真工具. 不论何时, 开发工具都在一个领
域的研究中扮演着重要的角色. 作为算法和物理设备之间的桥梁, 高效且完善的工具链能简化开发过程, 加速应用
程序的部署, 促进合作和知识共享, 为一个领域的研究提供更便捷的条件.
2.1 软件编程框架
编程框架是一种提供了特定功能和结构的软件工具集合, 使开发者不必过多关注底层的技术细节, 只需专注
于解决问题和实现功能. 在深度学习领域中, TensorFlow [109] 、PyTorch [110] 和 Caffe [111] 这些耳熟能详的框架使得构
建和训练神经网络变得简单而快速, 具有广泛的应用场景. 然而, 这些传统框架的原生版本并没有提供专门的神经
形态计算支持, 通常需要添加一些第三方库和扩展才能支持 SNN 模型的开发和训练. 随着神经形态计算及 SNN
的快速发展, 为了让研究者们的想法更好地被实现, 设计相应的编程框架十分有必要, 下面简单介绍几种现有的
SNN 专用编程框架.
BindsNET [112] 是一个用于快速构建和模拟 SNN 的开源 Python 软件包. 它支持 STDP 训练算法, 允许研究人员
在 CPU 或 GPU 上测试软件原型, 然后将模型部署到专用硬件上. BindsNET 的缺点在于它无法实现复杂的网络,
并且缺乏对延迟突触的支持.
SpikingJelly [113] 是一个基于 PyTorch 的开源库, 专门用于构建和训练 SNN. SpikingJelly 支持各种常见的 SNN
训练方法, 比如代理梯度法, STDP, ANN-to-SNN 转换法等等. 此外, 通过实现 Tempotron 神经元 [114] , SpikingJelly
还可以支持事件驱动的 SNN.
SpykeTorch [115] 是基于 PyTorch 的 SNN 开源高速编程框架, 采用时间编码方案, 并支持 STDP 和带有奖励调节
的 STDP 学习规则 [116] . SpykeTorch 具有很强的通用性, 所有的计算都基于张量, 完全由 PyTorch 函数实现, 在
CPU、GPU 或多 GPU 平台上具备即时优化能力.
目前, 这些 SNN 专用的编程框架都处于积极开发迭代的过程中, 还存在可扩展性方面的问题, 且不够稳定. 在
未来, 扩大这些编程框架的软硬件兼容性并形成稳定版本至关重要. 后文表 3 简单总结了目前 SNN 专用编程框架.
2.2 仿真工具
在将 SNN 模型部署到硬件设备前, 通常需要进行软件模拟仿真. 通过软件仿真, 可以验证硬件设计的功能是