SNN(TTFS)论文阅读——LC-TTFS

LC-TTFS: Towards Lossless Network Conversion for Spiking Neural Networks with TTFS Coding

证明目标

论文的最终数学目标是证明:在 LC−TTFSLC-TTFSLC−TTFS 算法的约束下,ANN 和 SNN 之间存在一个完美的、逐层传递的映射关系。

用数学语言来描述这个目标就是:

假设在 l−1l-1l−1 层,ANN的激活值 aj(l−1)a_j(l-1)aj(l−1) 和 SNN 的脉冲时间 tj(l−1)t_j(l-1)tj(l−1) 遵循以下编码关系:

t_j\^{l-1} = (l-1) + 1 - a_j\^{l-1} = l - a_j\^{l-1} \\quad \\cdots \\text{(公式 9)}

那么,我们必须能够证明 ,在下一层 lll,其激活值 aila_i^lail 和脉冲时间 tilt_i^ltil 也将严格遵循相同的编码关系

t_i\^l = l + 1 - a_i\^l \\quad \\cdots \\text{(公式 19)}

这个证明本质上是一个数学归纳法:只要证明了这个从 l−1l-1l−1 层到 lll 层的传递关系成立,那么整个网络的转换就是无损的,因为这个完美的编码关系在网络中逐层被保持下去了。

证明推导步骤 (The Derivation Steps)

作者的推导过程是一个"从一般到特殊"的过程。他们首先写出SNN神经元发放时间的一般表达式,然后一步步代入他们提出的约束条件,最终将其化简为我们想要的证明目标。

起始点:SNN神经元发放时间的一般表达式

从SNN最基本的物理规则出发:当神经元 iii 的膜电位 Vil(t)V_i^l(t)Vil(t) 第一次达到发放阈值 ϑϑϑ 时,它就会发放一个脉冲,此时的 ttt 就是它的发放时间 tilt_i^ltil。

  1. 膜电位公式 (来自公式4):
    Vil(t)=∑jwijl(t−tjl−1) V_i^l(t) = \sum_{j} w_{ij}^l (t - t_j^{l-1}) Vil(t)=j∑wijl(t−tjl−1)

  2. 发放条件 (来自公式5):
    Vil(til)=ϑ V_i^l(t_i^l) = \vartheta Vil(til)=ϑ

  3. 联立上面两个式子,我们可以解出 tilt_i^ltil 的一般表达式 (公式8):
    ∑jwijl(til−tjl−1)=ϑ \sum_{j} w_{ij}^l (t_i^l - t_j^{l-1}) = \vartheta j∑wijl(til−tjl−1)=ϑ

    til∑jwijl−∑jwijltjl−1=ϑ t_i^l \sum_{j} w_{ij}^l - \sum_{j} w_{ij}^l t_j^{l-1} = \vartheta tilj∑wijl−j∑wijltjl−1=ϑ

    til=ϑ+∑jwijltjl−1∑jwijl⋯(这是推导的起点) t_i^l = \frac{\vartheta + \sum_{j} w_{ij}^l t_j^{l-1}}{\sum_{j} w_{ij}^l} \quad \cdots \text{(这是推导的起点)} til=∑jwijlϑ+∑jwijltjl−1⋯(这是推导的起点)

    • 问题显现 :此时的 tilt_i^ltil 表达式非常复杂,它不仅依赖于输入的脉冲时间 tj(l−1)t_j(l-1)tj(l−1),还依赖于一个不确定的分母项 ∑w∑w∑w。这就是作者定义的**"时间扭曲问题"**的数学根源。

    • 以ANN为例,神经元的输出只依赖于:
      ail=f(∑wijlajl−1+bil) a_i^l = f(\sum w_{ij}^l a_j^{l-1} + b_i^l) ail=f(∑wijlajl−1+bil)

      如果两个神经元有相同的加权输入和 ,它们会有相同的输出(假设相同的偏置和激活函数)。但是SNN中,对于两个得到相同加权和(充电电流)的神经元来说,它们理应表现出相同的特性,但是由于权重和的存在导致它们发放时间并不一致。这就是时空扭曲问题。

