第八章:脉冲神经网络有监督学习 — 单元习题

总分:100分 + 课堂额外题18分 | 建议用时:80分钟(内容最多)
题型:30%客观题(选择+填空)+ 70%问答(简答+计算)


占位图
在这里插入图片描述

一、单项选择题(每题2分,共8题,16分)

1. Tempotron算法的核心驱动信号是?
A. 脉冲发放频率
B. 膜电位峰值
C. 突触后电流
D. 脉冲精确时序

2. ReSuMe算法与Tempotron的关键区别是?
A. ReSuMe仅用于二分类
B. ReSuMe与神经元模型无关,关注整个脉冲序列
C. ReSuMe不需要STDP机制
D. ReSuMe使用代理梯度

3. STBP算法中,代理梯度函数的核心作用是?
A. 加速前向传播
B. 解决脉冲发放函数不可微的问题
C. 减少网络参数量
D. 替代损失函数

4. 代理梯度函数的共同特点不包括?
A. 中心在阈值附近
B. 远离阈值时接近0
C. 积分面积为0
D. 阈值附近有较大值

5. ANN-SNN转换中,Rate-Based方法使用的ANN激活函数是?
A. Sigmoid
B. Tanh
C. ReLU
D. ReLU1

6. 关于Model-Based归一化和Data-Based归一化,正确的是?
A. Model-Based需要训练数据
B. Data-Based不需要数据
C. Model-Based只看网络权重,不需要数据
D. Data-Based比Model-Based更保守

7. TTFS转换中,ANN使用ReLU1激活函数的原因是?
A. 提高训练速度
B. 将激活值限制在[0,1],建立与spike time的一一对应关系
C. 增加网络非线性
D. 防止梯度爆炸

8. TTFS转换中的"过早放电"问题是指?
A. 神经元发放太晚
B. 正输入先到,在负输入到达前神经元就提前发放了
C. 所有神经元同时发放
D. 神经元始终不发放


二、填空题(每空2分,共7空,14分)

9. STBP算法的三要素是:________模型、________训练框架和代理梯度函数。

10. ANN-SNN转换中精度损失的三个来源是:________、过激活和________。

11. STBP的四种Case中,Case 1(t=T, n=N)只有损失函数的直接梯度;Case 4(t<T, n<N)同时有________域和________域的误差回传。


三、简答题(每题10分,共4题,40分)

12. 请阐述Tempotron算法的核心思想:膜电位模型、二分类学习规则(正样本和负样本分别如何处理)、以及如何扩展到多分类场景。

13. 请解释STBP算法中代理梯度(Surrogate Gradient)的必要性:为什么脉冲发放函数不可微?代理梯度函数需要满足哪些条件?Forward和Backward分别实现了什么?

14. 请对比ANN-SNN转换中Rate-Based和TTFS-Based两种方法,包括信息编码方式、时间窗口需求、ANN激活函数选择,以及各自的优势场景。

15. 试述TTFS转换中过早放电、漏放电和时间扭曲三个问题的成因及解决方案。为什么动态阈值能同时缓解过早放电和漏放电?


四、计算题(每题15分,共2题,30分)

16. 某两层ANN使用ReLU激活,训练完成后需用Data-Based归一化转换为SNN。已知:

  • 第1层权重 W1W^1W1(4×3矩阵),第2层权重 W2W^2W2(2×4矩阵)
  • 训练集上第1层最大激活值 max⁡_act1=2.5\max\_act^1 = 2.5max_act1=2.5,第2层最大激活值 max⁡_act2=3.0\max\_act^2 = 3.0max_act2=3.0
  • 目标发放率 target_rate = 1.0

(1) 计算第1层的缩放因子 λ1\lambda^1λ1,若 max⁡_wt1=0.8\max\_wt^1 = 0.8max_wt1=0.8
(2) 写出缩放后第1层权重 WSNN1W^1_{SNN}WSNN1
(3) 计算第2层的缩放因子 λ2\lambda^2λ2(需考虑previous_factor),若 max⁡_wt2=1.2\max\_wt^2 = 1.2max_wt2=1.2

参考公式:λl=max⁡(max⁡_actltarget_rate,max⁡_wtl)\lambda^l = \max(\frac{\max\_act^l}{\text{target\_rate}}, \max\_wt^l)λl=max(target_ratemax_actl,max_wtl)

