4. 脉冲神经元模型:LIF模型、突触动力学、发放率

好,咱们正式进入神经元模型这部分。我当年刚接触硅光计算芯片时,第一个困惑就是:

一个光子脉冲跟生物神经元的动作电位,到底差在哪?

说白了,数学模型几乎一样,只是物理载体不同。今天咱们就拆开 LIF、突触和发放率这三块。

4.1 LIF 模型——最常用的「漏电积分点火」

LIF 全称 Leaky Integrate-and-Fire。名字很直白:

  • 漏电(Leaky)——膜电位会随时间衰减,像一杯漏水的杯子。
  • 积分(Integrate)——输入电流不断往杯里加水。
  • 点火(Fire)——水满溢出,产生一个脉冲,然后复位。

公式其实就一个微分方程:

τ_m * dV/dt = - (V - V_rest) + R_m * I(t)

τ_m 是膜时间常数,V_rest 是静息电位,R_m 是膜电阻,I(t) 是输入电流。一旦 V 超过阈值 V_th,就输出一个脉冲,然后 V 强制回到 V_reset。

💡 关键参数速记

参数典型值(生物)硅光芯片常用值
τ_m10~20 ms0.1~1 ns
V_th-55 mV归一化 1.0
V_reset-70 mV0.0
不应期1~2 ms0.05~0.2 ns

时间尺度差了好几个数量级,但数学本质一模一样。我早期移植算法时,就因为没注意时间常数缩放,仿真跑出来全乱套——避坑:先统一归一化单位再调参数。

4.2 突触动力学——电流怎么传递

光脉冲通过波导到达下一级,不是瞬间就激活的。突触电流有上升沿和衰减过程。

最常见的模型是指数衰减型突触电流:

I_syn(t) = w * exp(-t / τ_syn)   (t ≥ 0)

其中 w 是突触权重,τ_syn 是时间常数。更精确一点会用双指数模型,包含上升和下降两个时间常数:

I_syn(t) = w * (exp(-t/τ_decay) - exp(-t/τ_rise))

记不记得?你想想看,如果 τ_rise 远小于 τ_decay,突触电流就近似脉冲冲击,适合做快速光开关。

🛠️ 我在做片上光互连测试时,遇到过一个问题:双指数模型参数太多,调优花了两周。后来我发现,对硅光计算芯片,单指数模型就够了——因为光调制器的响应本身就在皮秒级,额外加一个上升时间意义不大。

经验:能用单指数绝不双指数,除非你证明确实需要描述缓慢的化学突触。

4.3 发放率——从时间编码到速率编码

脉冲序列怎么翻译成有意义的信号?两种主流方式:

  1. 瞬时发放率:通过核函数平滑脉冲序列,得到时变速率 r(t)。
  2. 平均发放率:在固定时间窗口内数脉冲个数,除以窗口长度。

我在优化硅光计算芯片的数据流时,发现平均发放率硬件实现更简单——只要一个光子计数器就行了。但代价是精度损失,尤其是当脉冲频率很高时,计数器会溢出。

⚠️ 特别注意: 发放率不是线性编码的。LIF 神经元的输入-输出曲线是 S 型(类似 sigmoid)。你给一个恒定电流,输出频率不是随输入线性增长,而是先缓慢后急剧再饱和。

# 一个简单例程:LIF 发放率 vs 输入电流
def lif_rate(I, tau=1.0, V_th=1.0):
    # 假设稳态解:f = 1 / (tau * log((I*R + V_reset - V_rest) / (I*R + V_th - V_rest)))
    # 这里简化
    if I <= 0: return 0
    return 1.0 / (tau * np.log((I + 0.0)/(I + 0.2)))

写代码时一定记得加防除零和防负对数的保护。我曾经吃过亏,跑了半天全返回 NaN。

4.4 知识框架图

脉冲神经元模型知识结构 LIF 模型 突触动力学 发放率 积分漏电 阈值点火 指数衰减 双指数 瞬时发放率 平均发放率 核心关系:LIF 决定脉冲何时产生,突触动力学决定脉冲如何传递,发放率 决定脉冲序列如何被读出。三者串联构成一个完整的信息处理通道。

你看这张图,三种模型是串在一起的。没有突触动力学,LIF 就不知道输入电流怎么来;没有发放率,我们无法量化输出。在硅光芯片里,这三步全部由光波导、微环谐振器和光电探测器来物理实现。

4.5 实践小贴士——参数调优顺序

如果你刚开始搭脉冲神经元网络仿真,我建议按这个顺序调参:

  1. 先固定 LIF 基本参数(τ_m, V_th, V_reset),用直流电流扫一遍 I-O 曲线。
  2. 再调突触时间常数:单指数只有一个参数,很快就能匹配。
  3. 最后选发放率计算窗口:窗口太短抖动大,窗口太长丢失时间信息。

🔑 一句话总结:

LIF 是「水滴石穿」——不断积分直到阈值;突触是「涟漪」——电流不会瞬间消失;发放率是「沙漏」——数多少个脉冲就代表多少信息。