楊 靜,趙 欣,徐 彥,姜 贏
1.北京師范大學(xué)珠海分校 管理學(xué)院,廣東 珠海 519087
2.南京農(nóng)業(yè)大學(xué) 信息科技學(xué)院,南京 210095
脈沖神經(jīng)元的輸入輸出均為一串離散的脈沖激發(fā)時間,通過脈沖序列表示并處理信息。脈沖神經(jīng)網(wǎng)絡(luò)以脈沖神經(jīng)元為基本構(gòu)成單元,相比傳統(tǒng)的人工神經(jīng)網(wǎng)絡(luò)有著更強大的計算能力。因此,脈沖神經(jīng)網(wǎng)絡(luò)已有越來越多的研究者從不同方面對其進行研究[1]。由于基于脈沖激發(fā)時間的編碼方式能夠在一個相對短的時間內(nèi)攜帶更多的復(fù)雜信息[2],研究者希望能通過樣本學(xué)習(xí)使得脈沖神經(jīng)元能夠在精確的時間點上激發(fā)出脈沖而不是僅僅學(xué)習(xí)激發(fā)出特定激發(fā)率的脈沖序列。
在生物學(xué)研究中有大量的證據(jù)表明:在大腦皮層中的確存在著有監(jiān)督學(xué)習(xí)的行為[3],因此有監(jiān)督學(xué)習(xí)算法在脈沖神經(jīng)網(wǎng)絡(luò)中也被廣泛應(yīng)用。現(xiàn)有的脈沖神經(jīng)網(wǎng)絡(luò)有監(jiān)督學(xué)習(xí)算法大致可以分為三大類:基于梯度下降的、基于突觸可塑性的以及基于脈沖序列卷積的學(xué)習(xí)算法[4]。例如,Bohte等人最早提出了一種單脈沖神經(jīng)網(wǎng)絡(luò)的反向傳播算法:SpikeProp[5],該方法通過近似的將脈沖激發(fā)時刻附近的神經(jīng)元內(nèi)部狀態(tài)看作線性函數(shù)的方法將BP算法推廣到脈沖神經(jīng)網(wǎng)絡(luò)中。在此基礎(chǔ)上還出現(xiàn)了各種推廣算法,例如:帶動量的反向傳播,QuickProp,Rprop,Levenberg-Marquardt BP以及基于隱層多脈沖的反向傳播學(xué)習(xí)算法[6-9]。Xu等人提出了一種基于梯度下降的多層前饋脈沖神經(jīng)網(wǎng)絡(luò)多脈沖輸出的有監(jiān)督學(xué)習(xí)方法(MSGDB),該方法中各層神經(jīng)元的輸出均可以為多脈沖[10-12]。Florian提出了一種名為Chronotron[13]的方法,其中包括了兩種學(xué)習(xí)機制:E-learning和I-learning。E-learning學(xué)習(xí)機制同樣基于梯度下降,不同的是該方法采用VP距離來度量實際輸出與目標(biāo)輸出脈沖之間的差異。最近Lin等人提出了另一種基于反向傳播的脈沖神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)算法,其中誤差函數(shù)是基于輸出脈沖序列的內(nèi)積而構(gòu)建,算法同樣可以推廣至多脈沖激發(fā)的多層脈沖神經(jīng)網(wǎng)絡(luò)[14],也有研究者提出了一種基于反向傳播的脈沖神經(jīng)元深度學(xué)習(xí)算法[15]。
突觸可塑性的有監(jiān)督學(xué)習(xí)方法主要基于生物神經(jīng)元的突觸調(diào)整機制,例如STDP(Spike-Timing-Dependent-Plasticity)規(guī)則[16]。ReSuMe方法[17]是一種基于 Widrow-Hoff規(guī)則并結(jié)合STDP規(guī)則的脈沖神經(jīng)元有監(jiān)督學(xué)習(xí)方法,具有較好的學(xué)習(xí)性能和適用性,但該方法只適合于單層網(wǎng)絡(luò)的學(xué)習(xí)。Sporea[18]等人提出一種結(jié)合BP算法的Multi-ReSuMe方法,以解決多脈沖激發(fā)的多層網(wǎng)絡(luò)學(xué)習(xí)問題。文獻[19]中提出了一種基于ReSuMe方法的輸入脈沖選擇改進學(xué)習(xí)算法以提高學(xué)習(xí)的精度。Wade等人結(jié)合STDP規(guī)則與BCM(Bienenstock-Cooper-Munro)學(xué)習(xí)規(guī)則給出了一種名為SWAT[20](Synaptic Weight Association Training)的多層前饋脈沖神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)算法。Chronotron中的I-learning學(xué)習(xí)機制[12]也是依據(jù)STDP規(guī)則調(diào)整權(quán)值,不同的是該方法以在線方式運行,更加符合生物神經(jīng)元的行為特性。
基于脈沖序列卷積的有監(jiān)督學(xué)習(xí)算法通過選擇合適的核函數(shù)將脈沖序列轉(zhuǎn)換成一個連續(xù)函數(shù)以進行進一步的定量分析。例如SPAN(Spike Pattern Association Neuron)算法[2]采用卷積方式將離散的脈沖激發(fā)時間轉(zhuǎn)換為所對應(yīng)的實數(shù)值并將其代入Widrow-Hoff規(guī)則得到權(quán)值調(diào)整公式。類似的方法PSD(Precise-Spike-Driven)[21]基于LIF神經(jīng)元模型提出,但該方法只對輸入脈沖進行卷積。Lin等人[22]提出了一種基于nSTK(nonlinear Spike Train Kernels)的在線有監(jiān)督學(xué)習(xí)算法,該算法利用Laplacian核函數(shù)與一個非線性函數(shù)一起完成對輸入脈沖序列的轉(zhuǎn)換。另一種基于脈沖序列卷積學(xué)習(xí)方法FILT(FILTered-error)[23]利用一個濾鏡函數(shù)處理目標(biāo)與實際輸出脈沖之間的誤差后再通過調(diào)整權(quán)值逐步降低這個誤差值,該方法是基于隨機的學(xué)習(xí)模型提出的。
基于梯度下降的多脈沖神經(jīng)元學(xué)習(xí)算法中的MSGDB方法具有較高的學(xué)習(xí)精度[24],但該方法采用一種動態(tài)誤差函數(shù)來計算權(quán)值調(diào)整值,在神經(jīng)元的序列學(xué)習(xí)中有可能會遇到實際輸出脈沖個數(shù)和目標(biāo)脈沖個數(shù)不等但算法已經(jīng)收斂并結(jié)束的情況?;贛SGDB方法的這一固有缺陷,本文提出了一種基于梯度下降的脈沖神經(jīng)元精確序列學(xué)習(xí)算法。該算法通過引入虛擬激發(fā)脈沖,使得算法能在提前結(jié)束時利用虛擬激發(fā)脈沖繼續(xù)進行學(xué)習(xí),并最終使得神經(jīng)元能夠精確激發(fā)出和目標(biāo)序列個數(shù)一致的脈沖序列。
脈沖神經(jīng)元的種類較多,例如:SRM模型(Spike Response Model),LIF模型(Leaky Integrate-and-Fire Model)和HH模型(Hodgkin-Huxley model)等[25]。其中SRM模型具有顯式的膜電位表達式,可以方便地對表達式進行求導(dǎo)計算,進而研究神經(jīng)元的運行方式以及學(xué)習(xí)算法。同時LIF模型和HH模型都可以通過求解微分方程等方法將其轉(zhuǎn)換成類似SRM模型的形式,本文選用SRM神經(jīng)元模型作為研究對象。
在SRM模型中,神經(jīng)元接收由多個突觸傳輸過來的一串離散的脈沖時間序列。所有的脈沖在到達神經(jīng)元后就會產(chǎn)生突觸后電位(Postsynaptic Potential,PSP),并和突觸的權(quán)值一起作用使得神經(jīng)元的內(nèi)部狀態(tài)即膜電位值(membrane potential)發(fā)生變化,其計算公式如下所示:
其中,N為神經(jīng)元輸入突觸的個數(shù);wi為神經(jīng)元的第i個輸入突觸的權(quán)值;為第i個突觸的第g個脈沖到達神經(jīng)元的時間;Gi為第i個突觸的輸入脈沖集合;為當(dāng)前時刻t(t>0)之前最近的一次脈沖激發(fā)時刻;Ra為絕對不應(yīng)期長度。從上式中可以看出,當(dāng)時,也就是如果脈沖到達時間小于等于最近一次脈沖激發(fā)時刻與絕對不應(yīng)期長度之和時,該脈沖在膜電位的計算中是無效的。Ra直接決定了神經(jīng)元在激發(fā)后的一個短時期內(nèi)不會再次激發(fā)脈沖,這個時期被稱為絕對不應(yīng)期。ε()為反應(yīng)函數(shù),它決定一個輸入脈沖產(chǎn)生的PSP大小,其表達式如下所示:
其中τ是決定反應(yīng)函數(shù)形態(tài)的時間延遲常數(shù)。
當(dāng)神經(jīng)元的膜電位值不斷增加直到超過神經(jīng)元的激發(fā)閾值?時,神經(jīng)元就會在該時刻激發(fā)出一個脈沖,并且膜電位值立即降為0。隨后神經(jīng)元會進入一個相對不容易再次激發(fā)脈沖的時期,這個時期稱為相對不應(yīng)期。相對不應(yīng)期由膜電位計算公式(1)中的η(t)函數(shù)描述:
其中τR是決定不應(yīng)期函數(shù)形態(tài)的延遲常數(shù)。顯然這是一個恒負函數(shù),t越小也就是當(dāng)前時刻和最近激發(fā)時刻越接近時,η(t)值越小,從而導(dǎo)致膜電位值越小,越不容易超過閾值。當(dāng)神經(jīng)元還沒有脈沖激發(fā)時,η(t)恒等于0。
MSGDB算法根據(jù)神經(jīng)元實際輸出序列和目標(biāo)序列構(gòu)建誤差函數(shù),通過計算梯度調(diào)整權(quán)值并最小化該誤差函數(shù)。由于脈沖神經(jīng)元的輸出是一串脈沖序列,在學(xué)習(xí)過程中可能出現(xiàn)神經(jīng)元的實際脈沖輸出個數(shù)和目標(biāo)脈沖輸出個數(shù)不相等的情況。MSGDB的解決方案則是采用動態(tài)選取脈沖的方法,即選取相對應(yīng)的實際輸出脈沖和目標(biāo)輸出脈沖進行誤差計算。MSGDB算法有兩種運行方式:在線和離線學(xué)習(xí)方式。離線學(xué)習(xí)方式在神經(jīng)元每一輪運行結(jié)束后根據(jù)實際輸出脈沖序列和目標(biāo)輸出脈沖序列構(gòu)建誤差函數(shù),并進行權(quán)值調(diào)整。而在線學(xué)習(xí)方式當(dāng)神經(jīng)元一旦有實際脈沖激發(fā)時就立刻和相對應(yīng)的目標(biāo)脈沖構(gòu)建誤差函數(shù)以調(diào)整權(quán)值。這種學(xué)習(xí)方式更符合生物學(xué)基礎(chǔ),大量實驗也證明在線學(xué)習(xí)方式有著更高的學(xué)習(xí)精度。因此本文也以在線學(xué)習(xí)方式為研究對象開展討論。
當(dāng)實際激發(fā)序列和目標(biāo)激發(fā)序列脈沖個數(shù)不相等時,就會有實際激發(fā)脈沖或者目標(biāo)激發(fā)脈沖沒有相對應(yīng)的激發(fā)脈沖來構(gòu)建誤差函數(shù)。如果此刻之前的誤差函數(shù)并未完全等于零,學(xué)習(xí)將繼續(xù)調(diào)整權(quán)值。然而當(dāng)誤差函數(shù)完全等于零時即前若干個輸出脈沖已經(jīng)完全學(xué)會時,就會由于沒有可計算的誤差函數(shù)而導(dǎo)致神經(jīng)元在未完全學(xué)會的情況下提前停止學(xué)習(xí)。提前停止分為兩種情況。情況1:神經(jīng)元僅僅學(xué)會了目標(biāo)序列中的前若干個脈沖而未能激發(fā)出最后的若干個脈沖;情況2:神經(jīng)元學(xué)會了全部目標(biāo)序列但在目標(biāo)序列最后一個激發(fā)脈沖之后還激發(fā)了若干個多余的脈沖。在以上兩種情況下,誤差函數(shù)均為0,算法認(rèn)為學(xué)習(xí)已經(jīng)收斂而停止學(xué)習(xí)。圖1為這兩種情況的具體示意圖。
圖1 梯度下降學(xué)習(xí)算法中兩種提前結(jié)束的情況示意圖
基于2.2節(jié)中所討論的多脈沖神經(jīng)元梯度下降學(xué)習(xí)算法可能收斂于個數(shù)不等的脈沖序列的缺陷,本文給出了一種基于虛擬脈沖的改進算法。以下分別以實際輸出脈沖個數(shù)不足以及實際輸出脈沖個數(shù)多余兩種情況為例具體介紹該算法。
如圖2所示,神經(jīng)元的運行時間為Tt;接收突觸傳遞過來的若干輸入脈沖;目標(biāo)輸出序列為;實際輸出序列為。顯然神經(jīng)元已完全學(xué)會了目標(biāo)輸出序列中的前F個脈沖,但卻未能激發(fā)出目標(biāo)輸出序列中的最后M個脈沖如果將神經(jīng)元的運行看作是一個連續(xù)過程,并且在Tt時刻之后繼續(xù)接收后續(xù)輸入脈沖等,那么隨著輸入脈沖對于神經(jīng)元膜電位的不斷積累增加作用,可以預(yù)見神經(jīng)元將在Tt之后的某時刻繼續(xù)激發(fā)出脈沖(如圖2所示)。那么讓神經(jīng)元繼續(xù)激發(fā)出額外的脈沖就可以看作是使得未來的輸出脈沖提前激發(fā)至運行時間之前。然而由于的具體激發(fā)時間無法得到,采用虛擬實際激發(fā)脈沖來與目標(biāo)序列中被遺漏的最后M個脈沖配對來構(gòu)建近似的誤差函數(shù)。應(yīng)該大于運行時間Tt以保證權(quán)值調(diào)整方向的正確,并且取值越大意味著調(diào)整幅度越大。
圖2 實際激發(fā)個數(shù)不足情況下虛擬脈沖示意圖
由于神經(jīng)元已經(jīng)完全學(xué)會了前F個輸出脈沖,那么前F個誤差函數(shù)均等于零。為了使得神經(jīng)元繼續(xù)激發(fā),新的誤差函數(shù)由目標(biāo)輸出序列中的最后M個脈沖分別與M 個虛擬實際激發(fā)脈沖構(gòu)建:
權(quán)值的更新值Δwi為:
類似于MSGDB算法:
B部分的計算方法和多脈沖神經(jīng)元梯度下降學(xué)習(xí)算法類似:
類似的,實際輸出多余情況如圖3所示,神經(jīng)元已完全學(xué)會了全部的目標(biāo)輸出序列,但卻多激發(fā)出了最后M個脈沖。那么讓神經(jīng)元不激發(fā)出這些額外的脈沖就可以看作是使得這些多余的輸出脈沖延后激發(fā)至運行時間之后。同樣可以假設(shè)目標(biāo)輸出序列在運行時間Tt之后還有額外的期望輸出脈沖,并采用一個虛擬目標(biāo)激發(fā)脈沖來近似代替與實際輸出序列中多余的最后M個脈沖配對來構(gòu)建一個近似的誤差函數(shù)。同樣需要大于運行時間Tt以保證權(quán)值調(diào)整方向的正確,并且取值越大意味著調(diào)整幅度越大。
圖3 實際激發(fā)個數(shù)多余情況下虛擬脈沖示意圖
類似的,在這種情況下為了使得神經(jīng)元繼續(xù)激發(fā),新的誤差函數(shù)構(gòu)建如下:
同樣,Δwi的計算如下所示:
類似的,有:
D′部分的計算方法與上一節(jié)類似。
以上分別介紹了兩種輸出脈沖個數(shù)不等情況下利用虛擬激發(fā)脈沖構(gòu)建誤差函數(shù)和調(diào)整權(quán)值的方法。在該方法的實際應(yīng)用中還有一點需要仔細討論,即究竟在什么時候采用虛擬激發(fā)脈沖構(gòu)建新的誤差函數(shù)。2.2節(jié)中提到的原始的MSGDB算法本身是有一定的脈沖個數(shù)收斂能力的。在算法運行過程中可能出現(xiàn)輸出脈沖個數(shù)不等的情況,而算法也有可能將其糾正過來。由于神經(jīng)元在學(xué)習(xí)結(jié)束前并不知道學(xué)習(xí)是否會收斂于個數(shù)不等的脈沖序列,那么精確脈沖序列學(xué)習(xí)算法有兩種運行方式:(1)只有當(dāng)算法已經(jīng)收斂且輸出脈沖個數(shù)不等時才采用虛擬激發(fā)脈沖進行糾正;(2)在每輪學(xué)習(xí)結(jié)束后一旦遇到輸出脈沖個數(shù)不等的情況就采用虛擬激發(fā)脈沖進行糾正。這兩種算法分別縮寫為V1-MSGDB和V2-MSGDB。對于V1-MSGDB而言,在算法第一次收斂之前的學(xué)習(xí)軌跡和MSGDB是完全一致的。而對于V2-MSGDB而言,只要在運行過程中出現(xiàn)輸出個數(shù)不等的情況,那么算法將增加虛擬脈沖來構(gòu)建誤差函數(shù),這將導(dǎo)致學(xué)習(xí)軌跡和MSGDB完全不一樣。兩種算法的學(xué)習(xí)效率是有差異的,流程分別如下所示:
V1-MSGDB算法流程
輸入:輸入脈沖序列,目標(biāo)序列,初始權(quán)值以及學(xué)習(xí)速率
(1)利用MSGDB訓(xùn)練神經(jīng)元
(2)如果C=1且目標(biāo)序列中脈沖個數(shù)大于實際輸出序列中脈沖個數(shù)
(2.1)利用公式(5)構(gòu)建誤差函數(shù)
(2.2)利用公式(6)~(12)計算 Δwi并更新權(quán)值(2.3)轉(zhuǎn)到(1)
(3)如果C=1且目標(biāo)序列中脈沖個數(shù)小于實際輸出序列中脈沖個數(shù)
(3.1)利用公式(13)構(gòu)建誤差函數(shù)
(3.2)利用公式(14)~(19)計算 Δwi并更新權(quán)值
(3.3)轉(zhuǎn)到(1)
輸出:權(quán)值
V2-MSGDB算法流程
輸入:輸入脈沖序列,目標(biāo)序列,初始權(quán)值以及學(xué)習(xí)速率
(1)利用MSGDB訓(xùn)練神經(jīng)元
(1.1)如果一輪學(xué)習(xí)結(jié)束后目標(biāo)序列中脈沖個數(shù)大于實際輸出序列中脈沖個數(shù)
(1.1.1)利用公式(5)構(gòu)建新誤差函數(shù)
(1.1.2)利用公式(6)~(12)計算 Δwi并更新權(quán)值
(1.1.3)繼續(xù)下一輪學(xué)習(xí)
(1.2)如果一輪學(xué)習(xí)結(jié)束后目標(biāo)序列中脈沖個數(shù)小于實際輸出序列中脈沖個數(shù)
(1.2.1)利用公式(13)構(gòu)建新誤差函數(shù)
(1.2.2)利用公式(14)~(19)計算Δwi并更新權(quán)值
(1.2.3)繼續(xù)下一輪學(xué)習(xí)
輸出:權(quán)值
另一個需要說明的問題是:虛擬脈沖激發(fā)時間的取值。在算法中需要利用虛擬脈沖來和實際激發(fā)時間或目標(biāo)激發(fā)時間配對構(gòu)建誤差函數(shù),一個合適的虛擬脈沖應(yīng)該能盡快地使得神經(jīng)元激發(fā)出額外脈沖或者消除多余脈沖,但同時又使得權(quán)值調(diào)整對原學(xué)習(xí)結(jié)果的破壞最小。而這個合適的取值和神經(jīng)元的突觸權(quán)值大小,輸出脈沖時間以及目標(biāo)脈沖序列等參數(shù)緊密相關(guān)。類似于學(xué)習(xí)速率的取值,目前并無一個明確的取值方案。從最小調(diào)整的原則出發(fā)和可以取值為Tt+1。因為虛擬脈沖的取值直接和權(quán)值的調(diào)整幅度相關(guān),取值越大,調(diào)整幅度越大。為了避免權(quán)值調(diào)整過大對原有學(xué)習(xí)結(jié)果的破壞,可以采用最小值。而Tt+1只是保證調(diào)整方向正確的最小的虛擬激發(fā)時間并不能保證一定獲得最好的學(xué)習(xí)效果。在下一章的實驗中,將通過設(shè)置不同取值的虛擬脈沖對其進行進一步的結(jié)果分析。總之,本文提出的基于梯度下降的精確序列學(xué)習(xí)算法在原有MSGDB算法的基礎(chǔ)上,引入虛擬脈沖構(gòu)建誤差函數(shù)來對神經(jīng)元的輸出脈沖個數(shù)進行調(diào)整。其中虛擬實際脈沖可以使得神經(jīng)元增加脈沖激發(fā)個數(shù)而虛擬目標(biāo)脈沖的引入可以使得神經(jīng)元減少激發(fā)個數(shù)。算法通過比對實際輸出脈沖個數(shù)和目標(biāo)輸出脈沖個數(shù)采取新的誤差函數(shù)引導(dǎo)學(xué)習(xí)朝著正確激發(fā)個數(shù)的方向進行,并最終達到精確學(xué)習(xí)的目標(biāo)。
本章通過一系列對比實驗來驗證所提出的精確脈沖序列學(xué)習(xí)算法的效果。實驗中的神經(jīng)元的輸入脈沖序列和目標(biāo)輸出脈沖序列均為給定激發(fā)頻率的Poisson序列,F(xiàn)in代表輸入激發(fā)頻率,F(xiàn)out代表輸出激發(fā)頻率。其他一些神經(jīng)元的參數(shù)如下所列:τ=7 ms,τR=80 ms,?=1,Ra=1 ms。神經(jīng)元的初始權(quán)值是在給定區(qū)間內(nèi)取的均勻分布的隨機值,學(xué)習(xí)速率設(shè)為0.003,每次學(xué)習(xí)的最大步數(shù)設(shè)為1 000步。
在第一個實驗中,選取的神經(jīng)元有200個輸入突觸,在200 ms的運行時間內(nèi)接收Fin=5 Hz的輸入脈沖,其學(xué)習(xí)目標(biāo)脈沖序列為Fout=80 Hz的Poisson序列,初始權(quán)值的產(chǎn)生區(qū)間為:[0,0.25]。首先取進行實驗,圖4、圖5分別顯示了V1-MSGDB的學(xué)習(xí)結(jié)果。
圖4 V1-MSGDB學(xué)習(xí)精度變化示意圖(激發(fā)個數(shù)不足)
圖5 V1-MSGDB從53步到225步學(xué)習(xí)過程示意圖(激發(fā)個數(shù)不足)
從圖4中可以看出算法在53步時第一次達到精度1,但此刻神經(jīng)元的輸出少激發(fā)了最后兩個目標(biāo)脈沖。MSGDB算法將在53步時停止學(xué)習(xí)而V1-MSGDB算法在檢測到輸出個數(shù)不等后利用虛擬脈沖繼續(xù)調(diào)整權(quán)值,又通過172步學(xué)習(xí)使得神經(jīng)元精確激發(fā)出目標(biāo)脈沖序列。在圖4中可以看到在第54步時精度有一個急劇下降,這是由于虛擬脈沖帶來的精度損失,但之后可以看到精度隨著學(xué)習(xí)步數(shù)的增加逐漸增大,最終達到1,并激發(fā)出了全部目標(biāo)脈沖。
圖6、7分別顯示了另一種算法V2-MSGDB的學(xué)習(xí)結(jié)果。
圖6 V2-MSGDB學(xué)習(xí)精度變化示意圖(激發(fā)個數(shù)不足)
圖7 V2-MSGDB學(xué)習(xí)過程示意圖(激發(fā)個數(shù)不足)
可以看出V2-MSGDB只有1次也就是最后一步收斂于精度1,并且激發(fā)出了全部的目標(biāo)脈沖。相比V1-MSGDB的225步的收斂步數(shù),整個學(xué)習(xí)過程只花了117步。因為該算法在每一輪學(xué)習(xí)結(jié)束時一旦遇到激發(fā)個數(shù)不等立即使用虛擬脈沖來調(diào)整權(quán)值,能有效避免算法收斂但激發(fā)個數(shù)不同的情況出現(xiàn)。在本例中,第一輪學(xué)習(xí)結(jié)束后精度為0.134 5,神經(jīng)元輸出為脈沖12個,與目標(biāo)脈沖個數(shù)相等;第二輪學(xué)習(xí)結(jié)束后精度為0.173 5,神經(jīng)元輸出脈沖為19個,比目標(biāo)脈沖個數(shù)多了7個。在第三輪學(xué)習(xí)中,V2-MSGDB檢測到輸出個數(shù)不足立刻引入了虛擬目標(biāo)脈沖來構(gòu)建誤差函數(shù)使得這一輪學(xué)習(xí)結(jié)束后神經(jīng)元激發(fā)個數(shù)降到10個,而V1-MSGDB仍然采用原有的誤差函數(shù)調(diào)整,并使得調(diào)整結(jié)束后神經(jīng)元激發(fā)個數(shù)變?yōu)?3個。因此從這一輪開始兩種算法的學(xué)習(xí)軌跡完全不同。
表1 不同取值虛擬脈沖的收斂步數(shù)(實驗一)
第二個實驗中,利用和實驗一相同的神經(jīng)元參數(shù)設(shè)置,不同的是選取了一個神經(jīng)元有多余激發(fā)例子來進行實驗。圖8、9為V1-MSGDB的學(xué)習(xí)過程示意圖。
圖8 V1-MSGDB學(xué)習(xí)精度變化示意圖(激發(fā)個數(shù)多余)
圖9 V1-MSGDB從480步到506步學(xué)習(xí)過程示意圖(激發(fā)個數(shù)多余)
圖8 顯示出神經(jīng)元在480步時達到精度1,但從圖9中可以看出此刻神經(jīng)元激發(fā)了11個輸出脈沖,比目標(biāo)輸出序列多了3個脈沖。V1-MSGDB采用虛擬脈沖繼續(xù)調(diào)整權(quán)值,并在506步時消除了所有多余的輸出脈沖達到精度1。此例中輸出神經(jīng)元個數(shù)差異數(shù)達到3個,但算法仍能夠逐一消除輸出脈沖的個數(shù)差異。從圖9中可以看出算法在糾正過程中是逐個消除多余輸出的脈沖的。V1-MSGDB的糾正學(xué)習(xí)過程中,有5次達到精度1,分別是:482、487、490、493、500步,但這些時刻神經(jīng)元仍然均有多余的輸出脈沖,因此算法持續(xù)調(diào)整權(quán)值直到精確激發(fā)出目標(biāo)序列。
圖10、11展示了V2-MSGDB在的學(xué)習(xí)過程,可以看出算法總共花了635步精確收斂到精度1比V1-MSGDB的學(xué)習(xí)效率稍低。這也說明了雖然V2-MSGDB從算法開始就一直糾正輸出脈沖個數(shù)不同的情況,但這并不意味著該算法就能獲得更好的學(xué)習(xí)效果。
同樣對于實驗二,也分別采用了不同的虛擬脈沖取值來學(xué)習(xí),表2為相應(yīng)的結(jié)果。在實驗二中,不同的虛擬脈沖取值仍然會帶來不同的收斂速度且并無明顯規(guī)律。對于V1-MSGDB算法,不同的取值帶來的收斂速度差異并不是太大,而對于V2-MSGDB算法差異則較大。因此最優(yōu)虛擬脈沖的取值受到多個因素影響比較困難確定,需要進一步深入研究。
圖10 V2-MSGDB學(xué)習(xí)精度變化示意圖(激發(fā)個數(shù)多余)
圖11 V2-MSGDB學(xué)習(xí)過程示意圖(激發(fā)個數(shù)多余)
表2 不同取值虛擬脈沖的收斂步數(shù)(實驗二)
V1-MSGDB和V2-MSGDB均能使得神經(jīng)元激發(fā)出精確的目標(biāo)輸出序列,但在不同的情況下有著不同的學(xué)習(xí)效率。在該算法的實際應(yīng)用中,一個神經(jīng)元在正常學(xué)習(xí)結(jié)束之前,是無法得知它是否會收斂到一個輸出脈沖個數(shù)不等的情況。因此如果采用V1-MSGDB算法,則對原來就能夠正確激發(fā)的神經(jīng)元學(xué)習(xí)過程無影響,而如果采用V2-MSGDB則很有可能會改變原來就能正確激發(fā)的神經(jīng)元的學(xué)習(xí)軌跡。以下通過兩組實驗來進一步驗證這兩種不同的精確學(xué)習(xí)算法的效果。第一組實驗采用和實驗一類似的設(shè)置,不同的是神經(jīng)元的初始權(quán)值是在區(qū)間[0,0.5]中產(chǎn)生,這種設(shè)置可以使得神經(jīng)元的初次激發(fā)個數(shù)大約是目標(biāo)輸出脈沖個數(shù)的兩倍左右。使用這種方式產(chǎn)生50組不同的初始權(quán)值,并分別用MSGDB、V1-MSGDB和V2-MSGDB訓(xùn)練該神經(jīng)元。首先,在這50次實驗中,MSGDB算法出現(xiàn)了31次收斂于不相等輸出脈沖個數(shù)的現(xiàn)象,出現(xiàn)概率高達62%,這也說明當(dāng)初始輸出與目標(biāo)輸出相差較大時,MSGDB是有大概率出現(xiàn)收斂于不相等輸出的現(xiàn)象。圖12分三組不同情況分別列出了50次實驗的平均結(jié)果,其中A組結(jié)果顯示的是所有這50次實驗的平均結(jié)果,B組顯示的是所有出現(xiàn)收斂于不相等輸出脈沖個數(shù)情況的實驗結(jié)果,C組顯示的是所有未出現(xiàn)收斂于不相等輸出脈沖個數(shù)情況的實驗結(jié)果。
圖12 初次激發(fā)個數(shù)大約是目標(biāo)輸出脈沖個數(shù)的兩倍時MSGDB、V1-MSGDB和V2-MSGDB的平均收斂步數(shù)
可以看出,在考慮所有50次實驗時,帶虛擬激發(fā)脈沖的算法顯然需要更多的學(xué)習(xí)步數(shù)達到收斂,而MSGDB雖然只需要約264步的平均收斂步數(shù),但超過一半是收斂于不相等的輸出脈沖個數(shù)情況。當(dāng)處理收斂于不相等輸出脈沖個數(shù)的現(xiàn)象時V2-MSGDB的學(xué)習(xí)效率稍高于V1-MSGDB。而在本來就能被MSGDB精確學(xué)習(xí)的情況下V2-MSGDB則需要額外的學(xué)習(xí)步數(shù)達到收斂,這是由于V2-MSGDB算法破壞了原來學(xué)習(xí)的結(jié)果。
第二組實驗使用在區(qū)間[0,0.15]的初始權(quán)值,這種設(shè)置可以使得初次激發(fā)的脈沖個數(shù)大約是目標(biāo)輸出脈沖個數(shù)的一半左右。同樣,利用不同的初始權(quán)值進行了50次實驗。在這組實驗中,MSGDB算法出現(xiàn)了32次收斂于不相等輸出脈沖個數(shù)的現(xiàn)象,概率仍然高達64%,這與前一組實驗結(jié)果是基本一致的。從圖13中可以看出不同于前一組實驗結(jié)果,V2-MSGDB在這三組情況下均為學(xué)習(xí)效率最低的,當(dāng)處理不能精確激發(fā)的情況時,V2-MSGDB也有可能需要更多的學(xué)習(xí)步數(shù)。
圖13 初次激發(fā)個數(shù)大約是目標(biāo)輸出脈沖個數(shù)的一半時MSGDB、V1-MSGDB和V2-MSGDB的平均收斂步數(shù)
從以上結(jié)果可以看出,在MSGDB本來能夠激發(fā)出精確的輸出脈沖時,由于V2-MSGDB采用了虛擬激發(fā)脈沖糾正學(xué)習(xí),破壞了原有學(xué)習(xí)結(jié)果,因此需要更多學(xué)習(xí)步數(shù),而當(dāng)神經(jīng)元不能精確激發(fā)時,V1-MSGDB和V2-MSGDB的學(xué)習(xí)效率并沒有明顯的好壞區(qū)別,在不同情況下有著不同的結(jié)果。而實際應(yīng)用中,并不能事先判斷出學(xué)習(xí)是否會收斂于不相等的輸出序列,因此綜合考慮V1-MSGDB這種形式的精確序列學(xué)習(xí)算法更具有優(yōu)勢。
本文主要針對多脈沖神經(jīng)元梯度下降學(xué)習(xí)算法MSGDB的固有缺陷進行改進,使得神經(jīng)元通過樣本學(xué)習(xí)后能夠激發(fā)出和目標(biāo)序列個數(shù)一致的精確脈沖序列。該算法引入虛擬激發(fā)脈沖來構(gòu)建誤差函數(shù),不但能解決激發(fā)個數(shù)多余的問題還能解決激發(fā)個數(shù)不足的問題。同時本文提出的精確序列算法也在解決輸入、輸出個數(shù)差異較大時同樣能獲得較好的學(xué)習(xí)效果。
本文的后續(xù)工作將對如何確定最優(yōu)的虛擬脈沖激發(fā)時間展開進一步研究,并將其結(jié)果延伸到脈沖神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)算法研究中。