之前存在的问题:
- 复制n份,没用充分利用snn动力学
- 显存占用太大
psn之后不进行reset得到的是0,1?
多步lif的算法流程
spikeBERT
abstract
脉冲神经网络(SNNs)为以更节能的方式实现深度神经网络提供了一条有前途的途径。然而,现有用于语言任务的snn的网络架构仍然是简单的和相对浅层的,深度架构尚未被充分探索,导致与主流的基于transformer的网络(如BERT)相比存在显著的性能差距。本文改进了最近提出的脉冲Transformer (Spikformer),使其能够处理语言任务,并提出了一种两阶段的知识蒸馏方法来训练它,将从BERT中提取知识的预训练与大量未标记文本集合相结合,并通过知识蒸馏再次从相同训练示例上微调的BERT中对特定任务实例进行微调。通过广泛的实验,用所提出方法训练的模型SpikeBERT的性能优于最先进的SNNs,甚至在英文和中文的文本分类任务上取得了与bert相当的结果,而能耗要少得多。
Method
这段话描述了使用两阶段蒸馏过程训练SpikeBERT的方法。
- 第一阶段是在大规模文本语料库上对BERT和SpikeBERT的嵌入层和隐藏层进行对齐。
- 第二阶段是从针对特定任务微调的BERT向完成第一阶段的模型蒸馏逻辑层输出(logits)和交叉熵信息。
文章强调,这种方法能够解决SNNs在训练过程中代理梯度偏差累积的问题。对于特征对齐损失,提出了一个转换策略来处理BERT和SpikeBERT的特征之间的差异。此外,还讨论了数据增强的方法和逻辑层损失的计算方式。最终,这个两阶段的蒸馏方法有助于有效地训练SpikeBERT。
Experiment
- “FLOPs”表示微调后的BERT的浮点运算。
- “SOPs”表示SpikeBERT的突触操作。
spikingBERT
SpikeGPT
Abstract
问题所在:随着大型语言模型规模的增加,运行它们所需的计算资源也在增加。脉冲神经网络(SNNs)作为一种节能的深度学习方法应运而生,它们利用稀疏和事件驱动的激活减少了模型推断过程中的计算负担。尽管在许多计算机视觉任务中与非脉冲模型竞争力相当,但SNNs的训练更具挑战性,其性能相对于现代深度学习而言仍有所落后。
方法:来源于RWKV语言模型的一种生成性语言模型,使用二进制、事件驱动的脉冲激活单元。研究者训练了两种SpikeGPT变体(45M和216M参数)。为了适应自然语言的生成和理解,他们修改了变压器块,将多头自注意力的二次计算复杂度O(N²)降低到线性复杂度O(N)。输入令牌按顺序流入他们的注意力机制(如典型的SNNs)。
Introduction
挑战:
- 性能较低:SNNs在NLP和生成任务中的性能相对较低,尤其是与ANNs比较时。
- 训练困难:直接训练SNNs相较于ANNs到SNNs的转换会导致约20%的性能损失。
- 技术限制:面临梯度消失问题、过度稀疏模型中学习的缺失,以及由于二值化脉冲激活导致的层间带宽限制。
优势:
- 节能:SNNs通过使用离散的尖峰电位来计算和传输信息,提供更高的能效。
- 神经形态硬件兼容性:与基于脉冲的计算和神经形态硬件结合,展现了在低能耗AI方面的潜力。
- 顺序数据处理:SNNs在处理顺序结构的语言数据时具有独特优势,如逐字流输入数据并在句子完成前开始计算。
为解决扩展snn的挑战,同时保留snn的优势,本文提出SpikeGPT语言模型。
SpikeGPT的实现基于将递归集成到Transformer块中,以便与SNNs兼容,并消除二次计算的复杂性,允许将单词表示为事件驱动的脉冲。将循环动力学与线性注意力相结合,使网络能够逐字流输入数据,并在句子完成之前开始计算,同时仍保留复杂句法结构中存在的长程依赖关系。
Method
暂时告一段落
需要解决的问题
- [ ] psn之后不进行reset得到的是0,1?
- [ ] 多步lif的算法流程
- [ ] 论文的阅读 新的
- [ ] 讨论一下微调方案以及转换方案