Brian2学习教程——Intro to Brian part 1: Neurons

参考原英文教程网址:https://brian2.readthedocs.io/en/stable/resources/tutorials/1-intro-to-brian-neurons.html

推荐一个不错的中文翻译教程:https://blog.csdn.net/u013751642/article/details/80918311

 

目录

1. 内部电压V的微分方程的推导过程

2. 内部电压初值V0与脉冲发放频率的函数关系

3. 动态阈值时的神经元内部状态变化

4.加入不应期后,应在电压方程后备注(unless refractory)的说明


1. 内部电压V的微分方程的推导过程

微分方程:

dv/dt = \frac{1-v}{10}

\frac{10}{1-v} dv =dt

\int \frac{10}{1-v} dv =\int dt

-10ln\left | 1-v \right | = t{\color{Red} +C}

其中,C为常数。

\left | 1- v\right |=e^{^{-\frac{t}{10}}}{\color{Red} +C}

该响应曲线对应的情况为

v= 1-e^{^{-\frac{t}{10}}}

此时函数曲线与输出响应曲线一致:

2. 内部电压初值V0与脉冲发放频率的函数关系

原文中输出了内部电压初值与脉冲发放频率的函数图像,下面对其进行分析。

原输出图像设置整个运行时间为1000ms,下面我们将运行时间缩小为100ms来观察局部的图像。

原代码中设置神经网络含有1000个神经元,将这些神经元从0-1000标号,并设置了内部电压初值 v0 与神经元索引值 i 成正比关系,也就是说 i 越大的神经元 v0 也越大。

先看左边的图,以一条平行线求取与曲线的交点,交点对应时刻就为各号神经元的点火时刻。可以看到神经元索引值 i 越小,对应的平行线与图像的交点越稀疏,意味着该神经元点火周期越大,也即点火频率越小。

说明:当v^{_{0}}\leq 1,神经元始终不会发放脉冲,v^{_{0}}>1,随着阈值的增大,神经元发放脉冲的频率越高。

也可以通过公式v= v^{_{0}}-e^{^{-\frac{t}{10}}}来说明,v0越大,说明曲线v= -e^{^{-\frac{t}{10}}}上移的程度越大,也越快到达阈值v = 1,说明点火周期越小,点火频率越快。

进一步总结:当v^{_{0}}\leq V_{threshold},神经元始终不会发放脉冲,v^{_{0}}>V_{threshold},随着激励电压的增大,神经元发放脉冲的频率越高。

 

3. 动态阈值时的神经元内部状态变化

4.加入不应期后,应在电压方程后备注(unless refractory)的说明

start_scope()

tau = 10*ms
eqs = '''
dv/dt = (1-v)/tau : 1 (unless refractory)  #意味着微分方程决定了v的表现除了耐熔期时其不起作用。
'''

G = NeuronGroup(1, eqs, threshold='v>0.8', reset='v = 0', refractory=5*ms, method='exact')

官方教程中给出了一个示例,并对其进行了分析:

start_scope()

tau = 5*ms
eqs = '''
dv/dt = (1-v)/tau : 1
'''

G = NeuronGroup(1, eqs, threshold='v>0.8', reset='v = 0', refractory=15*ms, method='exact')

statemon = StateMonitor(G, 'v', record=0)
spikemon = SpikeMonitor(G)

run(50*ms)

plot(statemon.t/ms, statemon.v[0])
for t in spikemon.t:
    axvline(t/ms, ls='--', c='C1', lw=3)
axhline(0.8, ls=':', c='C2', lw=3)
xlabel('Time (ms)')
ylabel('v')
print("Spike times: %s" % spikemon.t[:])

 

第一个脉冲的表现是一样的:v上升到0.8,然后在8ms时刻神经元立即重置为0并激发了一个脉冲。此时设置的不应期为15ms,意味着神经元直到8+15=23ms都不会再激发脉冲。第一个脉冲过后的瞬间,v的值就立即开始上升,又由于我们没有在dv/dt的定义中指明(unless refractory)。一旦它在大约8ms的时间里到达值0.8(绿色虚线),即使阈值是v>0.8,它并不会激发一个脉冲。这是因为神经元在23ms之前仍处于不应期,直到23ms时在才激发一个脉冲。

猜你喜欢

转载自blog.csdn.net/lemonade_117/article/details/81105303