国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

如何看待第三代神經(jīng)網(wǎng)絡(luò)SNN?詳解脈沖神經(jīng)網(wǎng)絡(luò)的架構(gòu)原理、數(shù)據(jù)集和訓(xùn)練方法

這篇具有很好參考價(jià)值的文章主要介紹了如何看待第三代神經(jīng)網(wǎng)絡(luò)SNN?詳解脈沖神經(jīng)網(wǎng)絡(luò)的架構(gòu)原理、數(shù)據(jù)集和訓(xùn)練方法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

作者丨科技猛獸
編輯丨極市平臺
本文首發(fā)于極市平臺公眾號,轉(zhuǎn)載請獲得授權(quán)并標(biāo)明出處。

本文目錄

1 脈沖神經(jīng)網(wǎng)絡(luò)簡介
2 脈沖神經(jīng)網(wǎng)絡(luò)原理
3 脈沖神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)集
4 脈沖神經(jīng)網(wǎng)絡(luò)訓(xùn)練方法
5 脈沖神經(jīng)網(wǎng)絡(luò)評價(jià)指標(biāo)

1 脈沖神經(jīng)網(wǎng)絡(luò)簡介

脈沖神經(jīng)網(wǎng)絡(luò) (SNN) 屬于第三代神經(jīng)網(wǎng)絡(luò)模型,實(shí)現(xiàn)了更高級的生物神經(jīng)模擬水平。除了神經(jīng)元和突觸狀態(tài)之外,SNN 還將時(shí)間概念納入了其操作之中,是一種模擬大腦神經(jīng)元動力學(xué)的一類很有前途的模型。

那么什么是第一代和第二代神經(jīng)網(wǎng)絡(luò)模型呢?

第一代神經(jīng)網(wǎng)絡(luò)

第一代神經(jīng)網(wǎng)絡(luò)又稱為感知器,在1950年左右被提出來,它的算法只有兩層,輸入層輸出層,主要是線性結(jié)構(gòu)。它不能解決線性不可分的問題,對稍微復(fù)雜一些的函數(shù)都無能為力,如異或操作。

第二代神經(jīng)網(wǎng)絡(luò):BP 神經(jīng)網(wǎng)絡(luò)

為了解決第一代神經(jīng)網(wǎng)絡(luò)的缺陷,在1980年左右 Rumelhart、Williams 等人提出第二代神經(jīng)網(wǎng)絡(luò)多層感知器 (MLP)。和第一代神經(jīng)網(wǎng)絡(luò)相比,第二代在輸入層之間有多個(gè)隱含層的感知機(jī),可以引入一些非線性的結(jié)構(gòu),解決了之前無法模擬異或邏輯的缺陷。

第二代神經(jīng)網(wǎng)絡(luò)讓科學(xué)家們發(fā)現(xiàn)神經(jīng)網(wǎng)絡(luò)的層數(shù)直接決定了它對現(xiàn)實(shí)的表達(dá)能力,但是隨著層數(shù)的增加,優(yōu)化函數(shù)愈發(fā)容易出現(xiàn)局部最優(yōu)解的現(xiàn)象,由于存在梯度消失的問題,深層網(wǎng)絡(luò)往往難以訓(xùn)練,效果還不如淺層網(wǎng)絡(luò)。

所有對目前機(jī)器學(xué)習(xí)有所了解的人都聽說過這樣一個(gè)事實(shí):目前的人工神經(jīng)網(wǎng)絡(luò)是第二代神經(jīng)網(wǎng)絡(luò)。它們通常是全連接的,接收連續(xù)的值,輸出連續(xù)的值。盡管當(dāng)代神經(jīng)網(wǎng)絡(luò)已經(jīng)讓我們在很多領(lǐng)域中實(shí)現(xiàn)了突破,但它們在生物學(xué)上是不精確的,其實(shí)并不能模仿生物大腦神經(jīng)元的運(yùn)作機(jī)制。

第三代神經(jīng)網(wǎng)絡(luò):脈沖神經(jīng)網(wǎng)絡(luò)

第三代神經(jīng)網(wǎng)絡(luò),脈沖神經(jīng)網(wǎng)絡(luò) (Spiking Neural Network,SNN) ,旨在彌合神經(jīng)科學(xué)和機(jī)器學(xué)習(xí)之間的差距,**使用最擬合生物神經(jīng)元機(jī)制的模型來進(jìn)行計(jì)算,更接近生物神經(jīng)元機(jī)制。**脈沖神經(jīng)網(wǎng)絡(luò)與目前流行的神經(jīng)網(wǎng)絡(luò)和機(jī)器學(xué)習(xí)方法有著根本上的不同。SNN 使用脈沖——這是一種發(fā)生在時(shí)間點(diǎn)上的離散事件——而非常見的連續(xù)值。每個(gè)峰值由代表生物過程的微分方程表示出來,其中最重要的是神經(jīng)元的膜電位。本質(zhì)上,一旦神經(jīng)元達(dá)到了某一電位,脈沖就會出現(xiàn),隨后達(dá)到電位的神經(jīng)元會被重置。對此,最常見的模型是 Leaky Integrate-And-Fire (LIF) 模型。此外,SNN 通常是稀疏連接的,并會利用特殊的網(wǎng)絡(luò)拓?fù)洹?/p>

