張耀中 胡小方 周躍 段書凱
強(qiáng)化學(xué)習(xí),是智能體通過與環(huán)境交互、試錯(cuò)的過程來學(xué)習(xí)的行為.它是一種以環(huán)境反饋?zhàn)鳛檩斎氲淖赃m應(yīng)的機(jī)器學(xué)習(xí)方法[1],目前已廣泛應(yīng)用于控制科學(xué)、運(yùn)籌學(xué)等諸多領(lǐng)域[2?3].在強(qiáng)化學(xué)習(xí)過程中,智能體最初對(duì)環(huán)境一無所知,通過與環(huán)境交互的方式獲取獎(jiǎng)賞.智能體在這個(gè)過程中學(xué)習(xí)策略,使得最終能在某種評(píng)價(jià)體系下達(dá)到最優(yōu)目標(biāo).Q 學(xué)習(xí)是一種典型的無需模型的強(qiáng)化學(xué)習(xí)算法,智能體根據(jù)動(dòng)作價(jià)值即Q 值函數(shù),通過對(duì)狀態(tài)–動(dòng)作序列進(jìn)行足夠多的訪問,學(xué)習(xí)到最優(yōu)策略[4].通常,在Q 學(xué)習(xí)任務(wù)中,Q 值函數(shù)由表格的方式實(shí)現(xiàn),在狀態(tài)為連續(xù)值的情況下,則通過離散化狀態(tài)以存儲(chǔ)動(dòng)作價(jià)值,然而傳統(tǒng)的表格法有如下缺點(diǎn):1)狀態(tài)的離散度難以控制.2)狀態(tài)維數(shù)較多時(shí)會(huì)導(dǎo)致維數(shù)災(zāi)難.
將神經(jīng)網(wǎng)絡(luò)作為Q 值函數(shù)擬合器可以有效解決以上問題.神經(jīng)網(wǎng)絡(luò)可以分為三代:第一代把McCulloch-Pitts 神經(jīng)元模型作為計(jì)算單元;第二代為人工神經(jīng)網(wǎng)絡(luò)(Artificial neural network,ANN),它們的計(jì)算單元中帶有激活函數(shù);脈沖神經(jīng)網(wǎng)絡(luò)(Spiking neural network,SNN)將脈沖神經(jīng)元作為計(jì)算單元,被稱為第三代神經(jīng)網(wǎng)絡(luò)[5].SNN 的學(xué)習(xí)方式與哺乳動(dòng)物的學(xué)習(xí)方式非常類似[6].此外,SNN能量效率高,有報(bào)道證明SNN 芯片比用現(xiàn)場(chǎng)可編程門陣列(Field programmable gate array,FPGA)實(shí)現(xiàn)的ANN 能耗低兩個(gè)數(shù)量級(jí)[7].因此,基于SNN的強(qiáng)化學(xué)習(xí)算法更容易進(jìn)行低功耗–硬件實(shí)現(xiàn).
與ANN 類似,SNN 的學(xué)習(xí)算法也分為監(jiān)督學(xué)習(xí)算法和非監(jiān)督學(xué)習(xí)算法.非監(jiān)督學(xué)習(xí)算法僅僅基于數(shù)據(jù)的特征,這類算法對(duì)計(jì)算能力要求較低,因?yàn)椴恍枰獢?shù)據(jù)集的多次迭代,脈沖神經(jīng)網(wǎng)絡(luò)中典型的非監(jiān)督學(xué)習(xí)算法是脈沖時(shí)間依賴可塑性(Spiketiming dependent plasticity,STDP)學(xué)習(xí)規(guī)則[8].而監(jiān)督學(xué)習(xí)算法需要帶有標(biāo)簽的數(shù)據(jù)集,需要多次迭代運(yùn)算,主要有遠(yuǎn)程監(jiān)督學(xué)習(xí)算法(ReSuMe)等[9].
目前許多訓(xùn)練SNN 的學(xué)習(xí)算法都只能用于不含隱含層的網(wǎng)絡(luò),且沒有通用的方法[10].對(duì)于訓(xùn)練多層SNN,一種方式是先訓(xùn)練ANN,再將其轉(zhuǎn)換為SNN[11],這種基于映射的學(xué)習(xí)方式會(huì)導(dǎo)致局部最優(yōu),因?yàn)橛?xùn)練在ANN 上進(jìn)行,而不是SNN[12].也有人提出了利用突觸延遲的監(jiān)督學(xué)習(xí)算法,并行調(diào)整隱含層和輸出層權(quán)重[13].由于本文基于多層SNN 實(shí)現(xiàn)強(qiáng)化學(xué)習(xí)算法,因此設(shè)計(jì)有效的多層SNN 的訓(xùn)練方法是一個(gè)必須要解決的問題.
基于傳統(tǒng)半導(dǎo)體器件和集成技術(shù)實(shí)現(xiàn)的神經(jīng)網(wǎng)絡(luò)電路復(fù)雜度高、規(guī)模小、處理能力有限,難以真正用于嵌入式智能體.本文進(jìn)一步引入新型納米信息器件憶阻器,探求強(qiáng)化學(xué)習(xí)算法的硬件加速新方案.憶阻器是除電阻、電容、電感以外的第四種基本電路元件,由Chua[14]于1971 年基于電路完備性理論提出,其定義憶阻器的電阻值為流經(jīng)憶阻器的磁通量和電荷的比值(M=dφ/dq).然而,由于沒有物理實(shí)物,憶阻器一直沒有引起太多的關(guān)注.直到2008 年,美國惠普(HP)實(shí)驗(yàn)室制造出了基于二氧化鈦的交叉存儲(chǔ)陣列,并聲稱交叉點(diǎn)處的存儲(chǔ)單元即為預(yù)言的憶阻器[15],立即引起了學(xué)術(shù)界和工業(yè)界的深厚興趣.之后,研究者對(duì)憶阻器的模型、特性進(jìn)行了廣泛的研究[16?17].此外由于憶阻器具有記憶力和類似突觸的可變導(dǎo)電性,使其成為構(gòu)建硬件神經(jīng)網(wǎng)絡(luò)關(guān)鍵部件—電子突觸的理想器件.近年來,Jo等[18]證明了CMOS 神經(jīng)元和憶阻突觸構(gòu)成的神經(jīng)網(wǎng)絡(luò)能夠?qū)崿F(xiàn)一些重要的突觸行為,如STDP.在此基礎(chǔ)上,研究者提出了多種用憶阻器實(shí)現(xiàn)STDP 的方法,例如Panwar 等[19]實(shí)現(xiàn)了對(duì)任意STDP 波形的模擬.Serrano-Gotarredona 等[20]僅用一個(gè)憶阻器實(shí)現(xiàn)并完成了對(duì)STDP 的仿真.
本文提出并研究了基于多層SNN 的強(qiáng)化學(xué)習(xí)算法,并利用憶阻器設(shè)計(jì)了其硬件實(shí)現(xiàn)方案,下文稱之為憶阻脈沖強(qiáng)化學(xué)習(xí)(Memristive spiking reinforcement learning,MSRL).首先,為了實(shí)現(xiàn)數(shù)據(jù)和脈沖之間的轉(zhuǎn)換,設(shè)計(jì)了用于數(shù)據(jù)–脈沖轉(zhuǎn)換的脈沖神經(jīng)元;然后,通過改進(jìn)基本STDP 學(xué)習(xí)規(guī)則,將SNN 與強(qiáng)化學(xué)習(xí)算法有效結(jié)合,并設(shè)計(jì)相應(yīng)的憶阻突觸以期實(shí)現(xiàn)硬件加速.此外,為了進(jìn)一步提高網(wǎng)絡(luò)的學(xué)習(xí)效率,構(gòu)建了可動(dòng)態(tài)調(diào)整的網(wǎng)絡(luò)結(jié)構(gòu).最后基于brian2 框架[21]完成了對(duì)MSRL 的實(shí)驗(yàn)仿真.結(jié)果顯示,MSRL 控制的智能體可以以較低的計(jì)算資源消耗,高效地完成強(qiáng)化學(xué)習(xí)任務(wù).
本文結(jié)構(gòu)如下:第1 節(jié)介紹了Q 學(xué)習(xí)和SNN以及憶阻器的背景知識(shí),第2 節(jié)給出MSRL 算法的基礎(chǔ),第3 節(jié)詳細(xì)地介紹了MSRL 算法設(shè)計(jì).第4節(jié)給出仿真結(jié)果,第5 節(jié)總結(jié)全文.
強(qiáng)化學(xué)習(xí)的理論基礎(chǔ)是馬爾科夫決策過程(Markov decision process,MDP).MDP 可以表示為:(S,A,Pa(st,st+1),Ra(st,st+1)),其中S是狀態(tài)集,A是動(dòng)作集,Pa(st,st+1)表示若智能體在時(shí)間t時(shí)處于狀態(tài)st,采取動(dòng)作a可以在時(shí)間t+1 時(shí)轉(zhuǎn)換到st+1的概率;Ra(st,st+1)表示通過動(dòng)作a,狀態(tài)st轉(zhuǎn)換到st+1所帶來的及時(shí)獎(jiǎng)賞.
強(qiáng)化學(xué)習(xí)中的Q 學(xué)習(xí)是一種經(jīng)典的在線學(xué)習(xí)方法.在學(xué)習(xí)過程中,智能體在每一個(gè)時(shí)間步(step)內(nèi)嘗試動(dòng)作,獲得來自環(huán)境的獎(jiǎng)賞,從而更新Q 值和優(yōu)化行動(dòng)策略π(s)(如圖1).這個(gè)學(xué)習(xí)過程稱為時(shí)間差分(Temporal difference,TD)學(xué)習(xí)[22].
圖1 Q 學(xué)習(xí)過程Fig.1 The process of Q-learning
強(qiáng)化學(xué)習(xí)的目標(biāo)是讓智能體通過與環(huán)境的交互學(xué)到最優(yōu)的行動(dòng)策略π?(s),使累積獎(jiǎng)賞即回報(bào)最大.回報(bào)定義為
其中,折扣因子γ ∈[0,1],表示我們對(duì)未來獎(jiǎng)賞的重視程度.γ=0 時(shí)智能體只關(guān)注當(dāng)前獎(jiǎng)賞值,γ=1時(shí)未來獎(jiǎng)賞與當(dāng)前獎(jiǎng)賞同樣重要.
Q 學(xué)習(xí)算法中的Q 值是智能體按照行動(dòng)策略π(s)執(zhí)行動(dòng)作后所得回報(bào)的期望,定義為
智能體通過Q 值的更新優(yōu)化行動(dòng)策略π(s),使其所得回報(bào)增大.Q 值更新公式為
除此之外,在Q 學(xué)習(xí)中選擇動(dòng)作的基本策略也即本文采取的策略是策略,該策略也是Q學(xué)習(xí)同其他機(jī)器學(xué)習(xí)所不同之處,它反映了Q 學(xué)習(xí)中智能體探索(Exploration)和利用(Exploitation)之間的權(quán)衡.前者是指隨機(jī)嘗試動(dòng)作,以期獲得更高的回報(bào),即;后者是執(zhí)行根據(jù)歷史經(jīng)驗(yàn)學(xué)習(xí)到的可獲得最大收益的動(dòng)作,即greedy.智能體以概率隨機(jī)選擇動(dòng)作,而以1?的概率選取最大價(jià)值所對(duì)應(yīng)的動(dòng)作.
基本Q 學(xué)習(xí)的算法流程可描述為
算法1.基本Q 學(xué)習(xí)算法
脈沖神經(jīng)網(wǎng)絡(luò)(Spiking neural network,SNN)起源于神經(jīng)科學(xué),廣泛用于構(gòu)建類腦神經(jīng)系統(tǒng)模型,例如用于設(shè)計(jì)模擬大腦皮層中的信息傳遞和時(shí)間動(dòng)態(tài)可觀測(cè)過程[23].與ANN 類似,SNN 也是由神經(jīng)元和突觸構(gòu)成,本文利用經(jīng)典的LIF(Leaky integrate-and-fire)神經(jīng)元模型和具有STDP 學(xué)習(xí)規(guī)則的突觸模型來構(gòu)建SNN.
在流經(jīng)離子通道的電流作用下,脈沖神經(jīng)元(Spiking neuron,SN)的細(xì)胞膜將會(huì)產(chǎn)生動(dòng)作電位u(t)[24].當(dāng)動(dòng)作電位達(dá)到閾值后,神經(jīng)元將會(huì)發(fā)放脈沖,這個(gè)過程可以描述為
其中,t(f)是神經(jīng)元發(fā)放脈沖的時(shí)間,uth是閾值電壓.
圖2 LIF 模型Fig.2 LIF model
LIF 模型將神經(jīng)元抽象為一個(gè)RC 電路(圖2).圖2 中,為來自突觸前神經(jīng)元i的脈沖信號(hào),而為突觸后神經(jīng)元j的輸出脈沖.神經(jīng)元收到輸入電流后,由于積分電路的作用,動(dòng)作電位會(huì)升高,直到達(dá)到激活閾值,發(fā)放脈沖,這個(gè)過程稱為積分點(diǎn)火.在脈沖發(fā)放后,由于漏電流的作用,神經(jīng)元的動(dòng)作電位會(huì)立即恢復(fù)至靜息電位,這一過程是對(duì)真實(shí)生物神經(jīng)元中的離子擴(kuò)散效應(yīng)的模擬[25].LIF 模型的微分方程描述如下
其中,Cm為神經(jīng)元膜電容,I(t)為外界輸入電流,I1(t)為漏電流,Rm(t)為神經(jīng)元膜電阻.
在LIF 模型中,外部輸入電流I(t)通常為的加權(quán)和,因此,神經(jīng)元j收到第i個(gè)神經(jīng)元的輸入電流可以表示為
其中,wij為神經(jīng)元i和j之間的突觸權(quán)重;為突觸前神經(jīng)元i發(fā)出第f個(gè)脈沖的時(shí)間.
STDP 規(guī)則是SNN 的基本學(xué)習(xí)規(guī)則之一,具有良好的生物學(xué)基礎(chǔ).Hebb 等[26]于1949 年提出通過改變神經(jīng)元相互之間的連接強(qiáng)度來完成神經(jīng)系統(tǒng)學(xué)習(xí)過程的假設(shè),稱為Hebb 規(guī)則.Hebb 規(guī)則指出,如果兩個(gè)神經(jīng)元同時(shí)發(fā)放脈沖,則它們之間的突觸權(quán)重會(huì)增加,反之會(huì)減少.這一假設(shè)描述了生物神經(jīng)元突觸可塑性的基本原理.隨后在海馬趾上進(jìn)行的研究發(fā)現(xiàn)了長(zhǎng)時(shí)增強(qiáng)(Long-term potentiation,LTP)效應(yīng)和長(zhǎng)時(shí)抑制(Long-term depression,LTD)效應(yīng):在一個(gè)時(shí)間窗口內(nèi),如果突觸后神經(jīng)元發(fā)放脈沖晚于突觸前神經(jīng)元發(fā)放脈沖,則會(huì)導(dǎo)致LTP 效應(yīng),而反之則會(huì)導(dǎo)致LTD 效應(yīng).前者稱為“突觸前先于突觸后”事件(“Pre before post”event),后者稱為“突觸后先于突觸前”事件(“Post before pre”event).LTP 和LTD 有力地支持了Hebb 的假設(shè).
LTP 和LTD 效應(yīng)是與脈沖發(fā)放時(shí)間高度相關(guān)的,基于這兩種效應(yīng)和相關(guān)實(shí)驗(yàn),Markram[27]于1997 年定義了STDP 規(guī)則,在STDP 規(guī)則中權(quán)重的變化量是前后兩個(gè)神經(jīng)元激活的時(shí)間差的函數(shù),該函數(shù)稱為學(xué)習(xí)窗函數(shù)ξ(?t),STDP 學(xué)習(xí)窗函數(shù)ξ(?t)以及權(quán)重變化量?wij如下所示
式(9)中,?t=tpost?tpre為突觸后神經(jīng)元與突觸前神經(jīng)元發(fā)放脈沖時(shí)間差,而τpre,τpost分別為突觸前后的時(shí)間常數(shù),權(quán)重增強(qiáng)的增益A+>0,減弱的增益A?<0.?t≥0 對(duì)應(yīng)LTP 效應(yīng)而?t<0 對(duì)應(yīng)LTD 效應(yīng).STDP 學(xué)習(xí)規(guī)則可以看作是Hebb 規(guī)則在時(shí)間上的改進(jìn)版本,因?yàn)樗紤]了輸入脈沖和輸出脈沖調(diào)整突觸權(quán)重時(shí)時(shí)間上的相關(guān)性,換句話說,STDP 強(qiáng)調(diào)了脈沖之間的因果聯(lián)系.
HP 實(shí)驗(yàn)室于2008 年制造出了能夠工作的物理憶阻器,并提出了HP 憶阻器模型(圖3).
圖3 HP 憶阻器模型示意圖Fig.3 HP memristor
圖3 中,D是二氧化鈦薄膜的厚度,亦為憶阻器的全長(zhǎng),W是摻雜層的寬度,會(huì)在電場(chǎng)作用下改變,并與流過憶阻器的電荷數(shù)有關(guān).當(dāng)摻雜寬度W增大,憶阻值減小,反之憶阻值增大.憶阻器的總電阻值可表示為
其中,Ron和Roff分別為摻雜區(qū)和非摻雜區(qū)的長(zhǎng)度達(dá)到全長(zhǎng)時(shí)的電阻,也稱為極值電阻.由于在時(shí)間t時(shí),摻雜區(qū)的寬度取決于通過憶阻器的電荷量,而電流為電荷的導(dǎo)數(shù),因此,內(nèi)部狀態(tài)變量x的變化可以表示為電流的函數(shù)
其中,UD是摻雜區(qū)和非摻雜區(qū)之間邊界移動(dòng)的速度,μ是平均離子漂移率,E是摻雜區(qū)的電場(chǎng)強(qiáng)度,i(t)為流經(jīng)憶阻器的電流,f(x)為窗函數(shù),已存在多種多樣的函數(shù)表達(dá)形式,通常用于模擬離子漂移的非線性,限制器件邊緣特性等.本文的主要目的并非提出新的憶阻器模型,而是利用合適的模型實(shí)現(xiàn)憶阻突觸,后文詳述,這里不做過多討論.
憶阻脈沖神經(jīng)網(wǎng)絡(luò)強(qiáng)化學(xué)習(xí)(MSRL)算法的目標(biāo)在于減小TD 誤差的絕對(duì)值,使回報(bào)最大.訓(xùn)練SNN 所需樣本來自對(duì)過往經(jīng)驗(yàn)的回放,這些經(jīng)驗(yàn)存放在記憶池中.經(jīng)驗(yàn)回放減少了需要學(xué)習(xí)的經(jīng)驗(yàn)數(shù)目,學(xué)習(xí)效率高于智能體直接與環(huán)境交互學(xué)習(xí)的方式[28].由此,設(shè)計(jì)MSRL 算法的首先任務(wù)是設(shè)計(jì)學(xué)習(xí)效率較高的SNN 并使之與Q 學(xué)習(xí)結(jié)合.
MSRL 算法的設(shè)計(jì)是基于一個(gè)三層的SNN,如圖4 所示.圖中省略號(hào)表示神經(jīng)元的數(shù)量隨著任務(wù)的不同而變化.網(wǎng)絡(luò)中輸入神經(jīng)元將狀態(tài)值轉(zhuǎn)換為狀態(tài)脈沖δS(t),其數(shù)量等于狀態(tài)的維數(shù).輸出神經(jīng)元的輸出為Q 值脈沖δQ(t),其數(shù)量等于動(dòng)作數(shù).這樣的結(jié)構(gòu)意味著每個(gè)輸入神經(jīng)元對(duì)應(yīng)每個(gè)狀態(tài)維度,每個(gè)輸出神經(jīng)元對(duì)應(yīng)每個(gè)動(dòng)作.相鄰層神經(jīng)元之間用憶阻器連接,憶阻器可工作在三種狀態(tài):a)權(quán)重不可更改狀態(tài);b)權(quán)重調(diào)節(jié)狀態(tài);c)斷開狀態(tài).
適當(dāng)調(diào)節(jié)隱含層節(jié)點(diǎn)數(shù)量是有必要的,如果隱含層節(jié)點(diǎn)數(shù)過少,網(wǎng)絡(luò)的學(xué)習(xí)能力和信息處理能力不足.反之,如果節(jié)點(diǎn)過多可能會(huì)增加網(wǎng)絡(luò)結(jié)構(gòu)的復(fù)雜性,減慢運(yùn)行速度.具體的隱含層神經(jīng)元數(shù)量對(duì)網(wǎng)絡(luò)性能的影響將在第4 節(jié)討論.
圖4 脈沖神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)Fig.4 The structure of SNN
考慮到脈沖神經(jīng)元接受、處理和傳遞的信息是脈沖信號(hào),因此有必要設(shè)計(jì)數(shù)據(jù)與脈沖之間的轉(zhuǎn)換關(guān)系.在本文中,模擬數(shù)據(jù)轉(zhuǎn)換為脈沖時(shí)間序列的過程為編碼,其逆過程為解碼.一個(gè)時(shí)間窗口T為10 ms.
1)輸入層神經(jīng)元
生物學(xué)研究表明,在生物視覺神經(jīng)網(wǎng)絡(luò)中,神經(jīng)元對(duì)信息的編碼與首次發(fā)放脈沖的時(shí)間有關(guān),發(fā)放時(shí)間越提前說明輸入脈沖與輸出脈沖之間的相關(guān)性越強(qiáng)[29].由此引入一維編碼方式[30]:狀態(tài)值s ∈[smin,smax],編碼后首次發(fā)放時(shí)間t(s)∈[0,T],則編碼規(guī)則為
這種編碼方式使輸入神經(jīng)元在一個(gè)T內(nèi)只發(fā)放一個(gè)脈沖.基于式(14),并結(jié)合式(8)得到隱含層輸入電流Ih(t)為
其中,wih為輸入層與隱含層神經(jīng)元之間的突觸權(quán)重.輸入神經(jīng)元用于將狀態(tài)值轉(zhuǎn)換為單個(gè)的狀態(tài)脈沖,沒有解碼過程.
2)隱含層神經(jīng)元
研究以下情形:兩個(gè)LIF 神經(jīng)元i,j由一個(gè)突觸連接.突觸前神經(jīng)元i為輸入神經(jīng)元而突觸后神經(jīng)元j為輸出神經(jīng)元,它們的初始電壓均為0,神經(jīng)元i在t0時(shí)間電壓達(dá)到閾值而發(fā)放脈沖,根據(jù)式(8),脈沖將通過突觸轉(zhuǎn)換為輸入至神經(jīng)元j的電流,如果輸入電流能使突觸后電位達(dá)到閾值,則突觸后神經(jīng)元j將發(fā)放脈沖.通過神經(jīng)元不應(yīng)期的設(shè)置,在一個(gè)時(shí)間窗口的時(shí)間內(nèi),神經(jīng)元j只會(huì)發(fā)放一個(gè)脈沖,如圖5(a)所示.
對(duì)于隱含層神經(jīng)元,設(shè)置激發(fā)態(tài)時(shí)其只發(fā)放一個(gè)脈沖,解碼時(shí)將其脈沖發(fā)放時(shí)間th直接作為輸出數(shù)據(jù),從而可得輸出層輸入電流Io(t)
其中,who是隱含層與輸出層之間的突觸權(quán)重,編碼時(shí)則根據(jù)發(fā)放時(shí)間還原脈沖即可.
3)輸出層神經(jīng)元
由于首次發(fā)放時(shí)間越提前說明輸入輸出相關(guān)性越強(qiáng),則可以認(rèn)為在一個(gè)時(shí)間窗口內(nèi),輸出層中最早發(fā)放脈沖的神經(jīng)元為動(dòng)作價(jià)值最大的動(dòng)作,這意味著首次發(fā)放時(shí)間和動(dòng)作價(jià)值呈反相關(guān)關(guān)系,解碼時(shí)直接將首次發(fā)放時(shí)間作為輸出數(shù)據(jù)則需要修改Q 值更新公式.為了減少算法設(shè)計(jì)的復(fù)雜度,輸出層神經(jīng)元發(fā)放脈沖的形式設(shè)置為連續(xù)發(fā)放.如圖5(b)所示,進(jìn)而計(jì)算其平均發(fā)放率(Mean firing rate)[24]
其中,nsp是輸出層神經(jīng)元在一個(gè)時(shí)間窗口T內(nèi)發(fā)放脈沖的數(shù)量.事實(shí)上,平均發(fā)放率和首次發(fā)放時(shí)間是等效的,一個(gè)神經(jīng)元的平均發(fā)放率越高,由于脈沖時(shí)間間隔均等,則說明它的首次發(fā)放時(shí)間就越提前[24].因而如果設(shè)置輸出層神經(jīng)元總是在一個(gè)時(shí)間窗口內(nèi),連續(xù)發(fā)放時(shí)間間隔相同的脈沖,那么可以直接將nsp作為輸出動(dòng)作價(jià)值.進(jìn)一步,近似認(rèn)為輸出脈沖時(shí)間將T均等分,所以輸出脈沖序列的發(fā)放時(shí)間為等差數(shù)列,在已知數(shù)列項(xiàng)數(shù)即脈沖數(shù)量nsp的情況下可還原脈沖序列.
圖5 脈沖神經(jīng)元響應(yīng)Fig.5 The response of spiking neurons
神經(jīng)科學(xué)領(lǐng)域的主要研究問題之一是對(duì)生物學(xué)習(xí)過程的解釋.例如,STDP 學(xué)習(xí)規(guī)則的提出是基于對(duì)單個(gè)生物突觸的實(shí)驗(yàn),但對(duì)于STDP 規(guī)則如何在脈沖神經(jīng)網(wǎng)絡(luò)中實(shí)現(xiàn)權(quán)重調(diào)整并沒有統(tǒng)一且詳盡的描述[31].為了實(shí)現(xiàn)STDP 規(guī)則對(duì)脈沖神經(jīng)網(wǎng)絡(luò)的權(quán)重調(diào)整,進(jìn)而應(yīng)用于強(qiáng)化學(xué)習(xí)中,需要對(duì)基本STDP規(guī)則加以改進(jìn).其思路在于引入第三方信號(hào)(可以是獎(jiǎng)賞信號(hào)或TD 誤差信號(hào)),作為突觸權(quán)重的調(diào)節(jié)信號(hào)[31].
以獎(jiǎng)賞信號(hào)為調(diào)節(jié)信號(hào)的STDP 規(guī)則稱作Reward STDP,例如文獻(xiàn)[32]提出如下權(quán)重調(diào)節(jié)規(guī)則
方案中獎(jiǎng)賞為一個(gè)時(shí)間函數(shù)Srp,tre是獎(jiǎng)賞出現(xiàn)的時(shí)間而tt是智能體執(zhí)行動(dòng)作的時(shí)間.Te是每次迭代持續(xù)的時(shí)間.Reward STDP 實(shí)現(xiàn)了在虛擬環(huán)境中對(duì)覓食行為這一生物問題的建模.但是,這種方案不適用于強(qiáng)化學(xué)習(xí)任務(wù),因?yàn)樵趶?qiáng)化學(xué)習(xí)任務(wù)中,執(zhí)行動(dòng)作的事件和獎(jiǎng)賞之間可能達(dá)到上千步的延遲,導(dǎo)致學(xué)習(xí)效率非常低.
以TD 誤差信號(hào)作為調(diào)節(jié)信號(hào)的STDP 規(guī)則稱作TD STDP 規(guī)則,為了方便討論,將TD 誤差重寫
利用式(19),文獻(xiàn)[33]提出如下的權(quán)重調(diào)節(jié)方案
其中,ρ(stdpij(t))為突觸前發(fā)放脈沖與突觸后發(fā)放脈沖的概率之差,η ∈[0,1]為學(xué)習(xí)率.此改進(jìn)方案的立足點(diǎn)在于,TD 誤差反映了目標(biāo)值和實(shí)際輸出值的偏離程度.如果TD 誤差為正,說明目標(biāo)值優(yōu)于實(shí)際值,當(dāng)前的突觸權(quán)重應(yīng)該加強(qiáng),反之應(yīng)該減弱,但是,這種權(quán)重調(diào)節(jié)方案并不能直接應(yīng)用于MSRL算法,原因在于,此方案限制每個(gè)神經(jīng)元僅發(fā)放一個(gè)脈沖,而MSRL 中輸出層神經(jīng)元發(fā)放的是連續(xù)脈沖.另外,直接將TD 誤差作為權(quán)重調(diào)節(jié)系數(shù)不能最小化誤差,需要定義損失函數(shù).
我們?cè)谑?20)基礎(chǔ)上提出改進(jìn)的STDP 規(guī)則.首先,將ξ(?t)簡(jiǎn)化如下
式(21)不考慮輸入和輸出脈沖的時(shí)間差,只考慮輸入和輸出脈沖之間的相關(guān)性.進(jìn)一步,按照文獻(xiàn)[34],定義損失函數(shù)如下
在此基礎(chǔ)上,本文還設(shè)計(jì)了對(duì)應(yīng)的基于憶阻器的人工突觸,以期進(jìn)一步實(shí)現(xiàn)所提出算法的硬件加速.定義非線性窗函數(shù)如下
其中,vMR為憶阻器兩端電壓,vth為憶阻器的閾值電壓,調(diào)整憶阻器兩端電壓大小可使憶阻器處于權(quán)重調(diào)節(jié)或不可更改兩個(gè)狀態(tài).
進(jìn)一步,設(shè)置權(quán)重調(diào)節(jié)狀態(tài)時(shí)vMR為
而突觸權(quán)重的更新如下
即可實(shí)現(xiàn)改進(jìn)后的STDP 學(xué)習(xí)規(guī)則.
在第2 節(jié)基礎(chǔ)上,給出MSRL(算法2)的具體實(shí)現(xiàn)流程.如下所示:
1)數(shù)據(jù)收集
強(qiáng)化學(xué)習(xí)任務(wù)開始時(shí),沒有足夠的樣本用于訓(xùn)練SNN,需要通過智能體與環(huán)境的交互以獲取樣本.此時(shí)使權(quán)重服從均值和方差均為0.1 的正態(tài)分布,并通過正則化提高權(quán)重收斂速率,即
其中,n為輸入神經(jīng)元的數(shù)量.另外,為了消除脈沖之間的相關(guān)性,每個(gè)神經(jīng)元注入了微量的噪聲[33].每一個(gè)時(shí)間步(step)內(nèi),神經(jīng)網(wǎng)絡(luò)的運(yùn)行時(shí)間為兩個(gè)時(shí)間窗口T.我們?cè)O(shè)置輸入層和隱含層只在第一個(gè)T內(nèi)發(fā)放脈沖,一個(gè)T的時(shí)間過后,輸出層再發(fā)放脈沖.一旦神經(jīng)網(wǎng)絡(luò)運(yùn)行完成,便得到了輸出脈沖數(shù)量Q,隱含層輸出脈沖時(shí)間th,根據(jù)策略,智能體有1?的概率選擇Q最多的神經(jīng)元所對(duì)應(yīng)的動(dòng)作,而以的概率隨機(jī)選擇動(dòng)作.中的值會(huì)隨著迭代次數(shù)的增加而遞減,以確保隨著任務(wù)的進(jìn)行智能體逐漸依賴于策略π(s)而不是無目的的選取動(dòng)作.
2)網(wǎng)絡(luò)訓(xùn)練
根據(jù)文獻(xiàn)[35],突觸權(quán)重變化會(huì)逆行而快速的傳播到突觸前神經(jīng)元樹突的突觸上,但并不會(huì)向前傳播到下一級(jí)突觸上,這表明類似反向傳播算法的機(jī)制可以在脈沖神經(jīng)網(wǎng)絡(luò)中存在并發(fā)揮作用.因此提出如圖6 所示的訓(xùn)練方式.圖中畫出的憶阻器表示此時(shí)憶阻器處于權(quán)重調(diào)節(jié)狀態(tài),未畫出的憶阻器則處于斷開狀態(tài).一次訓(xùn)練包含多個(gè)樣本,每一個(gè)樣本使神經(jīng)網(wǎng)絡(luò)運(yùn)行三個(gè)時(shí)間窗口T.訓(xùn)練時(shí),首先斷開所有憶阻器.之后使目標(biāo)動(dòng)作對(duì)應(yīng)的輸出神經(jīng)元與隱含層之間的憶阻器導(dǎo)通,這類似于監(jiān)督學(xué)習(xí)中利用標(biāo)簽進(jìn)行訓(xùn)練.令隱含層神經(jīng)元發(fā)放對(duì)應(yīng)的隱含層脈沖δh(t),運(yùn)行一個(gè)時(shí)間窗口后,在第二個(gè)時(shí)間窗口內(nèi)令輸出神經(jīng)元發(fā)放目標(biāo)脈沖(圖6(a)).網(wǎng)絡(luò)運(yùn)行完兩個(gè)時(shí)間窗口后,斷開隱含層與輸出層之間的憶阻器,使輸入層和隱含層之間的憶阻器導(dǎo)通(圖6(b)),令輸入神經(jīng)元發(fā)放狀態(tài)脈沖δS(t),同時(shí)令隱含層神經(jīng)元再次發(fā)放隱含層脈沖δh(t).如此循環(huán)往復(fù),直到一次訓(xùn)練完成.
圖6 憶阻脈沖神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程Fig.6 The training process of memristive spiking neural network
3)網(wǎng)絡(luò)測(cè)試
測(cè)試時(shí)憶阻突觸的權(quán)重將完全由訓(xùn)練結(jié)果決定,通過設(shè)置憶阻器電壓,可以使其工作在權(quán)重不可更改狀態(tài).神經(jīng)網(wǎng)絡(luò)的運(yùn)行步驟同訓(xùn)練前.
具體的MSRL 算法描述如下:
算法2.憶阻脈沖神經(jīng)網(wǎng)絡(luò)強(qiáng)化學(xué)習(xí)(MSRL)算法
1)CartPole-v0
如圖7 所示,一輛小車上用鉸鏈裝有一只平衡桿,平衡桿可以自由移動(dòng).在力F的作用下,小車在離散時(shí)間區(qū)間內(nèi)向左或向右移動(dòng),從而改變小車自身的位置和桿的角度.這個(gè)模型的狀態(tài)有4 個(gè)維度:a)小車在軌道上的位置x;b)平衡桿與垂直方向的夾角θ;c)小車速度v;d)平衡桿角速度ω.
圖7 CartPole-v0 示意圖Fig.7 CartPole-v0
游戲中每移動(dòng)一個(gè)時(shí)間步(step),智能體都會(huì)通過觀察獲得下一個(gè)狀態(tài)的值,并且會(huì)獲得值為1的獎(jiǎng)賞.游戲終止的條件為:a)平衡桿的角度的絕對(duì)值大于12?;b)小車的位置與x=0 的位置的距離超出±2.4 的范圍;c)在一次迭代(episode)中step 數(shù)超過200.滿足條件c)則認(rèn)為游戲成功.由于擺桿角度和車位移的絕對(duì)值較小的情況下游戲容易成功,因而定義每一步的游戲得分為
每次游戲得分通過此次游戲總分除以此次游戲迭代步數(shù)得到.MSRL 參數(shù)設(shè)置如下:對(duì)設(shè)置=0.1,學(xué)習(xí)率η設(shè)置為0.1,記憶池容量為10 000,折扣因子γ為0.9.算法運(yùn)行500 次迭代.
2)MountainCar-v0
如圖8 所示,一輛小車被置于兩座山峰之間,小車的初始位置x0∈(?0.6,?0.4),山谷處的位置為?0.5.任務(wù)目標(biāo)是開到右邊小旗處.但是,車的動(dòng)力不足以一次爬上山頂,因此,小車需要來回移動(dòng)以獲取足夠的速度到達(dá)目標(biāo)處.智能體的狀態(tài)由兩個(gè)維度組成:a)小車軌道位置x ∈(?1.2,0.6);b)小車的速度y ∈(?0.07,0.07).
圖8 MountainCar-v0 示意圖Fig.8 MountainCar-v0
每一個(gè)step 中,小車有三個(gè)動(dòng)作可供選擇:向右、停止、向左.小車移動(dòng)一步后會(huì)獲得觀察值和值為?1 的獎(jiǎng)賞.根據(jù)小車與終點(diǎn)的距離,定義每步游戲得分Sm為
每次游戲得分計(jì)算方式與CartPole-v0 相同.另外,設(shè)定當(dāng)一次迭代中步數(shù)超過300 游戲也會(huì)自動(dòng)結(jié)束.MSRL 參數(shù)設(shè)置如下:對(duì)?greedy,同樣設(shè)置=0.1,學(xué)習(xí)率η設(shè)置為0.1,記憶池容量為5 000,折扣因子γ為0.9.算法運(yùn)行100 次迭代.
3)隱含層神經(jīng)元數(shù)量
為了確定SNN 隱含層神經(jīng)元的數(shù)量,我們?cè)谄渌麑?shí)驗(yàn)參數(shù)相同的情況下分別獨(dú)立運(yùn)行了隱含層神經(jīng)元數(shù)量不同的MSRL 算法,并比較它們的TD 方差,結(jié)果見表1.表1 的列展示了隱含層神經(jīng)元數(shù)量不同的情況下TD 方差的大小,在其他參數(shù)相同的條件下進(jìn)行實(shí)驗(yàn).TD 方差小表明學(xué)習(xí)效率更高.CartPole-v0 的輸入神經(jīng)元為4 個(gè),MountainCarv0 為2 個(gè).
表1 不同隱含層神經(jīng)元數(shù)量TD 方差對(duì)比Table 1 The comparison of TD variance for different hidden neurons
從表1 中可以發(fā)現(xiàn),隱含層神經(jīng)元數(shù)量較少,TD 方差較大,但數(shù)量過多并沒有顯著提高學(xué)習(xí)效率,反而可能會(huì)增加網(wǎng)絡(luò)復(fù)雜度,減慢運(yùn)行速率.因此我們?cè)O(shè)置CartPole-v0 隱含層神經(jīng)元數(shù)量為6,MountainCar-v0 隱含層神經(jīng)元數(shù)量為4,作為折中的一種優(yōu)化選擇.
1)MSRL 有效性驗(yàn)證
在實(shí)驗(yàn)過程中智能體的狀態(tài)反映了學(xué)習(xí)效果.Cartpole-v0 游戲中,平衡桿的角度和小車的位移越小越好,這樣游戲才可能成功.而MountainCar-v0游戲中,小車在速率足夠大的情況下才能爬上右側(cè)山坡,到達(dá)目標(biāo).我們分別在訓(xùn)練開始前和訓(xùn)練開始后隨機(jī)抽取相同數(shù)量的樣本以觀察樣本的數(shù)值分布,結(jié)果如圖9 所示.可以看出,在CartPole-v0 中,當(dāng)完成了200 次游戲后,平衡桿的角度和小車的位置集中于原點(diǎn)附近.而在MountainCar-v0 中,完成了50 次游戲后,坐標(biāo)值的變化顯示小車學(xué)會(huì)了利用左側(cè)山坡獲得反向勢(shì)能,并且速率大于訓(xùn)練之前.
2)算法對(duì)比
圖9 MSRL 訓(xùn)練前后樣本狀態(tài)分布對(duì)比Fig.9 The comparison of sample states distribution before and after training of MSRL
為進(jìn)一步說明MSRL 的特點(diǎn),我們將深度Q 網(wǎng)絡(luò)(Deep Q network,DQN)和離散狀態(tài)Q-learning作為比較的對(duì)象.三者折扣因子和學(xué)習(xí)率均相同,DQN 同樣采用三層全連接前向網(wǎng)絡(luò)結(jié)構(gòu),隱含層神經(jīng)元數(shù)量為10,且其記憶池容量與MSRL 相同.三個(gè)算法在同一臺(tái)計(jì)算機(jī)上分別獨(dú)立運(yùn)行.對(duì)比結(jié)果如圖10 和表2 所示.
根據(jù)游戲環(huán)境的設(shè)置,在CartPole-v0 游戲中每次游戲的迭代步數(shù)越高越好,而MountainCar-v0 則相反.圖10(a)和10(b)的結(jié)果顯示,在CartPolev0 游戲中,MSRL 算法所控制的倒立擺系統(tǒng)游戲成功率和得分高于另外兩種算法.盡管DQN 先于MSRL 算法完成游戲目標(biāo),但其收斂性較差.圖10(c)和10(d)的結(jié)果顯示,在MountainCar-v0 游戲中,MSRL 算法所控制的小車容易以較少的步數(shù)達(dá)到目標(biāo)處,且最少步數(shù)小于另外兩種算法,同時(shí)游戲得分為三者中的最高值.從兩個(gè)游戲的結(jié)果可以看出,離散狀態(tài)之后的Q-learning 算法難以達(dá)成目標(biāo).我們將結(jié)果列在表2 里以更清楚對(duì)比結(jié)果.
圖10 比較結(jié)果(A)Fig.10 The results of comparison(A)
表2 比較結(jié)果(B)Table 2 The results of comparison(B)
表2 中,平均迭代步數(shù)為實(shí)驗(yàn)中的累積步數(shù)除以迭代數(shù),而平均分?jǐn)?shù)為累積分?jǐn)?shù)除以累積步數(shù).在CartPole-v0 游戲中,MSRL 算法總平均迭代步數(shù)相比于DQN 和離散Q-learning 明顯增加,而在MountainCar-v0 游戲中,MSRL 算法總平均迭代步數(shù)相比于DQN 和離散Q-learning 明顯減少.兩個(gè)游戲中得分最高者均為MSRL.此外,我們還在游戲執(zhí)行的每一步中記錄CPU 利用率,最后用累積CPU 利用率除以累積步數(shù)以計(jì)算平均CPU 利用率.結(jié)果顯示,盡管Q-learning 能以較短的運(yùn)行時(shí)間和較低的CPU 利用率完成目標(biāo),但是其計(jì)算效果不如神經(jīng)網(wǎng)絡(luò)式強(qiáng)化學(xué)習(xí).而MSRL 算法CPU利用率低于DQN,但運(yùn)行時(shí)間長(zhǎng)于DQN.根據(jù)文獻(xiàn)[36],采用不同的模擬策略影響脈沖神經(jīng)網(wǎng)絡(luò)的運(yùn)行時(shí)間.而本文利用新型信息器件憶阻器的高密度、非易失性等優(yōu)勢(shì),融合優(yōu)化的網(wǎng)絡(luò)結(jié)構(gòu)和改進(jìn)的學(xué)習(xí)算法,有望以實(shí)現(xiàn)MSRL 的硬件加速,同時(shí)減少對(duì)計(jì)算資源的依賴.
盡管傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)與強(qiáng)化學(xué)習(xí)算法的結(jié)合提高了智能體的學(xué)習(xí)能力,但這些算法對(duì)計(jì)算能力依賴性較強(qiáng),同時(shí)網(wǎng)絡(luò)復(fù)雜度高,不適合硬件實(shí)現(xiàn).為了進(jìn)一步達(dá)到硬件加速,促進(jìn)嵌入式智能體在實(shí)際環(huán)境中獨(dú)立執(zhí)行任務(wù),本文設(shè)計(jì)了基于多層憶阻脈沖神經(jīng)網(wǎng)絡(luò)的強(qiáng)化學(xué)習(xí)(MSRL)算法.首先解決了數(shù)據(jù)與脈沖之間的轉(zhuǎn)換問題;在前人工作基礎(chǔ)上,改進(jìn)了STDP 學(xué)習(xí)規(guī)則,使SNN 能夠與強(qiáng)化學(xué)習(xí)有機(jī)結(jié)合,同時(shí)也設(shè)計(jì)了相應(yīng)的憶阻突觸;進(jìn)一步,設(shè)計(jì)了結(jié)構(gòu)可動(dòng)態(tài)調(diào)整的多層憶阻脈沖神經(jīng)網(wǎng)絡(luò),這種網(wǎng)絡(luò)具有較高的學(xué)習(xí)效率和適應(yīng)能力.實(shí)驗(yàn)結(jié)果表明,MSRL 與傳統(tǒng)的強(qiáng)化學(xué)習(xí)算法相比能更高效地完成學(xué)習(xí)任務(wù),同時(shí)更節(jié)省計(jì)算資源.在未來的工作中,我們將研究深度SNN 與更復(fù)雜的強(qiáng)化學(xué)習(xí)算法例如Actor-Critic 算法的結(jié)合,并進(jìn)一步改進(jìn)學(xué)習(xí)算法以增強(qiáng)算法穩(wěn)定性.