Matlab实现snn代码,SNN系列|神经元模型篇(3)SRM
Spike Response Model
参考:
[1] A Framework for spiking neuron models: Spike Response Model
[2] Neuron Dynamics
[3] Spiking Neuron Models
[4] Scholarpedia
LIF模型的发展,LIF是其特殊化情况
Wulfram Gerstner 于[1993][http://www.scholarpedia.org/article/Spike-response_model]年发表
不能描述以下现象:离子通道的阻断、延迟峰值启动、阈值对输入的依赖性
源起
Hodgkin-Huxley模型通过一个通用方程加三个参数方程来精确模拟神经元的动作电位,但是计算复杂。对HH方程组的简化方向有两个:
m用m 0 ( u ) m_0(u)m0(u)代替,因为其变化很快
n和h粗略地用一个变量表示
于是就有了二维模型Morris LeCar Model和FitzHugh-Nagumo Model。
从阈值的角度单纯地模拟外形,观察精确的神经元模型,可以看到神经元脉冲发放是有一个阈值的,当神经元超过阈值便发放脉冲。
u ( t ( f ) ) = ϑ and d d t u ( t ( f ) ) > 0 u\left(t^{(f)}\right)=\vartheta \quad \text { and } \quad \frac{d}{d t} u\left(t^{(f)}\right)>0u(t(f))=ϑanddtdu(t(f))>0
其次,神经元的脉冲的样子是相同的,于是假设神经元在t ^ \hat{t}t^发放脉冲,当此后没有电流输入时,神经元膜电势逐渐回落到静息电位。对t > t ^ t>\hat{t}t>t^,
u ( t ) = η ( t − t ^ ) + u r e s t η ( t − t ^ ) → 0 for t − t ^ → ∞ u(t)=\eta(t-\hat{t})+u_{\mathrm{rest}}\\ \eta(t-\hat{t}) \rightarrow 0 \text { for } t-\hat{t} \rightarrow \inftyu(t)=η(t−t^)+urestη(t−t^)→0fort−t^→∞
u r e s t u_{rest}urest表示静息电位,η \etaη表示一个脉冲的标准形式。
另当有外界电流输入时,神经元膜电势会变大,不仅与上次脉冲发放时间t ^ \hat{t}t^有关,也与外部电流I \mathcal{I}I有关,ϵ \epsilonϵ用来表示线性响应函数。
u ( t ) = η ( t − t ^ ) + ∫ 0 t − t ^ ϵ ~ ( t − t ^ , s ) I ( t − s ) d s + u r e s t u(t)=\eta(t-\hat{t})+\int_{0}^{t-\hat{t}} \tilde{\epsilon}(t-\hat{t}, s) \mathcal{I}(t-s) d s+u_{\mathrm{rest}}u(t)=η(t−t^)+∫0t−t^ϵ~(t−t^,s)I(t−s)ds+urest
这里要说明的是,因为要模拟动作电位的外形,通过线性变换,我们是可以把u r e s t u_{rest}urest拿掉的。
那么该如何得到上述两个响应函数呢?使用刺激电流对静息态神经元进行刺激,使其产生动作电位
I ( t ) = c q 0 Δ for 0 < t < Δ \mathcal{I}(t)=c \frac{q_{0}}{\Delta} \quad \text { for } 0I(t)=cΔq0for0
然后测量神经元膜电势,即可得到
η ( t − t ^ ) = u ( t ) − u r e s t for t > t ^ \eta(t-\hat{t})=u(t)-u_{\mathrm{rest}} \quad \text { for } \quad t>\hat{t}η(t−t^)=u(t)−urestfort>t^
若取电荷与时间差均为单位量,并假设神经元之前并未发放脉冲,一直处于静息状态,则
ϵ ~ ( ∞ , t ) = 1 c [ u ( t ) − u r e s t ] \tilde{\epsilon}(\infty, t)=\frac{1}{c}\left[u(t)-u_{\mathrm{rest}}\right]ϵ~(∞,t)=c1[u(t)−urest]
若t ^ \hat{t}t^时刻,神经元发放脉冲,然后对神经元施加刺激电流,测量膜电势,可得一般情况下的ϵ \epsilonϵ
ϵ ~ ( t − t ^ , t ) = 1 c [ u ( t ) − η ( t − t ^ ) − u r e s t ] \tilde{\epsilon}(t-\hat{t}, t)=\frac{1}{c}\left[u(t)-\eta(t-\hat{t})-u_{\mathrm{rest}}\right]ϵ~(t−t^,t)=c1[u(t)−η(t−t^)−urest]
当然,生物中的神经元不可能总是以单个存在,也不能总是外部电极施加刺激电流,而是突触前神经元释放脉冲而导致突触后电流I ( t ) = α ( t − t j ( f ) ) \mathcal{I}(t)=\alpha\left(t-t_{j}^{(f)}\right)I(t)=α(t−tj(f)),然后公式同上。
标准S R M SRMSRM
标准的SRM主要考虑两个部分:一是脉冲发放后的膜电势变化,二是对外部刺激电流(电极电流或突触前神经元发放的脉冲的突触后电流)。
对前者,对应上图的η ( t − t ^ i ) \eta(t-\hat{t}_i)η(t−t^i),这个核函数描述的是当膜电势达到阈值后的脉冲发放以及复极化于超极化阶段;对后者,对应的上图小的虚线,这个核函数描述的是脉冲发放后(若之前没有脉冲发放,则认为是∞ \infty∞时间时发放了脉冲)膜电势对输入刺激的响应,需要注意的是核函数ϵ \epsilonϵ和κ \kappaκ有两个输入参数,这是为什么呢?
这是因为神经元发放脉冲后,许多主动的离子通道与静息态是不同的,不能像静息态一样对输入刺激进行响应,即不应期(绝对不应期+相对不应期),所以第一个输入参数描述的就是脉冲发放后的一段时间内对输入刺激是有削弱作用的,方便理解,可以认为具有1 − e − t 1-e^{-t}1−e−t形式。
此外,在标准模型中,阈值使用恒定值。
u i ( t ) = η ( t − t ^ i ) + ∑ j w i j ∑ f ϵ i j ( t − t ^ i , t − t j ( f ) ) + ∫ 0 ∞ κ ( t − t ^ i , s ) I e x t ( t − s ) d s t = t i ( f ) ⇔ u i ( t ) = ϑ ( t − t ^ i ) and d u i ( t ) d t > 0 \begin{aligned} u_{i}(t)=& \eta\left(t-\hat{t}_{i}\right)+\sum_{j} w_{i j} \sum_{f} \epsilon_{i j}\left(t-\hat{t}_{i}, t-t_{j}^{(f)}\right)+\int_{0}^{\infty} \kappa\left(t-\hat{t}_{i}, s\right) I^{\mathrm{ext}}(t-s) \mathrm{d} s \end{aligned}\\ t=t_{i}^{(f)} \quad \Leftrightarrow \quad u_{i}(t)=\vartheta\left(t-\hat{t}_{i}\right) \text { and } \frac{\mathrm{d} u_{i}(t)}{\mathrm{d} t}>0ui(t)=η(t−t^i)+j∑wijf∑ϵij(t−t^i,t−tj(f))+∫0∞κ(t−t^i,s)Iext(t−s)dst=ti(f)⇔ui(t)=ϑ(t−t^i)anddtdui(t)>0
简化模型S R M 0 SRM_0SRM0
为了简化模型,将ϵ \epsilonϵ和κ \kappaκ的第一个参数设为∞ \infty∞,即不考虑脉冲发放后离子通道状态对膜电势对输入刺激的影响
ϵ 0 ( s ) = ϵ i j ( ∞ , s ) κ 0 ( s ) = κ i j ( ∞ , s ) \begin{aligned} \epsilon_{0}(s) &=\epsilon_{i j}(\infty, s) \\ \kappa_{0}(s) &=\kappa_{i j}(\infty, s) \end{aligned}ϵ0(s)κ0(s)=ϵij(∞,s)=κij(∞,s)
简化后的SRM模型表述如下
u i ( t ) = η ( t − t ^ i ) + ∑ j w i j ∑ t j ( f ) ϵ 0 ( t − t j ( f ) ) + ∫ 0 ∞ κ 0 ( s ) I ext ( t − s ) d s η ( t − t ^ ) = δ ( t − t ^ ) − η 0 exp ( − t − t ^ τ recov ) u_{i}(t)=\eta\left(t-\hat{t}_{i}\right)+\sum_{j} w_{i j} \sum_{t_{j}^{(f)}} \epsilon_{0}\left(t-t_{j}^{(f)}\right)+\int_{0}^{\infty} \kappa_{0}(s) I^{\operatorname{ext}}(t-s) \mathrm{d} s\\ \eta(t-\hat{t})=\delta(t-\hat{t})-\eta_{0} \exp \left(-\frac{t-\hat{t}}{\tau_{\text {recov }}}\right)ui(t)=η(t−t^i)+j∑wijtj(f)∑ϵ0(t−tj(f))+∫0∞κ0(s)Iext(t−s)dsη(t−t^)=δ(t−t^)−η0exp(−τrecovt−t^)
ϵ 0 \epsilon_0ϵ0的一个可能例子:ϵ 0 ( s ) = 1 1 − ( τ s / τ m ) [ exp ( − s τ m ) − exp ( − s τ s ) ] \epsilon_{0}(s)=\frac{1}{1-\left(\tau_{s} / \tau_{m}\right)}\left[\exp \left(-\frac{s}{\tau_{m}}\right)-\exp \left(-\frac{s}{\tau_{s}}\right)\right]ϵ0(s)=1−(τs/τm)1[exp(−τms)−exp(−τss)]
简化后的模型的原理如上图,外部电流输入后,经过κ \kappaκ核函数滤波(视为一种影响),当膜电势增加到阈值时,神经元发放脉冲,反馈两个影响:提升阈值,以及做一个超极化到静息电位的过程。
为什么要改变阈值呢?在标准模型中,如果是脉冲发放后有电流输入,神经元对该刺激的响应是有削减的,但简化模型将第一个参数设为∞ \infty∞,使该影响消失,为了使该不应期阶段神经元对外界刺激的响应变差,除了削弱输入,还可以提高标准(阈值),于是也就有了动态阈值的说法。
η ( t − t ^ ) = δ ( t − t ^ ) − η 0 exp ( − t − t ^ τ recov ) ϑ ( t − t ^ ) = ϑ − η 0 ( t − t ^ ) \eta(t-\hat{t})=\delta(t-\hat{t})-\eta_{0} \exp \left(-\frac{t-\hat{t}}{\tau_{\text {recov }}}\right)\\ \vartheta(t-\hat{t})=\vartheta-\eta_{0}(t-\hat{t})η(t−t^)=δ(t−t^)−η0exp(−τrecovt−t^)ϑ(t−t^)=ϑ−η0(t−t^)
使用动态阈值后的简化模型如图所示:
简化模型对外界刺激的整个过程如下:
Matlab代码
暂未实现
Matlab实现snn代码,SNN系列|神经元模型篇(3)SRM相关推荐
- SNN系列|神经元模型篇(3)SRM
Spike Response Model 参考: [1] A Framework for spiking neuron models: Spike Response Model [2] Neuron ...
- matlab 回路最优,数学建模常用Matlab/Lingo/c代码总结系列——hamilton回路
提供一种求解最优哈密尔顿的算法---三边交换调整法,要求在运行jiaohuan3(三交换法)之前,给定邻接矩阵C和节点个数N,结果路径存放于R中. bianquan.m文件给出了一个参数实例,可在命令 ...
- 数学建模常用Matlab/Lingo/c代码总结系列——最小费用最大流问题
例 19(最小费用最大流问题)(续例18)由于输油管道的长短不一或地质等原因, 使每条管道上运输费用也不相同,因此,除考虑输油管道的最大流外,还需要考虑输油 管道输送最大流的最小费用.图 8 所示是带 ...
- iVX低代码平台系列详解 -- 概述篇(二)
写在前面 ivx动手尝试电梯:ivx在线编辑器 iVX系列教程持续更新中 上篇文章可看:iVX低代码平台系列详解 – 概述篇(一) ivx目录 写在前面 一.iVX优势 1.快速学习 2.快速开发 3 ...
- 基于matlab的64QAM,通信调制体制设计之64QAM性能分析MATLAB仿真及代码
通信调制体制设计之64QAM性能分析MATLAB仿真及代码 通信调制体制设计之64QAM性能分析MATLAB仿真及代码 任务背景 弗雷泽岛旅游经理在审查您之前建立无线链路任务的解决方案时,正在研究使用 ...
- 《量化投资:以MATLAB为工具》连载(1)基础篇-N分钟学会MATLAB(上)
http://blog.sina.com.cn/s/blog_4cf8aad30102uylf.html <量化投资:以MATLAB为工具>连载(1)基础篇-N分钟学会MATLAB(上) ...
- 【Matlab 六自由度机器人】系列文章汇总
[Matlab 六自由度机器人]系列文章汇总 前言 正文 ⧫[主线]\blacklozenge \fcolorbox{black}{aqua}{[主线]}⧫[主线] ⧫[补充说明]\blackloz ...
- 基于YOLOv5的目标检测系统详解(附MATLAB GUI版代码)
摘要:本文重点介绍了基于YOLOv5目标检测系统的MATLAB实现,用于智能检测物体种类并记录和保存结果,对各种物体检测结果可视化,提高目标识别的便捷性和准确性.本文详细阐述了目标检测系统的原理,并给 ...
- 《量化投资:以MATLAB为工具》连载(2)基础篇-N分钟学会MATLAB(中)
http://www.matlabsky.com/thread-43937-1-1.html <量化投资:以MATLAB为工具>连载(3)基础篇-N分钟学会MATLAB(下) <量化 ...
- Webpack系列-第一篇基础杂记
系列文章 Webpack系列-第一篇基础杂记 Webpack系列-第二篇插件机制杂记 Webpack系列-第三篇流程杂记 前言 公司的前端项目基本都是用Webpack来做工程化的,而Webpack虽然 ...
最新文章
- 科技贡献新力量:无人驾驶清扫车上路
- Cryptodome 安装
- TCL with SNPS sizeof_collectionget_object_namefindget_libslist_attributes
- linux系统虚拟化测试,网络性能与磁盘测试 - Linux虚拟化性能PK:Ubuntu系统6大版本_Linux新闻_Linux公社-Linux系统门户网站...
- python统计段落单词词频_使用Python统计文件中词频,并且生成词云
- 【Liunx】Linux 文件基本属性
- Python基本输出函数print()用法小结
- PowerDesigner(四)-业务处理模型(转)
- python多任务之——线程简述
- 友勤签约中芝软件系统(上海)有限公司Oracle Crystal Ball Suite软件项目
- CDA数据分析师教材与题库
- 使用Windows Live Writer WLW向Joomla网站发帖
- 蛋白质降解技术中常用的蛋白酶(一)
- 路由器注册灯闪烁没网络
- 系统自带的微软拼音输入法,在输入字母和数字的时候,间隔变大,输入中文没事的 问题。
- Talk预告 | 斯坦福大学石佳欣:无监督学习的未来-两条路径和统一视角
- 5.2.6UART寄存器编程(下)
- 安装SQL2000时出现 ntvdm遇到一个硬错误的处理办法
- 用signalr实现简单的网页实时聊天
- 灵性图书馆:好书推荐-《巫士唐望的教诲》
热门文章
- html 九宫格头像,JAVA-仿微信九宫格头像
- mysql常用数据库连接池_Java主流常用的数据库连接池
- 统计局:1月份中国制造业采购经理指数为49.5%
- Laravel框架发送邮件 阿星小栈
- 全新版windows terminal 更换背景
- Win11启动修复无效怎么办
- 桌面快捷方式图标异常怎么办
- 微信小游戏关系链的使用(排行榜的显示)
- 【洛谷 P3191】 [HNOI2007]紧急疏散EVACUATE(二分答案,最大流)
- 十年之前..., 十年之后...