然而,關(guān)于 SNN 作為人工智能和神經(jīng)形態(tài)計(jì)算機(jī)群體中的計(jì)算工具的實(shí)用價(jià)值,長期以來一直存在爭論。尤其是和人工神經(jīng)網(wǎng)絡(luò) (ANN) 相比。在過去的幾年里,這些懷疑減緩了神經(jīng)形態(tài)計(jì)算 (neuromorphic computing ) 的發(fā)展,而隨著深度學(xué)習(xí)的快速進(jìn)步,研究人員試圖從根本上緩解這個(gè)問題,人們想要通過加強(qiáng) SNN 的手段,如改善訓(xùn)練算法,來緩解這個(gè)問題。

與成熟有效的人工神經(jīng)網(wǎng)絡(luò) (ANN) 訓(xùn)練算法:誤差反向傳播算法 (Back Propagation) 不同,神經(jīng)網(wǎng)絡(luò)研究中最困難的問題之一是由于復(fù)雜的動力學(xué)和脈沖的不可微性質(zhì)導(dǎo)致的訓(xùn)練困難。

為了提升脈沖神經(jīng)網(wǎng)絡(luò)的精度,已有一些前人的工作做出了探索,如:

  • Spike timing dependent plasticity (STDP) :無監(jiān)督學(xué)習(xí)方法

1 Unsupervised learning of digit recognition using spike-timing-dependent plasticity

  • 添加獎勵機(jī)制

2 Combining stdp and reward-modulated stdp in deep convolutional spiking neural networks for digit recognition

  • 把預(yù)訓(xùn)練好的 ANN 轉(zhuǎn)化為 SNN

3 Spiking deep convolutional neural networks for energy-efficient object recognition
4 Spiking deep residual network
5 Fast-classifying, high-accuracy spiking deep networks through weight and threshold balancing
6 Training spiking deep networks for neuromorphic hardware
7 Conversion of continuous-valued deep networks to efficient event-driven networks for image classification

為了提升 ANN 與 SNN 的兼容性,通常把 bias 去掉,使用 ReLU 激活函數(shù),把 max-pool 換成 average-pool 等。把 ANN 轉(zhuǎn)化成 SNN 時(shí),通常包括 weight/activation normalization,threshold tuning, sampling error compensation 等操作以維持精度。

  • 脈沖神經(jīng)網(wǎng)絡(luò)使用 BP 算法訓(xùn)練

8 Hybrid macro/micro level backpropagation for training deep spiking neural networks
9 Training deep spiking neural networks using backpropagation
10 Spatio-temporal backpropagation for training high-performance spiking neural networks
11 Direct training for spiking neural networks: Faster, larger, better

在執(zhí)行反向傳播時(shí),梯度可以沿著空間維度通過聚合脈沖傳播,也可以沿著時(shí)間和空間2個(gè)維度通過計(jì)算膜電勢的梯度傳播。

簡而言之,通過上述努力,SNN 在視覺識別任務(wù)中的應(yīng)用精度逐漸接近 ANN。

由于 SNN 缺乏專門的benchmark,許多工作直接使用 ANN 的 benchmark 來驗(yàn)證 SNN 模型。例如,用于 ANN 驗(yàn)證的圖像數(shù)據(jù)集被簡單地轉(zhuǎn)換為 Spike 版本,用于 SNN 訓(xùn)練和測試。 此外,網(wǎng)絡(luò)的準(zhǔn)確性仍然是主要的評估指標(biāo),但眾所周知,我們的大腦在絕對識別準(zhǔn)確性方面,通常比現(xiàn)有的人工智能機(jī)器表現(xiàn)得差。這反映了我們需要更全面和公平的衡量標(biāo)準(zhǔn)來評估和模擬生物大腦工作方式的 SNN。簡而言之,由于不適當(dāng)?shù)脑u估指標(biāo),目前的 SNN 無法擊敗 ANN。因此,出現(xiàn)了1個(gè)開放的問題,即:

如何評估 SNN 是有意義的?

Training spiking deep networks for neuromorphic hardware

這篇文章將預(yù)訓(xùn)練好的 ANN 轉(zhuǎn)化成 SNN,在這個(gè)工作里面作者考慮到了 SNN 網(wǎng)絡(luò)的 Efficiency,而不僅僅是 Accuracy。評價(jià)一個(gè) SNN 時(shí)要從多個(gè)角度考量,比如:application accuracy,memory cost, compute cost 。

在以 ANN 主導(dǎo)的評價(jià)指標(biāo)和任務(wù)中,相同大小的 SNN 無法打敗 ANN。但是在以 SNN 主導(dǎo)的評價(jià)指標(biāo)和任務(wù)中,SNN 的表現(xiàn)會更好。

2 脈沖神經(jīng)網(wǎng)絡(luò)原理

如下圖1所示是ANN 和 SNN 的單個(gè)基本神經(jīng)元。

如何看待第三代神經(jīng)網(wǎng)絡(luò)SNN?詳解脈沖神經(jīng)網(wǎng)絡(luò)的架構(gòu)原理、數(shù)據(jù)集和訓(xùn)練方法

(a) 圖是典型的單個(gè) ANN 神經(jīng)元,ANN 的計(jì)算方法是:

y = ? ( b + ∑ j x j w j ) (1) y=\phi (b+\sum_j x_jw_j)\tag{1} y=?(b+j?xj?wj?)(1)

式中, ? ( ? ) \phi(\cdot) ?(?) 是非線性的激活函數(shù)。

