组会 | SNN 的 BPTT(backpropagation through time)
目录
- 1 神经学基础知识
- 1.1 神经元
- 1.2 神经元之间的连接
- 1.3 膜电位
- 1.4 去极化与超极化
- 2 SNN
- 2.1 LIF 模型
- 2.2 BPTT 中存在的问题
- 2.3 梯度爆炸或消失问题
前言:
- 本博仅为组会总结,如有谬误,请不吝指正!
- 虽然标题为 BPTT,但侧重于对神经学基础知识和 LIF 模型的学习。
参考博客:
- 神经元 - 维基百科
- SNN 学习笔记(一):LIF 模型
1 神经学基础知识
1.1 神经元
神经元(英语:neuron)主要由胞体(全称细胞体)和胞突(胞突包含树突和轴突)组成,其基本构造包括:树突、轴突、髓鞘和细胞核。
神经元的结构如下图所示:
根据维基百科以及医学生同学的说明,可以把神经元理解成:由树突、细胞体、轴突三大部分组成,而髓鞘是包裹在轴突外的一层物质。如下图所示:
图源维基百科:https://zh.wikipedia.org/wiki/%E7%A5%9E%E7%B6%93%E5%85%83
1.2 神经元之间的连接
下图展示了三个神经元之间的连接:
注意:突触不是一个神经元上的单一结构,而是在两个神经元之间形成的连接!
突触(英语:Synapse)是神经元之间或神经元与非神经元细胞(如肌肉细胞或腺体)之间的特化连接。它主要包括以下三个部分:
- 突触前膜:是指轴突末梢的细胞膜。
- 突触后膜:是指下一个神经元的树突或细胞体的细胞膜,它含有神经递质的受体。
- 突触间隙:是指突触前膜和突触后膜之间的空间,神经递质在这个空间中扩散。
突触的具体结构如下图所示:
典型的化学突触(突触分为化学突触和电突触这两大类)是在两个神经元之间形成的单向通信机制。神经信息的流向是从突触前细胞到突触后细胞。突触通常形成在突触前细胞的轴突和突触后细胞的细胞体或树突之间。在常见的突触中,从突触后细胞的细胞膜上伸出一个称为突棘的突起物,与突触前细胞的轴突末梢相对,形成一个宽约 20nm 的空隙,成为突触间隙。
GPT:“突棘” 并不是 “树突” 本身,而是树突上的一个小突起。
突触前膜内的突触小泡含有在细胞体内合成并转运过来的神经递质分子。
- 当突触前细胞受到刺激并产生动作电位时,这个电信号会传播到轴突末端,导致钙离子通道开放,使钙离子流入轴突末端。该过程称为 “兴奋-分泌” 耦合,是神经元将电信号转化为化学信号的关键机制。
- 流入的钙离子(Ca²⁺)触发突触小泡与突触前膜融合,通过胞吐作用将神经递质释放到突触间隙。释放后的神经递质分子会扩散到突触后膜,并与膜上的特异性神经递质受体结合。
这种结合可以在突触后细胞产生局部电位、改变基因表达或引发其他细胞内的生化反应,从而完成神经元之间或神经元与靶细胞之间的信号传递。
科普:在静息状态下,细胞膜内外存在电位差,通常内部较外部负,这个电位差称为静息膜电位。当细胞膜对钙离子的通透性增加时,钙离子从细胞外流入细胞内,导致细胞内正电荷的增加,这时细胞膜电位就会向零电位方向移动,即发生去极化。如果去极化达到一定的阈值,就会触发动作电位的产生,使得细胞能够传递电信号。
1.3 膜电位
膜电位(英文:membrane potential)是指以细胞膜为间隔的细胞内外溶液之间的电位差。动物与植物的细胞膜在静息时维持一定电位差,细胞内部的负电性常大于其外部。
神经元处于静息电位的示意图如下:
膜电位的大小主要是由细胞内外溶液的离子组成以及离子的膜通透性所决定的,其形成也依赖于膜上各种离子通道和离子泵的共同作用。
1.4 去极化与超极化
去极化(英文:depolarization)是静息电位减小的过程或状态,即细胞的膜电位向负值减少(正值增加)的方向变化。例如:细胞静息电位为 -70mV,其后膜电位变为 -60mV,则称该细胞去极化。
说明:静息时细胞的膜电位处于一定的负值水平。当细胞受到外界刺激后,静息电位的负值水平变小,向零电位趋近。这是因为细胞内外的阳离子或阴离子通过细胞膜的离子通道转移了,导致细胞内阳离子的净电荷增多了。
超极化(英文:hyperpolarization)是指神经元细胞膜内的电位向负值增大的方向变化。超极化是指神经细胞膜的一种生理状态。例如:细胞静息电位为 -70mV,其后膜电位变为 -80mV,甚至 -90mV,则称该细胞超极化。超极化可使神经元处于暂时的抑制状态。
下图中的纵轴是膜电位,横轴是时间。静息电位约为 -70mV,阈值约为 -55mV:
上图描绘了一个典型的动作电位周期:
- 刺激(Stimulus):当外界给予足够的刺激时,膜电位开始上升。
- 失败的启动(Failed Initiations):如果刺激不足以使膜电位达到阈限,则不会产生动作电位。
- 上升相(Rising Phase):一旦膜电位超过阈限,钠离子通道打开,钠离子进入细胞,导致膜电位急剧上升,直到达到峰值(大约 +40mV)。
- 峰值(Peak):这是动作电位的最高点,也是膜电位最正的点。
- 过冲(Overshoot):有时膜电位可能会短暂地超过其正常范围的正值。
- 下降相(Falling Phase):随着钠离子通道关闭和钾离子通道打开,钾离子流出细胞,导致膜电位逐渐下降。
- 下冲(Undershoot):在某些情况下,膜电位可能会暂时低于静息电位,然后恢复到正常的静息电位水平。
- 复极化:是指膜电位恢复到原始静息电位的过程。
- 超极化:有时膜电位可能会稍微低于静息电位,这被称为超极化。
- 恢复:最后膜电位完全恢复到静息电位,准备接受下一次刺激。
2 SNN
2.1 LIF 模型
LIF 模型(英文:Leaky Integrate-and-Fire Model)的核心思想如下:
- Leaky(泄露):在缺乏足够刺激或无外部输入的情况下,细胞膜的自然离子通道活动导致膜电位逐渐泄漏,趋向于静息状态,这主要是由于钾离子的外流。
- Integrate(集成):神经元能够接收并综合来自多个突触前神经元的信号,这些信号在时间和空间上的总和决定了膜电位的变动。
- Fired(激发):一旦膜电位达到阈值,神经元将发放一个动作电位。随后膜电位迅速下降并复位至一个特定的电位水平,通常低于静息电位,这个过程称为复位。
对于 SNN 中的 LIF 模型 ,我们可以用如下公式进行描述:
U [ t ] = β U [ t − 1 ] + W X [ t ] − S o u t [ t − 1 ] θ U[t] = \beta U[t-1] + WX[t] - S_{out}[t-1]\theta U[t]=βU[t−1]+WX[t]−Sout[t−1]θ
其中:
- U [ t ] U[t] U[t] 表示当前时刻 t 的膜电位, U [ t − 1 ] U[t-1] U[t−1] 表示上一时刻 t-1 的膜电位。
- X [ t ] X[t] X[t] 表示当前时刻 t 的输入,即来自其他神经元或外部环境的刺激。
- S o u t [ t − 1 ] S_{out}[t-1] Sout[t−1] 表示神经元在上一时刻 t-1 是否发放了动作电位;
- 若 S o u t [ t − 1 ] = 1 S_{out}[t-1]=1 Sout[t−1]=1,则表示神经元在上一时刻发放了动作电位;
- 若 S o u t [ t − 1 ] = 0 S_{out}[t-1]=0 Sout[t−1]=0,则表示神经元在上一时刻没有发放动作电位。
- β \beta β 衰减因子表示神经元内部状态的遗忘速度,取值范围通常在 0 到 1 之间。
- W W W 权重矩阵表示输入信号 X [ t ] X[t] X[t] 对神经元内部状态的影响程度。
- θ \theta θ 是神经元发放动作电位的阈值。
Q: − S o u t [ t − 1 ] θ - S_{out}[t-1]\theta −Sout[t−1]θ 的作用是什么?
A:若 S o u t [ t − 1 ] = 1 S_{out}[t-1] = 1 Sout[t−1]=1,则表示神经元在上一时刻发放了动作电位,那么 U [ t ] U[t] U[t] 会减去 θ θ θ,模拟膜电位的重置过程。因此 − S o u t [ t − 1 ] θ - S_{out}[t-1]\theta −Sout[t−1]θ 又被称为复位函数,但复位函数的形式其实不止这一种,它可以是把膜电位直接复位为 0,也可以是采用衰减的方式。
2.2 BPTT 中存在的问题
BPTT 是一种基于梯度的反向传播算法,主要用于训练循环神经网络,例如 RNN 和 SNN 。
如下图所示,SNN 和 RNN 的展开结构相似:
由于前期组会已经介绍过了 RNN 的 BPTT,因此这里就不推导 SNN 的梯度公式了。
针对采用 LIF 模型的 SNN,在使用 BPTT 进行模型训练时,可能会遇到梯度不可微的问题。
假设 LIF 模型采用如下公式模拟 Fired 阶段:
S ( U − θ ) = { 0 , U < θ 1 , U ≥ θ S(U - \theta) = \left\{ \begin{array}{ll} 0, & U < \theta \\ 1, & U \geq \theta \end{array} \right. S(U−θ)={0,1,U<θU≥θ
说明: U U U 是指当前时刻的膜电位,不过尚未经过复位函数 S S S 的处理。
而函数 S S S 在 U = θ U = \theta U=θ 这一点是不可微的,因为导数趋近于无限大:
∂ S ∂ U = { 0 , if U < θ 0 , if U > θ ∞ , if U = θ \frac{\partial S}{\partial U} = \begin{cases} 0, & \text{if }\ U < \theta \\ 0, & \text{if }\ U > \theta \\ \infty, & \text{if }\ U = \theta \end{cases} ∂U∂S=⎩ ⎨ ⎧0,0,∞,if U<θif U>θif U=θ
因此通常采用 代理梯度 来平滑这一问题,比如采用代理函数 S ~ \tilde{S} S~ 替代函数 S S S:
S ~ = 1 π arctan ( π U ) \tilde{S}=\frac{1}{\pi}\arctan(\pi U) S~=π1arctan(πU)
求导结果为:
∂ S ~ ∂ U = 1 π ⋅ 1 1 + ( π U ) 2 \frac{\partial \tilde{S}}{\partial U} = \frac{1}{\pi} \cdot \frac{1}{1 + (\pi U)^2} ∂U∂S~=π1⋅1+(πU)21
2.3 梯度爆炸或消失问题
在采用 BPTT 训练 RNN 时,针对梯度爆炸、梯度消失的问题:
- 使用 ReLU 等激活函数来代替 Sigmod 以尝试缓解;
- 或者限制时间步的个数。
以上方法对于 SNN 中的 BPTT 可能不适用:
- 在代理函数的基础上进一步替换为 ReLU 函数,可能偏差较大;
- 减少时间步,即忽略膜电位,可能会违反生物特性。
相关文章:

组会 | SNN 的 BPTT(backpropagation through time)
目录 1 神经学基础知识1.1 神经元1.2 神经元之间的连接1.3 膜电位1.4 去极化与超极化 2 SNN2.1 LIF 模型2.2 BPTT 中存在的问题2.3 梯度爆炸或消失问题 前言: 本博仅为组会总结,如有谬误,请不吝指正!虽然标题为 BPTT&am…...

CDA数据分析师一级经典错题知识点总结(3)
1、SEMMA 的基本思想是从样本数据开始,通过统计分析与可视化技术,发现并转换最有价值的预测变量,根据变量进行构建模型,并检验模型的可用性和准确性。【强调探索性】 2、CRISP-DM模型Cross Industry Standard Process of Data Mi…...

django基于Python的电影推荐系统
Django 基于 Python 的电影推荐系统 一、系统概述 Django 基于 Python 的电影推荐系统是一款利用 Django 框架开发的智能化应用程序,旨在为电影爱好者提供个性化的电影推荐服务。该系统通过收集和分析用户的观影历史、评分数据、电影的属性信息(如类型…...

JVM与Java体系结构
一、前言: Java语言和JVM简介: Java是目前最为广泛的软件开发平台之一。 JVM:跨语言的平台 随着Java7的正式发布,Java虚拟机的设计者们通过JSR-292规范基本实现在Java虚拟机平台上运行非Java语言编写的程序。 Java虚拟机根本不关心运行在其内部的程序到底是使用何…...

网络授时笔记
SNTP的全称是Simple Network Time Protocol,意思是简单网络时间协议,用来从网络中获取当前的时间,也可以称为网络授时。项目中会使用LwIP SNTP模块从服务器(pool.ntp.org)获取时间 我们使用sntp例程,sntp例程路径为D:\Espressif\…...

【CSS】HTML页面定位CSS - position 属性 relative 、absolute、fixed 、sticky
目录 relative 相对定位 absolute 绝对定位 fixed 固定定位 sticky 粘性定位 position:relative 、absolute、fixed 、sticky (四选一) top:距离上面的像素 bottom:距离底部的像素 left:距离左边的像素…...

spark汇总
目录 描述运行模式1. Windows模式代码示例 2. Local模式3. Standalone模式 RDD描述特性RDD创建代码示例(并行化创建)代码示例(读取外部数据)代码示例(读取目录下的所有文件) 算子DAGSparkSQLSparkStreaming…...

【Rust自学】11.5. 在测试中使用Result<T, E>
喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 11.5.1. 测试函数返回值为Result枚举 到目前为止,测试运行失败的原因都是因为触发了panic,但可以导致测试失败的…...

Sping Boot教程之五十四:Spring Boot Kafka 生产者示例
Spring Boot Kafka 生产者示例 Spring Boot 是 Java 编程语言中最流行和使用最多的框架之一。它是一个基于微服务的框架,使用 Spring Boot 制作生产就绪的应用程序只需很少的时间。Spring Boot 可以轻松创建独立的、生产级的基于 Spring 的应用程序,您可…...

设计模式-结构型-组合模式
1. 什么是组合模式? 组合模式(Composite Pattern) 是一种结构型设计模式,它允许将对象组合成树形结构来表示“部分-整体”的层次结构。组合模式使得客户端对单个对象和组合对象的使用具有一致性。换句话说,组合模式允…...

基于Java的推箱子游戏设计与实现
基于Java的推箱子游戏设计与实现 摘 要 社会在进步,人们生活质量也在日益提高。高强度的压力也接踵而来。社会中急需出现新的有效方式来缓解人们的压力。此次设计符合了社会需求,Java推箱子游戏可以让人们在闲暇之余,体验游戏的乐趣。具有…...
Spark vs Flink分布式数据处理框架的全面对比与应用场景解析
1. 引言 1.1 什么是分布式数据处理框架 随着数据量的快速增长,传统的单机处理方式已经无法满足现代数据处理需求。分布式数据处理框架应运而生,它通过将数据分片分布到多台服务器上并行处理,提高了任务的处理速度和效率。 分布式数据处理框…...
python_excel列表单元格字符合并、填充、复制操作
读取指定sheet页,根据规则合并指定列,填充特定字符,删除多余的列,每行复制四次,最后写入新的文件中。 import pandas as pd""" 读取指定sheet页,根据规则合并指定列,填充特定字…...

nums[:]数组切片
问题:给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 使用代码如下没有办法通过测试示例,必须将最后一行代码改成 nums[:]nums[-k:]nums[:-k]切片形式: 原因:列表的切片操作 …...
【Arthas 】Can not find Arthas under local: /root/.arthas/lib 解决办法
报错 [INFO] JAVA_HOME: /opt/java/openjdk [INFO] arthas-boot version: 4.0.4 [INFO] Found existing java process, please choose one and input the serial number of the process, eg : 1. Then hit ENTER. [1]: 12 org.springframework.boot.loader.JarLauncher 1 [ER…...

录用率23%!CCF推荐-B类,Early Access即可被SCI数据库收录,中美作者占比过半
International Journal of Human-Computer Interaction(IJHCI)创刊于1989年,由泰勒-弗朗西斯(Taylor & Francis, Inc.)出版,主要发表关于交互式计算(认知和人体工程学)、数字无障…...

IP 地址与蜜罐技术
基于IP的地址的蜜罐技术是一种主动防御策略,它能够通过在网络上布置的一些看似正常没问题的IP地址来吸引恶意者的注意,将恶意者引导到预先布置好的伪装的目标之中。 如何实现蜜罐技术 当恶意攻击者在网络中四处扫描,寻找可入侵的目标时&…...

Vue_API文档
Vue API风格 Vue 的组件可以按两种不同的风格书写:选项式 API(Vue2) 和组合式 API(Vue3) 大部分的核心概念在这两种风格之间都是通用的。熟悉了一种风格以后,你也能够很快地理解另一种风格 选项式API(Opt…...
WebSocket 设计思路
WebSocket 设计思路 1. 核心结构体 1.1 Manager (管理器) // Manager 负责管理所有WebSocket连接 type Manager struct {clients sync.Map // 存储所有客户端连接broadcast chan []byte // 广播消息通道messages chan Message // 消息处理通道config *config.WebSo…...
Jenkins持续集成与交付安装配置
Jenkins 是一款开源的持续集成(CI)和持续交付(CD)工具,它主要用于自动化软件的构建、测试和部署流程。为项目持续集成与交付功能强大的应用。下面我们来介绍下它的安装与配置。 环境准备 更新系统组件(这…...

使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...

跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...

ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...

无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...
前端中slice和splic的区别
1. slice slice 用于从数组中提取一部分元素,返回一个新的数组。 特点: 不修改原数组:slice 不会改变原数组,而是返回一个新的数组。提取数组的部分:slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...

通过MicroSip配置自己的freeswitch服务器进行调试记录
之前用docker安装的freeswitch的,启动是正常的, 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...