步骤一:代入编码关系,连接SNN与ANN

现在,我们将 l−1l-1l−1 层的编码关系
tj(l−1)=l−aj(l−1) t_j(l-1) = l - a_j(l-1) tj(l−1)=l−aj(l−1)

(公式9) 代入上述一般表达式中,从而将 tilt_i^ltil 和ANN的激活值 aj(l−1)a_j^(l-1)aj(l−1) 联系起来。
til=ϑ+∑jwijl(l−ajl−1)∑jwijl t_i^l = \frac{\vartheta + \sum_{j} w_{ij}^l (l - a_j^{l-1})}{\sum_{j} w_{ij}^l} til=∑jwijlϑ+∑jwijl(l−ajl−1)

til=ϑ+l∑jwijl−∑jwijlajl−1∑jwijl⋯(公式 10) t_i^l = \frac{\vartheta + l \sum_{j} w_{ij}^l - \sum_{j} w_{ij}^l a_j^{l-1}}{\sum_{j} w_{ij}^l} \quad \cdots \text{(公式 10)} til=∑jwijlϑ+l∑jwijl−∑jwijlajl−1⋯(公式 10)

这个公式是连接两个世界的桥梁,但形式依然很丑陋。

骤二:施加第一个核心约束------权重正则化

为了解决"时间扭曲问题",作者引入了第一个关键约束:强制让每个神经元的输入权重总和为1
∑jwijl=1 \sum_{j} w_{ij}^l = 1 j∑wijl=1

将这个约束代入公式(10):
til=ϑ+l(1)−∑jwijlajl−11 t_i^l = \frac{\vartheta + l(1) - \sum_{j} w_{ij}^l a_j^{l-1}}{1} til=1ϑ+l(1)−∑jwijlajl−1

til=ϑ+l−∑jwijlajl−1 t_i^l = \vartheta + l - \sum_{j} w_{ij}^l a_j^{l-1} til=ϑ+l−j∑wijlajl−1

分母消失了,"时间扭曲"的根源被消除了。

步骤三:施加第二个核心约束------阈值设定\

进一步设定 ϑ=1ϑ = 1ϑ=1。这既是为了简化计算,也与后面使用的 ReLU1ReLU1ReLU1 激活函数相匹配。代入后得到:
til=1+l−∑jwijlajl−1⋯(公式 15) t_i^l = 1 + l - \sum_{j} w_{ij}^l a_j^{l-1} \quad \cdots \text{(公式 15)} til=1+l−j∑wijlajl−1⋯(公式 15)

  • 关键洞察 :请注意,这里的 ∑wijlaj(l−1)∑ w_{ij}^l a_j(l-1)∑wijlaj(l−1) 正是ANN中第 lll 层神经元 iii 在激活函数之前 的加权输入和(即预激活值)。
步骤四:施加第三个核心约束------动态阈值与ReLU1的对称性

我们离目标 til=l+1−ailt_i^l = l + 1 - a_i^ltil=l+1−ail 已经非常接近了。区别在于,我们现在得到的是预激活值 ,而目标是后激活值 aila_i^lail。

这里的推导非常巧妙,利用了作者设计的动态阈值函数 Fl(t)F^l(t)Fl(t) 和 ReLU1ReLU1ReLU1 激活函数 y(x)y(x)y(x) 之间的数学对称性

论文中的函数 FFF 是一个变换函数 (transformation function),它代表了"动态发放阈值 (dynamic firing threshold)"机制所产生的效果。

