Brian2学习教程——Intro to Brian part 2: Synapses【补充】STDP

5 篇文章 0 订阅

前言:

在学习brian2中,最后一部分历程模拟了STDP突触模型。在阅读相关文献中了解到脉冲时间依赖可塑性(STDP,Spike Timing Dependent Plasticity)属于一种非监督学习机制。

  • 最初Hebbian提出:
  1. 当两个位置上临近的神经元,在放电时间上也相近时,之间很有可能形成突触;
  2. 若突触能持续引起突出后神经元产生动作电位,则该突触强度会有所增加。

 STDP 为脉冲时间编码信息的假说提供了实验基础,强调了发放时序不对称的重要性,扩展了 Hebb 学习理论的空间。

  1. 若突触后神经元在突出信息未到达之前产生脉冲,则两个神经元之间的突触权值会减弱;
  2. 反之,突触后神经元在突出信息未到达之后产生脉冲,则两个神经元之间的突触权值会加强。

两者的定义具体可参考文献:脉冲神经网络的监督学习算法研究综述

STDP算法具体可参考百度文库:STDP学习机制


本文主要想说明在实验中发现,更改神经元数目时,对应输出曲线有所变化。当神经元数目越多,左右两只曲线越逼近指数函数,而当神经元数目较少时,曲线不那么平滑,两只曲线的连接线斜率也更小。

from brian2 import *
start_scope()

taupre = taupost = 20*ms
Apre = 0.01
Apost = -Apre*taupre/taupost*1.05
tmax = 50*ms
N = 100

# Presynaptic neurons G spike at times from 0 to tmax
# Postsynaptic neurons G spike at times from tmax to 0
# So difference in spike times will vary from -tmax to +tmax
G = NeuronGroup(N, 'tspike:second', threshold='t>tspike', refractory=100*ms)
H = NeuronGroup(N, 'tspike:second', threshold='t>tspike', refractory=100*ms)
G.tspike = 'i*tmax/(N-1)'
H.tspike = '(N-1-i)*tmax/(N-1)'

S = Synapses(G, H,
             '''
             w : 1
             dapre/dt = -apre/taupre : 1 (event-driven)
             dapost/dt = -apost/taupost : 1 (event-driven)
             ''',
             on_pre='''
             apre += Apre
             w = w+apost
             ''',
             on_post='''
             apost += Apost
             w = w+apre
             ''')
S.connect(j='i')

run(tmax+1*ms)

plot((H.tspike-G.tspike)/ms, S.w)
xlabel(r'$\Delta t$ (ms)')
ylabel(r'$\Delta w$')
axhline(0, ls='-', c='k');

当神经元数目N = 100,输出如图1,而N = 6,输出如图2。

回顾STDP,难道说该函数曲线本身是一个概率曲线吗?希望能深入了解一下。

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值