17. 给定一个简单的两层网络,使用BP手动推导一个梯度更新步骤。已知:

  • 输入 x1=1,x2=0.5x_1=1, x_2=0.5x1=1,x2=0.5
  • 隐藏层权重 w1=0.5,w2=1.5,w3=2.3,w4=3.0w_1=0.5, w_2=1.5, w_3=2.3, w_4=3.0w1=0.5,w2=1.5,w3=2.3,w4=3.0
  • 输出层权重 w5=1,w6=1w_5=1, w_6=1w5=1,w6=1
  • 目标 t=4t=4t=4
  • 初始前向传播已计算:h1=1.25,h2=2.65,y=3.9,E=12(4−3.9)2=0.005h_1=1.25, h_2=2.65, y=3.9, E=\frac{1}{2}(4-3.9)^2=0.005h1=1.25,h2=2.65,y=3.9,E=21(43.9)2=0.005

(1) 假设网络使用线性激活,计算输出层误差 δout=y−t\delta_{out} = y - tδout=yt
(2) 计算 ∂E∂w5\frac{\partial E}{\partial w_5}w5E,并使用学习率 η=0.1\eta=0.1η=0.1 更新 w5w_5w5
(3) 更新后的 w5w_5w5 是多少?这次更新方向是否正确(使损失减小)?


五、课堂额外题(来自CSDN笔记,共18分)

18.(6分)在STBP代码中,forward和backward分别实现了什么?为什么不能直接使用真实的阶跃函数导数?

19.(6分)在Data-Based Normalization中,转换后的SNN权重应如何缩放?请给出缩放公式并解释各变量含义。

20.(6分)请比较Rate-Based ANN-SNN转换和TTFS-Based ANN-SNN转换的主要区别(至少列出三个维度)。


试卷结束。

第八章:脉冲神经网络有监督学习 — 单元习题答案


一、单项选择题答案

题号 答案 解析
1 B Tempotron利用膜电位峰值V(tmax)V(t_{max})V(tmax)判断是否发放,通过调整权重使峰值超过/低于阈值
2 B ReSuMe与神经元模型无关,仅依赖STDP机制和脉冲序列,关注整个序列的发放匹配
3 B 代理梯度用平滑曲线近似阶跃函数的导数,解决脉冲发放不可微→无法BP的问题
4 C 共同特点:中心在阈值、远离阈值→0、阈值附近大值、积分面积=1(非0)
5 C Rate-Based使用ReLU(目标:激活值→发放率);TTFS使用ReLU1(激活值限制[0,1]→spike time)
6 C Model-Based只看权重最大正输入,无需数据;Data-Based用训练集统计激活值
7 B ReLU1限制激活值到[0,1],与固定时间窗口内的spike time建立一一映射
8 B 过早放电:正输入spike先到→膜电位被推高→在负输入到达前神经元就已发放

二、填空题答案

9. 迭代LIF、时空反向传播

10. 欠激活、脉冲随机性

11. 空间(SD)、时间(TD)


三、简答题参考答案

12. Tempotron算法

参考答案:

膜电位模型
V(t)=∑iωi∑tiK(t−ti)+VrestV(t) = \sum_i \omega_i \sum_{t_i} K(t - t_i) + V_{rest}V(t)=iωitiK(tti)+Vrest

其中 K(t−ti)=V0[exp⁡(−(t−ti)/τm)−exp⁡(−(t−ti)/τs)]K(t-t_i) = V_0[\exp(-(t-t_i)/\tau_m) - \exp(-(t-t_i)/\tau_s)]K(tti)=V0[exp((tti)/τm)exp((tti)/τs)] 为双指数PSP核函数。

二分类学习规则

情况 处理方法
正样本(应发放)未发放 找到V(tmax)V(t_{max})V(tmax)→增大权重→使V(tmax)V(t_{max})V(tmax)超过阈值
负样本(不应发放)发放了 降低权重→使V(tmax)V(t_{max})V(tmax)低于阈值
正确预测 不调整

学习规则:Δωi=λ∑ti<tmaxK(tmax−ti)\Delta \omega_i = \lambda \sum_{t_i < t_{max}} K(t_{max} - t_i)Δωi=λti<tmaxK(tmaxti),仅更新tmaxt_{max}tmax之前到达的突触。

多分类扩展

  • 设置C个输出神经元,每个对应一个类别
  • 训练:第k类样本→第k个神经元应发放,其余不应发放
  • 推理:①发放最早→对应类别 ②选最大膜电位类别

13. 代理梯度的必要性

参考答案:

为什么脉冲发放函数不可微

  • 脉冲发放函数 o=g(u)o = g(u)o=g(u) = 阶跃函数(Heaviside)
  • 导数 = 狄拉克函数δ(u):在阈值处无穷大,其余为0
  • 直接用于反向传播→梯度消失(导数为0)或爆炸(无穷大)
  • 误差无法有效传播→权重无法更新