X 0 X_0 X0? 代表上個(gè)神經(jīng)元過來的連續(xù)的激活值 (Pre-activation),通過突觸 (Synapse) 傳遞到樹突的位置 (Dendrite),并且最終由細(xì)胞體 (Soma) 來處理這個(gè)激活值 (具體處理方法就是1式)。

ANN 中的神經(jīng)元使用高精度和連續(xù)值編碼的激活值進(jìn)行相互通信,并且只在空間域 (spatial domain,即 layer by layer) 傳播信息。從上述方程可以看出,輸入和權(quán)重的相乘和累加 (MAC) 是網(wǎng)絡(luò)的主要操作。

**(b) 圖是典型的單個(gè) SNN 神經(jīng)元,**它的結(jié)構(gòu)與 ANN 神經(jīng)元相似,但行為不同。脈沖神經(jīng)元之間的交流通過 binary 的 events,而不是連續(xù)的激活值。

S 0 S_0 S0? 代表上個(gè)神經(jīng)元過來的一個(gè)一個(gè)的脈沖 (Spike),通過突觸 (Synapse) 傳遞到樹突的位置 (Dendrite),并且最終由細(xì)胞體 (Soma) 來處理這些脈沖 (具體處理方法就是2式)。

如何看待第三代神經(jīng)網(wǎng)絡(luò)SNN?詳解脈沖神經(jīng)網(wǎng)絡(luò)的架構(gòu)原理、數(shù)據(jù)集和訓(xùn)練方法

這個(gè)式子看起來很麻煩,我們先來理解下每個(gè)變量的含義。

式中 t t t 代表時(shí)間步長, τ \tau τ 是常數(shù), u u u s s s 代表膜電位和輸出峰值。

u r 1 u_{r_1} ur1?? u r 2 u_{r_2} ur2?? 分別是靜息電位和重置電位。

w j w_j wj? 是第 j j j 個(gè)輸入突觸的權(quán)重。

t j k t_j^k tjk? 是當(dāng)?shù)? j j j 個(gè)輸入突觸的第 k k k 個(gè)脈沖在 T w T_w Tw? 這個(gè)積分時(shí)間窗口內(nèi)激發(fā)了 (即狀態(tài)為1) 的時(shí)刻。

K ( ? ) K(\cdot) K(?) 是代表延時(shí)效應(yīng)的核函數(shù)。

T w T_w Tw? 是積分時(shí)間窗口。

u t h u_{th} uth? 是個(gè)閾值,代表要不要點(diǎn)火 (Fire) 一次。

接下來我們用人話解釋一下2式是什么意思:

1 當(dāng)膜電位 u ( t ) u(t) u(t) (也就是細(xì)胞體 Soma 這個(gè)隱含電位) 高于閾值 u t h u_{th} uth? 時(shí),脈沖神經(jīng)元看做一次點(diǎn)火,此時(shí)輸出電位 s ( t ) s(t) s(t) 置為1,同時(shí)膜電位 u ( t ) u(t) u(t) 回歸到重置電位 u r 2 u_{r_2} ur2?? 。
2 當(dāng)膜電位 u ( t ) u(t) u(t) (也就是細(xì)胞體 Soma 這個(gè)隱含電位) 低于閾值 u t h u_{th} uth? 時(shí),不點(diǎn)火,此時(shí)輸出電位 s ( t ) s(t) s(t) 保持為0。
3 在每個(gè) time step,膜電位 u ( t ) u(t) u(t) 的更新過程滿足一個(gè)微分方程,即2.1式。
4 在每個(gè) time step,膜電位 u ( t ) u(t) u(t) 值應(yīng)下降 u ( t ) ? u r 1 u(t)-u_{r_1} u(t)?ur1?? 這么大的值,其中 u r 1 u_{r_1} ur1?? 是靜息電位。
5 同時(shí)在每個(gè) time step,膜電位 u ( t ) u(t) u(t) 值應(yīng)上升一個(gè)值,這個(gè)值來的大小與這個(gè)神經(jīng)元的 j j j 個(gè)輸入突觸有關(guān),每個(gè)輸入突觸的權(quán)值是 w j w_j wj? ,這個(gè)突觸對膜電位上升的貢獻(xiàn)值是 ∑ t j k ∈ S j T w K ( t ? t j k ) \sum_{t_j^k\in S_j^{T_w}}K(t-t_j^k) tjk?SjTw???K(t?tjk?) ,即在 S j T w S_j^{T_w} SjTw?? 個(gè)脈沖中,如果 t j k t_j^k tjk? 時(shí)刻的輸入脈沖是點(diǎn)火狀態(tài) (即1狀態(tài)),那么計(jì)算一次 K ( t ? t j k ) K(t-t_j^k) K(t?tjk?) 并累積起來。

與 ANN 不同的是,SNN 使用脈沖的序列來傳遞信息,每個(gè)脈沖神經(jīng)元都經(jīng)歷著豐富的動態(tài)行為。 具體而言,除了空間域中的信息傳播外,時(shí)間域中的過去歷史也會對當(dāng)前狀態(tài)產(chǎn)生緊密的影響。 因此,與主要通過空間傳播和連續(xù)激活的神經(jīng)網(wǎng)絡(luò)相比,神經(jīng)網(wǎng)絡(luò)通常具有更多的時(shí)間通用性,但精度較低。 由于只有當(dāng)膜電位超過一個(gè)閾值時(shí)才會激發(fā)尖峰信號,因此整個(gè)尖峰信號通常很稀疏。 此外,由于尖峰值 (Spike) 是二進(jìn)制的,即0或1,如果積分時(shí)間窗口 T w T_w Tw? 調(diào)整為1,輸入和權(quán)重之間的乘法運(yùn)算就可以消除。由于上述原因,與計(jì)算量較大的 ANN 網(wǎng)絡(luò)相比,SNN 網(wǎng)絡(luò)通??梢垣@得較低的功耗。