简单来说,FFF 的作用是将一个计算出的、理论上的脉冲发放时间,映射(或"限制")到一个预先为该层神经元分配好的、允许的时间窗口内

  1. 要解决的问题: 论文指出了在将 ANN (人工神经网络) 转换为 SNN (脉冲神经网络) 时存在一个"时间动态问题 (temporal dynamics problem)",即脉冲可能会过早或过晚发放,导致信息处理出错。为了解决这个问题,作者提出了一种"动态发放阈值"机制。

  2. FFF 的具体映射关系 : 这个机制的效果等同于应用了函数 FFF。根据论文中的公式 (12) 和图 3(b),对于第 lll 层的神经元,其允许的发放时间窗口是 [Tl,T(l+1))[Tl, T(l+1))[Tl,T(l+1))。

    • 如果一个计算出的脉冲时间 ttt 早于这个窗口的起始时间 TlTlTl,FFF 会将其映射为窗口的起始时间 TlTlTl。
    • 如果 ttt 恰好在允许的时间窗口内,FFF 不会改变它。
    • 如果 ttt 晚于这个窗口的结束时间 T(l+1)T(l+1)T(l+1),FFF 会将其映射为窗口的结束时间 T(l+1)T(l+1)T(l+1)。

    本质上,FFF 是一个**"裁剪"或"钳位"(clamping)函数**,它确保了无论计算出的脉冲时间是多少,最终实际的脉冲时间都必须落在为该层分配的特定时间段内。

  3. 最终目的: 通过这种映射,该算法保证了 SNN 的每一层都在一个独立的、不重叠的时间窗口内完成计算。前一层的所有脉冲都发放完毕后,后一层才开始发放脉冲。这解决了"时间动态问题",确保了从 ANN 的激活值到 SNN 的脉冲时间的转换是稳定和"近乎无损"的,从而实现了高精度的网络转换。

  1. ANN中的关系是:
    ail=y(∑jwijlajl−1) a_i^l = y(\sum_{j} w_{ij}^l a_j^{l-1}) ail=y(j∑wijlajl−1)

  2. 作者在论文中给出了一个关键的恒等式(公式17):
    Fl(x)=l+1−y(l+1−x) F^l(x) = l+1 - y(l+1-x) Fl(x)=l+1−y(l+1−x)

  3. 我们在步骤三得到的 tilt_i^ltil 是一个"理论计算出的"时间,它可能超出允许的范围。实际的脉冲时间是经过动态阈值函数 FlF^lFl 钳位后的结果,即
    Actualtil=Fl(til) Actual t_i^l = F^l(t_i^l) Actualtil=Fl(til)

现在,我们将步骤三得到的 tilt_i^ltil (公式15) 代入 Fl(x)F^l(x)Fl(x) 的 xxx 中:
Actualtil=Fl(1+l−∑jwijlajl−1) \text{Actual} t_i^l = F^l(1 + l - \sum_{j} w_{ij}^l a_j^{l-1}) Actualtil=Fl(1+l−j∑wijlajl−1)

利用上面的恒等式
Fl(x)=l+1−y(l+1−x) F^l(x) = l+1 - y(l+1-x) Fl(x)=l+1−y(l+1−x)

,我们得到:
Actualtil=(l+1)−y((l+1)−(1+l−∑jwijlajl−1)) \text{Actual} t_i^l = (l+1) - y \left( (l+1) - (1 + l - \sum_{j} w_{ij}^l a_j^{l-1}) \right) Actualtil=(l+1)−y((l+1)−(1+l−j∑wijlajl−1))

化简括号内的部分:
(l+1)−(1+l−∑jwijlajl−1)=l+1−1−l+∑jwijlajl−1=∑jwijlajl−1 (l+1) - (1 + l - \sum_{j} w_{ij}^l a_j^{l-1}) = l+1-1-l + \sum_{j} w_{ij}^l a_j^{l-1} = \sum_{j} w_{ij}^l a_j^{l-1} (l+1)−(1+l−j∑wijlajl−1)=l+1−1−l+j∑wijlajl−1=j∑wijlajl−1

所以,上式变为:
Actualtil=(l+1)−y(∑jwijlajl−1) \text{Actual} t_i^l = (l+1) - y(\sum_{j} w_{ij}^l a_j^{l-1}) Actualtil=(l+1)−y(j∑wijlajl−1)

我们知道
ail=y(∑jwijlajl−1) a_i^l = y(\sum_{j} w_{ij}^l a_j^{l-1}) ail=y(j∑wijlajl−1)

,代入进去:
Actualtil=l+1−ail \text{Actual} t_i^l = l+1 - a_i^l Actualtil=l+1−ail

