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

news2025/5/25 19:48:22

速率编码(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.coloradmin.cn/o/2385566.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32F103 HAL多实例通用USART驱动 - 高效DMA+RingBuffer方案,量产级工程模板

导言 《STM32F103_LL库寄存器学习笔记12.2 - 串口DMA高效收发实战2:进一步提高串口接收的效率》前阵子完成的LL库与寄存器版本的代码,有一个明显的缺点是不支持多实例化。最近,计划基于HAL库系统地梳理一遍bootloader程序开发。在bootloader程…

HTML回顾

html全称:HyperText Markup Language(超文本标记语言) 注重标签语义,而不是默认效果 规则 块级元素包括: marquee、div等 行内元素包括: span、input等 规则1:块级元素中能写:行内元素、块级元素&…

机器视觉6-halcon高级教程

机器视觉6-halcon高级教程 双目立体视觉原理视差外极线几何双目标定 双目立体视觉之Halcon标定一.标定结果二.Halcon标定过程1.获取左右相机图像中标定板的区域;2.提取左右相机图像中标定板的MARK点坐标和摄像机外部参数;3.执行双目标定;4.获取非标准外极线几何到标…

YOLOv8 的双 Backbone 架构:解锁目标检测新性能

一、开篇:为何踏上双 Backbone 探索之路 在目标检测的领域中,YOLOv8 凭借其高效与精准脱颖而出,成为众多开发者和研究者的得力工具。然而,传统的单 Backbone 架构,尽管已经在诸多场景中表现出色,但仍存在一…

1.4 TypeScript 编译是如何工作的?

TypeScript 是 JavaScript 的超集,最显著的优势是引入了静态类型检查。它能帮助开发者在编写代码阶段捕获错误,从而提升代码的健壮性和可维护性。虽然 TypeScript 本身不能直接在浏览器或 Node.js 中运行,但它可以被编译成标准的 JavaScript&…

Web 服务、 Nfs 服务器以及 Dns 服务器综合实验

要求: 1.web 服务的资源文件通过 nfs 服务器共享 www.luntan.com 2.确保所有主机时间同步 3.定义本地 dns 服务器解析 web 主机域名 实验: 主机服务程序192.168.96.142dns、nfs192.168.96.132web 服务器说明: 设备 IP服务端 192…

汇编语言的子程序魔法:解锁四则运算的奥秘

在嵌入式系统的世界里,汇编语言就像是魔法师手中的魔杖,能够直接操控硬件,实现各种神奇的功能。今天,我将带你走进一场充满乐趣的实验:如何用汇编语言实现四则运算,并将它们封装成子程序。这不仅是一次技术…

快速解决Linux 中yum镜像拉取失败问题

在linux中使用yum命令拉取镜像的时候,如果出现如下类似报错: 我这里是安装Erlang环境也是同样报错: 其实就是网络环境的问题,更换为国内的镜像源就行了,可以选择cmd的ssh连接方式(命令:ssh root192.168.xxx…

HarmonyOS基础组件:Button三种类型的使用

简介 HarmonyOS在明年将正式不再兼容Android原生功能,这意味着对于客户端的小伙伴不得不开始学习HarmonyOS开发语言。本篇文章主要介绍鸿蒙中的Button使用。 HarmonyOS中的Button相较于Android原生来说,功能比较丰富,扩展性高,减…

产业互联网+三融战略:重构企业增长密码

产业互联网时代:用"三融"重构企业增长飞轮 在产业互联网浪潮下,企业面临资源分散、资金短缺、人才难聚的三重挑战。本文提出的"融人、融资、融资源"顶层设计,正为新时代企业构建增长新引擎。 一、三级合伙人体系&#x…

Centos系统资源镜像配置

主要体现 yum 命令执行报错,排除网络连接问题 解决步骤: 下载安装工具 # 安装 wget curl vim yum install -y wget curl vim 原有repo文件备份 # 进入配置文件所在文件夹 cd /etc/yum.repos.d# 创建 backup 文件夹 mkdir backup# 备份文件放置文件夹 m…

【Linux网络篇】:Socket网络套接字以及简单的UDP网络程序编写

✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨ ✨ 个人主页:余辉zmh–CSDN博客 ✨ 文章所属专栏:Linux篇–CSDN博客 文章目录 网络编程套接字一.预备知识1.理解源IP地址和目的IP地址2.认识端…

学习路之uniapp--unipush2.0推送功能--给自己发通知

学习路之uniapp--unipush2.0推送功能--给自己发通知 一、绑定云空间及创建云函数二、编写发送界面三、效果后期展望: 一、绑定云空间及创建云函数 package.json {"name": "server-push","dependencies": {},"main": "…

leetcode hot100刷题日记——12.反转链表

解答: /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), next(n…

《Python语言程序设计》第4章第8题3个个位数之间比大小。‘a小于b而b大于c’这是最有漏洞的一个对比,请问我如何判断a和c

升序来做这个题 比如123就变成321 需要比对3个数 这不是比对2个数。a和b比对 我们可以直接写 if a>b: print(ab) else print(ba) 但是现在是3个数abc 如果进行if比对呢 if a > b >c: print(a,b,c) elif a < b >c: print(bca) … 简洁的代码变成了复杂的代码段。…

Selenium 测试框架 - Python

🚀Selenium Python 实战指南:从入门到进阶 Selenium 是 Web 自动化测试中最受欢迎的工具之一,支持多种浏览器和语言。本文将从环境搭建到多浏览器兼容、测试框架集成、元素定位方式、常用操作、浏览器配置等多个方面进行详细讲解,并分享常见的最佳实践建议。 📦一、环境…

RNN GRU LSTM 模型理解

一、RNN 1. 在RNN中&#xff0c; 二、GRU 1. GRU是为了解决RNN 梯度消失引入的改良模型&#xff0c; 2. GRU 通过门控 Gamma_r Gamma_u 两个变量&#xff0c;实现了对于过往记忆的筛选&#xff1a;这种机制使得GRU能够灵活地决定何时“忘记”过去的信息以及何时“记住”新的…

【MC】红石比较器

在《我的世界》&#xff08;Minecraft&#xff09;中&#xff0c;红石比较器&#xff08;Redstone Comparator&#xff09; 是一种高级红石元件&#xff0c;主要用于 检测、比较或处理信号强度&#xff0c;同时还能与容器、特定方块互动。 红石比较器有两种模式&#xff1a; 比…

红黑树简单模拟实现

定义成员变量旋转insert以234树的角度来待插入操作具体代码 完整代码 我们前面实现了 二叉搜索树和 AVL树。 其中AVL树是二叉搜索树的改进&#xff0c;但是有些人觉得二叉树搜索的插入调整太频繁了&#xff0c;或者说平衡条件过于苛刻。 于是人们放松了左右子树高度差的限制&…

豪越科技:消防应急装备智能仓储管理新变革

在消防救援工作中&#xff0c;消防装备无疑是消防员们与火灾等灾害顽强对抗的关键“武器”。然而&#xff0c;传统的消防装备管理模式长期以来饱受诸多痛点的困扰&#xff0c;严重影响着消防工作的高效开展和救援效果。 在过去&#xff0c;装备丢失的情况时有发生。由于缺乏有效…