3 脈沖神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)集

這一節(jié)介紹下脈沖神經(jīng)網(wǎng)絡(luò)的基本數(shù)據(jù)集。

像 MNIST,CIFAR10 這類基于幀的靜態(tài)圖像,廣泛應(yīng)用于 ANN 中,我們稱之為 ANN-oriented dataset,如下圖2的前2行所示。

**CIFAR-10:**32×32×3 RGB image,Training set:50000,Testing set:10000

**MNIST:**28×28×1 grayscale image,Training set:60000,Testing set:10000

如何看待第三代神經(jīng)網(wǎng)絡(luò)SNN?詳解脈沖神經(jīng)網(wǎng)絡(luò)的架構(gòu)原理、數(shù)據(jù)集和訓(xùn)練方法

圖2的后2行 N-MNIST 和 DVS-CIFAR10 叫做 SNN-oriented dataset。這里的 DVS 叫做 dynamic vision sensor,代表使用了動態(tài)視覺傳感器掃描每張 images 得到的 spike 數(shù)據(jù)。它除了具有與 ANN-oriented dataset 相似的空間信息外,還包含更多的動態(tài)時(shí)間信息,而且尖峰事件與神經(jīng)網(wǎng)絡(luò)中的信號格式自然兼容,因此我們稱之為 SNN-oriented dataset。

DVS 產(chǎn)生兩個(gè)通道的脈沖事件,命名為 On 和Off 事件 (分別如圖2中紅色和藍(lán)色所示)。因此,DVS 將每個(gè)圖像轉(zhuǎn)換為 r o w × c o l u m n × 2 × T row\times column\times 2\times T row×column×2×T 的脈沖模式。

**N-MNIST:**34×34×2×T spatio-temporal spike pattern,Training set:60000,Testing set:10000

**DVS-CIFAR-10:**128×128×2×T spatio-temporal spike pattern,Training set:9000,Testing set:1000

一般來說,ANN 接收幀為基礎(chǔ)的圖像,而 SNN 接收事件驅(qū)動的脈沖信號。因此,有時(shí)需要將相同的數(shù)據(jù)轉(zhuǎn)換為另一個(gè)域中的不同形式來處理。本文以視覺識別任務(wù)為例,主要介紹了四種信號轉(zhuǎn)換方法,如下圖3所示。

如何看待第三代神經(jīng)網(wǎng)絡(luò)SNN?詳解脈沖神經(jīng)網(wǎng)絡(luò)的架構(gòu)原理、數(shù)據(jù)集和訓(xùn)練方法

Image to spike pattern

由圖片信號轉(zhuǎn)化為脈沖信號的方法比較直觀。

一種方法是:如圖3 (a) 所示。 在每一個(gè)時(shí)間步驟,采樣的原始像素強(qiáng)度 (pixel intensity) 到一個(gè)二進(jìn)制值 (通常歸一化為[0,1]),其中的這個(gè)強(qiáng)度值就等于發(fā)射一個(gè)脈沖的概率。這個(gè)采樣樣遵循一個(gè)特定的概率分布,例如伯努利分布或泊松分布。

例如,圖3(a) 中的 i 1 i_1 i1? 神經(jīng)元,對應(yīng)于標(biāo)準(zhǔn)化強(qiáng)度為 0.8 的 intensity,產(chǎn)生一個(gè)二進(jìn)制尖峰序列,跟隨著伯努利分布 B ( 0.8 , T ) B(0.8,T) B(0.8,T) 。這里 T T T 是取樣的時(shí)間窗口。

再例如,圖3(a) 中的 i 2 i_2 i2? 神經(jīng)元,對應(yīng)于標(biāo)準(zhǔn)化強(qiáng)度為 0.1 的 intensity,產(chǎn)生一個(gè)二進(jìn)制尖峰序列,跟隨著伯努利分布 B ( 0.1 , T ) B(0.1,T) B(0.1,T) 。這里 T T T 是取樣的時(shí)間窗口。

這種方法在取樣的時(shí)間窗口 T T T 比較短時(shí)有一個(gè)較大的精度損失。

另一種方法是: 如圖3 (b) 所示。使用一個(gè)編碼器來產(chǎn)生全局的脈沖信號。這個(gè)編碼器的每個(gè)神經(jīng)元接受圖片多個(gè)像素的強(qiáng)度值intensity 信號作為輸入, 而產(chǎn)生脈沖作為輸出。 雖然編碼層是 ANN-SNN 混合層,而不是像網(wǎng)絡(luò)中的其他層那樣的完整 SNN 層,但它的權(quán)重是可訓(xùn)練的,因?yàn)槲覀兊挠?xùn)練方法也是 BP 兼容的。由于神經(jīng)元的數(shù)量可以靈活定制,參數(shù)也可以調(diào)整,因此它可以適應(yīng)整體最佳化問題,從而獲得更高的精確度。

Spike pattern to image

