STDP:大脑不用反向传播,靠时序也能学习
STDP:大脑不用反向传播,靠时序也能学习
反向传播需要一条从输出一路反推回输入的错误信号通道。大脑里没有这条线。可它照样能学——靠的只是一条极其朴素的局部规则:谁先谁后。
一、背景与痛点
深度学习依赖反向传播:损失函数对每个参数的梯度,需要把误差一层层往回传。这要求两件事——整条计算图都要存着,而且每个环节都得可微。
生物大脑两条都不满足。突触(连接)只能"看见"它前后两个神经元:突触前神经元什么时候发放、突触后神经元什么时候发放。它不知道整个网络的输出对不对,更不可能算全局梯度。
那大脑凭什么学?1949 年 Hebb 给出直觉:"一起放电的神经元,连接会变强。"但这句话太模糊——"一起"是多久以内?谁先谁后有没有关系?
实验给出了精确答案,而且结果有点反直觉:顺序至关重要。如果突触前先发放、突触后跟着发放(因果),连接增强;反过来,突触前后发放、突触前才发放(反因果),连接反而减弱。这条规则叫 STDP(Spike-Timing-Dependent Plasticity,脉冲时序依赖可塑性)。
它的意义在于:这是一条纯粹的局部规则——每个突触只需知道前后两次发放的时间差,就能更新权重。没有全局误差信号,不需要存计算图,也不需要可微。这正是类脑硬件梦寐以求的学习机制。
二、核心原理
1. 学习窗:一条不对称的指数曲线
STDP 的权重改变量 Δw\Delta wΔw 只取决于时间差 Δt=tpost−tpre\Delta t = t_{\rm post} - t_{\rm pre}Δt=tpost−tpre:
Δw(Δt)={A+exp(−Δtτ+),Δt>0(因果→增强 LTP)−A−exp(Δtτ−),Δt<0(反因果→抑制 LTD)\Delta w(\Delta t)= \begin{cases} A_+ \exp\left(-\dfrac{\Delta t}{\tau_+}\right), & \Delta t > 0 \quad (\text{因果} \to \text{增强 LTP})\\[2mm] -A_- \exp\left(\dfrac{\Delta t}{\tau_-}\right), & \Delta t < 0 \quad (\text{反因果} \to \text{抑制 LTD}) \end{cases}Δw(Δt)=⎩⎨⎧A+exp(−τ+Δt),−A−exp(τ−Δt),Δt>0(因果→增强 LTP)Δt<0(反因果→抑制 LTD)
形状像一个"双指数窗口":右侧是增强,左侧是抑制。
2. 为什么是不对称的
这是整条规则能稳定工作的关键:抑制的幅度通常略大于增强(A−>A+A_- > A_+A−>A+),而且时间常数也更短。
直观理解:如果两侧完全对称,权重会无限制地在正负之间漂移,或者随机涨落——没有稳态。让抑制稍强一点,就给了权重一个"回到中间"的力。生物学上这个不对称性被反复测量验证过,它和前面几期的稳态可塑性是一套组合拳。
3. 局部性:为什么它重要到能改变硬件
STDP 的更新只需要三样东西:两个神经元的发放时刻、当前权重、一组常数。这使得:
- 可用寄存器实现:每个突触配一个"迹"变量(trace),记录最近一次发放的衰减指数,就能实现精确的指数窗;
- 事件驱动:没有发放就没有更新,和脉冲网络的稀疏性天然匹配;
- 可片上学习:不需要把数据搬回主机算梯度——这正是神经形态芯片做"在线学习"的基础。
4. 它能做什么:从特征学习到奖励调制
- 无监督特征学习:把 STDP 用在输入层,网络会自动对"有因果关系"的输入更敏感,从而学出方向选择性等特征(视觉皮层的经典现象)。
- 奖励调制(R-STDP):给 Δw\Delta wΔw 乘上一个全局奖励信号,就从无监督变成强化学习——这是 095 期与强化学习交叉的接口。
- 与传统方法的差距:STDP 是二阶统计量(时序相关性),没有监督信号,因此精度通常不如反向传播训练的网络。它的优势在能耗与在线性。
三、代码实战
用 numpy 实现 STDP 窗口,做三个实验:窗口形状、重复配对、双输入竞争。
import numpy as np
rng = np.random.default_rng(7)
tau_p, tau_m = 20.0, 20.0
A_p, A_m = 0.010, 0.012
def dW(dt_ms):
if dt_ms > 0:
return A_p * np.exp(-dt_ms / tau_p) # 突触前先发放 → LTP
if dt_ms < 0:
return -A_m * np.exp(dt_ms / tau_m) # 突触前后发放 → LTD
return 0.0
for dt in [-40, -20, -10, -5, 5, 10, 20, 40]:
print("Δt = %+4d ms → Δw = %+.5f" % (dt, dW(dt)))
w = 0.5
for _ in range(200):
w = np.clip(w + dW(+5.0), 0, 1)
print("200 次 Δt=+5ms(因果)配对后 w = %.4f" % w)
w = 0.5
for _ in range(200):
w = np.clip(w + dW(-5.0), 0, 1)
print("200 次 Δt=-5ms(反因果)配对后 w = %.4f" % w)
w_syn = np.array([0.5, 0.5]) # 输入1、输入2 → 输出神经元
for rep in range(300):
t_out = rep * 100.0
t_pre = [t_out - 5.0, t_out + 5.0] # 输入1 领先 5ms,输入2 滞后 5ms
for i in range(2):
w_syn[i] = np.clip(w_syn[i] + dW(t_out - t_pre[i]), 0, 1)
print("输入1(领先输出 5ms,因果)权重 w1 = %.4f" % w_syn[0])
print("输入2(滞后输出 5ms,反因果)权重 w2 = %.4f" % w_syn[1])
运行结果:
Δt = -40 ms → Δw = -0.00162
Δt = -20 ms → Δw = -0.00441
Δt = -10 ms → Δw = -0.00728
Δt = -5 ms → Δw = -0.00935
Δt = +5 ms → Δw = +0.00779
Δt = +10 ms → Δw = +0.00607
Δt = +20 ms → Δw = +0.00368
Δt = +40 ms → Δw = +0.00135
200 次 Δt=+5ms(因果)配对后 w = 1.0000(饱和到上界)
200 次 Δt=-5ms(反因果)配对后 w = 0.0000(压到下界)
输入1(领先输出 5ms,因果)权重 w1 = 1.0000
输入2(滞后输出 5ms,反因果)权重 w2 = 0.0000
结论:同一起始权重、同一规则,仅凭 5ms 的先后差异,w1 1.000 > w2 0.000
注意窗口的形状:Δt=±5 ms 时,抑制的绝对值 0.00935 大于增强的 0.00779——不对称性一眼可见。这不是笔误,而是让权重有稳态的必要设计。
第三个实验最能说明问题:两个输入从完全相同的 0.5 出发,唯一差别是它们与输出发放的先后关系(一个领先 5ms,一个滞后 5ms)。300 次重复之后,一个饱和到 1.0、一个掉到 0.0。STDP 不需要任何标签,仅凭时序统计就完成了"选择"。
四、关键经验/避坑
- 务必让抑制略强于增强(A−>A+A_- > A_+A−>A+ 或 τ−<τ+\tau_- < \tau_+τ−<τ+)。否则权重要么发散、要么在网络里随机游走,学不到稳定结构。
- 时间常数量级要想清楚。 τ\tauτ 取 20 ms 时,只有 ±50 ms 内的配对有效;取太小(如 2 ms)就几乎学不到东西。
- 实现上用"迹变量"而非遍历历史。 给每个突触维护一个按 exp(−dt/τ)\exp(-dt/\tau)exp(−dt/τ) 衰减的 trace,发放时读取、更新 O(1),这才是事件驱动的高效实现。
- 权重必须有上下界。 纯 STDP 没有边界约束会无限漂移,工程上用硬截断或软饱和(乘性衰减)。
- STDP 学的是相关性,不是正确性。 它会把"经常一起发生"的输入挑出来,但这些输入未必是任务需要的——这就是它需要 R-STDP 或与监督信号结合的原因。
- 别指望用它替代反向传播。 在同样的网络规模上,STDP 的精度通常落后;它的价值在线性、局部性和能耗。
五、完整系列推荐
📚 本文选自《类脑计算与脉冲神经网络详解》系统教程(第 022 期:STDP 原理——时序决定增强或抑制),每期配可运行 Python 代码。
完整系列(100 期正文 + 3 篇番外,每期文章+代码)已在 ima 知识号【Kruptos】持续更新:
- 🗂 72+ 技术知识库:类脑计算与脉冲神经网络、强化学习详解、可微分编程与科学计算、AI 大模型与边缘智能、计算机体系结构、机器人运动学与控制……几乎覆盖全部软硬件技术栈
- 🧠 8 款 AI 技能:系列生产、知识库管理、CMMI 受管开发、自进化 Agent 等,已在 ima 技能广场上架,即装即用
- ✅ 全部免费订阅,后续更新自动推送
🔍 订阅方式:打开 ima(腾讯智能工作台)→ 搜索「Kruptos」→ 一键订阅;或在 ima 内直接搜索《类脑计算与脉冲神经网络详解》。
作者:Kruptos(西电毕业,13 年无线通信/DSP/嵌入式科研,现深耕 AI 与云原生)
原创内容,转载注明出处。
更多推荐


所有评论(0)