SNN系列|学习算法篇(4)SWAT

SWAT

SWAT算法最重要的是隐层的滤波器设计,权重的学习在STDP的基础上加入了BCM规则,网络的输出层也比较有特色,就是所有的训练都是在一个训练神经元上,然后将其映射到分配好的输出神经元上。

BCM Rules

BCM起初是一种平衡Hebb学习的规则,根据神经元状态滑动阈值,进而决定突触更新是增强还是抑制,以此来平衡突触活动。在SWAT算法中,BCM规则用于更新STDP的高度。
A + ( θ m ) = A p 1 1 + θ m ( c t ) A − ( θ m ) = A p − A + ( θ m ) θ m ( ω t ) = ( ω t c o ) α ω t A_{+}\left(\theta_{m}\right)=A_{p} \frac{1}{1+\theta_{m}\left(c_{t}\right)}\\A_{-}\left(\theta_{m}\right)=A_{p}-A_{+}\left(\theta_{m}\right)\\\theta_{m}\left(\omega_{t}\right)=\left(\frac{\omega_{t}}{c_{o}}\right)^{\alpha} \omega_{t} A+(θm)=Ap1+θm(ct)1A(θm)=ApA+(θm)θm(ωt)=(coωt)αωt
c 0 c_0 c0 α ( = 2 ) \alpha(=2) α(=2)是常数, ω t \omega_t ωt用于在每次epoch之初确定STDP的窗口高度。

Topology

SWAT是一个三层网络,输入层根据输入数据的特征数 s s s决定,隐层有 s s s个array,输出层有 n n n个分类神经元以及一个训练神经元。输入层使用泊松编码。

在这里插入图片描述

隐层可以看成是一些频率选择滤波器,隐层突触包含兴奋类和抑制两类,并按照输入脉冲频率初始化为固定值,在网络训练过程中不变。

在这里插入图片描述

这个滤波的过程没太看懂,其实现的过程主要为了对特定的频率进行响应,通过设置响应频率,在仿真期间每个array里的总有个神经元会进行响应。

在这里插入图片描述

神经元采用LIF模型
τ m d v d t = − v ( t ) + R m I t o t ( t ) \tau_m \frac{dv}{dt} = -v(t) + R_mI_{tot}(t) τmdtdv=v(t)+RmItot(t)
神经元的阈值是动态更新的,神经元发放脉冲后,其脉冲发放的阈值便会动态变化
V t h r n e w = m × V t h r o l d exp ⁡ ( − t − t i τ d e c a y ) V_{thrnew} = m \times V_{throld}\exp \left( -\frac{t-t_i}{\tau_{decay}}\right) Vthrnew=m×Vthroldexp(τdecaytti)

Training

1、SWAT在训练时将输入样本按类分成堆,每堆样本的个数为 m n m_n mn
2、每次迭代开始时,先使用上面提到的BCM规则确定STDP的窗口;
3、输入样本序列,根据训练神经元的脉冲使用STDP法则计算权重变化 δ ω i n \delta \omega_in δωin
δ ω i n = ∑ 0 r δ ω δ ω = { A + exp ⁡ ( Δ t τ + ) A − exp ⁡ ( Δ t τ − ) \delta \omega_{in} = \sum \limits _0^r \delta \omega\\\delta \omega = \begin{cases}A_+\exp (\frac{\Delta t}{\tau_+})\\A_-\exp (\frac{\Delta t}{\tau_-}) \end{cases} δωin=0rδωδω={A+exp(τ+Δt)Aexp(τΔt)
4、将学习到的权重变化映射到输出神经元对应的突触权值。

参考

[1] [SWAT: A Spiking Neural Network Training Algorithm for Classification Problems](

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值