由脈沖信號轉(zhuǎn)化為圖片信號的輸出主要有2種:

  1. binary image with 0/1 pixels。
  2. intensity image with real-valued pixels。

如圖3(c) 所示,代表把脈沖pattern轉(zhuǎn)化為二值圖片。2D 脈沖 pattern 可以直接看做一個(gè)二值圖像 (每個(gè)脈沖 Event 代表像素強(qiáng)度為1,否則像素強(qiáng)度為0)。 為了轉(zhuǎn)換為強(qiáng)度圖像 (Intensity image),需要在一個(gè)時(shí)間窗 T T T 內(nèi)隨時(shí)間對脈沖時(shí)間的累積。

如圖3(d)所示,代表把脈沖pattern轉(zhuǎn)化為強(qiáng)度圖片。描述了100毫秒內(nèi)脈沖事件的累積過程,累積脈沖數(shù)將被歸一化為具有適當(dāng)強(qiáng)度值的像素。由于 DVS 的相對運(yùn)動和固有噪聲,使得圖像常常模糊,邊緣特征模糊。這種轉(zhuǎn)換只允許一個(gè)強(qiáng)大的假設(shè),每個(gè)脈沖位置不應(yīng)該移動,否則將嚴(yán)重?fù)p害生成的圖像質(zhì)量。

  • ANN-oriented workloads

ANN-oriented workloads 的含義是目標(biāo)是識別在 ANN 中經(jīng)常使用的基于幀的數(shù)據(jù)集 (如 MNIST 和 CIFAR10)。有3種基準(zhǔn)模型:

1 如下圖4(a) 所示,最直接的解決辦法是 ANN 訓(xùn)練 + ANN 推理。

2 如下圖4(b) 所示,這種方案是先在 ANN 數(shù)據(jù)集上使用 BP 算法訓(xùn)練一個(gè) ANN,再把這個(gè)訓(xùn)練好的 ANN 轉(zhuǎn)化成 SNN。這個(gè) SNN 與 ANN 擁有相同的結(jié)構(gòu),但是不同的神經(jīng)元。這個(gè) SNN 在推理時(shí)使用的是 ANN 數(shù)據(jù)集轉(zhuǎn)化得到的 SNN-oriented dataset。

3 如下圖4(c) 所示,這種方案是直接使用 SNN-oriented dataset 訓(xùn)練一個(gè) SNN,訓(xùn)練方法是 BP-inspired Training。在每個(gè)時(shí)刻和位置的梯度直接由 spatio-temporal backpropagation (STBP) 方法得到。

如何看待第三代神經(jīng)網(wǎng)絡(luò)SNN?詳解脈沖神經(jīng)網(wǎng)絡(luò)的架構(gòu)原理、數(shù)據(jù)集和訓(xùn)練方法

  • SNN-oriented workloads

SNN-oriented workloads 的含義是目標(biāo)是識別在 SNN 中經(jīng)常使用的脈沖數(shù)據(jù)集 (如 N-MNIST 和 DVS-CIFAR10)。有2種基準(zhǔn)模型:

1 如下圖5(a) 所示,把脈沖數(shù)據(jù)集轉(zhuǎn)化成圖片,即 ANN-oriented dataset,然后使用 BP 算法訓(xùn)練 ANN 并推理。脈沖數(shù)據(jù)集轉(zhuǎn)化成圖片的方法就是圖3的 (c)(d) 所示。

2 如下圖5(b) 所示,這種方案是直接使用 SNN-oriented dataset 訓(xùn)練一個(gè) SNN,訓(xùn)練方法是 BP-inspired Training。在每個(gè)時(shí)刻和位置的梯度直接由 spatio-temporal backpropagation (STBP) 方法得到。

如何看待第三代神經(jīng)網(wǎng)絡(luò)SNN?詳解脈沖神經(jīng)網(wǎng)絡(luò)的架構(gòu)原理、數(shù)據(jù)集和訓(xùn)練方法

4 脈沖神經(jīng)網(wǎng)絡(luò)訓(xùn)練方法

  • ANN 的 BP 訓(xùn)練方法

可以用下式表示:

如何看待第三代神經(jīng)網(wǎng)絡(luò)SNN?詳解脈沖神經(jīng)網(wǎng)絡(luò)的架構(gòu)原理、數(shù)據(jù)集和訓(xùn)練方法

