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