认知科学与类脑计算 第八章 脉冲神经网络有监督学习 考点压缩
第八章:脉冲神经网络有监督学习 — 知识点笔记
综合来源:课件8(PDF,127页)、课堂笔记(CSDN)、期末复习课录音
占位图
超级压缩

8.1 经典ANN学习算法回顾(BP)
反向传播两步
- 前向传播:输入→各层线性变换+激活→输出预测
- 反向传播:损失函数→链式法则逐层求梯度→梯度下降更新参数
更新规则
θt+1=θt−α∇J(θt)\theta_{t+1} = \theta_t - \alpha \nabla J(\theta_t)θt+1=θt−α∇J(θt)
- SGD:每次随机选一个/小批量样本计算梯度→更快但具随机性
BP实例推导(课件重点)
- 2输入→2隐藏→1输出的简单网络
- 手动推导各权重梯度→更新→验证损失下降
【图片:BP实例推导网络结构 — 课件8 第9-22页】
8.2 单层SNN学习算法
(1) 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∑ωiti∑K(t−ti)+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(t−ti)=V0[exp(−(t−ti)/τm)−exp(−(t−ti)/τs)]
- 双指数核函数:τm\tau_mτm膜时间常数,τs\tau_sτs突触电流衰减常数
二分类规则:
- 正样本(应发放)→未发放→找到V(tmax)V(t_{max})V(tmax)→增加权重使其超过阈值
- 负样本(不应发放)→发放了→降低权重
学习规则(假设tmaxt_{max}tmax附近导数为零):
Δωi=λ∑ti<tmaxK(tmax−ti)\Delta \omega_i = \lambda \sum_{t_i < t_{max}} K(t_{max} - t_i)Δωi=λti<tmax∑K(tmax−ti)
多分类扩展:
- C个类别→C个输出神经元
- 推理:发放最早的神经元→对应类别;或选最大膜电位类别
(2) ReSuMe(远程监督学习)⭐
核心特点:
- 与神经元模型无关,仅依赖输入输出脉冲序列和STDP
- 关注整个脉冲序列而非单个发放
- 希望输出序列与目标序列同时发放
学习规则:
Δw=STDP相关项(输入-输出)+反STDP相关项(目标-输出)\Delta w = \text{STDP相关项(输入-输出)} + \text{反STDP相关项(目标-输出)}Δw=STDP相关项(输入-输出)+反STDP相关项(目标-输出)
- 早发放→降低权重 | 晚发放→增加权重
- 本质:将STDP无监督机制→"监督化"
Tempotron vs ReSuMe
| Tempotron | ReSuMe | |
|---|---|---|
| 驱动信号 | 膜电位峰值 | 脉冲序列时序 |
| 关注点 | 是否发放(单次) | 整个脉冲序列 |
| 模型依赖 | 依赖特定PSP核函数 | 与神经元模型无关 |
| 分类 | 二分类→可扩展多分类 | 多分类 |
8.3 深度SNN学习算法 ⭐⭐⭐
浅层 vs 深层SNN
| 浅层SNN | 深层SNN | |
|---|---|---|
| 隐藏层 | 1~2 | ≥3 |
| 表征能力 | 简单特征 | 复杂抽象特征 |
| 训练难度 | 易收敛 | 难收敛 |
| 挑战 | — | 梯度消失/爆炸、时间依赖、高计算成本、数据稀疏 |
两类梯度方法
- 代理梯度(Surrogate Gradient):用平滑曲线近似阶跃函数导数
- 脉冲发放时间反传:通过脉冲发放时间传播梯度
8.4 STBP算法 ⭐⭐⭐(时空反向传播)
三要素
- 迭代LIF模型
- 时空反向传播训练框架
- 代理梯度函数
(1) 迭代LIF模型
LIF微分方程:τdudt=−u+I\tau \frac{du}{dt} = -u + Iτdtdu=−u+I
迭代形式:
uit+1,n=uit,n⋅f(oit,n)+xit+1,nu_i^{t+1,n} = u_i^{t,n} \cdot f(o_i^{t,n}) + x_i^{t+1,n}uit+1,n=uit,n⋅f(oit,n)+xit+1,n
或等价:ut+1=τut(1−ot)+xt+1u^{t+1} = \tau u^t (1 - o^t) + x^{t+1}ut+1=τut(1−ot)+xt+1
- 遗忘门f(⋅)f(\cdot)f(⋅):控制膜电位的漏电程度(时间域记忆TD)
- 输出门g(⋅)g(\cdot)g(⋅):触发脉冲发放(阶跃函数)
- xxx:来自前一层的突触输入 xi=∑jWijojx_i = \sum_j W_{ij} o_jxi=∑jWijoj
(2) 时空反向传播框架
损失函数:时间窗口T内所有样本输出平均发放率与标签的MSE
L=12S∑s∥ys−1T∑tost∥2L = \frac{1}{2S}\sum_s \|y_s - \frac{1}{T}\sum_t o_s^t\|^2L=2S1s∑∥ys−T1t∑ost∥2
四种反向传播情形(Case 1-4):
| Case | t | n | 误差来源 | 特点 |
|---|---|---|---|---|
| Case 1 | T | N | 仅来自损失L(无未来时间+无上层) | 最后一个时间步、输出层 |
| Case 2 | T | <N | 仅来自空间域SD(无未来时间) | 最后时间步、隐藏层 |
| Case 3 | <T | N | 来自时间域TD + 损失L(无上层) | 输出层、非最后时间步 |
| Case 4 | <T | <N | 来自SD + TD | 隐藏层、非最后时间步 |
梯度回传路径:
- 空间域(SD):∂oit,n∂xjt,n+1\frac{\partial o_i^{t,n}}{\partial x_j^{t,n+1}}∂xjt,n+1∂oit,n → 层间传递
- 时间域(TD):∂uit+1,n∂uit,n=τ(1−oit,n)\frac{\partial u_i^{t+1,n}}{\partial u_i^{t,n}} = \tau(1-o_i^{t,n})∂uit,n∂uit+1,n=τ(1−oit,n) → 同层时刻间传递
(3) 代理梯度函数 ⭐
问题:脉冲发放函数g(u)g(u)g(u)是阶跃函数→导数=狄拉克函数δ(u)→不可微
解决:用平滑曲线近似δ函数(四种):
| 类型 | 特点 |
|---|---|
| 矩形函数 | 窗口内=α,外=0 |
| 多项式函数 | 平滑衰减 |
| Sigmoid函数导数 | 类似高斯型 |
| 高斯累积分布导数 | 连续光滑 |
共同特点:
- 中心在阈值VthV_{th}Vth附近
- 远离阈值时接近0(防梯度消失)
- 阈值附近有较大值(允许梯度通过)
- 积分面积为1(狄拉克函数的近似)
【图片:四种代理梯度函数曲线对比 — 课件8 第78页】
代码实现(Forward/Backward):
- Forward:硬阈值→0/1 spike输出;保存膜电位
- Backward:取出膜电位→判断是否在阈值附近窗口内→用代理梯度值替代真实导数
8.5 ANN-SNN转换算法 ⭐⭐
核心思想
- 用BP训练好ANN(ReLU激活)
- 将训练好的权重直接映射到结构相同的SNN
- 用SNN进行低功耗推理
Rate-Based转换
原理:ANN激活值 ≈ SNN脉冲发放率
ril≈∑jWijlrjl−1θir_i^l \approx \frac{\sum_j W_{ij}^l r_j^{l-1}}{\theta_i}ril≈θi∑jWijlrjl−1
- ReLU = 无不应期IF神经元的发放率近似
- 若输入值相同→输出发放率≈ANN激活值
转换流程:
- 使用ReLU激活训练ANN
- 训练时偏置固定为零
- 权重直接映射至IF网络
- 权重归一化以获得接近无损精度
精度损失三个来源:
| 问题 | 原因 |
|---|---|
| 欠激活 | 输入太弱→膜电位达不到阈值→发放率偏低 |
| 过激活 | 输入太强→单步需>1个spike→SNN每步最多1个 |
| 脉冲随机性 | Poisson编码的随机波动 |
归一化方法 ⭐
| 方法 | 依据 | 优点 | 缺点 |
|---|---|---|---|
| Model-Based | 仅看网络最大权重 | 安全,无需数据 | 过于保守,可能发放不足 |
| Data-Based | 训练集统计最大激活值 | 精度高,延迟低 | 依赖训练集代表性 |
Data-Based缩放因子:
λ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)
需引入previous_factor传递到下一层→保证层间发放率一致性。
TTFS-Based转换 ⭐
与Rate-Based的区别:
| 维度 | Rate-Based | TTFS-Based |
|---|---|---|
| 信息编码 | 脉冲数量(频率) | 脉冲时间(首次发放) |
| 时间窗口 | 长(需统计稳定性) | 短(低延迟) |
| ANN激活函数 | ReLU | ReLU1(限制[0,1]) |
| 脉冲数 | 多个 | 1个 |
| 对应关系 | 激活值→发放率 | 激活值→发放时刻(越大越早) |
TTFS特有三大问题与解决:
| 问题 | 现象 | 解决方案 |
|---|---|---|
| 过早放电 | 正输入先到→在负输入到达前就发放 | 动态阈值:窗口开始前阈值=∞ |
| 漏放电 | 多个小正输入分散→窗口内达不到阈值 | 窗口末端边界处理→强制发放 |
| 时间扭曲 | 权重和不同→同一激活值→不同spike time | Soft约束(正则项L_w)+Hard约束(权重和=1) |
8.6 Conversion vs Direct Training对比
| 对比项 | Conversion-based | Direct Training |
|---|---|---|
| 核心思想 | 先训ANN→转换SNN | 直接训练SNN |
| 训练难度 | 较低 | 较高 |
| 时间动态 | 未充分优化 | 显式建模优化 |
| 精度 | 转换误差小→高精度 | 取决于代理梯度 |
| 生物合理性 | 较弱 | 相对更强 |
| 适用场景 | 分类、转换友好任务 | 时序、事件数据、动态任务 |
思考题(课件)
Q1:STBP代码中forward和backward分别实现什么?为什么不能用真实阶跃函数导数?
Q2:Data-Based Normalization中转换后的SNN权重应如何缩放?
Q3:比较Rate-Based和TTFS-Based ANN-SNN转换的主要区别。
笔记中的图片索引
| 序号 | 图片内容描述 | 来源位置 |
|---|---|---|
| 图1 | BP实例推导完整网络结构 | 课件8 第9-22页 |
| 图2 | Tempotron膜电位与PSP核函数 | 课件8 第26页 |
| 图3 | 迭代LIF模型示意图 | 课件8 第56-57页 |
| 图4 | STBP四种Case误差回传路径图 | 课件8 第59-74页 |
| 图5 | 四种代理梯度函数曲线 | 课件8 第78页 |
| 图6 | ANN-SNN转换原理对比图 | 课件8 第99页 |
| 图7 | 欠激活/过激活示意图 | 课件8 第102页 |
| 图8 | TTFS过早放电问题 | 课件8 第115页 |
| 图9 | Conversion vs Direct Training对比 | 课件8 第126页 |
笔记整理时间:2026年6月25日
更多推荐


所有评论(0)