式中, φ j ′ n + 1 \varphi_j^{'n+1} φjn+1? n + 1 n+1 n+1 層的第 j j j 個(gè)神經(jīng)元的激活函數(shù)的導(dǎo)數(shù)。 L L L 是損失函數(shù),比如可以是 MSE Loss: L = 1 2 ∣ ∣ Y ? Y label ∣ ∣ 2 2 L=\frac{1}{2}||Y-Y_{\text{label}}||_2^2 L=21?Y?Ylabel?22? 。

  • SNN 的 STBP (時(shí)空反向傳播) 訓(xùn)練方法

基于的前向模型是2式的 LIF 的 SNN 模型,為了閱讀的方便再把2式寫一遍。

如何看待第三代神經(jīng)網(wǎng)絡(luò)SNN?詳解脈沖神經(jīng)網(wǎng)絡(luò)的架構(gòu)原理、數(shù)據(jù)集和訓(xùn)練方法

LIF 模型的迭代版本可以用下式表示:

如何看待第三代神經(jīng)網(wǎng)絡(luò)SNN?詳解脈沖神經(jīng)網(wǎng)絡(luò)的架構(gòu)原理、數(shù)據(jù)集和訓(xùn)練方法

式中, o o o 代表脈沖輸出, t t t 代表 time step, n n n 代表 layer index。 e ? d t τ e^{-\frac{dt}{\tau}} e?τdt? 代表膜電位的延遲效應(yīng)。 f ( ? ) f(\cdot) f(?) 是階躍函數(shù) (step function)。 這種迭代的 LIF 模型包含了原始神經(jīng)元模型中的所有行為,包括集成 (integration),觸發(fā) (fire) 和重置 (reset)。

注意,為了簡單起見,我們在原來的 LIF 模型中設(shè)置了 u r 1 = u r 2 = 0 , T w = 1 , K ( ? ) = 1 u_{r_1}=u_{r_2}=0,T_w=1,K(\cdot)=1 ur1??=ur2??=0,Tw?=1,K(?)=1 。給定迭代 LIF 模型,梯度沿著時(shí)間和空間維度傳播,LIF 模型的迭代版本的參數(shù)更新可以按照如下方式進(jìn)行:

如何看待第三代神經(jīng)網(wǎng)絡(luò)SNN?詳解脈沖神經(jīng)網(wǎng)絡(luò)的架構(gòu)原理、數(shù)據(jù)集和訓(xùn)練方法

從膜電位 u u u 到輸出 o o o 是個(gè)階躍函數(shù),它是不可導(dǎo)的。為了解決這個(gè)問題,有下面這個(gè)輔助函數(shù)計(jì)算輸出 o o o 到膜電位 u u u 的導(dǎo)數(shù)值:

? o ? u = 1 a sign ( ∣ u ? u t h ∣ < a 2 ) (4) \frac{\partial o}{\partial u}=\frac{1}{a}\text{sign}(|u-u_{th}|<\frac{a}{2})\tag{4} ?u?o?=a1?sign(u?uth?<2a?)(4)

式中,參數(shù) a a a 決定了梯度寬度。

L L L 是損失函數(shù),比如可以是 MSE Loss: L = 1 2 ∣ ∣ 1 T ∑ t = 1 T O t , N ? Y label ∣ ∣ 2 2 L=\frac{1}{2}||\frac{1}{T}\sum_{t=1}^{T}{O^{t,N}}-Y_{\text{label}}||_2^2 L=21?T1?t=1T?Ot,N?Ylabel?22? 。

5 脈沖神經(jīng)網(wǎng)絡(luò)評價(jià)指標(biāo)

眾所周知,基于 SNN 的模型通常無法在絕對識別準(zhǔn)確性方面擊敗當(dāng)前基于 ANN 的 AI 系統(tǒng),而真正的大腦在其他指標(biāo)上表現(xiàn)更好,比如操作效率。然而,在最近的研究中,識別精度仍然是判斷哪個(gè)模型 (ANN 或 SNN) 更好的主流指標(biāo),特別是在算法研究中。這是不公平的,因?yàn)?ANN 和 SNN 有非常不同的特點(diǎn)。例如,數(shù)據(jù)的精度 ANN 比 SNN 更高,這就使得在網(wǎng)絡(luò)大小相同的情況下,ANN 通常比 SNN 更容易獲得更好的識別精度。所有這些都表明模型評估需要更全面的度量。除了通常的精度比較,這里我們進(jìn)一步介紹了內(nèi)存和計(jì)算成本作為互補(bǔ)的評估指標(biāo)。

  • 識別精度 (Recognition accuracy)

在 ANN 中,這個(gè)精確度意味著正確識別樣本的百分比。如果標(biāo)簽類別與模型預(yù)測的最大激活值相同,則識別結(jié)果對當(dāng)前樣本是正確的。

在 SNN 中,我們首先計(jì)算每一個(gè)輸出神經(jīng)元的 fire rate,即脈沖率,當(dāng)然是在給定的時(shí)間窗 T T T 內(nèi)。然后取 fire rate 最高的那個(gè)神經(jīng)元作為輸出,寫成公式就是:

C ^ = arg ? max ? i { 1 T ∑ t = 1 T o i t , N } (5) \hat C=\arg\max_i \left\{ \frac{1}{T}\sum_{t=1}^{T}{o_i^{t,N}} \right\}\tag{5} C^=argimax?{T1?t=1T?oit,N?}(5)

式中, o i t , N o_i^{t,N} oit,N? 代表網(wǎng)絡(luò)的第 N N N 層,第 i i i 個(gè)神經(jīng)元在第 t t t 時(shí)刻的輸出。

下面介紹的內(nèi)存花銷和計(jì)算花銷都是指推理過程。原因有2點(diǎn),一方面, spatio-temporal gradient propagation 相對于推理過程來講非常復(fù)雜。另一方面, 大多數(shù)支持 SNN 的神經(jīng)形態(tài)學(xué)設(shè)備只執(zhí)行推理階段 (inference phase)。

  • 內(nèi)存花銷 (Memory cost)

通常,在嵌入式設(shè)備上部署模型時(shí),內(nèi)存占用 (Memory cost) 非常重要。

在 ANN 中,存儲器成本包括 權(quán)重內(nèi)存 (weight memory) 和激活值內(nèi)存 (activation memory)。activation memory 的開銷被忽略,但是如果使用查找表來實(shí)現(xiàn)的話應(yīng)該被計(jì)算在內(nèi)。