代理梯度函数需满足的条件

  1. 中心在阈值VthV_{th}Vth附近(脉冲发放最敏感的区域)
  2. 远离阈值时接近0(防止虚假梯度)
  3. 阈值附近有较大值(允许梯度通过)
  4. 积分面积为1(保持狄拉克函数的归一化特性)

Forward与Backward的实现

  • Forward(前向传播):使用硬阈值→0/1 spike输出,保存膜电位值
  • Backward(反向传播):取出膜电位→判断是否在阈值附近窗口内→用代理梯度值(如矩形窗口=α)替代真实的无穷大/0导数
  • 本质:“正向用真货(硬阈值),反向用假货(平滑近似)”

14. Rate-Based vs TTFS-Based转换

参考答案:

对比维度 Rate-Based(基于发放率) TTFS-Based(基于首次脉冲时间)
信息编码 脉冲数量(频率) 脉冲时间(首次发放时刻)
时间窗口 长(需统计稳定性),延迟高 短,延迟低,毫秒级
ANN激活 ReLU(输出[0,∞)) ReLU1(输出[0,1])
每神经元脉冲数 多个 通常1个
转换原理 激活值→脉冲发放率(归一化) 激活值→首次发放时刻(越大越早)
优势场景 图像分类等非实时任务 低延迟、低能耗实时处理
硬件优势 传统SNN芯片易支持 更适合极低延迟场景

15. TTFS三大问题及解决

参考答案:

(1) 过早放电(Premature Firing)

成因:SNN中正输入spike先到达→膜电位被推高→在负输入spike到达前神经元已发放,而ANN中等效的净输入为0不应发放。

解决动态阈值——在时间窗口开始前阈值=∞(不允许发放),进入窗口后阈值=1 → 等所有输入到齐后再决定是否发放。

(2) 漏放电(Missed Spike)

成因:ANN中多个小正输入相加>阈值应发放,但SNN中这些小spike到达时间分散→在有限窗口内膜电位未累积至阈值。

解决:动态阈值的窗口末端边界处理——若窗口内未达阈值→强制发放(映射到窗口最后时刻),对应ANN激活值≈0。

(3) 时间扭曲(Timing Distortion)

成因:同一ANN激活值,因不同神经元的权重和不同→映射成不同的spike time,破坏一一对应关系。

解决

  • Soft约束:训练ANN时加正则项 Lw=∑(∑w−1)2L_w = \sum(\sum w - 1)^2Lw=(w1)2
  • Hard约束:训练中强制修正使每个神经元权重和=1

动态阈值同时缓解过早+漏放电:通过在时间维度精确控制发放许可区间,确保所有输入到齐后才判断,并在窗口结束前兜底处理。


四、计算题参考答案

16. Data-Based归一化计算

(1) 第1层缩放因子

λ1=max⁡(max⁡_act1target_rate,max⁡_wt1)=max⁡(2.51.0,0.8)=max⁡(2.5,0.8)=2.5\lambda^1 = \max\left(\frac{\max\_act^1}{\text{target\_rate}}, \max\_wt^1\right) = \max\left(\frac{2.5}{1.0}, 0.8\right) = \max(2.5, 0.8) = 2.5λ1=max(target_ratemax_act1,max_wt1)=max(1.02.5,0.8)=max(2.5,0.8)=2.5

λ1=2.5\lambda^1 = \mathbf{2.5}λ1=2.5

(2) 缩放后第1层权重

WSNN1=W1λ1=W12.5W^1_{SNN} = \frac{W^1}{\lambda^1} = \frac{W^1}{2.5}WSNN1=λ1W1=2.5W1

即将第一层所有权重除以2.5。

(3) 第2层缩放因子

需要考虑previous_factor:第一层输出发放率被缩放了→第二层接收的输入发生变化。

previous_factor=λ1=2.5\text{previous\_factor} = \lambda^1 = 2.5previous_factor=λ1=2.5

λ2=max⁡(max⁡_act2target_rate×previous_factor,max⁡_wt2)\lambda^2 = \max\left(\frac{\max\_act^2}{\text{target\_rate}} \times \text{previous\_factor}, \max\_wt^2\right)λ2=max(target_ratemax_act2×previous_factor,max_wt2)

=max⁡(3.01.0×2.5,1.2)=max⁡(7.5,1.2)=7.5= \max\left(\frac{3.0}{1.0} \times 2.5, 1.2\right) = \max(7.5, 1.2) = 7.5=max(1.03.0×2.5,1.2)=max(7.5,1.2)=7.5

λ2=7.5\lambda^2 = \mathbf{7.5}λ2=7.5(需要更大的缩放因子来补偿第一层的缩放影响)


17. BP手动梯度推导

(1) 输出层误差

δout=y−t=3.9−4.0=−0.1\delta_{out} = y - t = 3.9 - 4.0 = \mathbf{-0.1}δout=yt=3.94.0=0.1

