设想一支合唱团。传统人工神经网络的训练,像有一位手握总谱、目光如炬的指挥:每排练完一遍,他都要把每个歌手的音准、节奏错误逐一“反向”传回各自耳边,大家再根据误差修正、重唱一遍。这就是我们常说的反向传播。可如果这支合唱团有一千名歌手,指挥要一一纠错,排练一次就得等上一整晚。于是有人开始琢磨:能不能让歌手们不依赖指挥,靠彼此之间的“听”与“跟”来学习?这就是脉冲神经网络(SNN)——它的神经元像歌手一样,只在轮到自己开口的瞬间发声(发放脉冲),信息靠“谁先谁后”的节拍来传递,而学习方式,则是各种绕开反向传播的替代方案。本文将带你走进这支“没有指挥的合唱团”:从脉冲神经元的基本节拍,到反向传播为何失灵,再到替代梯度、STDP 这些“民间教法”,以及能让它们低声吟唱的神经形态芯片。
理解反向传播之外的训练范式,是踏入神经形态计算与低功耗边缘 AI 领域的必经之路,也是应对“下一代 AI 架构”类面试题的高频武器。
可视化演示
展示脉冲神经网络训练核心技术:脉冲不可微梯度问题、替代梯度前向后向分离设计、ANN-to-SNN转换发放率编码及STDP局部学习与混合训练策略,含星座网络背景动画。
本节配有交互动效(进入视口后自动加载,约 3KB)。
SNN 核心原理
在传统合唱团(人工神经网络)里,每个歌手无时无刻不在发声——哪怕气若游丝,也要连续吐出一个音量数字(激活值)。而我们的新合唱团(SNN)有一条铁律:歌手只在轮到自己当口的一瞬间开口,其余时间闭嘴待命。开口的这一下一下,就是“脉冲”(spike)。这一特性被称为事件驱动:有事件才通信,没事件就沉默。
SNN 的基本计算单元是脉冲神经元,最常用的是 LIF(Leaky Integrate-and-Fire,泄漏积分-发放)模型。你可以把 LIF 想象成一只慢慢漏水的杯子:上面有水管不停注水(输入电流),杯底有个小孔在漏水(膜电位泄漏),一旦水面超过杯沿(阈值),就溢出一滴水——发出一个脉冲,随后杯子立刻被倒空(重置)。杯子的水位,就是神经元的膜电位。
更妙的是,SNN 传递信息不全看“唱了多少声”,更看“什么时候开口”,这叫时序编码。两支队伍唱同一首歌,节拍差之毫厘,情绪便截然不同;同样一串脉冲,早一毫秒还是晚一毫秒,含义可能完全相反。SNN 的表达力因此来自时间维度,而不只是数值大小。
所以你看,新合唱团的每位歌手都是“惜字如金”的:不到节骨眼不开口,开口只唱一个音符,然后立刻收声。信息就在这一声声“巧合”的先后与浓淡之间流传——这正是它比老合唱团省电又省算力的第一重秘密。
- 膜电位 $v(t)$这是当前时刻“杯中的水位”,也就是神经元积累的能量。$t$ 表示第 $t$ 个时间步。
- 衰减因子 $e^{-\Delta t / \tau}$上一时刻的水位每步都会漏掉一点,$\tau$ 是膜时间常数,$\tau$ 越大漏得越慢、杯子越“保温”。
- 输入电流 $R\, I(t)$$I(t)$ 是本步注入的电流(注水量),$R$ 是膜电阻,决定同样的电流能把水位抬高多少。
- 发放与重置当 $v(t)$ 达到阈值 $\theta$ 时神经元发放一个脉冲,并把水位清空回静息电位。
反向传播困境
老合唱团的指挥(反向传播)有个习惯:每排练完一遍,他能精确算出每个歌手“刚才那口气高了 0.3 度还是低了 0.5 度”,再逐一反馈。这要求歌手的声音是连续的——因为只有连续的量才能求斜率、算导数。可惜,新合唱团的歌手不配合。
新合唱团的歌手只会在阈值之上“啪”地开口,在阈值之下“唰”地闭嘴,输出是一个干脆的 0 或 1。指挥想纠错时,会发现一个尴尬的问题:歌手从“闭嘴”到“开口”的瞬间,变化是突变的——这一点的斜率是无穷大,而其他地方斜率全是 0。数学上,这叫“不可导”。你没法对“唱/不唱”这个动作求导数,就像你没法问一个开关“你刚刚转动了 0.3 圈吗?”
更深的麻烦在时间维度。SNN 的误差要从最后的输出层,沿着“时序”逐层回传——每个神经元的脉冲既影响后面层,又影响下一时刻的自己。好比指挥要判断“第 3 小节的和声跑调,到底是谁在第 2 小节的一个半音造成的?”这笔“时空两用”的账,传统 BP 公式根本记不过来。而且,老指挥习惯于让所有人按同一个节拍器齐步走(全局同步),而在事件驱动的芯片上,根本没有统一的时钟。
于是,训练师们开始寻找反向传播的“替代方案”:既然指挥的手势在离散的歌手面前失灵,那就换个教法——有人给歌手装假想旋钮(替代梯度),有人让歌手靠“先来后到”自己总结(STDP),还有人干脆把老合唱团的乐谱翻译过来(ANN 转 SNN)。接下来的章节,我们逐一认识这些民间教法。
- 阶跃函数 $H(v-\theta)$当膜电位 $v$ 超过阈值 $\theta$ 时输出 1(发放);否则输出 0(沉默)。这是一个硬开关。
- 脉冲的导数 $\delta(v-\theta)$阶跃函数的导数是狄拉克冲激——除阈值点外处处为 0,在阈值点则冲激到无穷大,没有普通意义上的斜率。
- 对梯度的后果误差对权重的链式求导,要么撞上无穷大(数值爆炸),要么直接归零(梯度消失),反向传播彻底失灵。
替代梯度法
面对“唱/不唱”这个不可导的开关,最直白的办法是:假装歌手手里有一个平滑的音量旋钮,旋钮从 0 转到 1 是逐渐变化的。排练时,我们照常用这个假想旋钮的斜率(导数)来给歌手纠错;真正演出时,歌手依然干脆利落、该唱就唱。这就是“替代梯度”(surrogate gradient)的核心直觉。
具体做法是:前向传播照常使用真实的阶跃式脉冲(严格 0/1),反向传播时却把阶跃函数替换成一个光滑的代理函数,比如 sigmoid——梯度顺着光滑曲线滑下来,再乘上输入,就得到了对权重的近似修正。前向真、反向假,这个“假动作”只为算出一个够用的更新方向。好比排练时教练嘴上喊“你刚才的音量偏柔和了一点”这种连续的话,运动员心里执行的却是精准的“开口/闭嘴”。
具体实现中又有两种风格。一种是“直通估计器”(straight-through estimator,STE):反向时干脆把阶跃函数当成恒等映射,梯度直接透传,实现最简单,PyTorch 里一个自定义 backward 就能写出来。另一种如 SLAYER,用更精细的平滑函数逼近脉冲的“概率密度”,理论上更稳。两者的共同哲学是:前向绝不掺假,反向睁一只眼闭一只眼。替代梯度法的适用范围很广,也是目前训练深层 SNN 最主流的手段——虽然不是严格意义上的“反向传播”,但它继承了 BP 的链式法则骨架,只是把不可导的环节换成了可导的替身。
- 平滑代理函数 $\sigma(x)$sigmoid 函数把“是否超过阈值”从硬开关柔化成 0 到 1 的渐变过渡。
- 代理斜率 $\sigma'(x)$sigmoid 的导数在阈值附近最大、远离阈值趋于 0,模拟“越接近开口临界点,越容易被训练纠正”。
- 链式乘积损失对权重的近似梯度等于三部分相乘;前向仍走真实脉冲,只有反向借用这条平滑斜率。
STDP 时序学习
如果完全没有指挥(没有标签、没有损失函数),合唱团的歌手还能进步吗?能。他们靠的是最朴素的因果直觉:如果每次我开口之前,旁边的伙伴刚好先唱了半拍,而且我们配合特别默契,那我就要记住——下次他先开口,我就跟着应和;反之,如果他总是在我唱完之后才姗姗来迟,那这次配合跟我无关,自动忽略。这种“先来后到定亲疏”的规矩,在 SNN 里叫 STDP。
STDP 全称是 Spike-Timing-Dependent Plasticity,脉冲时序依赖可塑性。它不需要任何全局损失函数,只靠“突触前神经元的发放时刻”与“突触后神经元的发放时刻”的先后差来更新突触权重,是一种纯粹的局部学习规则。它把“因果”变成了数学:时间上靠得越近的先后两个脉冲,越值得被记住。
STDP 也是生物大脑中真实存在的突触可塑性规则,因此常被看作 SNN“无师自通”的代表。当然,完全靠 STDP 训练深层网络依然困难——它像是没有乐谱的即兴排练,能培养默契,却难以完成复杂的协奏。所以工程上更常见的做法,是让“民间教法”(STDP 等)与“学院派教法”(替代梯度)打配合:STDP 负责无监督的在线适应,替代梯度负责有监督的端到端训练。
- 时间差 $\Delta t$突触后神经元脉冲时刻减去突触前神经元脉冲时刻,$\Delta t > 0$ 表示“前唱完、后跟上”。
- 增强分支pre 先于 post 发放时,权重按指数增大(长时程增强 LTP),时间差越小增强越猛,因为越是紧密先后,越像因果关系。
- 抑制分支post 先于 pre 发放时,权重按指数减小(长时程抑制 LTD),$A_{+}$、$A_{-}$ 控制学习速率,$\tau_{+}$、$\tau_{-}$ 控制因果窗口的宽窄。
神经形态硬件
为什么我们费尽心机要绕开反向传播?因为 SNN 的真正舞台,是那些连指挥台都放不下的地方——智能手表、助听器、无人机、植入式芯片。这些设备像一支在烛光下排练的合唱团:每一秒的能耗都要精打细算,传统 ANN 那种“全员随时开嗓”的唱法,电池撑不过一首歌。
于是有了“神经形态计算”(neuromorphic computing):直接把 SNN 的运行逻辑烧进芯片。传统计算机是冯·诺依曼结构,计算和存储分居两地,像歌手每次演唱都要跑到隔壁乐谱架取谱子,来回跑腿费电;神经形态芯片则让“乐谱”和“发声”融为一体——存算一体,而且只有当脉冲真正到来时,相关电路才通电算一笔,其余时间器件接近零功耗,这就是低功耗事件驱动。
最典型的代表是 Intel 的 Loihi、IBM 的 TrueNorth,以及各类事件驱动传感器(如动态视觉传感器 DVS)。它们全都采用异步并行架构:没有全局时钟敲着“一二三、一二三”(无全局同步),每个神经元自主触发,“谁有信号谁开工”。这直接回扣了反向传播困境——在一个没有中央指挥、没有统一节拍的芯片上,误差根本没有一条“反向通道”可以传回第一小节。
- 脉冲总数 $N_{\text{spike}}$一次推理过程中全网发放的脉冲总数——相当于整场演出合唱团总共“开口”了多少次。
- 单脉冲能耗 $E_{\text{spike}}$在神经形态芯片上发一个脉冲消耗的能量,可以低至皮焦($10^{-12}$ J)量级。
- 待机功耗 $E_{\text{idle}}$事件驱动设计让无输入时的基线功耗趋近于零。
- 节能逻辑总能耗 ≈ 脉冲次数 × 单脉冲能耗。发放越稀疏,总耗电越低——唱得越少,耗得越少。
性能与混合策略
替代方案这么多,效果到底如何?公平地说,新合唱团在“省电”上完胜,但在“音准”(精度)上,无指挥排练的自由风格往往打不过老牌指挥团的精雕细琢。纯 SNN 在同等规模下,精度通常比 ANN 低几个百分点,深层网络的训练更是吃力。这正是替代梯度方案要持续优化的精度差距问题。
于是工程师们想出一个务实策略:请外援——混合训练。第一步,用成熟的 ANN 在大数据上训练,相当于让老牌指挥团先练出完美总谱;第二步,把 ANN 的权重“翻译”成 SNN 的脉冲发放率(ANN-to-SNN 转换),相当于把乐谱改写成脉冲节奏谱;第三步,再用替代梯度对 SNN 做少量微调,相当于新合唱团拿到谱子后,再按自己的发声方式排练几轮。实验表明,在 CIFAR 这类中等任务上,转换加微调的 SNN 精度可以追平甚至小幅超越同结构 ANN,同时保留推理阶段的低功耗红利。
这就像给自由合唱团请了一位临时指挥:指挥只负责把总谱排好(把握大方向),真正开口的瞬间、呼吸的气口、彼此的对视,依然靠歌手们自己的脉冲式默契。外援不是替代默契,而是让默契用在刀刃上。
- ANN 激活向量 $\mathbf{a}_{\text{ANN}}$老指挥团每个歌手的连续“音量读数”,是 ANN 前向传播得到的激活值向量。
- SNN 发放率向量 $\mathbf{r}_{\text{SNN}}$新合唱团每个神经元在时间窗口内的平均开口次数,也就是脉冲发放率。
- L2 距离平方两种表示之间的差距度量。转换的目标就是最小化这个差距,让脉冲发放率尽量逼近连续激活值,信息损失越少越好。
工程实践应用
说了这么多,这支“无指挥合唱团”已经在哪里登台了?答案你可能每天都在用:手机里的语音唤醒词、助听器里的环境降噪、无人机避障的视觉处理,甚至脑机接口读取神经信号——这些任务都要求低延迟、低功耗、持续在线,SNN 的稀疏脉冲和事件驱动,恰好是它们的量身定做。
以语音唤醒为例:传统 ANN 方案要求麦克风一直采样、模型一直计算,电量像开演唱会一样烧。SNN 方案则让声学前端只把“声音事件”(比如音量突增)转成脉冲流,芯片平时深度休眠,只有脉冲到来时才醒来算一笔。实测在同等任务上,SNN 方案的功耗可以降低一个数量级以上。在动态视觉领域,DVS 相机天生输出事件流,直接输入 SNN 做目标跟踪,延迟低至毫秒级,还能扛住剧烈光照变化。
工程落地时有一个关键指标:事件密度,即单位时间平均的脉冲数。密度太高,省电优势就没了;密度太低,信息又不够。工程师要做的,是像调音师一样,把编码阈值、时间常数、网络规模调到“刚刚好”。开源生态也在成熟:SpikingJelly(基于 PyTorch,中文社区明星)、SNNTorch、Intel 的 Lava 框架,都能让你用熟悉的 Python 搭 SNN,替代梯度和转换工具开箱即用。
在可见的未来,这支低声吟唱的合唱团,会慢慢从实验室走上所有“电池不够用”的舞台——而理解它的训练与推理逻辑,正是 AI 工程师在新计算范式下重新出发的起点。
- 事件总数 $N_{\text{events}}$统计窗口内采集到的脉冲/事件总个数,是功耗的主要来源。
- 窗口时长 $T_{\text{window}}$统计事件密度的时间尺度,比如 1 秒。
- 事件密度 $\rho$单位时间平均脉冲数,直接决定功耗与信息量的平衡点——$\rho$ 过高则省电失效,过低则识别失败。
AI 应用场景
低功耗语音唤醒词检测
阶段:模型推理部署 / 边缘推理
解决的问题:传统方案要求麦克风持续采样、DNN 持续计算,待机功耗高达几十毫瓦,电池撑不住。SNN 事件驱动,无语音事件时芯片休眠,只有脉冲到来才计算,功耗可降低一个数量级。
具体案例:某智能耳机品牌在穿戴芯片上部署 SNN 唤醒词模型,声学特征先转换为脉冲流,芯片空闲时几乎零耗电,唤醒率达到 95% 的同时平均功耗压到 2mW 以下。
动态视觉传感器实时跟踪
阶段:数据感知 / 在线推理
解决的问题:传统摄像头按帧输出全部像素,冗余大、延迟高。DVS 事件相机只在亮度变化时输出事件,天然就是脉冲流,可直接输入 SNN 处理,避免“先采样成帧、再预处理”的信息浪费。
具体案例:某无人机避障系统采用 DVS + SNN 组合,事件流上运行一个用 STDP 预训练、替代梯度微调的小型 SNN,等效帧率超过千 Hz,端到端延迟毫秒级,整机视觉功耗仅数毫瓦,在强光与暗光交替场景下仍能稳定跟踪目标。
脑机接口神经信号解码
阶段:模型训练 / 在线推理
解决的问题:脑电与锋电位信号本身就是脉冲序列,传统 ANN 需要先做复杂的特征提取,反而丢失了时序信息。SNN 直接消费原始脉冲,用替代梯度训练后可以实时解码运动意图,延迟更低、功耗更小。
具体案例:研究团队用三层 SNN(替代梯度端到端训练)解码猴子运动皮层锋电位,预测手臂运动轨迹的相关系数达 0.87,推理延迟小于 20ms,为低功耗神经假肢控制提供了可行的在线方案。
Python 演示
import numpy as np def sigmoid(x): return 1.0 / (1.0 + np.exp(-x)) def real_spike(v, thr): return 1.0 if v >= thr else 0.0 def surrogate_slope(v, thr, beta=2.0): u = (v - thr) * beta return beta * sigmoid(u) * (1.0 - sigmoid(u)) class ToySNN: def __init__(self): self.thr = 3.0 self.w = np.array([0.5, 0.5]) def infer(self, x): v = float(self.w @ x) return real_spike(v, self.thr), v def train_one(self, x, target): rate, v = self.infer(x) grad = 2.0 * (rate - target) * surrogate_slope(v, self.thr) * x self.w -= 0.08 * grad return (rate - target) ** 2 if __name__ == "__main__": net = ToySNN() patterns = [(np.array([10.0, 0.0]), 1.0), (np.array([0.0, 10.0]), 0.0)] for epoch in range(300): loss = 0.0 for x, y in patterns: loss += net.train_one(x, y) if epoch % 50 == 0: print("epoch", epoch, "loss", round(loss, 4)) for x, y in patterns: r, v = net.infer(x) print("input", x, "-> spike", int(r), "target", int(y)) print("weights", net.w)
def real_spike(v, thr):真正的脉冲函数:超过阈值输出 1,否则输出 0,这是一个不可导的阶跃开关,模拟 SNN 的真实行为。def surrogate_slope(v, thr, beta=2.0):替代梯度:用 sigmoid 的平滑斜率冒充阶跃的导数,让梯度“有路可走”。rate, v = self.infer(x)前向推理:得到真实的 0/1 脉冲和膜电位,前向绝不掺假。grad = 2.0 * (rate - target) * surrogate_slope(v, self.thr) * x关键一行:真实脉冲不可导,就用替代斜率乘上输入,近似出权重应调整的方向。self.w -= 0.08 * grad权重更新:像指挥纠错一样,往损失下降的方向迈出一小步。patterns = [(np.array([10.0, 0.0]), 1.0), (np.array([0.0, 10.0]), 0.0)]两条训练样本:第一条希望发放,第二条希望静默,迫使网络学会区分两个输入通道。
常见误区
误区脉冲神经网络既然是模仿生物大脑的,那应该只靠 STDP 这种无监督规则就能自己配好权重,像大脑一样自学成才,根本不需要损失函数和梯度。
正解STDP 是局部时序规则,擅长捕捉因果关联,但面对深层监督任务(分类、识别)时,单靠 STDP 很难端到端学出好权重。工程上的主流是“替代梯度 + 转换 + 微调”,STDP 更多用于无监督特征提取或在线适应。比喻:民间师徒传艺能学散打,但成体系的交响乐还是要靠总谱和正式排练。
为何常见:大众科普多强调 STDP 的生物学意义,而生物学习“看起来”确实不需要反向传播,容易让人忽略工程现实。
误区替代梯度就是把不可导的阶跃函数整体换成 sigmoid,然后从头到尾都用这个平滑版本训练,输出也是 0~1 之间的小数。
正解替代梯度只在反向传播时借用代理函数的导数,前向传播照常使用严格 0/1 的真实脉冲。训练出的网络在推理时依然是离散脉冲,才能享受稀疏计算和低功耗红利。如果前向也用平滑函数,训练出来的就不是脉冲网络了。比喻:排练时教练嘴上说“动作柔和一点”,比赛时运动员照样全力起跳,技术动作没有变。
为何常见:教材讲解时常画一条 sigmoid 曲线代替阶梯曲线,读者容易把“导数替换”误解成“整体函数替换”。
误区脉冲是离散的,一次只能表达 0 或 1,信息量天生比连续激活值少,所以 SNN 精度永远比 ANN 差很多,只能做做玩具。
正解时序编码提供了额外信息维度——单脉冲虽然离散,但脉冲的“时刻”可以精细编码。配合 ANN 转 SNN 加替代梯度微调,在 CIFAR 等中等任务上精度已可追平 ANN,且推理功耗低一个数量级。比喻:电报码只有“嗒嘀”两种状态,一样能传千言万语——关键是节奏。
为何常见:早期 SNN 训练工具不成熟,精度确实差很多,这个刻板印象一直延续到今天。
误区神经元的脉冲发得越多,表达的信息越“充足”,网络能力就越强,所以训练时应尽量让神经元多放电。
正解SNN 的能耗与脉冲总数成正比,发放过密不仅浪费能量,还可能退化成“把脉冲当频率计数的 ANN”,甚至引入高频噪声干扰。工程师反而要调高阈值、控制事件密度,让网络保持稀疏——稀疏高效才是 SNN 的价值所在。比喻:合唱团不是喊得越大声越好,齐声嘶吼容易破音;留白与呼吸才是艺术。
为何常见:从 ANN 的“激活值越大越活跃、信息越多”的习惯迁移而来,忽略了 SNN 以事件密度为能耗单位的能效约束。
面试题
Q1. LIF 神经元膜电位超过阈值后,会发生什么?
- A.持续升高直到烧毁
- B.发放脉冲并立即重置← 正确答案
- C.缓慢泄漏回静息电位
- D.保持当前电位不再变化
答案:B。LIF 神经元超过阈值后发放一个脉冲,并把膜电位重置回静息电位(通常归零),为下一轮积分做准备。A 是持续积分却不发放,C 是只泄漏不发放,D 是电位被“冻结”,都不符合发放-重置机制。比喻:杯子满了一边溢出一滴水、一边把水倒空,而不是一直满着。
Q2. SNN 神经元之间传递信息的主要方式是什么?
- A.连续的浮点数激活值
- B.离散的稀疏脉冲事件← 正确答案
- C.大规模同步梯度信号
- D.全局时钟控制信号
答案:B。SNN 以脉冲这种离散、稀疏的事件通信,遵循事件驱动原则,有事件才传递。A 是传统 ANN 的激活值传递方式,C 是反向传播阶段的更新信号,D 是同步数字电路的做法——SNN 恰恰要抛弃全局时钟。
Q3. 为什么反向传播不能直接用于训练脉冲神经网络?
- A.脉冲网络的参数数量太多
- B.脉冲函数不可导导致梯度失效← 正确答案
- C.脉冲网络没有损失函数可用
- D.脉冲网络无法在 GPU 上运行
答案:B。脉冲发放是阶跃式的 0/1,阶跃函数的导数要么无穷大要么为零,反向传播依赖连续可导的梯度信号,因此梯度传导直接失效。参数多不是根因,损失函数完全可以定义,GPU 只是工程实现问题,都不是原理性障碍。
Q4. 替代梯度法中,“直通估计器”的反向传播做法是?
- A.彻底放弃梯度只靠随机搜索
- B.将阶跃函数当作恒等透传梯度← 正确答案
- C.只在最后一层计算真实梯度
- D.用蒙特卡洛采样来估计梯度
答案:B。直通估计器(STE)在反向传播时把不可导的阶跃函数当成恒等映射,让梯度直接“穿过去”,前向仍用真实脉冲。A 是无梯度优化的思路,C 只利用了局部信息,D 是采样近似,都不是 STE 的做法。
Q5. STDP 规则中,突触前神经元先发放、突触后神经元后发放,权重会如何变化?
- A.突触权重增大,长时程增强← 正确答案
- B.突触权重减小,长时程抑制
- C.突触权重保持原值不变
- D.突触权重被随机清零重置
答案:A。STDP 遵循因果律:pre 在 post 之前发放且间隔很小,视为“因”,连接增强(LTP);反过来 post 先发放则是“果先于因”,连接抑制(LTD)。先后顺序直接决定权重的增减方向。
Q6. 神经形态芯片(如 Intel Loihi)采用的主要计算范式是?
- A.冯诺依曼存储与计算分离
- B.全局时钟驱动的同步计算
- C.事件驱动异步稀疏计算← 正确答案
- D.基于浮点矩阵的密集运算
答案:C。神经形态芯片采用事件驱动、异步并行、存算一体的架构,只有脉冲到达才计算,因此功耗极低。A 是传统 CPU 的结构,B 是同步数字电路风格,D 是 GPU 的矩阵运算风格,都与神经形态理念相反。
Q7. 关于“ANN 转 SNN”的混合训练策略,下列说法正确的是?
- A.转换后精度必然超过原网络
- B.转换后用替代梯度微调权重← 正确答案
- C.转换过程完全不需要任何训练
- D.转换只适用于小规模网络
答案:B。混合策略通常是 ANN 先在大数据上训练,再转换为脉冲发放率形式的 SNN,随后用替代梯度对时序细节做微调,以补偿转换损失。A 中“必然超过”错误,转换通常有精度损失,配合微调才能追平;C 需要校准映射关系;D 没有规模限制。
Q8. 以下哪些是脉冲神经网络的反向传播替代方案?
- A.替代梯度训练算法← 正确答案
- B.STDP 时序学习规则← 正确答案
- C.卷积神经网络池化
- D.ANN 转换为 SNN← 正确答案
答案:ABD。替代梯度、STDP、ANN 转 SNN 分别从“换导数、换规则、换起点”三个角度绕开不可导的脉冲函数,都属于反向传播的替代方案。C 的池化是 ANN 内部的常规操作,与替代训练无关。
Q9. 神经形态芯片在应用中的主要优势有哪些?
- A.系统推理功耗大幅降低← 正确答案
- B.事件驱动降低响应延迟← 正确答案
- C.高精度浮点运算能力
- D.存算一体减少数据搬运← 正确答案
答案:ABD。神经形态芯片事件驱动、存算一体、只有脉冲到来才通电计算,因此功耗低、延迟低,还免去了数据在存储与计算单元之间的搬运开销。C 的高精度浮点恰恰是神经形态芯片不追求的方向,它偏好低比特甚至模拟脉冲计算。
Q10. 关于替代梯度法,以下描述正确的有哪些?
- A.前向传播使用真实阶跃脉冲← 正确答案
- B.反向传播使用平滑代理导数← 正确答案
- C.训练完成后仍需代理函数推理
- D.代理函数只能选用 sigmoid
答案:AB。替代梯度的原则是“前向真、反向假”:前向用真实脉冲保证网络行为不变,反向用平滑代理求近似梯度。推理时直接用真实脉冲即可,不需要代理函数;代理函数可以选择 sigmoid、tanh 甚至自定义可导函数,并非只能选 sigmoid。