ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

脉冲神经网络SNN:从事件驱动到神经形态芯片的第三代AI技术解析

脉冲神经网络SNN:从事件驱动到神经形态芯片的第三代AI技术解析 1. 为什么说SNN是第三代神经网络一场关于信息处理方式的代际演进提到神经网络大多数人第一反应是深度学习、GPU集群、大模型这些概念。无论是卷积神经网络处理图像还是Transformer处理语言本质上做的都是同一件事把数据变成张量然后做矩阵乘法。这种模式统治了AI领域十几年以至于很多人默认神经网络就该长这样。但如果你去翻神经科学的老底子会发现人脑根本不是这么工作的。大脑皮层里有大约860亿个神经元每个神经元平均连接上万个突触但整个大脑的功耗只有20瓦左右。相比之下一个训大模型的GPU集群动辄兆瓦级而且还要配液冷。这个巨大的反差背后藏着一个被传统人工神经网络忽略的维度——时间。脉冲神经网络Spiking Neural Network简称SNN就是把时间这个维度重新请回来的尝试。它被称为第三代神经网络是相对于第一代感知机McCulloch-Pitts神经元1943年和第二代人工神经网络带连续激活函数、反向传播的深度网络而言的。第一代神经网络只能做线性分类第二代引入了非线性激活函数和误差反向传播成就了今天的深度学习浪潮。但两代网络有一个共同的假设信息是以连续数值的形式传递的神经元输出的是一堆浮点数。SNN彻底换了一套玩法神经元不再输出连续数值而是输出离散的脉冲spike也就是一个个时间点上的电脉冲。神经元之间的信息传递不是这个神经元的输出值是0.73而是这个神经元在某个时刻发了一个脉冲。同一个神经元可能一毫秒发一次也可能一百毫秒都不发一次。信息就编码在这些脉冲的时间模式里。这个变化听起来只是把数值换成了事件但实际上是整个信息处理范式的改变。传统神经网络是同步的、密集的、数值的每一层的每一个神经元都在做乘法累加而SNN是异步的、稀疏的、事件的神经元只在收到足够多输入时才被激活计算也只在事件发生时进行。打个比方第二代神经网络像一群人每隔一秒钟整整齐齐地报一次数不管你变没变都得报SNN则像一群人只在有事情发生的时候才喊一嗓子没动静就集体安静。也正是因为这种事件驱动的特性SNN天然比第二代网络更接近生物神经系统的运行方式而且理论上能实现极低的功耗。这两点就是它被许多人认为是下一代AI根基的核心原因。我最早接触SNN是在做低功耗传感器节点的项目里当时电池供电、算力有限、还要实时处理连续数据流传统神经网络根本跑不动。后来调研神经形态计算才意识到SNN描述的恰恰是用最少的资源处理最稀疏的事件这个问题的答案。这篇内容我会把SNN的核心原理、与传统网络的区别、训练难点、硬件实现和实际应用从头到尾给你捋一遍尽量不堆公式把概念讲透。2. 脉冲神经元的工作机制膜电位、阈值与放电2.1 从神经元模型的源头说起SNN的基本计算单元依然是神经元但这里的神经元模型不是ReLU、Sigmoid那种一次函数式的抽象而是有内在时间动力学的微分方程模型。最经典的物理模型是漏电积分-放电模型Leaky Integrate-and-FireLIF。这个模型可以直观地理解成一个小水桶输入信号不断往水桶里注水这就是积分但水桶底部有个小洞一直在漏水这就是漏电。当水位超过桶沿阈值时水桶就放一次电——向外发出一个脉冲然后水位瞬间回落到静息水平重新开始积累。电位随时间的涨落是理解SNN的关键。每个神经元的膜电位V(t)随时间动态变化在两次脉冲之间膜电位可能持续升高、逐渐衰退或保持不变。这一动态过程是SNN区别于传统人工神经网络最本质的部分。LIF模型的方程大致长这样[ \tau_m \frac{dV(t)}{dt} - (V(t) - V_{rest}) R \cdot I(t) ](V_{rest}) 是静息电位通常设为0或某个负值(\tau_m) 是膜时间常数决定了电位涨落有多快这个参数直接控制着神经元记住输入信息的时间尺度(I(t)) 是输入电流由前一个神经元的脉冲和突触权重共同决定当 (V(t)) 超过阈值 (V_{th}) 时神经元发放一个脉冲然后 (V(t)) 被重置为静息电位。等一下我得在这里停一下。懂点深度学习的朋友看到这个方程可能会想这不就是一个带泄漏的积分器吗跟LSTM的门控机制有点像确实LSTM里的遗忘门和细胞状态更新本质上也是在做有选择的累加。但在SNN里这个累加不是每个时间步都做的而是有脉冲才触发、没脉冲就保持或衰减。这个差别后面我会专门展开讲。2.2 时间编码信息藏在脉冲的节奏里传统神经网络里信息编码很简单像素值0.3就传0.3词向量是几百维浮点数。SNN里的信息编码要复杂得多因为输出只剩下一串时间点上的脉冲你必须回答一个问题脉冲的什么属性承载信息目前主流的编码方式有三大类速率编码Rate Coding用一段时间内脉冲的发放频率表示信息。频率高代表数值大频率低代表数值小。这是最早期、也最容易理解的方式但它有个致命缺点——需要一段较长的窗口来统计频率时间分辨率低而且本质上还是在做数值归一化浪费了SNN的时间优势。打个比方速率编码像是用眨眼次数表达情绪你得盯着看很久才能数清楚。时间编码Temporal Coding用单个脉冲相对于某个参考点的精确时间位置来表示信息。比如第一个脉冲到达得早代表数值大到达得晚代表数值小。这种编码时间分辨率高、信息密度大但抗噪能力弱而且后续网络要对脉冲的精确到达时间敏感训练难度骤升。脉冲时间依赖可塑性对就是后面要讲的STDP学习规则的编码视角其实最佳的编码策略因任务而异。对图像分类这类任务业界目前用得最多的是把像素强度映射成发放延时亮的地方先发脉冲暗的地方后发甚至不发。这种映射方式保留了空间相对关系又把时间维度用上了实践效果相当不错。从工程视角看我的个人建议是新手先玩速率编码把SNN整体流程跑通再去尝试时间编码。直接上时间编码调试难度至少翻倍。2.3 突触与连接前馈、反馈和侧抑制神经元之间通过突触传递脉冲。突触的核心参数有两个一个是权重决定前一个神经元的脉冲对后一个神经元膜电位的贡献是增强还是抑制另一个是延迟决定脉冲传导需要花多长时间。SNN网络拓扑也有讲究。除了常见的前馈结构一层连一层你还会看到递归连接recurrent connection即同一层神经元之间互相连接或者神经元连接回自己这在生物网络中非常常见。递归连接赋予了SNN处理时间序列时天然的短期记忆能力但随之而来的问题是训练稳定性更难控制。还有一个重要的拓扑机制叫侧抑制lateral inhibition——同一个神经元群体里谁先发放脉冲谁就会抑制周围其他神经元发放。这种机制在生物感知系统里普遍存在作用是让一群神经元对同一刺激不要全都兴奋而是形成胜者通吃的局面增强对比度、提升信息稀疏性。在实践中侧抑制也常常用来做无监督特征学习让不同的神经元自动分化各管各的特征。3. 和传统人工神经网络掰手腕SNN的核心差异与真实差距3.1 信息表示连续值 vs 离散事件我前面提到了信息编码的差异但这里还想再深入一点因为这决定了两种网络思维方式的分岔路。传统ANN里每个神经元的输出是一个标量经过非线性激活后直接传给下一层。这个标量携带的信息量很大——它可以是任意精度的小数。所以ANN对权重和激活值的精度要求很高。SNN的神经元输出是0/1事件序列单次脉冲本身几乎不携带任何数值信息。信息完全依赖脉冲的时序模式。这意味着SNN处理同样的信息通常需要更长的时间窗口或者更多的神经元数量来补偿单脉冲的贫信息。所以我得坦白一个很多人不愿面对的事实在同等规模下SNN在精度上目前普遍打不过ANN。在ImageNet这种静态图像分类任务上SNN的最佳成绩往往比同代CNN低几个百分点。精度是SNN目前最明显的短板任何声称SNN全面超越深度学习的说法你都可以先打个问号。3.2 计算范式同步密集计算 vs 异步事件驱动ANN的计算模式本质上是稠密矩阵乘法。每一层每一个神经元都要参与运算无论输入数据里有没有有效信息。比如你用CNN识别一张大部分是蓝天白云的图片背景区域占了几百万像素这些像素同样要跑一遍卷积虽然它们的信息量趋近于零。SNN不一样。如果输入是一帧几乎没有变化的画面SNN的神经元根本不会发放脉冲后续层也就没有计算发生。只有画面里有变化、有事件的时候相关回路才被激活并产生计算。这就是所谓的事件驱动计算也是SNN能实现超低功耗的根源所在。这种计算模式的差异用通信系统类比最直观ANN相当于一个固定带宽的信道不管有没有内容每帧都全量传输SNN则像在发消息时才占用带宽的突发通信协议安静时信道完全空闲。3.3 学习方式反向传播 vs 局部可塑性规则第二代神经网络的核心训练算法是反向传播backpropagation它依赖的是一张巨大的计算图从输出层算误差梯度一路链式法则回传到输入层每一层的权重都在同一个全局误差信号驱动下更新。SNN的学习要尴尬很多。因为脉冲发放过程是不可微的——脉冲函数在放电时刻是个阶跃导数要么是0要么是无穷大标准的反向传播根本没法穿透这个环节。关于怎么解决这个问题我下一章专门讲。传统ANN训练好之后推理时模型是冻结的而SNN由于使用了STDP等局部学习规则在推理过程中也可以持续调整权重实现真正的在线学习。这在动态环境里非常有用比如传感器漂移、环境光照变化、用户行为模式变化。3.4 能耗对比为什么SNN被寄予厚望精度落后那SNN凭什么受关注答案就一个字省。传统神经网络在GPU上推理GPU的功耗动辄几百瓦。即便在嵌入式设备上用NPU跑量化后的模型处理一帧图像也需要消耗可观能量。而SNN结合神经形态芯片处理相同的任务可以把功耗降到毫瓦甚至微瓦级别。这里有个直观的数据IBM早期研究的TrueNorth芯片集成4096个神经突触核心、100万个神经元、2.56亿个突触功耗仅约70毫瓦。Intel的Loihi 2每一代都在提升规模同时保持极低功耗。对比动辄几百瓦的GPU那是数万倍的差距。当然功耗优势不是免费的。SNN芯片的低功耗依赖极高的稀疏性——如果任务本身信息密集比如处理连续的自然语言神经元都在高频放电SNN的功耗优势就会大打折扣。所以最合适的应用是那些大部分时间无事发生的场景例如智能传感器、可穿戴设备、工业监控。4. 训练SNN的核心难题与破解路径4.1 脉冲的不可微困境前面提到了SNN的神经元发放脉冲是一个离散事件膜电位跨过阈值时输出从0跳到1。数学上这个跳变是一个阶跃函数它在阈值点不可导。反向传播需要每一层可微这个不可导点直接把梯度链截断了。早期研究者想过各种办法绕过这个问题总结下来主要分出三条技术路线。4.2 路线一ANN转SNN这是最容易实现、工程上也最成熟的一条路先用传统ANN在GPU上正常训练训练完成后把连续的激活值改造成脉冲频率即把ReLU产出映射为Poisson发放速率或者其他脉冲编码形式。具体步骤大致如下训练一个普通的ANN用ReLU激活函数把ReLU激活函数改成IF积分-放电或LIF神经元模型将权重从ANN平滑地迁移到SNN结构中通过计算发放频率≈激活值比例的关系对输入数据进行编码校准权重缩放让SNN的输出分布尽量逼近原ANN的输出分布。这条路径的优点是稳只要ANN训练得好转出来的SNN精度损失可控。缺点是转换过程需要精细的校准而且转换后的SNN失去了时间特性的优势本质上是表面SNN、内心ANN。4.3 路线二代理梯度Surrogate Gradient代理梯度是目前训练SNN的主流方法。思路很直接既然阶跃函数不可导那我就造一个长得像阶跃函数但处处可导的替代函数。在反向传播的时候用替代函数的导数在前向传播的时候仍然用真正的阶跃函数发放脉冲——前向用真身反向用替身。这种做法有点像表里不一但却在数学上被证明非常有效。常见替代函数有矩形函数、sigmoid函数、反正切函数族等。代理梯度训练的SNN精度能够逼近同结构的ANN在CIFAR、ImageNet等基准数据集上都验证过。缺点是为了准确模拟脉冲时序行为训练需要展开成多个时间步显存占用和训练时间大概是等规模ANN的3到10倍对算力要求高。我第一次跑代理梯度训练时最大的问题是显存莫名其妙不够用。后来才意识到规则的每一帧都需要存一份膜电位和神经元的内部状态相当于把模型扩大了时间步数倍。所以实践上建议先用小时间步比如8步跑通调参流程验收后再增大时间步。4.4 路线三局部无监督学习——STDP赫布法则一起放电的神经元连在一起在SNN里的具体化就是脉冲时间依赖可塑性Spike-Timing-Dependent Plasticity, STDP。它的核心规则是如果前一个神经元先放电紧接着后一个神经元也放电常见是几十毫秒窗口内那么这个突触连接会被加强长期增强如果后一个神经元先放电、前一个神经元后放电突触连接会被削弱长期抑制。STDP的天然优势是局部性——权重更新只依赖突触前后两个神经元的放电时刻不需要全局误差信号因此在硬件上实现极其高效几乎不占额外内存带宽。劣势也很明显STDP本身是无监督学习它学习的是输入特征的统计相关性而不是某个任务的监督信号。做分类任务时STDP之后往往还需要一个简单的分类头例如读出层做监督学习或决策。实际使用中我常用STDP无监督预训练 监督分类头的组合先用STDP让网络自动学习输入数据的特征表征再用少量标注数据微调分类层。这种混合方案在数据量少、标签稀缺的场景例如工业异常声音检测下表现不错。4.5 训练SNN的实际调参经验分享几个我在项目里摸爬滚打总结出的实操要点**时间步长timestep**是SNN最重要的超参数没有之一。它直接决定网络的时序分辨率。图像类任务通常用10到50步时间序列任务需要更精细的步长但步长过大训练成本高、收敛慢。脉冲突发不要太密集。如果一个神经元几乎每个时间步都在放电说明阈值设得太低或者输入增益太大。理想状态下稀疏率总时间步里有脉冲的比例应该控制在10%以下。如果过高SNN会退化成ANN功耗优势也没了。膜时间常数 (\tau_m) 影响神经元的记忆窗口。值太小神经元很快就忘了之前的输入时序依赖捕捉不到值太大神经元会持续积攒噪声误脉冲率高。我的经验是从5到20ms起步调试。权重初始化对SNN尤其敏感。建议用小方差初始化否则初始膜电位很容易集体超阈值训练一开始就崩了。5. 神经形态芯片与硬件加速SNN的真正黄金搭档5.1 为什么通用芯片跑SNN效率不高按理说SNN是稀疏计算的典范在GPU上应该也能跑得好。事实却是SNN在GPU上的加速效果很有限。原因在于GPU的指令流是围绕稠密张量运算设计的它的所有优化——缓存、SIMD通道、张量核——都假设每一层在转发数据时是满编的。而SNN的稀疏脉冲导致大量计算单元处于空闲状态即使有稀疏张量加速也远远接不住脉冲带的逐时间步状态演化负担。所以业界做了个关键决定为SNN专门设计芯片。这类芯片有个专有名词——神经形态芯片Neuromorphic Chip。5.2 主流神经形态芯片一览排名不分先后几款比较有代表性的芯片芯片研发方神经元规模核心特点TrueNorthIBM100万2014年发布早期探索的先驱功耗极低Loihi 2Intel约100万神经元/芯片支持片上学习、可编程时间常数、递归连接SpiNNaker系列曼彻斯特大学可达百万到十亿级基于ARM核的实时脉冲处理偏向神经科学研究Darwin浙江大学数十万级国产神经形态芯片代表功耗低Tianjic清华大学混合架构同时支持ANN与SNN可切换计算范式Intella的Loihi 2目前关注度最高因为它不仅能做推理还支持片上STDP学习和突触延迟控制非常适合做实时自适应系统的实验。不过它的开发工具链相对封闭上手门槛高DARWIN和SpiNNaker则更偏处理器多核互联的研究平台适合模拟大规模生物网络。5.3 事件相机和SNN最搭的传感器如果只做SNN算法而没有合适的传感器配合威力会被大打折扣。**事件相机Event Camera**就是和SNN在物理层面天然匹配的传感器。传统相机每一帧输出一张完整的图像——不管画面有没有变化固定帧率地全量输出。事件相机则完全不一样每个像素独立工作只有当该像素位置的光照强度变化超过一定阈值时才产生一个异步事件时间戳坐标极性。画面静止时事件相机几乎不输出任何数据但刷新率可以高达微秒级。用大白话说传统相机是每秒拍30张照片事件相机是记录每一个亮度变化的瞬间。这种特性让事件相机特别擅长捕捉高速运动、极端光照变化高动态范围的场景而普通相机要么糊掉、要么过曝。SNN接事件相机数据流的流程大概是事件流被编码成脉冲序列直接输入SNN的第一层然后经过脉冲卷积、递归层等提取时空特征最后用一个读出层做分类或决策。基于这套组合的一个典型应用是高速目标追踪——无人机避障、机器臂抓取、AR手势识别。这些场景的共同点是运动快、时间极敏感、环境光照不可控而且嵌入式平台的功耗预算极为有限正是事件相机SNN组合的舒适区。5.4 硬件落地的现实难度聊完黑科技我得泼一盆冷水神经形态芯片目前还远没有到拿来即用的阶段。首先是开发工具链不成熟主流芯片的SDK和教程远没有GPU那套生态丰富其次是精度与性能的平衡实测中SNN在神经形态芯片上的推理精度往往比仿真环境低再次是工程成熟度很多芯片停留在学术原型阶段缺乏长期供货保障。所以如果你在工业界想要落地SNN比较现实的路径是先在GPU上进行仿真和训练用代理梯度等方法把模型调到可用精度再迁移到神经形态芯片或低功耗FPGA上做推理。纯从零开始做全套SNN硬件方案目前只适合有充足资源的研究型团队。6. 哪类任务适合SNN真实落地场景与收益分析6.1 机会窗口很大但别谈通用替代SNN绝对不是要替代深度学习的。它适合的场景都有几个共同特征时间信息重要、数据稀疏、功耗约束强、实时性要求高。反过来如果任务本身就是静态、稠密、大规模的数据例如离线文本分类、大规模图像检索SNN目前没有优势老老实实用Transformer或CNN。6.2 值得关注的方向清单低功耗传感与物联网端侧智能是SNN最成熟的方向。比如智能穿戴设备里做动作识别加速度计采样频率高、数据稀疏大部分时间人是静止的SNN可以在提供相当准确率的同时把功耗压到非常低让手表或耳机的电池多扛几天。工业预测性维护也很有意思。设备振动信号、温度信号、声音信号在正常运转阶段基本没什么有意义的变化一旦出现故障苗头信号会产生突发事件。SNN天然适合这种等异常事件的监控模式而且可以本地部署在传感器旁无需把数据持续回传云端。高速视觉处理主要是配合事件相机做运动检测、追踪和VIO视觉惯性里程计。在高速场景下传统帧率相机容易过曝或拖影SNN加事件相机的组合可以把延迟压到毫秒级。神经科学和计算神经学也是SNN的传统大本营。用SNN建生物神经网络模型研究信息编码与学习规则这里SNN不是作为AI工具而是作为理解大脑的模型。如果你想找一条交叉学科的研究路线这是不错的选择。6.3 模拟仿真工具与上手建议如果看完上面这些你想试一把SNN那么工具有这么几个Brian2Python库专注神经科学仿真模型自由度最高但训练大规模SNN性能较慢。Nengo支持ANN和SNN互相转换支持多种后端包括Loihi非常适合先用ANN训练再转SNN部署的路线。SpykeTorch / snnTorch / Norse基于PyTorch的SNN训练库支持代理梯度适合做端到端训练。我的建议是先装snntorch或Norse载一个MNIST或N-MNIST事件版MNIST跑通最小示例熟悉脉冲序列的格式和网络结构。跑通一遍后再深入追源码搞清楚它内部的膜电位更新是怎么用张量运算实现的。6.4 一个案例事件相机手势识别下面这个流程是我常跟新人讲的参考路径你可以直接照着搭收集或生成事件流数据如果是模拟场景用DVS相机拍摄或用工具把普通视频转换成模拟事件流把事件流聚合固定时间窗口转换成分辨率 H×W×T 的脉冲张量或直接用事件坐标序列输入一个脉冲卷积网络每层用LIF神经元激活用代理梯度训练时间步长建议选择10到20之间训练结束后做精度和功耗评估精度不达标先调时间步长、阈值和 (\tau_m)部署到神经形态芯片或低功耗FPGA上做实测。我在做类似流程时踩过一个比较大的坑直接用原始事件流训练网络收敛很慢。后来发现原因是没有对事件流做时间窗口聚合每帧数据太稀疏、信号太弱。正确做法是先把事件按固定时间窗口累积成帧保证每一个时间步里都有足够的空间信息模型才能真正学到东西。这个经验你可以直接拿过去用。7. 给入门者的路线图从看懂概念到跑通第一个SNN7.1 路线总览很多人问我我想入坑SNN该从哪里开始我给出的大致路线是先理解模型LIF、STDP再用现成库跑通MNIST然后做一个小项目比如事件流数据分类最后再决定要不要深入硬件或算法研究。具体分四步走基础概念储备看懂LIF方程理解速率编码和时间编码代码实战用snntorch实现一个两层SNN跑MNIST分类选一个方向深入要么死磕训练算法代理梯度、ANN转SNN要么死磕硬件神经形态芯片跟一个完整的项目最好是传感器数据相关的因为这类数据稀疏且带时间特性SNN的优势能最大化体现。7.2 语法快速示例用snnTorchsnnTorch的核心实现很简洁。一个两层脉冲卷积网络的骨架长这样Python依赖torch和snntorchimport torch import torch.nn as nn import snntorch as snn from snntorch import spikegen class SimpleSNN(nn.Module): def __init__(self, num_inputs784, num_hidden256, num_outputs10): super().__init__() # 第一层输入直接连接LIF神经元 self.fc1 nn.Linear(num_inputs, num_hidden) self.lif1 snn.Leaky(beta0.9) # beta是膜电位衰减因子 # 第二层隐藏层到输出层 self.fc2 nn.Linear(num_hidden, num_outputs) self.lif2 snn.Leaky(beta0.9) def forward(self, x): # x形状: [batch, num_inputs] # 初始化膜电位 mem1 self.lif1.init_leaky() mem2 self.lif2.init_leaky() # spk_rec和mem_rec用来记录每个时间步的脉冲和膜电位 spk_rec [] mem_rec [] # 模拟时间步 for step in range(num_steps): cur1 self.fc1(x) spk1, mem1 self.lif1(cur1, mem1) cur2 self.fc2(spk1) spk2, mem2 self.lif2(cur2, mem2) spk_rec.append(spk2) return torch.stack(spk_rec)这个示例最关键的是一个概念每个时间步都要更新一次膜电位并对最后一层的脉冲序列做统计通常是时间维求和才能得到分类结果。如果你跑这个代码时发现精度怎么这么低先别急着怀疑模型检查三件事时间步数是否太少、beta是否合理、输入数据是否做了脉冲编码。这三点是SNN新手最容易踩的坑。7.3 我建议你避开的坑结合我带过新人的经验这里统一说一下能帮你省至少一周的调试时间别一上来就上代理梯度。先把速率编码的简单SNN跑通理解了脉冲是怎么流动的再上复杂训练法。别在数据集上追求SOTA。SNN社区的benchmark一般都用特定设置你复现不出来很正常。初期的目标应该是理解框架、理解网络行为而不是刷分。算力紧张就选小模型小数据集。N-MNIST或一个小规模事件分类数据集就够用别一上来就上ImageNet规模需要数百小时级训练时间不说调试成本更是灾难。可视化膜电位变化。我强烈建议你把训练中神经元的膜电位变化可视化出来。看到膜电位爬坡→过阈值→发放脉冲→重置的完整过程比读十遍公式都有用。8. 最后聊几个真问题SNN的边界与未来的期望SNN这个概念经常被捧成下一代AI的答案也被踩过永远追不上深度学习。这两种极端评价其实都偏离事实。目前SNN的实际状态是特定任务上确实省电、确实快但通用性和精度还差得远。我认为最近几年真正值得期待的方向有三个第一是边缘AI的重新定义。随着事件相机、生物传感器普及端侧数据的形态正在从密集帧转向稀疏事件流SNN恰好是为这类数据而生的。当你的数据本身是事件格式SNN就不再是降级方案而是天然的第一选择。第二是与深度学习的混合架构。目前很多研究工作开始把SNN和ANN结合用ANN做全局特征提取用SNN做局部时序决策。这种混合模式在速度、功耗和精度的综合指标上往往比单一架构更实用。我预测未来三到五年工业界落地的SNN大概率是混合形态而不是纯血SNN。第三是学习算法的统一。ANN的反向传播和SNN的STDP目前还像是两个星球的语言但已经有人在研究它们在数学上的关联例如把STDP看作某种特定条件下的梯度下降近似。如果这个理论桥梁能彻底打通SNN的训练效率会有一次飞跃。我自己从首次接触SNN到现在最大的感受是这个领域还处在敢想阶段论文里大量想法离工程落地还很远但反过来正因为离得远才值得投入时间。如果你手上刚好有一个功耗敏感、事件稀疏的时间序列问题SNN值得你花一个月时间认真试一次。哪怕最终没有达到预期你也会对计算到底是什么多一层非常深刻的理解。
返回列表