在 SNN 中,內(nèi)存成本包括 權(quán)重內(nèi)存 (weight memory),膜電位內(nèi)存 (membrane potential memory) 和脈沖內(nèi)存 (spike memory)。其他參數(shù)如點(diǎn)火閾值 u t h u_{th} uth? 和時(shí)間常數(shù) τ \tau τ 等可以忽略,因?yàn)樗鼈兛梢员煌粚踊蛘麄€(gè)神經(jīng)網(wǎng)絡(luò)的所有神經(jīng)元共享。只有當(dāng)脈沖觸發(fā)時(shí),脈沖內(nèi)存 (spike memory) 開銷才會出現(xiàn)。總之,內(nèi)存開銷可以通過下式計(jì)算:

A N N : M = M w + M a S N N : M = M w + M p + M s (6) \begin{aligned} &A N N: M=M_{w}+M_{a} \\ &S N N: M=M_{w}+M_{p}+M_{s} \end{aligned} \tag{6} ?ANN:M=Mw?+Ma?SNN:M=Mw?+Mp?+Ms??(6)

式中, M w , M a , M p M_w,M_a,M_p Mw?,Ma?,Mp? 由網(wǎng)絡(luò)結(jié)構(gòu)決定,而 M s M_s Ms? 由每個(gè)時(shí)間戳最大脈沖數(shù)動態(tài)地決定。

  • 計(jì)算花銷 (Compute cost)

計(jì)算開銷對于運(yùn)行延遲和能量消耗是至關(guān)重要的。

在 ANN 中,計(jì)算開銷主要由方程中的 MAC 運(yùn)算決定。

