牛德姣,周時頡,蔡 濤,楊 樂,李 雷
(江蘇大學 計算機科學與通信工程學院,江蘇 鎮(zhèn)江 212013)
E-mail:djniu@ujs.edu.cn
層級時序記憶(Hierarchical Temporal Memory,HTM)是一種模擬新大腦皮層結(jié)構(gòu)和功能的機器學習技術(shù)[1],通過對數(shù)據(jù)空間特征和時序特征的提取及稀疏分布表征(Sparse Distributed Representation,SDR)學習將復雜問題轉(zhuǎn)化為模式匹配與預測,實現(xiàn)數(shù)據(jù)流的在線分析和預測[2].
與現(xiàn)有人工神經(jīng)網(wǎng)絡模型相比,HTM更接近于人腦認知世界的方式,是受腦啟發(fā)的新型認知計算模型.傳統(tǒng)機器學習算法適合于處理靜態(tài)數(shù)據(jù),以迭代的方式優(yōu)化給定的訓練目標;而HTM依賴于存儲的大量模式序列,通過實時感知數(shù)據(jù)并學習數(shù)據(jù)的時序依賴進行預測,特別適合于時序、動態(tài)數(shù)據(jù)的在線學習.目前已成功應用于許多數(shù)據(jù)智能處理領域,如交通流量預測[3]、股票交易數(shù)據(jù)預測[4]、異常檢測[5]等.
HTM模型實現(xiàn)了對腦皮層不同層次功能的模擬,其核心算法包括空間池(Spatial Pooler,SP)算法和時間池(Temporal Memory,TM)算法,其中空間池算法完成輸入模式的識別和稀疏離散表征學習,時間池算法完成時序關聯(lián)模式學習并預測輸出[6].通過分析我們發(fā)現(xiàn),在HTM時間池訓練中,不僅包含重疊值、近端突觸持久值的計算任務,為了學習輸入數(shù)據(jù)的稀疏分布表征,激活與輸入模式相匹配的微柱必須搜索整個模型空間,當HTM規(guī)模較大或所處理的數(shù)據(jù)集不斷增長時,查找操作將成為影響訓練性能的瓶頸.同時,空間池中微柱數(shù)量巨大,但是其涉及的計算相對單一且各微柱相互獨立,現(xiàn)有的串行計算方式?jīng)]有針對空間池算法的特點進行優(yōu)化.當前,多核處理器已經(jīng)成為主流配置,傳統(tǒng)HTM訓練方式無法有效利用多核處理器的并行計算能力,導致模型訓練時間開銷較大.
針對以上問題,本文提出了一種高效的面向多核的并發(fā)HTM空間池算法,利用處理器中的多個計算核心優(yōu)化空間池訓練過程.該算法將HTM的微柱區(qū)域劃分成多個分區(qū),各個分區(qū)獨立、自主完成分區(qū)內(nèi)微柱選擇和近端突觸調(diào)整,同時利用多核處理器的并發(fā)計算能力,并行執(zhí)行各分區(qū)的訓練任務,有效利用計算資源,降低空間池訓練的時間開銷,提高模型的可擴展性和適應能力.
本文的主要貢獻點可以總結(jié)如下:
1)針對HTM空間池算法訓練效率低、無法并行計算,以及其訓練過程中存在的大數(shù)據(jù)問題,提出面向多核的并發(fā)HTM空間池算法.利用多核處理器的并行計算能力優(yōu)化現(xiàn)有HTM空間池的訓練,減少模型訓練的時間開銷,并增強HTM的適應能力.
2)設計基于分區(qū)的空間池稀疏表征學習策略,針對空間池算法特點,引入HTM區(qū)域分區(qū)機制,解決全局搜索活躍微柱速度慢、計算復雜度高的缺點,為空間池算法的并發(fā)實現(xiàn)打下基礎.
3)引入面向多核處理器的大數(shù)據(jù)處理方法,利用大量CPU核心的并發(fā)計算能力、以及GPU單個核心所不具備的邏輯控制能力,實現(xiàn)并發(fā)的活躍微柱選取和突觸連接權(quán)值調(diào)整,提高HTM空間池算法的訓練和執(zhí)行效率.
4)在多核大數(shù)據(jù)平臺Phoenix上,實現(xiàn)了并發(fā)HTM空間池算法的原型,并使用NAB、NYC-Taxi和MNIST數(shù)據(jù)集進行了測試與分析.實驗結(jié)果表明面向多核的并發(fā)HTM空間池算法能大幅減少空間池訓練的時間開銷,并提高預測準確率.
首先,我們分析了目前HTM的相關研究工作及神經(jīng)網(wǎng)絡的加速訓練技術(shù),并介紹了多核計算平臺框架.
HTM作為新型的神經(jīng)形態(tài)機器學習算法,模擬了新腦皮質(zhì)層的組織結(jié)構(gòu)和運作機理,能夠以在線方式學習連續(xù)的數(shù)據(jù)流序列.近些年來,研究者針對HTM理論和應用方面展開了深入研究.Yuwei Cui等人[7]將HTM應用于物聯(lián)網(wǎng)流式數(shù)據(jù)的學習任務中,滿足了實時、連續(xù)、在線檢測的需要,相較于傳統(tǒng)的人工神經(jīng)網(wǎng)絡展現(xiàn)出了更加優(yōu)異的性能.James Mnatzaganian等人[8]將HTM中空間池的計算過程數(shù)學形式化,探索了空間池的學習機制并演示了如何將空間池用于特征學習,所提出的數(shù)學形式化框架可用于優(yōu)化HTM專用硬件的設計.Jeff Hawkins等人[9]的研究表明HTM在噪聲環(huán)境下執(zhí)行分類任務時能夠保持優(yōu)秀的魯棒性,并驗證了SDR相較于傳統(tǒng)表征方式所具備的優(yōu)勢.Scott Purdy等人[10]使用HTM在流式數(shù)據(jù)異常檢測任務中取得了優(yōu)異的性能表現(xiàn),并提出流式數(shù)據(jù)分析的基本目標是以無監(jiān)督的方式對每個數(shù)據(jù)流進行建模,而流式數(shù)據(jù)本身表現(xiàn)出概念漂移,這需要算法能夠?qū)崟r而不是成批的處理數(shù)據(jù).David Rozado等人[11]擴展了傳統(tǒng)的HTM模型,添加了一個頂層節(jié)點用于存儲表示輸入模式序列的時空結(jié)構(gòu)實例,這種擴展的HTM模型在一些傳統(tǒng)機器學習任務上取得了更好的性能表現(xiàn).Farzaneh Shoeleh等人[12]提出了使用單編碼HTM作為弱分類器的集成學習框架,在不同規(guī)模多變量數(shù)據(jù)庫上的實驗結(jié)果表明單編碼HTM在異常檢測任務中能取得更好的性能.
以上研究為HTM提供了充分的理論支持,實際應用也展現(xiàn)出其準確性、容錯性和魯棒性等方面優(yōu)勢,但當前研究缺乏針對HTM訓練算法的優(yōu)化,特別是如何利用多核計算架構(gòu)合理、有效組織HTM訓練中的計算任務,進一步提高模型的訓練效率和可擴展性還有待深入研究.
針對神經(jīng)網(wǎng)絡中存在的訓練時間開銷大的問題,研究人員對模型的加速訓練進行了深入研究.目前,神經(jīng)網(wǎng)絡加速訓練方法主要包括算法優(yōu)化、新型架構(gòu)和專用硬件.
算法優(yōu)化主要指基于軟件的加速訓練方法,研究者先后提出了隨機梯度下降(SGD)[13]、Momentum[14]、AdaGrad[15]、RMSProp[16]、Adam[17]等參數(shù)更新方法,在不改變神經(jīng)網(wǎng)絡模型規(guī)模的情況下,依據(jù)嚴格的數(shù)學理論,通過優(yōu)化梯度下降的速度,以更少的時間開銷求解損失函數(shù)從而達到減少訓練時間的目的.另外,模型壓縮也是加速神經(jīng)網(wǎng)絡的重要方法,參數(shù)修剪和共享[18]、低秩分解[19]、遷移/壓縮卷積濾波器[20]和知識精煉[21]等技術(shù)已經(jīng)廣泛應用于深度神經(jīng)網(wǎng)絡的壓縮與加速.
系統(tǒng)架構(gòu)方面,利用分布式系統(tǒng)實現(xiàn)異構(gòu)平臺下神經(jīng)網(wǎng)絡的并行式或分布式訓練也是提高神經(jīng)網(wǎng)絡訓練速度的一種方法.分布式訓練分為模型并行[22]和數(shù)據(jù)并行[23]兩種,前者利用分布式系統(tǒng)中的不同機器(Worker Node)分別負責網(wǎng)絡不同部分計算,而后者不同的機器保存整個模型的完全拷貝,各計算節(jié)點只獲得部分數(shù)據(jù),參數(shù)計算結(jié)果通過服務節(jié)點(Server Node)整合匯總.Martin Abadi聯(lián)合谷歌公司提出了TensorFlow[24],一個靈活的基于數(shù)據(jù)流的編程模型以及該編程模型的單機和分布式實現(xiàn).TensorFlow本身提供了并行機制,可以在多種異構(gòu)系統(tǒng)上執(zhí)行,最大化地利用硬件資源加速計算.
專用硬件方面,GPU[25]、TPU[26]、FPGA[27]等技術(shù)被廣泛采用.其中,GPU 和 TPU 針對高度并行化的矩陣運算進行了優(yōu)化.此外,中國科學院陳天石團隊的Diannao家族[28]、普渡大學的Scaledeep[29]、MIT的Eyeirss[30]、HP實驗室的基于憶阻器的ISAAC[31]等硬件加速器結(jié)構(gòu)被先后提出.
在HTM加速訓練方面,Olga Krestinskaya等人[32]針對HTM計算特點提出了使用數(shù)字和混合信號的電路實現(xiàn),優(yōu)化了HTM的處理速度和計算資源消耗.Sebastian Billaudell等人[33]在電子微電路中模擬HTM神經(jīng)元功能結(jié)構(gòu),將HTM模型移植到集成多個HICANN芯片的海德堡神經(jīng)形態(tài)計算平臺上,有助于構(gòu)建更大規(guī)模的HTM并提升計算效率.Abdullah M.Zyarah等人[34]提出了包含空間池和時間池的完整HTM神經(jīng)形態(tài)硬件結(jié)構(gòu),實驗結(jié)果表明相比HTM軟件實現(xiàn)取得1364倍的加速.
目前,對于HTM的訓練優(yōu)化多集中于利用合適的硬件器件實現(xiàn)加速計算,缺少對于模型結(jié)構(gòu)和計算方式的改進,特別是沒有有效利用現(xiàn)有的通用處理器資源.
單芯片多處理器(Chip multiprocessors,CMP),也稱多核心,是提高處理器性能的主要技術(shù),現(xiàn)在已成為計算系統(tǒng)的標準配置.然而,利用多個硬件內(nèi)核進行基于線程的并行編程依然十分困難.Phoenix[35]作為在共享內(nèi)存的體系結(jié)構(gòu)上的MapReduce實現(xiàn),可在系統(tǒng)運行時自動管理并行程序的同步、負載平衡和局部性,其目標是在多核平臺上,使程序執(zhí)行得更高效,且使程序員不必關心并發(fā)的管理.相較于傳統(tǒng)MapReduce框架的分布式實現(xiàn)方式可能會帶來額外的通信開銷,Phoenix基于多核心和共享內(nèi)存的特點可以有效避免此問題,因此本文利用Phoenix平臺實現(xiàn)了并發(fā)HTM空間池訓練算法.
HTM空間池接收編碼器處理后的輸入數(shù)據(jù)并輸出SDR作為計算結(jié)果,實現(xiàn)輸入空間到新特征域的映射,為后續(xù)時間池對序列時序關系的學習提供基礎,在HTM中發(fā)揮著重要作用.空間池算法主要由活躍微柱選取和近端樹突調(diào)整兩個階段組成,其中活躍微柱選取包括重疊值計算和抑制,是空間池訓練中最耗時的部分.
微柱重疊值定義為連接到活躍輸入位的連通突觸個數(shù).第i個微柱重疊值αi通過如下公式(1)計算:
(1)
(2)
其中,η表示預設定的微柱稀疏度,kmax方法選取抑制半徑ξ內(nèi)重疊值位于前k大的所有微柱.在空間池學習結(jié)束后,這些微柱將被激活,標記為1,未被激活的微柱標記為0,所有微柱的狀態(tài)構(gòu)成空間池的SDR輸出.
在空間池的學習過程中,依據(jù)Hebbian規(guī)則調(diào)整活躍微柱近端樹突上的突觸持久值,連通到活躍輸入位的突觸將增加預設定的持久值,連通到非活躍輸入位的突觸將減少持久值,以此使輸入空間到特征域的映射關系逐漸穩(wěn)定,實現(xiàn)從輸入空間到新特征域的映射,為后續(xù)HTM時間池學習輸入模式間的時序關系打下基礎.
圖1給出了HTM空間池的基本結(jié)構(gòu),圖中僅展示了單層的HTM結(jié)構(gòu).各微柱通過近端樹突片段上的突觸與輸入空間某一局部區(qū)域相連接(圖中實線與虛線),連接持久值超過閾值的突觸為連接突觸(實線),低于閾值的為潛在突觸(虛線).在訓練HTM空間池時,微柱是否被激活取決于當前輸入下微柱的重疊值及是否受鄰近微柱的抑制作用,那些與輸入關聯(lián)越緊密的微柱越有可能被激活.由于抑制作用的存在,在確定激活微柱時需要遍歷整個HTM空間池找到重疊值較高的部分微柱,這種線性搜索的時間開銷將隨著HTM模型規(guī)模的增大急劇升高,成為影響空間池訓練效率的瓶頸.同時,HTM空間池算法通過抑制機制實現(xiàn)了激活微柱的稀疏分布,并保證所有微柱都有機會參與學習,但在空間池規(guī)模較大時,稀疏的活躍微柱仍有可能集中在局部區(qū)域,稀疏分布表征強調(diào)了微柱分布的稀疏性,但不能保證活躍微柱分布的均勻性.
圖1 HTM空間池示意圖Fig.1 Schematic diagram of HTM spatial pooler
另外,我們發(fā)現(xiàn)與深度神經(jīng)網(wǎng)絡普遍采用GPU等硬件進行加速不同,HTM空間池訓練中最耗時的并不是重疊值計算等任務,而是為找到活躍微柱需要搜索整個HTM空間,查找、排序操作無法有效借助GPU提高執(zhí)行效率,并且操作的時間復雜度與模型規(guī)模成正比.當前多核處理器已經(jīng)成為主流,現(xiàn)有HTM空間池算法缺乏相應的優(yōu)化策略,導致難以發(fā)揮多核計算機系統(tǒng)的性能優(yōu)勢提高HTM的訓練效率.
為了有效利用多核處理器中大量的計算核心,我們根據(jù)HTM空間池算法的特點,引入大數(shù)據(jù)思維設計了新型的HTM空間池算法.
在第3節(jié)分析現(xiàn)有空間池算法局限的基礎上,從如何快速選擇活躍微柱和高效調(diào)整突觸持久值兩方面改進訓練方法,設計面向多核的并發(fā)HTM空間池算法.
改變當前空間池算法全局選擇激活微柱的方式,首先將HTM區(qū)域劃分為若干個分區(qū),在各分區(qū)內(nèi)獨立查找并激活微柱,提出基于分區(qū)的微柱激活策略.
如圖2所示,將HTM空間池的微柱集合劃分為n個分區(qū),在各分區(qū)內(nèi)分別獨立控制完成重疊值計算、抑制和微柱激活.對應的過程如算法 1所示:
圖2 基于分區(qū)的微柱激活策略示意圖Fig.2 Schematic diagram of the partition-driven mini-column activation
算法1.The Partition-driven Mini-Column Activation Algorithm
1.partitions=divide(columns,n)
2.forallpartitions∈HTMdo
3.forallcol∈partition.columnsdo
4. col.overlap=0
5.forallsyn∈col.connected_synapses()do
6. col.overlap=col.overlap+syn.active()
7. mo=kmax_overlap(partition.columns,k)
8.forallcol∈partion.columnsdo
9.ifcol.overlap>0andcol.overlap ≥mothen
10. col.active=1
11.else
12. col.active=0
其中,partitions代表所有分區(qū),columns代表HTM所有微柱,divide()方法將所有微柱按照分區(qū)數(shù)量n分別劃分入不同的分區(qū),col代表單個微柱,col.connected_synapses()方法返回所有近端樹突上的活躍突觸,突觸持久值大于閾值則被認為是活躍突觸,反之則為非活躍突觸,無法參與到重疊值計算過程中.syn.active()方法中,若活躍突觸所連接的輸入位為“1”,則返回值為“1”,若活躍突觸所連接的輸入位為“0”,則返回值為“0”.kmax_overlap(C,k)方法返回微柱集合C中重疊值第k大的微柱,mo既是分區(qū)中重疊值第k大的微柱,也將作為分區(qū)內(nèi)所有微柱的活躍閾值.參數(shù)k指期望的活躍微柱稀疏度,即單個抑制區(qū)域內(nèi)活躍微柱的數(shù)量.執(zhí)行分區(qū)操作對應算法 1中第1行,微柱重疊值計算對應2-6行,抑制與激活過程對應7-12行.
與現(xiàn)有HTM空間池全局搜索選擇激活微柱的策略不同,基于分區(qū)的微柱激活策略將重疊值計算,排序搜索、抑制計算等操作分布在各分區(qū)中獨立完成.由于分區(qū)的規(guī)模遠小于整個HTM區(qū)域規(guī)模,排序、搜索的速度大大提高,保證算法時間復雜度有效降低.另外,由于各分區(qū)獨立選擇激活的微柱,能夠使學習到的稀疏分布表征在空間池分布得更加均勻,避免了可能出現(xiàn)的局部稠密,有利于提高SDR的表征能力和HTM模型的抗干擾能力;同時各分區(qū)的執(zhí)行流程相對獨立,也為利用分布式和并行計算技術(shù)提高HTM空間池的訓練效率打下基礎.
各分區(qū)完成微柱激活后,空間池進一步學習并調(diào)整活躍微柱與輸入空間相連的近端樹突突觸持久值.為了提高學習效率,充分發(fā)揮計算機系統(tǒng)中多核處理器的計算優(yōu)勢,在基于分區(qū)的微柱激活策略基礎上,設計并發(fā)的近端樹突調(diào)整算法.
如圖3所示,將空間池各分區(qū)的訓練任務分布到多核處理器中的不同計算核心上,使用多個計算核心并發(fā)完成微柱的近端樹突調(diào)整的任務,執(zhí)行流程如算法2所示:
圖3 并發(fā)的近端樹突調(diào)整Fig.3 Concurrent proximal dendrite adjustment
算法2.The Concurrent Proximal Dendrite Adjustment Algorithm
1.forallpartitions∈HTMdo
2.forallcol∈partition.columnsdo
3.ifcol.activethen
4.forallsyn∈col.synapsesdo
5.ifsyn.active()then
6. syn.p=min(1,syn.p+syn.psyn_inc)
7.else
8. syn.p=max(0,syn.p-syn.psyn_dec)
其中,syn.p指突觸syn的持久值,max和min保證持久值位于[0,1]范圍內(nèi),常量syn.psyn_inc和syn.psyn_dec分別表示突觸持久值的增加量和減少量.
并發(fā)的近端樹突調(diào)整算法需要將不同分區(qū)的微柱激活和學習任務分布到多核處理器的不同計算核心中,但通常情況下分區(qū)數(shù)量與計算核心數(shù)并不相等,通過以下步驟計算HTM空間池的分區(qū)數(shù)量.
1)當設定的活躍微柱數(shù)量n小于或等于計算核心數(shù)m時,HTM將被劃分為n個分區(qū),從每個分區(qū)中選取1個活躍微柱.
2)當設定的活躍微柱體數(shù)量n大于計算核心數(shù)m時,取n與m的最大公約數(shù)k,將HTM空間池劃分為k個分區(qū),每個分區(qū)中選取n/k個活躍微柱.
并發(fā)的近端樹突調(diào)整算法能利用現(xiàn)代計算機系統(tǒng)中常見的多核計算核心,由不同核心獨立控制對應分區(qū)中的計算任務,并發(fā)進行突觸調(diào)整完成學習,減少空間池訓練的時間開銷;同時,HTM空間池學習算法的并行化有助于提高模型的魯棒性和可擴展性,使得在有限的訓練時間內(nèi)擴大HTM規(guī)模成為可能.
Phoenix是Stanford大學提出的針對多核計算機的MapReduce平臺,可利用多核計算機系統(tǒng)中眾多計算核心高效處理數(shù)據(jù).我們在Phoenix上實現(xiàn)了面向多核的并發(fā)HTM空間池算法,構(gòu)建了相應的面向多核的并發(fā)HTM(Multicore Concurrent Hierarchical Temporal Memory,MCHTM)的原型系統(tǒng).使用服務器搭建了測試環(huán)境,系統(tǒng)配置如表1所示.相同環(huán)境下構(gòu)建了HTM系統(tǒng),表2給出了HTM和MCHTM的主要參數(shù).由于HTM模型主要用于序列數(shù)據(jù)的分析與預測,所以我們還使用循環(huán)神經(jīng)網(wǎng)絡LSTM模型和HTM、MCHTM進行比較,表3中給出LSTM的主要參數(shù).
表1 原型系統(tǒng)測試環(huán)境的軟、硬件配置Table 1 Configurations of the prototype test system
表2 HTM原型系統(tǒng)的主要參數(shù)值Table 2 Main parameters of the prototype system HTM
表3 LSTM原型系統(tǒng)的主要參數(shù)值Table 3 Main parameters of the prototype system LSTM
使用Numenta Anomaly Benchmark(NAB)、New York City Taxi(NYC-Taxi)、 MNIST手寫體數(shù)字3個數(shù)據(jù)集,通過序列預測和圖像分類兩個類型的任務對HTM與MCHTM空間池的時間開銷,HTM、MCHTM和LSTM的準確率(Accuracy)和均方根誤差(RMSE)等進行測試,每項測試進行10次,取10次測試的平均值作為最終結(jié)果.
準確率(Accuracy)通過計算模型產(chǎn)生的預測活躍微柱和下一時刻的實際激活微柱的匹配度得到,兩者的重疊率越高說明預測的準確率越高.計算方式如公式(3)所示,C′c表示預測活躍正確的微柱數(shù)量,C′p表示預測活躍的微柱數(shù)量,Cw表示未被正確預測活躍的微柱數(shù)量,Ca表示活躍微柱數(shù)量.
(3)
均方根誤差(RMSE)計算模型預測值和真實值之間的差異,計算方法如公式(4)所示,T代表序列長度,y′j和yj分別代表預測值和真實值,RMSE值越小表明預測準確度越高.
(4)
NAB數(shù)據(jù)集是美國明尼蘇達州交通部采集的車輛通行數(shù)據(jù),給出了以10分鐘為單位的明尼蘇達州雙子城都會區(qū)每個月所有車輛的平均通行時間,每條數(shù)據(jù)由時間戳和數(shù)值型數(shù)據(jù)組成,共2500條.
5.2.1 時間開銷測試
使用表2中的參數(shù)設置,設置活躍微柱數(shù)量分別為微柱總數(shù)的5%、10%、15%和20%,即20、40、60和80.測試不同迭代次數(shù)下HTM與MCHTM空間池的訓練時間開銷,結(jié)果如表4所示.HTM-20、HTM-40、HTM-60和HTM-80分別表示HTM空間池活躍微柱數(shù)量為20、40、60和80,MCHTM-20、MCHTM-40、MCHTM-60和MCHTM-80分別表示MCHTM空間池中活躍微柱數(shù)量為20、40、60和80.
表4 NAB數(shù)據(jù)集上的訓練時間開銷測試Table 4 Training time test on NAB dataset
通過表4發(fā)現(xiàn),MCHTM在采用分區(qū)結(jié)構(gòu)和并發(fā)近端樹突調(diào)整算法的情況下,相比HTM大幅減少了空間池訓練的時間開銷.HTM空間池在不同活躍微柱數(shù)量下平均訓練時間分別為37.72秒、38.57秒、45.25秒和59.21秒,而MCHTM空間池在同等數(shù)量活躍微柱下的平均訓練時間為1.363秒、1.042秒、1.263秒和1.051秒,訓練時間開銷顯著降低,平均降低了96.39%、97.31%、97.22%和98.23%,表明MCHTM具有明顯的效率優(yōu)勢.
同時可以發(fā)現(xiàn),HTM中時間開銷與活躍微柱數(shù)量呈正比,活躍微柱數(shù)量越多,訓練時間越長,表明查找活躍微柱是空間池訓練時間開銷的主要來源,而在MCHTM中,隨著活躍微柱數(shù)量的增加,訓練時間無較大變化.當活躍微柱為40和80時,其時間開銷低于微柱數(shù)量為20和60時,原因主要在于原型系統(tǒng)測試環(huán)境中計算核心數(shù)量為40個,當活躍微柱數(shù)量設定為20和60時,Phoenix將創(chuàng)建20個并發(fā)線程;而活躍微柱數(shù)量設定為40和80時,Phoenix將創(chuàng)建40個并發(fā)線程.
5.2.2 準確性測試
使用表2中的參數(shù)設置,設置活躍微柱數(shù)量為微柱總數(shù)的5%、10%、15%和20%,即20、40、60和80.測試不同迭代次數(shù)和選取不同活躍微柱數(shù)量下的HTM和MCHTM在預測任務中的準確率,如圖4(a)圖所示.選取HTM、MCHTM和LSTM訓練時間相近時的RMSE測試結(jié)果進行對比,時間開銷近似值分別以20、40、60、80、100秒為基準,如圖4(b)圖所示.
通過圖4可以發(fā)現(xiàn),采用了并發(fā)空間池算法的MCHTM在極大縮短空間池訓練的時間開銷的同時,準確率較HTM也有所提升,其原因主要在于采用分區(qū)機制后所激活的微柱在HTM區(qū)域內(nèi)分布更加均勻,得到的稀疏分布表征具有更好的表達能力,因此預測準確率有所提高.當活躍微柱數(shù)量分別為20、40、60、80時,MCHTM的準確率相比HTM平均上升了4.2%、3.1%、2.7%、2.1%.同時可以注意到每次活躍微柱數(shù)量增加所提升的準確率逐漸降低,這主要是因為隨著活躍微柱在所有微柱中的占比不斷提升,HTM和MCHTM的稀疏均勻水平差距逐漸縮?。籑CHTM在激活20個微柱時的準確率仍然高于HTM中激活80個微柱,表明MCHTM利用較少的活躍微柱就可以達到甚至略高于HTM使用較多活躍微柱時的準確率.RMSE值的測試結(jié)果與準確率結(jié)果類似,MCHTM的RMSE基本低于HTM,當MCHTM激活20個微柱時的RMSE值小于HTM中激活80個微柱的RMSE值,這表明MCHTM在保持與HTM相同準確率的同時,還可以通過減少所需激活的微柱數(shù)量進一步減少訓練空間池所需的訓練時間開銷.
圖4 NAB數(shù)據(jù)集上準確率和RMSE測試Fig.4 Accuracy and RMSE test on NAB dataset
隨著激活微柱數(shù)從20逐步增加到80,每次增加后與前一次相比,HTM的平均準確率分別提高了1.7%、1.1%、0.9%,MCHTM的平均準確率分別提高了0.8%、0.6%、0.3%,HTM的平均RMSE分別下降了1.2%、1.0%、0.5%,MCHTM的平均RMSE分別下降了0.8%、0.6%、0.4%,這表明相較于HTM,MCHTM具有更好的穩(wěn)定性,改變激活微柱的數(shù)量對準確率的影響較小,且在啟用較少的活躍微柱時就能達到達到較為理想的準確性.隨著活躍微柱數(shù)量的增加,MCHTM和HTM準確率的提高幅度以及RMSE的降低幅度都逐漸減少,說明了活躍微柱數(shù)量的增加可有效提升HTM的準確性,但提升的幅度有限且會逐漸減少直至收斂.可以認為使用較多或較少的活躍微柱,對于準確率的影響并不明顯,在注重準確率的場景下可以啟用更多的活躍微柱,而在時間開銷敏感的場景下只啟用較少的活躍微柱依然可以達到較為理想的準確率.
通過圖4中的(b)圖還能夠看出,在相近的訓練時間開銷條件下,MCHTM的RMSE均低于HTM和LSTM,這驗證了本文所提出的MCHTM算法的有效性,能夠在相同的訓練時間開銷下達到更優(yōu)的性能表現(xiàn).此外HTM的RMSE也低于LSTM的,說明了HTM在序列預測任務中相較于LSTM所具有的優(yōu)勢.
NYC-Taxi是根據(jù)紐約市交通管理局實時采集的紐約出租車乘客數(shù)量構(gòu)造的一個數(shù)據(jù)集,將每隔30分鐘的乘客量進行累加,形成共包含10320 條數(shù)據(jù)的連續(xù)數(shù)據(jù)流.該數(shù)據(jù)流包含了不同時間尺度下的多種模式,既包括以小時為單位的信息,也包括以天、星期和季度為跨度的信息.相比于NAB數(shù)據(jù)集,NYC-Taxi數(shù)據(jù)集的規(guī)模更大.以預測未來5個時間步(2.5小時)出租車乘客數(shù)量為任務測試模型性能.
5.3.1 時間開銷測試
使用表2中的參數(shù)設置,設置活躍微柱數(shù)量為微柱總數(shù)的5%、10%、15%和20%,即20、40、60和80.測試不同迭代次數(shù)下HTM與MCHTM空間池的時間開銷,結(jié)果如表5所示.
表5 NYC-Taxi數(shù)據(jù)集上的訓練時間開銷測試Table 5 Training time test on NYC-Taxi dataset
由表5可知,HTM空間池在不同活躍微柱數(shù)量下平均訓練時間為173.36秒、176.84秒、207.99秒和231.46秒,而MCHTM空間池在同等數(shù)量活躍微柱數(shù)量下平均訓練時間為6.18秒、4.76秒、5.82秒和4.54秒,相較于HTM空間池,MCHTM空間池訓練時間開銷平均降低了96.44%、97.31%、97.21%和98.04%.NYC-Taxi數(shù)據(jù)集的規(guī)模約為NAB數(shù)據(jù)集的4倍,但實驗結(jié)果表明MCHTM仍然保持了較高的訓練時間開銷降低比率,與NAB數(shù)據(jù)集中的測試結(jié)果基本一致.
5.3.2 準確性測試
使用表2中的參數(shù)設置,設置活躍微柱數(shù)量為微柱總數(shù)的5%、10%、15%和20%,即20、40、60和80.測試不同迭代次數(shù)和選取不同活躍微柱數(shù)量下HTM和MCHTM在預測任務中的準確性,取5個時間步預測結(jié)果平均值,如圖5(a)圖所示.選取HTM、MCHTM和LSTM訓練時間相近時的RMSE進行對比,訓練時間開銷近似值分別以100、200、300、400、500秒為基準,如圖5(b)圖所示.
圖5 NYC-Taxi數(shù)據(jù)集上準確率和RMSE測試Fig.5 Accuracy and RMSE test on NYC-Taxi dataset
通過圖5可以發(fā)現(xiàn),當活躍微柱數(shù)量分別取20、40、60、80時,相較于HTM,MCHTM的平均準確率分別提高了3.6%,1.6%,1.4%,0.7%,RMSE平均分別下降了3.9%,1.5%,0.9%,0.4%,準確性的提升效果略低于NAB數(shù)據(jù)集,MCHTM在較大數(shù)據(jù)集上的準確率提升表現(xiàn)沒有小數(shù)據(jù)集上的優(yōu)異,但準確率依然高于HTM.MCHTM在激活20個活躍微柱時的準確率和RMSE均與HTM激活80個微柱時相當,表示MCHTM具有更好的可擴展性.
NYC-Taxi數(shù)據(jù)集的實驗結(jié)果表明,相較于較小規(guī)模的NAB數(shù)據(jù)集,MCHTM在較大數(shù)據(jù)集場景下準確率的提升幅度雖然略有降低,但整體上依然具有較高的準確率,特別是能夠大幅提高空間池的訓練效率,在使用較少活躍微柱的情況下即可達到和HTM激活較多微柱時相當?shù)男阅?
除HTM和MCHTM的對比分析所能得到以上結(jié)論外,通過圖5中的(b)圖的實驗結(jié)果還可以看出,在NYC-Taxi數(shù)據(jù)集上可得到的結(jié)論和NAB數(shù)據(jù)集所得結(jié)論基本一致,驗證了本文所提出的MCHTM算法相較于HTM以及LSTM的優(yōu)勢.
MNIST數(shù)據(jù)集由60000個訓練樣本和10000個測試樣本組成,每個樣本都是一張28×28像素的灰度手寫數(shù)字圖片.從60000個訓練樣本中隨機抽取數(shù)字圖片0-9分別各100個,共1000個數(shù)字圖片作為訓練集,以原有的10000個測試樣本作為測試集.
5.4.1 時間開銷測試
設置活躍微柱數(shù)量為微柱總數(shù)的5%、10%、15%和20%,即20、40、60和80.測試不同迭代次數(shù)下HTM與MCHTM的空間池的訓練時間開銷,結(jié)果如表6所示.
通過表6發(fā)現(xiàn),基于MNIST數(shù)據(jù)集的時間開銷測試中HTM空間池在不同活躍微柱數(shù)量下平均訓練時間為183.8秒、197.8秒、215.1秒和233.7秒,而MCHTM空間池在同等數(shù)量活躍微柱數(shù)量下平均訓練時間為8.99秒、5.41秒、9.98秒和6.03秒,相較于HTM空間池,MCHTM空間池訓練時間開銷平均降低了95.11%、97.27%、95.37%和97.42%.基于MNIST數(shù)據(jù)集上的實驗結(jié)果表明MCHTM仍然保持了較高的空間池訓練時間開銷降低比率,與NAB和NYC-Taxi數(shù)據(jù)集中的測試結(jié)果基本一致.
表6 MNIST數(shù)據(jù)集上的訓練時間開銷測試Table 6 Training time test on MNIST dataset
5.4.2 準確率測試
設置活躍微柱數(shù)量為20、40、60和80,測試HTM、MCHTM和LSTM訓練時間相近時的準確率進行對比,時間開銷近似值分別以100、200、300、400、500秒為基準,如圖6所示.
圖6 MNIST數(shù)據(jù)集上的準確率測試Fig.6 Accuracy test on MNIST dataset
通過圖6可以發(fā)現(xiàn),當活躍微柱數(shù)量分別取20、40、60、80時,相較于HTM,MCHTM的平均準確率分別降低了0.61%、0.94%、0.45%、0.54%.在相同的迭代次數(shù)下,MCHTM在圖像分類任務中的準確率相較HTM有所降低.但在相同訓練時間的條件下,由于MCHTM能夠完成更多次的訓練迭代,從而使得MCHTM的準確率優(yōu)于HTM.同時還發(fā)現(xiàn)時間開銷相同的條件下,HTM在圖像分類任務中,其準確率低于LSTM,而MCHTM利用自身多核并發(fā)的計算特點,在相同時間內(nèi)完成了更多次的訓練迭代,從而達到了優(yōu)于HTM和LSTM的準確率性能表現(xiàn),從而驗證了本文所提出的MCHTM所具備的效率和性能優(yōu)勢.
針對現(xiàn)有HTM空間池訓練算法時間復雜度高的問題,提出了一種高效的面向多核的并發(fā)HTM空間池算法,包含基于分區(qū)的微柱激活策略和并發(fā)的近端樹突調(diào)整算法.通過將HTM區(qū)域進行分區(qū),在各分區(qū)內(nèi)獨立完成訓練任務,從而降低搜索活躍微柱巨大的時間開銷,同時分區(qū)策略還能夠有效利用CPU中大量的計算核心,使空間池的訓練能夠在多個核心上并行完成.利用Phoenix多核計算平臺實現(xiàn)了算法原型,在NAB、NYC-Taxi和MNIST這3個數(shù)據(jù)集上針對訓練時間開銷、準確率(Accuracy)和均方根誤差(RMSE)進行了測試與分析,實驗結(jié)果表明在多核平臺上基于分區(qū)的并發(fā)HTM空間池算法能夠降低96.39%~98.32%的訓練時間開銷,同時模型準確率平均提升了0.7%~4.2%,驗證了所提出算法的有效性.
本文的研究重點在于改進現(xiàn)有HTM空間池的基本結(jié)構(gòu)和計算方式以提升訓練效率,在接下來的研究工作中,我們將進一步思考如何將并發(fā)思想應用到更復雜的HTM時間池計算中,提高整個HTM模型的訓練效率.