Brian2學習教程——Intro to Brian part 2: Synapses【補充】STDP
阿新 • • 發佈:2018-11-03
前言:
在學習brian2中,最後一部分歷程模擬了STDP突觸模型。在閱讀相關文獻中瞭解到脈衝時間依賴可塑性(STDP,Spike Timing Dependent Plasticity)屬於一種非監督學習機制。
- 最初Hebbian提出:
- 當兩個位置上臨近的神經元,在放電時間上也相近時,之間很有可能形成突觸;
- 若突觸能持續引起突出後神經元產生動作電位,則該突觸強度會有所增加。
STDP 為脈衝時間編碼資訊的假說提供了實驗基礎,強調了發放時序不對稱的重要性,擴充套件了 Hebb 學習理論的空間。
- 若突觸後神經元在突出資訊未到達之前產生脈衝,則兩個神經元之間的突觸權值會減弱;
- 反之,突觸後神經元在突出資訊未到達之後產生脈衝,則兩個神經元之間的突觸權值會加強。
兩者的定義具體可參考文獻:脈衝神經網路的監督學習演算法研究綜述
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,難道說該函式曲線本身是一個概率曲線嗎?希望能深入瞭解一下。