《Neurocomputing》:FTC-SNN: Boosting spiking neural networks via fourier and cross-temporal constraint
编辑推荐:
本文提出基于傅里叶级数(FS)的替代梯度方法,通过频率域近似保持原梯度主方向,并结合余弦相似性约束提升时空信息利用率。实验在静态和动态数据集上验证,优于现有方法。
Tao Chen|Lidan Wang|Shukai Duan
重庆科技大学计算机科学与工程学院(人工智能学院),中国重庆,401331
摘要
脉冲神经网络(SNNs)是一种受大脑启发的计算模型,它们利用脉冲神经元生成离散的二进制脉冲序列来实现类似生物神经元的信息传输,从而表现出生物学上的合理性和能源效率。由于脉冲活动的梯度在几乎所有地方都为零,因此提出了替代梯度(SG)来缓解反向传播算法在优化SNNs时的局限性。然而,之前的SG函数可能会破坏优化后SNNs的梯度主方向,从而限制了直接训练SNNs的性能。在这项工作中,我们提出了一种新的视角来重新审视SG函数,我们在频域中使用傅里叶级数(FS)来近似脉冲活动,我们的方法在低频域可以与原始的阶跃函数保持一致。在训练阶段,为了提高计算效率,我们使用有限数量的FS分量来估计脉冲活动的梯度。此外,之前用于训练SNNs的目标函数通常忽略了输出层的时间信息,这会导致性能下降。为此,我们提出了余弦相似性(CS)来约束SNNs在每个时间步的输出分布,使其更加一致,从而更好地利用不同时间步中的信息,并充分利用SNNs的时间信息处理能力。我们在静态数据集CIFAR-10/100以及神经形态数据集DVS-CIFAR10和N-Caltech101上进行了系列实验。实验结果表明,我们的方法与现有方法相比具有竞争力。代码将在
https://github.com/CHNtao/FTC-SNN处提供。
引言
近年来,人工神经网络(ANNs)已在图像识别[1]、对象检测[2]、语义分割[3]等计算机视觉领域取得了巨大成功[4]、[5]、[6]。然而,ANNs中密集且昂贵的浮点乘累加(MAC)操作导致训练合适的模型需要大量能源,同时也阻碍了它们在边缘设备中的部署[7]。这也促进了模型压缩[8]、网络量化[9]和网络剪枝[10]等轻量级技术的发展。还有一类特殊的SNNs能够以较低的能量消耗实现快速推理,并具有独特的信息处理机制[7]。SNNs使用脉冲神经元生成的稀疏二进制脉冲序列进行信息传输,从而避免了网络推理过程中的MAC操作。脉冲神经元的当前膜电位由突触前输入及其历史膜电位决定,当膜电位超过特定阈值时,就会向后一个神经元发射脉冲。这种特定的脉冲发射机制类似于人脑中的动作电位生成方式,不仅与事件驱动的神经形态芯片(例如Tianjic [12]和Loihi [13])高度兼容,还能在这些设备上实现节能操作。
脉冲神经元的这种特殊发射机制是一把双刃剑,这种全有或全无的脉冲活动不可避免地阻止了将反向传播算法直接应用于SNNs的训练[14]。为了缓解脉冲活动的不可微特性,提出了两种主要方法。一种是称为ANN2SNN [15]、[16]、[17]的间接转换方法,它将训练好的ANNs转换为具有等效网络结构的SNNs,并用脉冲神经元替换ANNs中的非线性激活单元,使SNNs的脉冲频率与ANNs中的激活频率相匹配。尽管这种方法可以缩小SNNs和ANNs之间的性能差距,但它也需要相当多的时间步来减少激活和脉冲频率之间的误差,并且仅适用于静态数据集,不适用于神经形态数据集。此外,转换方法没有充分利用SNNs独特的时空信息处理能力。另一种方法是通过替代梯度学习直接从头开始训练SNNs,在反向传播过程中使用平滑曲线来替代原始的全有或全无脉冲活动[18]。虽然替代梯度可以直接训练SNNs并实现良好的性能,但各种替代梯度选择都使用可微函数来近似阶跃函数,仍然存在梯度消失和梯度爆炸的问题,从而导致SNNs性能下降。研究人员已经做出了许多努力来解决这个问题,但他们使用的替代梯度函数可能会破坏优化SNNs的真实梯度主方向。
此外,研究人员还尝试从其他角度增强SNNs的信息表示能力。例如,Fang等人[19]使用了具有可学习膜时间常数的脉冲神经元,这不仅增强了神经元的异质性,还改善了SNNs的信息表示空间。GLIF [20]结合了多种生物特征来提高神经元的表达能力和动态多样性。RecDis-SNN [21]通过设计MPD损失来调整膜电位分布,以缓解直接训练SNNs时可能出现的梯度消失和梯度爆炸问题。这些方法确实有助于SNNs领域的发展。SNNs能够处理时间相关信息,但上述所有方法都在SNNs的输出层使用脉冲频率或平均膜电位作为分类指标,忽略了每个时间步的输出分布。例如,当SNNs在不同时间步接收输入时,可能会在输出层产生不同的输出分布,而使用反向传播算法训练的SNNs主要优化输出层的脉冲频率或平均膜电位与真实标签之间的差异,这可能导致测试过程中的错误推理。
SNNs中传统的替代梯度方法通常在空间域直接近似阶跃函数。这种近似常常会扭曲真实梯度的主要方向。相比之下,我们的方法从频域角度分析问题。通过傅里叶级数分解,阶跃函数可以表示为正弦函数的组合。通过保留构成函数主要能量的低频分量,傅里叶级数近似准确捕捉了阶跃函数的本质特征。因此,在反向传播过程中,我们方法得出的梯度更忠实地反映了阶跃函数的真实梯度方向。其次,之前提到的使用平均膜电位或脉冲频率作为分类指标的方法忽略了SNNs中的时间信息。为了更好地利用SNNs的时间信息处理能力,我们在原始目标函数中加入了余弦相似性约束项,使SNNs输出层的输出分布在每个时间步趋于一致,从而提高不同时间步输出的一致性。所提出方法的整体工作流程如图1所示。本文的主要贡献可以总结如下:
1.我们在频域中使用傅里叶级数来高效近似脉冲活动。这为缓解脉冲活动的不可微特性提供了新的视角。通过使用傅里叶级数,我们可以保持脉冲活动真实梯度的主要方向,从而加快SNNs的训练速度并提高训练精度。
2.我们引入了一种新方法,使用余弦相似性来约束SNNs输出层在每个时间步的输出分布,使输出更加一致。这有助于更好地利用每个时间步输出携带的信息来指导SNNs的训练。
3.我们在静态数据集(CIFAR-10/100)和神经形态数据集(DVS-CIFAR10和N-Caltech101)上评估了我们的FTC-SNN的有效性。一系列实验结果表明,所提出的两种方法具有一定的优势,并展示了我们余弦相似性约束的有效性。
小节片段
替代梯度
由于脉冲神经元的发射活动不可微,直接使用反向传播算法从头开始训练SNNs存在困难,最常用的方法是使用替代梯度。由于脉冲活动的导数在几乎所有地方都为零,这使得使用基于梯度的优化方法直接训练SNNs变得困难。因此,通常使用可微的替代梯度函数
脉冲神经元模型
SNNs中脉冲神经元作为基本计算单元的作用与ANNs中的神经元不同。ANNs中的神经元执行突触前输入的积分并进行非线性转换以获得输出的真实值。相比之下,SNNs中的脉冲神经元整合突触前输入和历史膜电位,当膜电位超过特定阈值时发射脉冲,
实验
在本节中,我们首先进行消融实验,比较仅使用FS作为替代梯度函数训练的SNNs与基准模型的性能。然后我们对原始目标函数施加余弦相似性约束,以验证所提出方法的有效性。之后,我们将这两种方法与其他最先进(SOTA)方法在两种类型的数据集上进行比较。最后,我们分析了FS项数量的影响,并提供了时间方面的可视化结果
结论
本文从频域角度解决了直接训练的SNNs中脉冲活动的不可微性问题。与现有的在空间域近似脉冲活动并偏离原始阶跃函数的替代梯度方法不同,我们的方法保留了真实梯度的主要方向,从而实现了更快的收敛速度和更好的性能。
此外,我们引入了余弦相似性约束
CRediT作者贡献声明
Tao Chen:撰写——原始草稿、验证、软件、方法论、概念化。Lidan Wang:撰写——审稿与编辑、监督、项目管理、资金获取。Shukai Duan:项目管理、资金获取。
利益冲突声明
作者声明他们没有已知的竞争性财务利益或个人关系可能影响本文报告的工作。
致谢
本工作得到了中国国家自然科学基金(项目编号62576291)、重庆市科技创新重点项目(项目编号CSTB2023TIAD-STX0020)、中央高校基本科研业务费(项目编号SWU-XDZD22009、SWU-XDJH202319)、重庆市高等教育本科教学改革研究重大项目(项目编号251017)以及重庆市水资源局-重庆市科学技术局重点项目的支持
Tao Chen于2020年在重庆西南大学电子与信息工程学院获得信号与信息处理专业的硕士学位。2024年他在同一所大学的人工智能学院获得计算机科学与技术博士学位。他目前就职于重庆科技大学的计算机科学与工程学院(人工智能学院),