SNN系列 學習演算法篇 4 SWAT

2021-10-05 05:54:55 字數 2372 閱讀 9980

swat演算法最重要的是隱層的濾波器設計,權重的學習在stdp的基礎上加入了bcm規則,網路的輸出層也比較有特色,就是所有的訓練都是在乙個訓練神經元上,然後將其對映到分配好的輸出神經元上。

bcm起初是一種平衡hebb學習的規則,根據神經元狀態滑動閾值,進而決定突觸更新是增強還是抑制,以此來平衡突觸活動。在swat演算法中,bcm規則用於更新stdp的高度。

a +(

θm)=

ap11

+θm(

ct)a

−(θm

)=ap

−a+(

θm)θ

m(ωt

)=(ω

tco)

αωta_\left(\theta_\right)=a_ \frac\left(c_\right)}\\a_\left(\theta_\right)=a_-a_\left(\theta_\right)\\\theta_\left(\omega_\right)=\left(\frac}}\right)^ \omega_

a+​(θm

​)=a

p​1+

θm​(

ct​)

1​a−

​(θm

​)=a

p​−a

+​(θ

m​)θ

m​(ω

t​)=

(co​

ωt​​

)αωt​c0

c_0c0

​和α(=2

)\alpha(=2)

α(=2

)是常數,ω

t\omega_t

ωt​用於在每次epoch之初確定stdp的視窗高度。

swat是乙個三層網路,輸入層根據輸入資料的特徵數s

ss決定,隱層有s

ss個array,輸出層有n

nn個分類神經元以及乙個訓練神經元。輸入層使用泊松編碼。

隱層可以看成是一些頻率選擇濾波器,隱層突觸包含興奮類和抑制兩類,並按照輸入脈衝頻率初始化為固定值,在網路訓練過程中不變。

這個濾波的過程沒太看懂,其實現的過程主要為了對特定的頻率進行響應,通過設定響應頻率,在**期間每個array裡的總有個神經元會進行響應。

神經元採用lif模型

τ md

vdt=

−v(t

)+rm

itot

(t)\tau_m \frac = -v(t) + r_mi_(t)

τm​dtd

v​=−

v(t)

+rm​

itot

​(t)

神經元的閾值是動態更新的,神經元發放脈衝後,其脈衝發放的閾值便會動態變化

v th

rnew

=m×v

thro

ldexp⁡(−

t−ti

τdec

ay)v_ = m \times v_\exp \left( -\frac}\right)

vthrne

w​=m

×vth

rold

​exp(−

τdec

ay​t

−ti​

​)

1、swat在訓練時將輸入樣本按類分成堆,每堆樣本的個數為m

nm_n

mn​;

2、每次迭代開始時,先使用上面提到的bcm規則確定stdp的視窗;

3、輸入樣本序列,根據訓練神經元的脈衝使用stdp法則計算權重變化δωi

n\delta \omega_in

δωi​n;

δ ωi

n=∑0

rδωδ

ω== \sum \limits _0^r \delta \omega\\\delta \omega = \begina_+\exp (\frac)\\a_-\exp (\frac) \end

δωin​=

0∑r​

δωδω

={a+

​exp(τ

+​δt

​)a−

​exp(τ

−​δt

​)​4、將學習到的權重變化對映到輸出神經元對應的突觸權值。

[1] [swat: a spiking neural network training algorithm for classification problems]

Canvas系列學習之起始篇

html5裡面最讓人心動的技術,對我來說,canvas絕對是首選,它沒出現之前,一切網頁相關的遊戲動畫非flash莫屬.當canvas來臨時,是時候用用新鮮的血液了.canvas的本質就是提供了一套前端可用的gui介面,包括畫線,畫方,畫圓,畫字等常用的gui功能,先來看看在瀏覽器端的引用 id c...

演算法系列學習 連續郵資問題

王曉東老師編著的 計算機演算法設計與分析 5.12節以 連續郵資問題 為例展示了回溯法的應用。講解比較簡略,對於搜尋出一張新的郵票面值後如何更新最大連續郵資區間這一點沒有過多的說明。以下是自己對於這一節學習的一點筆記。實際上,關於剛才所說的更新最大連續郵資區間的方法,可以歸結到一種 等價類 的思想。...

Redis系列學習筆記4 列表

以有序的方式儲存多個可重複的值 lpush key value value 將乙個或以上數量的值依次推入到列表的左端,命令返回新值被推入之後,列表目前包含的項數量。rpush key value value 將乙個或以上數量的值依次推入到列表的右端,命令返回新值被推入之後,列表目前包含的項數量。lp...