证明完成! 我们成功地从 l−1l-1l−1 层的编码关系和SNN的基本物理规则出发,通过应用作者提出的三个核心约束(权重和为1,阈值为1,动态阈值/ReLU1),严格推导出了 lll 层的编码关系。

为什么文章强调不能使用BN,BN会破坏对权重的归一化?

普通的BN会引入一个新的、可学习的缩放因子(γ),这个因子会破坏(或者说"覆盖")掉∑w=1这个约束,从而让整个数学推导功亏一篑。

一个标准的BN层,作用在预激活值zzz上,执行以下两个步骤:

  1. 归一化 (Normalize)
    z^=z−μBσB2+ϵ \hat{z} = \frac{z - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}} z^=σB2+ϵ z−μB

    它将一批数据(a batch)的zzz值调整为均值为0,方差为1的分布。μBμ_BμB和σBσ_BσB是这批数据的均值和方差。

  2. 缩放和偏移 (Scale and Shift)
    zBN=γz^+β z_{BN} = \gamma \hat{z} + \beta zBN=γz^+β

    这是最关键的一步!BN层会用两个可学习的参数 γγγ (gamma, 缩放) 和 βββ (beta, 偏移) 对归一化后的 hat(z)hat(z)hat(z) 进行处理,得到最终的输出 zBNz_{BN}zBN。这个zBNz_{BN}zBN才是真正送入激活函数(如ReLU)的值。

冲突点就在这里:

  • 神经网络在训练时,为了降低损失,会自由地学习γγγ和βββ的值 。γγγ几乎不可能是1,βββ也几乎不可能是0。
  • 现在,进入激活函数的不再是zzz,而是zBNz_{BN}zBN。
  • 那么,我们之前推导出的tspike=(l+1)−zt_{spike} = (l+1) - ztspike=(l+1)−z这个公式,就必须被替换成 tspike=(l+1)−zBNt_{spike} = (l+1) - z_{BN}tspike=(l+1)−zBN。

我们把zBNz_{BN}zBN的完整形式代进去:
tspike=(l+1)−(γ∑wa−μBσB+β) t_{spike} = (l+1) - (\gamma \frac{\sum w a - \mu_B}{\sigma_B} + \beta) tspike=(l+1)−(γσB∑wa−μB+β)

这完全是一场灾难

  1. γγγ的破坏性 :我们费尽心机通过权重正则化让∑w=1∑w=1∑w=1,但现在又凭空出现了一个新的缩放因子γγγ 。这个γγγ是网络自己学到的,我们无法控制它等于1。它重新引入了我们想要消除的"时间扭曲问题"。γγγ就像一个不可预测的乘数,彻底破坏了zzz和tspiket_{spike}tspike之间干净的线性关系。

  2. βββ和μBμ_BμB的破坏性 :βββ和μBμ_BμB引入了偏移量,同样也破坏了原始的线性关系。

相关推荐
2301_797892832 小时前
论文阅读:《A Universal Model for Human Mobility Prediction》
论文阅读
我要学脑机2 小时前
prompt[ai开发项目指示]
人工智能·prompt
天天进步20152 小时前
Python全栈项目:结合Puppeteer和AI模型操作浏览器
开发语言·人工智能·python
星座5282 小时前
AI+CMIP6数据分析与可视化、降尺度技术与气候变化的区域影响、极端气候分析
人工智能·ai·气候·水文·cmip6
mwq301232 小时前
MiniMind 模型架构创新技术详解
人工智能
骄傲的心别枯萎2 小时前
RV1126 NO.45:RV1126+OPENCV在视频中添加LOGO图像
人工智能·opencv·计算机视觉·音视频·rv1126
这儿有一堆花2 小时前
向工程神经网络对二进制加法的巧妙解决方案
人工智能·深度学习·神经网络
撬动未来的支点2 小时前
【AI】拆解神经网络“技术高墙”:一条基于“根本原理-补丁理论-AI部署”哲学的学习路径
人工智能·神经网络
dxnb223 小时前
【Datawhale25年11月组队学习:hello-agents+Task1学习笔记】
人工智能·学习