当前位置: 首页 > java >正文

三种常见脉冲神经网络编码方式解读

速率编码(rate coding)

速率编码使用输入特征来确定尖峰频率,例如将静态输入数据(如 MNIST 图像)转换为时间上的脉冲(spike)序列。它是将神经元发放脉冲的频率与输入值(如像素强度)建立联系的一种编码方式(应用较为广泛)。其核心思想是:

  • 像素值越高,脉冲发放越频繁;

  • 像素值越低,发放越稀疏,甚至不发放。 

图1. MNIST数据集图像转化为脉冲编码。
  • 将输入图像转换为一个随时间变化的二值脉冲序列(0 或 1),形成一个 spike train。

  • 每个像素变成一串在若干时间步内可能为“1”的离散事件,值为1时代表该时间点有脉冲。

  • 时间上的这些脉冲事件与原始像素强度成比例(这就是速率编码):强度高的像素在序列中出现1的概率更高。

例如

  • 一个像素值为0.9,可能在10个时间步中产生9次脉冲;

  • 一个像素值为0.1,只会偶尔产生1次脉冲(10个时间步中)。

延迟编码(latency coding)

延迟编码使用输入特征来确定峰值时间。

机制
  • 输入值会转换为单个脉冲,但脉冲的时间决定了输入值的大小。

  • 例如,在MNIST数据集中,接近1的功能会更早触发,而接近0的功能会更晚触发。像素强度为0.9的像素可能在t=1时发放脉冲,而强度为0.2的像素在t=8发放脉冲。也就是说,在MNIST案例中,明亮的像素会更早发射,而黑暗的像素会更晚发射。一句话总结:输入大意味着峰值快;输入小意味着峰值晚。

  • 时间窗口中只有一次发放(或不发),是时间稀疏型编码

优点
  • 高效:每个神经元只发一个脉冲,节省能量。

  • 精确表达时间信息:适用于对时间敏感的任务(如声纹识别、动作感知等)。

缺点
  • 对噪声敏感:小的时序误差可能会造成显著的识别错误。

  • 需要高精度时钟同步。

原理分析:

效果展示:

增量调制(delta modulation)

增量调制使用输入特征的时间变化来产生尖峰。

机制
  • 系统记录前一时刻的输入值,只在当前输入值与之前相比有显著变化时,发出脉冲。

  • 脉冲信号表示“变化发生了”,而不是输入值本身。

  • 可使用“正变化”和“负变化”两类脉冲。

优点
  • 高能效:输入静止或缓慢变化时几乎不发脉冲,节省计算和能量。

  • 更适合处理视频流、连续传感器数据等时变信号。

缺点
  • 不适合静态图像(如 MNIST),因为没有“变化”就没有脉冲(与使用在速率编码rate coding中的增加时间步使得静态图像成为video的方式进行比较,置于“supplentary information”)。

  • 初始状态需要校准,依赖上下文历史。

Supplementary Information:

增量调制不建议用于静态图像原因分析:

增量调制(Delta Modulation)的设计初衷是为动态、连续的信号输入服务,如传感器数据、视频帧、语音波形等。这些数据天然包含时间上的“变化”信息。由于只在输入有“明显变化”时发放脉冲,对于一帧静态图像,这种变化在时间上根本不存在,所以无法自然产生脉冲。如果使用类似rate coding的方式将静态图片中的各个像素在不同时间步作为网络输入,即实现像素值轻微波动制造人为的“变化”以触发脉冲,会引入噪声扰动而并非真实语义变化即“伪脉冲”;此外,增量调制依赖的时间关联将被破坏,导致脉冲分布偏离原始的图像特征。

速率编码适配静态图像原因分析:

rate coding并不依赖时间变化,只是将像素值映射为脉冲发放的频率,因此适用于非时间相关的数据,例如图片、结构化特征向量等。

Conclusion

调整方式可行性风险或挑战
添加扰动或噪声有限易引入不必要脉冲,增加误差
设计滑动窗口机制可行设计复杂度高,需任务定制
使用自然序列图像理想数据源要求变为动态数据(如视频)

综上分析,如果具体的任务本质是静态分类,使用速率编码延迟编码更自然。而若你是在开发低功耗、动态感知系统(如事件摄像头、安防感知设备),那么增量调制在真正的动态场景中会表现得更好。

http://www.xdnf.cn/news/8551.html

相关文章:

  • << C程序设计语言第2版 >> 练习1-14 打印输入中各个字符出现频度的直方图
  • redis哨兵服务
  • ES 面试题系列「三」
  • ABP VNext + Orleans:Actor 模型下的分布式状态管理最佳实践
  • 如何利用夜莺监控对Redis Cluster集群状态及集群中节点进行监控及告警?
  • 怎样把B站的视频保存到本地
  • python学习打卡day35
  • 操作系统与底层安全
  • 跨链风云:打破区块链孤岛,实现价值自由流转
  • SDC命令详解:使用set_logic_dc命令进行约束
  • 【软考向】Chapter 2 程序设计语言基础知识
  • Vanna.AI:解锁连表查询的新境界
  • uni-app学习笔记十--vu3综合练习
  • 前端实战:用 JavaScript 模拟文件选择器,同步实现图片预览与 Base64 转换
  • Python序列化与反序列化
  • 人工智能在医疗影像诊断上的最新成果:更精准地识别疾病
  • python:机器学习概述
  • csp备考Day1|string和vector
  • BSDIFF算法详解
  • 2025陕西ICPC邀请赛题解(部分)
  • JVM学习(五)--执行引擎
  • 内容中台的数字化管理核心是什么?
  • 使用Spring Boot和Redis实现高效缓存机制
  • 网络安全给数据工厂带来的挑战
  • 25年软考架构师真题(回忆更新中)
  • 深度学习——超参数调优
  • 前端框架token相关bug,前后端本地联调
  • SGlang 推理模型优化(PD架构分离)
  • 从脑电图和大脑记录中学习稳健的深度视觉表征
  • 【HarmonyOS Next之旅】DevEco Studio使用指南(二十六) -> 创建端云一体化开发工程