(2) 计算 ∂E∂w5\frac{\partial E}{\partial w_5}w5E 并更新

∂E∂y=y−t=−0.1\frac{\partial E}{\partial y} = y - t = -0.1yE=yt=0.1

∂y∂w5=h1=1.25(∵y=w5h1+w6h2)\frac{\partial y}{\partial w_5} = h_1 = 1.25 \quad (\because y = w_5 h_1 + w_6 h_2)w5y=h1=1.25(y=w5h1+w6h2)

∂E∂w5=∂E∂y⋅∂y∂w5=−0.1×1.25=−0.125\frac{\partial E}{\partial w_5} = \frac{\partial E}{\partial y} \cdot \frac{\partial y}{\partial w_5} = -0.1 \times 1.25 = -0.125w5E=yEw5y=0.1×1.25=0.125

w5new=w5−η⋅∂E∂w5=1.0−0.1×(−0.125)=1.0+0.0125=1.0125w_5^{new} = w_5 - \eta \cdot \frac{\partial E}{\partial w_5} = 1.0 - 0.1 \times (-0.125) = 1.0 + 0.0125 = \mathbf{1.0125}w5new=w5ηw5E=1.00.1×(0.125)=1.0+0.0125=1.0125

(3) 更新方向分析

  • 梯度为负(-0.125)→w5w_5w5增大
  • 当前y=3.9<y=3.9<y=3.9<目标t=4t=4t=4→需要增大yyy→增大w5w_5w5是正确的方向
  • w5w_5w5从1.0→1.0125,预测值将略微增大→接近目标4→损失将减小
  • 这正是梯度下降的基本逻辑

五、课堂额外题参考答案

18. STBP代码Forward/Backward

Forward(前向传播)

  • 实现脉冲发放函数(Spike Generation)
  • return input.gt(thresh).float():判断膜电位是否大于阈值
  • 大于→输出1(发放脉冲);否则→输出0
  • 同时保存膜电位值供反向传播使用

Backward(反向传播)

  • 实现代理梯度(Surrogate Gradient)
  • temp = abs(input - thresh) < lens:创建阈值附近的矩形窗口
  • 窗口内梯度非零(通常=1或矩形值),窗口外=0

为什么不能用真实阶跃函数导数

  • 真实阶跃函数(Heaviside)在阈值处不可导(导数为无穷大),其余为0
  • 直接使用→梯度消失(导数为0处无法回传)或爆炸(无穷大)
  • 代理梯度用平滑近似替代→使误差梯度能顺利回传更新权重

19. Data-Based归一化缩放

缩放公式

对第lll层:
λl=max⁡(max⁡_actltarget_rate,max⁡_wtl)\lambda^l = \max\left(\frac{\max\_act^l}{\text{target\_rate}}, \max\_wt^l\right)λl=max(target_ratemax_actl,max_wtl)

WSNNl=WANNlλlW^l_{SNN} = \frac{W^l_{ANN}}{\lambda^l}WSNNl=λlWANNl

需传递previous_factor:WSNNl=WANNlλl⋅λl−1prev_factorW^l_{SNN} = \frac{W^l_{ANN}}{\lambda^l} \cdot \frac{\lambda^{l-1}}{\text{prev\_factor}}WSNNl=λlWANNlprev_factorλl1

变量含义

  • max⁡_actl\max\_act^lmax_actl:第lll层在训练集上的最大激活值
  • target_rate:目标发放率(通常=1.0)
  • max⁡_wtl\max\_wt^lmax_wtl:第lll层的最大权重值
  • 取max确保同时满足防止过激活(第一项)和防止单个spike过强影响(第二项)的约束

20. Rate-Based vs TTFS-Based对比

比较维度 Rate-Based TTFS-Based
信息编码方式 脉冲数量(频率) 脉冲时间(首次发放)
时间窗口 需较长窗口保证统计稳定性,延迟高 短窗口,延迟低
转换原理 ReLU激活值→SNN脉冲发放率(归一化) ReLU1激活值→首次发放时刻(越大越早)
模拟复杂度 相对简单,易迁移 相对复杂,对时序要求高
硬件优势 传统SNN芯片易支持 更适合强调低延迟低能耗的硬件场景
总结 Rate-Based重统计平均→适合分类;TTFS重时序精准度→适合实时处理

答案编制完成时间:2026年6月25日

Logo

脑启社区是一个专注类脑智能领域的开发者社区。欢迎加入社区,共建类脑智能生态。社区为开发者提供了丰富的开源类脑工具软件、类脑算法模型及数据集、类脑知识库、类脑技术培训课程以及类脑应用案例等资源。

更多推荐