Brian2學習教程——Intro to Brian part 2: Synapses【補充】STDP

前言:

在學習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,難道說該函數曲線本身是一個概率曲線嗎?希望能深入瞭解一下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章