在 SNN 中,主要的計(jì)算成本來自脈沖輸入的這個(gè)積分的過程。與 ANN 有兩點(diǎn)不同:

  1. 代價(jià)高昂的乘法運(yùn)算可以省去,如果假設(shè) T w = 1 , K ( ? ) = 1 T_w=1,K(\cdot)=1 Tw?=1,K(?)=1 。此時(shí)樹突的這個(gè)積分運(yùn)算 (integration,注意看2式) 就變成了 ∑ j w j s j = ∑ j ′ w j ′ \sum_jw_js_j=\sum_{j^{'}}w_j^{'} j?wj?sj?=j?wj? ,成為了一個(gè)純加法運(yùn)算
  2. 積分是事件驅(qū)動的,這意味著如果沒有收到脈沖信號就不會進(jìn)行計(jì)算。

計(jì)算開銷可以通過下式計(jì)算:

A N N : C = C m u l + C a d d S N N : C = C a d d (7) \begin{aligned} &A N N: C=C_{m u l}+C_{a d d} \\ &S N N: C=C_{a d d} \end{aligned} \tag{7} ?ANN:C=Cmul?+Cadd?SNN:C=Cadd??(7)

在細(xì)胞體中的計(jì)算開銷 (例如 ANN 中的激活函數(shù)和 SNN 中的膜電位更新和觸發(fā)活動) 被忽略,這是神經(jīng)網(wǎng)絡(luò)設(shè)備中的一種常見方式。

注意,在 SNN 中, C a d d C_{add} Cadd? 與 Spike 事件的總數(shù)成正比。文章來源地址http://www.zghlxwxcb.cn/news/detail-472430.html

到了這里,關(guān)于如何看待第三代神經(jīng)網(wǎng)絡(luò)SNN?詳解脈沖神經(jīng)網(wǎng)絡(luò)的架構(gòu)原理、數(shù)據(jù)集和訓(xùn)練方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 使用FORCE訓(xùn)練的脈沖神經(jīng)網(wǎng)絡(luò)中的監(jiān)督學(xué)習(xí)(Matlab代碼實(shí)現(xiàn))

    使用FORCE訓(xùn)練的脈沖神經(jīng)網(wǎng)絡(luò)中的監(jiān)督學(xué)習(xí)(Matlab代碼實(shí)現(xiàn))

    ???????? 歡迎來到本博客 ???????? ??博主優(yōu)勢: ?????? 博客內(nèi)容盡量做到思維縝密,邏輯清晰,為了方便讀者。 ?? 座右銘: 行百里者,半于九十。 ?????? 本文目錄如下: ?????? 目錄 ??1 概述 1.1第一代神經(jīng)網(wǎng)絡(luò) 1.2?第二代神經(jīng)網(wǎng)絡(luò):BP 神經(jīng)網(wǎng)絡(luò) 1.

    2023年04月26日
    瀏覽(25)
  • 卷積神經(jīng)網(wǎng)絡(luò)詳解

    卷積神經(jīng)網(wǎng)絡(luò)詳解

    一個(gè)卷積神經(jīng)網(wǎng)絡(luò)里包括5部分——輸入層、若干個(gè)卷積操作和池化層結(jié)合的部分、全局平均池化層、輸出層: ● 輸入層:將每個(gè)像素代表一個(gè)特征節(jié)點(diǎn)輸入進(jìn)來。 ● 卷積操作部分:由多個(gè)濾波器組合的卷積層。 ● 池化層:將卷積結(jié)果降維。 ● 全局平均池化層:對生成的

    2024年02月06日
    瀏覽(14)
  • 神經(jīng)網(wǎng)絡(luò)分類算法原理詳解

    目錄 神經(jīng)網(wǎng)絡(luò)分類算法原理詳解 神經(jīng)網(wǎng)絡(luò)工作流程 反向傳播算法 1) 反向傳播原理

    2024年02月12日
    瀏覽(13)
  • 【神經(jīng)網(wǎng)絡(luò)繪制工具】PlotNeuralNet詳解

    【神經(jīng)網(wǎng)絡(luò)繪制工具】PlotNeuralNet詳解

    PlotNeuralNet 庫是用于繪制神經(jīng)網(wǎng)絡(luò)的工具庫,其繪制的神經(jīng)網(wǎng)絡(luò)較為干凈整潔,比較適合用于 科研論文寫作 等工作中,在此筆者整理了有關(guān)該庫的使用方法,希望更多朋友能夠借助這個(gè)庫繪制出更多優(yōu)美的神經(jīng)網(wǎng)絡(luò)。 以下是一些通過該庫的代碼繪制的Neural Netowrk Figures: F C

    2024年02月11日
    瀏覽(18)
  • 如何設(shè)計(jì)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),visio畫神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖

    如何設(shè)計(jì)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),visio畫神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖

    大概試了一下用visio繪制這個(gè)圖,除了最左面的變形圖片外其余基本可以實(shí)現(xiàn)(那個(gè)圖可以考慮用其它圖像處理軟件比如Photoshop生成后插入visio),visio中主要用到的圖形可以在更多形狀-常規(guī)-具有透視效果的塊中找到塊圖形,拖入繪圖區(qū)后拉動透視角度調(diào)節(jié)的小紅點(diǎn)進(jìn)行調(diào)整

    2024年01月16日
    瀏覽(23)
  • PyTorch實(shí)戰(zhàn):卷積神經(jīng)網(wǎng)絡(luò)詳解+Python實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)Cifar10彩色圖片分類

    PyTorch實(shí)戰(zhàn):卷積神經(jīng)網(wǎng)絡(luò)詳解+Python實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)Cifar10彩色圖片分類

    目錄 前言 一、卷積神經(jīng)網(wǎng)絡(luò)概述 二、卷積神經(jīng)網(wǎng)絡(luò)特點(diǎn) 卷積運(yùn)算 單通道,二維卷積運(yùn)算示例 單通道,二維,帶偏置的卷積示例 帶填充的單通道,二維卷積運(yùn)算示例 Valid卷積 Same卷積 多通道卷積計(jì)算 1.局部感知域 2.參數(shù)共享 3.池化層 4.層次化提取 ?三、卷積網(wǎng)絡(luò)組成結(jié)構(gòu)

    2024年02月07日
    瀏覽(37)
  • word可以畫神經(jīng)網(wǎng)絡(luò)圖嗎,如何畫神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖

    word可以畫神經(jīng)網(wǎng)絡(luò)圖嗎,如何畫神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖

    大概試了一下用visio繪制這個(gè)圖,除了最左面的變形圖片外其余基本可以實(shí)現(xiàn)(那個(gè)圖可以考慮用其它圖像處理軟件比如Photoshop生成后插入visio),visio中主要用到的圖形可以在更多形狀-常規(guī)-具有透視效果的塊中找到塊圖形,拖入繪圖區(qū)后拉動透視角度調(diào)節(jié)的小紅點(diǎn)進(jìn)行調(diào)整

    2024年02月15日
    瀏覽(26)
  • CNN(卷積神經(jīng)網(wǎng)絡(luò))的實(shí)現(xiàn)過程詳解

    CNN(卷積神經(jīng)網(wǎng)絡(luò))的實(shí)現(xiàn)過程詳解

    ? ? 在圖像處理領(lǐng)域,CNN(卷積神經(jīng)網(wǎng)絡(luò))處于絕對統(tǒng)治地位,但對于CNN具體是如何用神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)的,能找到的介紹要么是一大堆數(shù)學(xué)公式,要么是大段晦澀的文字說明,讀起來很是辛苦,想寫好一片完整的而且有深度的文章出來非常難,所以本文適合入門的朋友對CNN的學(xué)習(xí)

    2024年02月15日
    瀏覽(20)
  • 神經(jīng)網(wǎng)絡(luò)如何入門?

    神經(jīng)網(wǎng)絡(luò)如何入門?

    推薦《 Python神經(jīng)網(wǎng)絡(luò)編程 》這本入門書。豆瓣評分9.2。 如果你可以進(jìn)行加、減、乘、除運(yùn)算,那么你就可以制作自己的神經(jīng)網(wǎng)絡(luò)。我們使用的最困難運(yùn)算是梯度演算(gradient calculus),但是,我們會對這一概念加以說明,使盡可能多的讀者能夠理解這個(gè)概念。 在這本書中,

    2024年02月11日
    瀏覽(23)
  • 卷積神經(jīng)網(wǎng)絡(luò)(CNN)詳細(xì)介紹及其原理詳解

    卷積神經(jīng)網(wǎng)絡(luò)(CNN)詳細(xì)介紹及其原理詳解

    ??本文總結(jié)了關(guān)于卷積神經(jīng)網(wǎng)絡(luò)(CNN)的一些基礎(chǔ)的概念,并且對于其中的細(xì)節(jié)進(jìn)行了詳細(xì)的原理講解,通過此文可以十分全面的了解卷積神經(jīng)網(wǎng)絡(luò)(CNN),非常適合于作為Deep Learning的入門學(xué)習(xí)。下面就是本篇博客的全部內(nèi)容! ??卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, C

    2024年02月08日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包