高 峰,姚光濤,顧進(jìn)廣
(1.武漢科技大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,武漢 430065;2.武漢科技大學(xué) 大數(shù)據(jù)科學(xué)與工程研究院,武漢 430065;3.智能信息處理與實(shí)時(shí)工業(yè)系統(tǒng)湖北省重點(diǎn)實(shí)驗(yàn)室,武漢 430065;4.富媒體數(shù)字出版內(nèi)容組織與知識(shí)服務(wù)重點(diǎn)實(shí)驗(yàn)室,武漢 430065)
近年來(lái),物聯(lián)網(wǎng)和移動(dòng)互聯(lián)網(wǎng)取得快速發(fā)展,其中產(chǎn)生了海量的傳感器數(shù)據(jù)以及其他類(lèi)型的數(shù)據(jù),這些數(shù)據(jù)具有高速、實(shí)時(shí)、動(dòng)態(tài)的特征,對(duì)它們進(jìn)行分析并推理出其中隱含的知識(shí)具有重要的理論和現(xiàn)實(shí)意義。將實(shí)時(shí)數(shù)據(jù)與知識(shí)圖譜技術(shù)相結(jié)合,并以RDF(Resource Description Framework)三元組加時(shí)間標(biāo)注的方式進(jìn)行表示,可以形成實(shí)時(shí)語(yǔ)義數(shù)據(jù)流數(shù)據(jù),基于實(shí)時(shí)語(yǔ)義數(shù)據(jù)流的RDF 流推理逐漸引起研究人員的關(guān)注。
目前的語(yǔ)義數(shù)據(jù)流推理引擎包括集中式和分布式兩大類(lèi):集中式流推理以CSPARQL(Continuous SPARQL)[1]引擎為代 表,使 用Esper[2]、Jena[3]和Sesame[4]進(jìn)行窗口運(yùn)算以及處理查詢(xún);分布式流推理屬于新興領(lǐng)域,目前尚處于研究階段,主要包括CQELS[5]的分布式版本、基于Storm 集群的Katts[6]、基于Spark 框架的Strider[7]等。現(xiàn)有的語(yǔ)義數(shù)據(jù)流引擎雖然能夠在一定程度上完成語(yǔ)義推理,但仍存在一些問(wèn)題,如缺乏對(duì)海量數(shù)據(jù)的適應(yīng)性、推理性能不佳、推理時(shí)延較大等,難以適應(yīng)當(dāng)前海量數(shù)據(jù)場(chǎng)景下人們對(duì)推理查詢(xún)實(shí)時(shí)性的需求。
隨著知識(shí)圖譜嵌入表示學(xué)習(xí)的興起,可以對(duì)知識(shí)圖譜中的實(shí)體和關(guān)系進(jìn)行向量表示,將實(shí)體相互之間復(fù)雜的語(yǔ)義關(guān)系轉(zhuǎn)換為向量計(jì)算,這種簡(jiǎn)單的向量計(jì)算的方式對(duì)提升知識(shí)圖譜推理效率具有重要意義。然而,現(xiàn)有的知識(shí)表示學(xué)習(xí)模型存在一定不足,如只關(guān)注靜態(tài)圖譜嵌入而忽略知識(shí)圖譜的動(dòng)態(tài)更新,或缺乏推理能力等,導(dǎo)致其無(wú)法直接應(yīng)用于實(shí)時(shí)動(dòng)態(tài)語(yǔ)義數(shù)據(jù)流推理任務(wù)。
為了使得知識(shí)表示學(xué)習(xí)模型能夠適應(yīng)知識(shí)圖譜的在線更新,本文建立一種PUKALE(Parallel Universe KALE)模型。針對(duì)傳遞閉包等復(fù)雜推理場(chǎng)景,在聯(lián)合嵌入模型KALE 的基礎(chǔ)上引入多嵌入空間,提出能夠適應(yīng)復(fù)雜推理的嵌入空間生成算法。為了在進(jìn)行增量更新訓(xùn)練時(shí)更合理地選擇嵌入空間,提出基于實(shí)體關(guān)系映射的嵌入空間選擇算法。將PUKALE 模型嵌入至語(yǔ)義數(shù)據(jù)流推理引擎CSPARQL-engine 中,以實(shí)現(xiàn)對(duì)實(shí)時(shí)語(yǔ)義數(shù)據(jù)流的推理查詢(xún)。
目前,語(yǔ)義數(shù)據(jù)流處理平臺(tái)大多基于SPARQL[8],首先讀取所有的RDF 數(shù)據(jù)并構(gòu)建所讀取數(shù)據(jù)的完整索引,然后評(píng)估SPARQL 的推理查詢(xún)性能。Streaming SPARQL[9]流處理平臺(tái)基于SPARQL,設(shè)計(jì)一個(gè)擴(kuò)展用于處理數(shù)據(jù)流上的窗口查詢(xún),允許在數(shù)據(jù)流上定義基于時(shí)間和計(jì)數(shù)的窗口,但其沒(méi)有考慮關(guān)于數(shù)據(jù)結(jié)構(gòu)選擇和連續(xù)執(zhí)行計(jì)算狀態(tài)共享的性能問(wèn)題。CSPARQL 是SPARQL 的一個(gè)擴(kuò)展,其特點(diǎn)是支持連續(xù)查詢(xún),即在RDF 數(shù)據(jù)流上注冊(cè)然后連續(xù)執(zhí)行的查詢(xún)。CQELS 支持流式數(shù)據(jù)以及靜態(tài)RDF 數(shù)據(jù),此外,CQELS 是一個(gè)本地自適應(yīng)的查詢(xún)處理器,在本地實(shí)現(xiàn)所需的查詢(xún)運(yùn)算符,能夠提供一個(gè)靈活的查詢(xún)執(zhí)行框架,在查詢(xún)執(zhí)行的過(guò)程中,其根據(jù)一些啟發(fā)式規(guī)則不斷地對(duì)操作符進(jìn)行重新排序,提高了查詢(xún)執(zhí)行的延遲和復(fù)雜性。EP-SPARQL[10]是一種描述事件處理和流推理的語(yǔ)言,可以翻譯成基于Prolog的復(fù)雜事件處理框架ETALIS[11],它可以將基于RDF的數(shù)據(jù)轉(zhuǎn)化為邏輯事實(shí),然后將EP-SPARQL 查詢(xún)轉(zhuǎn)化為Prolog 邏輯規(guī)則,但是其轉(zhuǎn)化過(guò)程耗時(shí),性能不高。StreamRule[12]結(jié) 合RSP 引擎和Clingo[13]用于流的過(guò)濾以及聚合,提升了知識(shí)密集場(chǎng)景下的復(fù)雜推理能力。結(jié)合了Spark 和Flink 分布式平臺(tái)的實(shí)時(shí)語(yǔ)義數(shù)據(jù)流推理平臺(tái)BigSR[14]能利用分布式處理來(lái)有效降低推理延時(shí),但其對(duì)硬件資源要求較高。
BORDES 等[15]提出一種 知識(shí)表示 學(xué)習(xí)模型TransE,其將三元組中實(shí)體之間的關(guān)系嵌入到低維向量空間中進(jìn)行計(jì)算,由于參數(shù)少、易于訓(xùn)練、可擴(kuò)展性強(qiáng),使得知識(shí)表示在知識(shí)圖譜領(lǐng)域受到廣泛關(guān)注。隨后,針對(duì)TransE 出現(xiàn)了一些擴(kuò)展性模型,如TransH[16]、TransR[17]等,盡管這些模型在TransE 模型的基礎(chǔ)上做了進(jìn)一步擴(kuò)展,但是它們都沒(méi)有利用邏輯規(guī)則。KALE[18]模型在TransE 模型的基礎(chǔ)上引入邏輯規(guī)則,建立三元組與邏輯規(guī)則的統(tǒng)一框架,使得模型具備一定的推理能力,可以推理出三元組之間隱藏的知識(shí)。然而,KALE 模型缺乏對(duì)流式增量數(shù)據(jù)的更新能力,當(dāng)流式數(shù)據(jù)中出現(xiàn)新的實(shí)體或關(guān)系時(shí),KALE 模型需要在整個(gè)數(shù)據(jù)集上重新訓(xùn)練,在數(shù)據(jù)規(guī)模較大、更新較頻繁的場(chǎng)景下,時(shí)間消耗難以被人們接受。TAY 等[19]在TransE 的基礎(chǔ)上進(jìn)行改進(jìn),提出puTransE 模型,其通過(guò)劃分子嵌入空間的方式使得模型具備處理動(dòng)態(tài)知識(shí)圖譜的能力,然而,該模型不具備推理能力,不能直接應(yīng)用于數(shù)據(jù)流推理任務(wù)。還有一些動(dòng)態(tài)圖嵌入方法[20-22]支持在線學(xué)習(xí)圖節(jié)點(diǎn)嵌入,然而這些方法不能被用于動(dòng)態(tài)知識(shí)圖譜嵌入,因?yàn)樗鼈儗W(xué)習(xí)的是結(jié)構(gòu)相近的節(jié)點(diǎn)的嵌入,而沒(méi)有考慮邊的語(yǔ)義信息。
圖1 所示為PUKALE 模型框架。模型在初始訓(xùn)練時(shí),會(huì)根據(jù)訓(xùn)練集三元組的個(gè)數(shù)和嵌入空間三元組的限定值生成n個(gè)嵌入空間,模型在n個(gè)嵌入空間中分別訓(xùn)練;當(dāng)增量更新的三元組到達(dá)時(shí),如果增量更新的三元組的實(shí)體和關(guān)系在已有的嵌入空間中,則對(duì)相應(yīng)的嵌入空間重新訓(xùn)練;若最后一個(gè)嵌入空間三元組個(gè)數(shù)沒(méi)有達(dá)到限定值,則將增量更新的三元組加入當(dāng)前嵌入空間中重新訓(xùn)練,否則,重新創(chuàng)建一個(gè)嵌入空間進(jìn)行訓(xùn)練。
圖1 PUKALE 模型框架Fig.1 PUKALE model framework
算法1 是PUKALE 模型算法的偽代碼表示:第1 行根據(jù)訓(xùn)練集數(shù)據(jù)生成初始嵌入空間;第2 行讀取推理規(guī)則到模型中;第3 行~第19 行表示對(duì)每個(gè)嵌入空間分別進(jìn)行訓(xùn)練,包括隨機(jī)生成超參數(shù)、隨機(jī)初始化向量空間等。在訓(xùn)練完成后,會(huì)保存每個(gè)嵌入空間的實(shí)體和關(guān)系矩陣。
算法1PUKALE 模型算法
對(duì)于PUKALE 模型中嵌入空間的生成,本文實(shí)現(xiàn)并測(cè)試3 種嵌入空間的生成策略:第1 種策略是語(yǔ)義相關(guān)的生成方法;第2 種策略是結(jié)構(gòu)上相關(guān)的方法;第3 種策略是上述兩者的結(jié)合。
1)第1 種語(yǔ)義相關(guān)策略在對(duì)一個(gè)嵌入空間劃分三元組時(shí),具有相同關(guān)系的三元組更傾向于劃分到同一個(gè)嵌入空間,而具有不同關(guān)系的三元組更傾向于劃分到不同的嵌入空間。如圖2(a)虛線部分所示,假設(shè)(e3,r1,e4)是初始三元組,則(e1,r1,e2)和(e3,r1,e4)更傾向于劃分到同一嵌入空間中。
2)第2 種結(jié)構(gòu)相關(guān)策略的思路是在創(chuàng)建一個(gè)嵌入空間時(shí),首先隨機(jī)選擇一個(gè)三元組加入當(dāng)前嵌入空間,然后以當(dāng)前三元組的頭實(shí)體和尾實(shí)體為起點(diǎn),選擇出度和入度方向的三元組加入當(dāng)前嵌入空間,隨后繼續(xù)以新加入的三元組的頭實(shí)體和尾實(shí)體為起點(diǎn),添加出度和入度方向的三元組,以此類(lèi)推,直到添加的三元組個(gè)數(shù)達(dá)到嵌入空間的限定值。從新加入三元組的頂點(diǎn)出發(fā)繼續(xù)選擇出度和入度方向的三元組,一方面是為了適應(yīng)復(fù)雜環(huán)境(如軍事態(tài)勢(shì)感知)中的傳遞閉包推理場(chǎng)景;另一方面,隨著時(shí)間的推進(jìn),圖譜中會(huì)頻繁進(jìn)行三元組的添加、刪除等圖譜更新操作,為了適應(yīng)這些更新,模型不僅要快速學(xué)習(xí)所更新實(shí)體以及關(guān)系的嵌入,還要考慮其對(duì)現(xiàn)有實(shí)體以及關(guān)系嵌入的影響。以圖2(b)為例,假設(shè)在實(shí)體e1和實(shí)體e2之間添加一個(gè)關(guān)系r1,構(gòu)成新的三元組(e1,r1,e2),則需要對(duì)和e1、e2有關(guān)的5 個(gè)三元組重新訓(xùn) 練,它們分別 為(e1,r7,e5)、(e4,r8,e1)、(e1,r3,e3)、(e2,r2,e3)、(e1,r1,e2),而不需要在整個(gè)圖譜上重新進(jìn)行訓(xùn)練。對(duì)于超參數(shù)嵌入空間三元組限定值的設(shè)置,本文在[500,3 000]范圍內(nèi)以步長(zhǎng)500 遞增進(jìn)行調(diào)優(yōu),嵌入空間限定值設(shè)置在1 500 個(gè)時(shí)模型效果較好,繼續(xù)增大該限定值,模型準(zhǔn)確度并沒(méi)有明顯提升,而嵌入空間計(jì)算延遲會(huì)略有增加。結(jié)構(gòu)相關(guān)策略選擇三元組的方式如圖2(b)所示,假設(shè)(e3,r1,e4)是初始三元組,則虛線部分是所選擇的三元組。
3)第3 種嵌入空間生成策略是第1 種策略和第2 種策略的結(jié)合,其生成嵌入空間的主要思路是:首先隨機(jī)選擇一個(gè)三元組,將其加入當(dāng)前嵌入空間并記錄當(dāng)前三元組的謂語(yǔ)關(guān)系;之后以當(dāng)前三元組的頭尾實(shí)體為起點(diǎn)選擇出度和入度方向的三元組加入嵌入空間,與第2 種策略不同的是,其不是繼續(xù)以新的實(shí)體為起點(diǎn)添加三元組,而是重新隨機(jī)選擇一個(gè)語(yǔ)義相似的三元組加入嵌入空間,繼續(xù)重復(fù)前面的流程,直到三元組的個(gè)數(shù)達(dá)到嵌入空間三元組的限定值。在結(jié)構(gòu)相關(guān)策略的基礎(chǔ)上引入語(yǔ)義相關(guān)策略的原因是,三元組的更新操作影響的不僅是以對(duì)應(yīng)頂點(diǎn)出發(fā)的結(jié)構(gòu)上相近的三元組,還有結(jié)構(gòu)上雖然不相近但是關(guān)系相同的三元組,同樣以添加(e1,r1,e2)為例,關(guān)系嵌入r1的變化會(huì)影響圖譜上包含r1的其他三元組,如(e3,r1,e4)。第3 種策略可以兼顧2 種類(lèi)型的三元組,與結(jié)構(gòu)相關(guān)策略相比,該策略選擇的三元組更具多樣性,在嵌入空間訓(xùn)練時(shí)可以學(xué)習(xí)到更多的信息。第3 種策略的三元組選擇方式如圖2(c)所示,假設(shè)(e3,r1,e4)是初始三元組,則虛線部分是所選擇的三元組。
第3 種嵌入空間生成算法描述如算法2 所示。此外,本文也嘗試puTransE 中的語(yǔ)義雙向隨機(jī)游走嵌入空間生成方式,該策略與策略3 的主要區(qū)別在于,隨機(jī)游走從頂點(diǎn)出發(fā)選擇三元組的路徑是隨機(jī)的,而策略3 會(huì)選擇出度和入度方向的所有三元組。puTransE 生成嵌入空間的方式如圖2(d)虛線部分所示,如果初始時(shí)三元組是(e3,r1,e4),則下一輪選擇的三元組是以實(shí)體e3、e4為起點(diǎn)或終點(diǎn)的一個(gè)隨機(jī)三元組。
圖2 嵌入空間三元組選擇策略示意圖Fig.2 Schematic diagram of embedding space triplet selection strategies
算法2結(jié)合語(yǔ)義和結(jié)構(gòu)的嵌入空間生成算法
在PUKALE 模型的訓(xùn)練過(guò)程中,每個(gè)嵌入空間都會(huì)生成獨(dú)立的實(shí)體向量矩陣和關(guān)系向量矩陣。對(duì)于嵌入空間的選擇問(wèn)題,本文分析如下2 種策略:
1)第1 種策略是線性遍歷每個(gè)嵌入空間,如果輸入的三元組對(duì)應(yīng)的實(shí)體和關(guān)系存在于當(dāng)前嵌入空間,則計(jì)算當(dāng)前三元組在當(dāng)前嵌入空間的能量分?jǐn)?shù)并進(jìn)行記錄,最終該三元組的全局能量分?jǐn)?shù)就是所有符合條件的嵌入空間中能量分?jǐn)?shù)的最大值。這種方式的時(shí)間復(fù)雜度是O(n),其中,n是嵌入空間的個(gè)數(shù)。在嵌入空間數(shù)量比較大的情況下,順序遍歷會(huì)有很多無(wú)效的遍歷,從而浪費(fèi)大量時(shí)間。
2)本文對(duì)第1 種策略進(jìn)行優(yōu)化,提出第2 種嵌入空間選擇策略,建立實(shí)體和關(guān)系到各個(gè)嵌入空間的索引映射,如圖3 所示。在訓(xùn)練時(shí),如果一個(gè)三元組到達(dá),則根據(jù)三元組的實(shí)體和關(guān)系查找對(duì)應(yīng)的索引列表,索引列表中重疊的嵌入空間就是符合要求的嵌入空間。如圖4 所示,這種建立在索引機(jī)制上的嵌入空間選擇方式可以有效避免多余的遍歷,在不影響模型準(zhǔn)確度的前提下能夠提高嵌入空間的選擇速度,其時(shí)間復(fù)雜度可以達(dá)到O(k),其中,k是查找的索引列表最大長(zhǎng)度。該策略對(duì)應(yīng)的算法描述如算法3 所示。
圖3 實(shí)體和關(guān)系到嵌入空間的索引映射Fig.3 Index mapping of entities and relationships to embedding space
圖4 基于索引映射的嵌入空間選擇流程Fig.4 Procedure of embedding space selection based on index mapping
算法3基于索引映射的嵌入空間選擇算法
為了分析PUKALE 模型的空間復(fù)雜度和時(shí)間復(fù)雜度,將PUKALE 和TransE 及其相關(guān)改進(jìn)模型進(jìn)行空間和時(shí)間復(fù)雜度對(duì)比,結(jié)果如表1 所示。
表1 知識(shí)表示學(xué)習(xí)模型的空間和時(shí)間復(fù)雜度對(duì)比Table 1 Comparison of space complexity and time complexity of knowledge representation learning models
在表1 中:d表示嵌入學(xué)習(xí)的向量空間維度;ne表示實(shí)體個(gè)數(shù);nr表示關(guān)系個(gè)數(shù);nt表示三元組個(gè)數(shù);ng表示邏輯規(guī)則個(gè)數(shù);ns表示生成的語(yǔ)義空間個(gè)數(shù)。從表1 可以看出,PUKALE 的空間及時(shí)間復(fù)雜度與性能最好的TransE 相差不大,與KALE 相比,PUKALE 的空間復(fù)雜度相同而時(shí)間復(fù)雜度降低,原因是對(duì)于流式增量數(shù)據(jù),KALE 是在完整數(shù)據(jù)集上重新訓(xùn)練,而PUKALE 中引入了子嵌入空間,其在子嵌入空間中進(jìn)行局部訓(xùn)練,在圖譜規(guī)模較大、嵌入空間個(gè)數(shù)較多的場(chǎng)景下,可以大幅縮短模型的訓(xùn)練時(shí)間。
為了對(duì)PUKALE 模型進(jìn)行有效訓(xùn)練,本文使用KALE 中基于間距的Hinge 表達(dá)式優(yōu)化損失函數(shù),其常用形式如下:
間距模型常用于二分類(lèi)或者樣本相似性分析任務(wù),本文基于間距模型并結(jié)合聯(lián)合嵌入模型中所提的損失函數(shù),提出一種PUKALE 模型的損失函數(shù),如下:
其中:L表示正確三元組和否定三元組之間的margin距離;S+為數(shù)據(jù)集中正確三元組組成的集合;S-為否定三元組組成的集合;I為模型計(jì)算出的真值;γ是距離超參數(shù)。
PUKALE 模型的訓(xùn)練過(guò)程為:首先隨機(jī)初始化三元組(h,r,t)中實(shí)體和關(guān)系的向量表示;然后對(duì)訓(xùn)練樣本生成否定三元組,生成方式是隨機(jī)替換樣本的頭實(shí) 體或尾實(shí)體,構(gòu) 造出負(fù)例三元組(h′,r,t)或(h,r,t′);最后針對(duì)每個(gè)三元組計(jì)算統(tǒng)一得分函數(shù),對(duì)于正確的三元組,其期望得分更低,而對(duì)于否定三元組,其期望得分更高,這樣即可通過(guò)訓(xùn)練樣本的分?jǐn)?shù)來(lái)區(qū)分正負(fù)樣本。
現(xiàn)有的數(shù)據(jù)流推理引擎CSPARQL-engine 主要包括ESPER 流處理引擎、Sparql 推理引擎和Jena 查詢(xún)引擎。ESPER 是一個(gè)復(fù)雜事件處理以及事件流處理引擎,Jena 是Apache 的開(kāi)源并基于Java 的RDF 流處理工具,CSPARQL 支持流式數(shù)據(jù)的持續(xù)查詢(xún)功能。本文將基于多嵌入空間的PUKALE 模型嵌入到CSPARQL-engine 中,使得復(fù)雜的規(guī)則推理可以映射至低維向量空間進(jìn)行簡(jiǎn)單的向量計(jì)算,從而降低圖譜規(guī)模不斷增大后的推理延遲,使其滿(mǎn)足大規(guī)模流式數(shù)據(jù)場(chǎng)景下的實(shí)時(shí)推理需求。實(shí)時(shí)語(yǔ)義數(shù)據(jù)流推理架構(gòu)如圖5 所示,推理過(guò)程如下:
圖5 基于PUKALE 的實(shí)時(shí)語(yǔ)義數(shù)據(jù)流推理過(guò)程Fig.5 Procedure of real-time semantic data flow reasoning based on PUKALE
1)輸入到CSPARQL-engine 中的RDF 數(shù)據(jù)先通過(guò)Jena 進(jìn)行格式化,轉(zhuǎn)換成系統(tǒng)可以識(shí)別的數(shù)據(jù)格式。
2)系統(tǒng)讀取Jena 格式化后的數(shù)據(jù),在RDF 三元組的基礎(chǔ)上加上時(shí)間戳形成四元組,將該四元組放到RDF 數(shù)據(jù)流中。
3)系統(tǒng)讀取并解析CSPARQL 查詢(xún),獲得查詢(xún)的時(shí)間步長(zhǎng)和RDF 流窗口大小。
4)系統(tǒng)從ESPER 流引擎中取出指定窗口內(nèi)的數(shù)據(jù),將其輸入到查詢(xún)引擎中,同時(shí)作為輸入數(shù)據(jù)輸入到PUKALE 模型中。
5)PUKALE 模型獲取數(shù)據(jù)后,根據(jù)預(yù)設(shè)的邏輯規(guī)則進(jìn)行計(jì)算,推理出隱藏的三元組知識(shí),然后生成推理三元組集合并輸入查詢(xún)引擎。
6)系統(tǒng)根據(jù)查詢(xún)語(yǔ)句在查詢(xún)引擎中進(jìn)行持續(xù)查詢(xún),并返回查詢(xún)結(jié)果。
本節(jié)首先通過(guò)實(shí)驗(yàn)分析嵌入空間生成算法和選擇算法的性能,然后評(píng)估PUKALE 模型的動(dòng)態(tài)更新效果以及模型性能,最后將其嵌入到CSPARQL-engine,并完成2 個(gè)語(yǔ)義數(shù)據(jù)流的推理查詢(xún)測(cè)試。實(shí)驗(yàn)所使用的軟件環(huán)境均為Windows10 操作系統(tǒng),Java8 編程環(huán)境,Maven 版本3.6;硬件環(huán)境為CPU i5-8265U@1.6 GHz,內(nèi)存大小8 GB。
為了測(cè)試嵌入空間生成算法和選擇算法以及PUKALE 模型的性能,本節(jié)進(jìn)行4 個(gè)實(shí)驗(yàn):前2 個(gè)實(shí)驗(yàn)是對(duì)嵌入空間生成算法和選擇算法的性能測(cè)試;第3 個(gè)是測(cè)試新增數(shù)據(jù)集時(shí)PUKALE 模型和KALE模型在同等規(guī)模數(shù)據(jù)集下更新相同個(gè)數(shù)三元組時(shí)的時(shí)間消耗;第4 個(gè)是測(cè)試對(duì)比PUKALE 模型與其他知識(shí)表示學(xué)習(xí)模型的性能。
為了評(píng)價(jià)PUKALE 模型在軍情態(tài)勢(shì)預(yù)測(cè)數(shù)據(jù)集上的效果,對(duì)于樣本中的每一個(gè)三元組(s,p,o),模型會(huì)生成多個(gè)否定三元組實(shí)例,生成方式是主語(yǔ)s或賓語(yǔ)o替換為實(shí)體集合中的其他實(shí)體,形成(s′,p,o)或(s,p,o′),之后計(jì)算所有生成的三元組的得分,最后模型對(duì)三元組的得分進(jìn)行排序,根據(jù)排序結(jié)果統(tǒng)計(jì)正實(shí)例三元組在列表中的位置排名。本文使用與KALE 相同的評(píng)估指標(biāo):
1)MRR(Mean Reciprocal Rank),其為一個(gè)國(guó)際通用的搜索算法性能評(píng)估指標(biāo)。
2)HITS@K,指前K個(gè)位置中正實(shí)例三元組所占的比例。
3.1.1 嵌入空間生成策略性能分析
本文通過(guò)實(shí)驗(yàn)分析2.2 節(jié)所提3 種嵌入空間生成策略以及puTransE 隨機(jī)游走策略對(duì)PUKALE 模型準(zhǔn)確性的影響。實(shí)驗(yàn)使用的數(shù)據(jù)集是海軍軍情態(tài)勢(shì)預(yù)測(cè)數(shù)據(jù)集,其包含100 000 個(gè)三元組。為了使模型有更好的適應(yīng)性,本文減少超參數(shù)對(duì)模型性能的影響,在各個(gè)嵌入空間的訓(xùn)練過(guò)程中,模型的初始參數(shù)不是固定的,而是采用隨機(jī)設(shè)置的方式,以避免參數(shù)耦合影響模型的訓(xùn)練效果。訓(xùn)練參數(shù)設(shè)定如下:嵌入空間三元組限定值為1 500;向量空間維度為30;margin 參數(shù)范圍 為{0.1,0.2,0.3};學(xué)習(xí)率learning_rate 參數(shù)范圍為{0.1,0.01}。
實(shí)驗(yàn)結(jié)果如表2 所示。從表2 可以看出:第1 種語(yǔ)義相關(guān)策略在數(shù)據(jù)集關(guān)系個(gè)數(shù)較少的情況下不適用,原因在于這種劃分方式雖然可以讓一個(gè)嵌入空間中的三元組盡可能滿(mǎn)足語(yǔ)義的相關(guān)性,但是劃分到每個(gè)嵌入空間的關(guān)系個(gè)數(shù)比較少,三元組關(guān)系不具備多樣性,訓(xùn)練效果比較差;在第2 種結(jié)構(gòu)相關(guān)的三元組選擇策略下模型的準(zhǔn)確率有明顯提高,一方面是因?yàn)閯澐种燎度肟臻g的關(guān)系個(gè)數(shù)增加,解決了第1 種策略嵌入空間關(guān)系個(gè)數(shù)太少的缺陷,另一方面,結(jié)構(gòu)相關(guān)的三元組劃分到同一個(gè)嵌入空間,避免了相互影響的三元組分散在多個(gè)嵌入空間,減少了圖譜更新時(shí)需要重新訓(xùn)練的嵌入空間個(gè)數(shù),提升了模型的訓(xùn)練效率和準(zhǔn)確率,此外,這種方式下相鄰嵌入空間的三元組存在一定程度的重疊,經(jīng)過(guò)測(cè)試,所有嵌入空間三元組的總重復(fù)率為4.6%;第3 種語(yǔ)義結(jié)構(gòu)結(jié)合策略相比第2 種結(jié)構(gòu)相關(guān)策略,模型的準(zhǔn)確率進(jìn)一步提升,因?yàn)閳D譜中三元組的更新影響的不僅是頂點(diǎn)入度出度方向的三元組,還有關(guān)系相同的三元組,策略2 只選擇了受頂點(diǎn)變化影響的三元組,而忽略了受關(guān)系變化影響的三元組,策略3 在策略2 的基礎(chǔ)上加入了關(guān)系相同的三元組,使得嵌入空間重訓(xùn)練時(shí)可以學(xué)習(xí)到更多的信息;與puTransE中的隨機(jī)游走策略相比,策略3 下的模型準(zhǔn)確率更高,原因是其模型可以推理出更多隱含的三元組。
表2 嵌入空間生成策略性能對(duì)比Table 2 Performance comparison of embedding space generation strategies
如圖6、表3 所示,本文以數(shù)據(jù)流傳遞閉包規(guī)則為例進(jìn)行推理查詢(xún)。以t1為初始三元組,假設(shè)使用隨機(jī)游走策略劃分三元組,由于隨機(jī)游走的隨機(jī)性,三元組t1、t2可能劃分在嵌入空間E1,t3、t4可能劃分在嵌入空間E2,則E1中可以推理出t5,E2中可以推斷出t6。假設(shè)使用結(jié)構(gòu)語(yǔ)義結(jié)合策略,則三元組t1、t2、t3、t4會(huì)劃分到同一個(gè)嵌入空間E3,在E3中除了可以推理出t5、t6外,還 可以推理出t7、t8。而在傳遞 閉包規(guī)則中,推理的結(jié)果可以作為推理?xiàng)l件繼續(xù)使用,將其加入嵌入空間進(jìn)行訓(xùn)練,模型可以學(xué)習(xí)更多的信息,即準(zhǔn)確率會(huì)提升。
圖6 傳遞閉包圖譜示例Fig.6 Sample of transitive closure graph
表3 傳遞閉包圖譜三元組編號(hào)Table 3 Transitive closure graph triples numbers
3.1.2 嵌入空間選擇策略性能分析
本節(jié)通過(guò)在10 萬(wàn)、30 萬(wàn)、50 萬(wàn)規(guī)模的數(shù)據(jù)集上分別進(jìn)行實(shí)驗(yàn),記錄不同規(guī)模數(shù)據(jù)集下嵌入空間的平均選擇時(shí)間,以分析2.2 節(jié)所提2 種嵌入空間選擇策略的性能。在3 個(gè)不同規(guī)模數(shù)據(jù)集上的參數(shù)設(shè)定均一致,嵌入空間三元組限定值為1 500,向量空間維度為30,margin 參數(shù)范圍為{0.1,0.2,0.3},學(xué)習(xí)率learning_rate參數(shù)范圍為{0.1,0.01},實(shí)驗(yàn)結(jié)果如表4 所示。從表4可以看出,隨著訓(xùn)練集三元組規(guī)模的增大,子嵌入空間個(gè)數(shù)增多,索引映射的時(shí)間消耗明顯低于線性遍歷,原因在于索引映射使用索引算法避免了對(duì)多余子嵌入空間的遍歷,從而節(jié)省了時(shí)間。
表4 不同規(guī)模數(shù)據(jù)集下嵌入空間選擇時(shí)間對(duì)比Table 4 Comparison of embedding space selection time under different scale datasets ms
3.1.3 PUKALE 模型動(dòng)態(tài)更新分析
PUKALE 模型中引入了多嵌入空間,避免了數(shù)據(jù)集三元組增量更新時(shí)模型在整個(gè)數(shù)據(jù)集上重新訓(xùn)練。為了驗(yàn)證PUKALE 模型引入多嵌入空間的有效性,本文對(duì)比PUKALE 模型和KALE 模型在不同規(guī)模數(shù)據(jù)集下增量更新時(shí)的訓(xùn)練時(shí)間消耗,數(shù)據(jù)集詳細(xì)信息如表5 所示,KALE 和PUKALE 在表5 的3 個(gè)不同規(guī)模數(shù)據(jù)集上動(dòng)態(tài)更新所消耗時(shí)間如表6 所示。實(shí)驗(yàn)參數(shù)設(shè)置:嵌入空間三元組個(gè)數(shù)限定值為1 500,margin 參數(shù)范圍 為{0.1,0.2,0.3},學(xué)習(xí)率learning_rate 參數(shù)范圍為{0.1,0.01}。
表5 用于增量更新測(cè)試的數(shù)據(jù)集信息Table 5 Datasets information for incremental update test
表6 不同規(guī)模數(shù)據(jù)集下增量更新時(shí)間對(duì)比Table 6 Comparison of incremental update time under different scale datasets min
在訓(xùn)練集三元組增量更新時(shí),KALE 模型在整個(gè)圖譜上重新訓(xùn)練,是一種全量更新的方式,隨著三元組數(shù)目的不斷增大,KALE 模型重新訓(xùn)練所消耗的時(shí)間會(huì)顯著增加。而PUKALE 模型的增量更新方式是在選定的嵌入空間進(jìn)行更新,是一種局部更新的方式,相比于全量更新,其訓(xùn)練時(shí)間明顯降低,適用于大規(guī)模數(shù)據(jù)流更新場(chǎng)景。
在動(dòng)態(tài)更新實(shí)驗(yàn)過(guò)程中,不同規(guī)模數(shù)據(jù)集上PUKALE 模型和KALE 模型的準(zhǔn)確率對(duì)比如表7 所示。從表7 可以看出,對(duì)于不同規(guī)模的三元組,隨著三元組數(shù)量的增多,PUKALE 模型的準(zhǔn)確率會(huì)逐漸提高,同等規(guī)模三元組在進(jìn)行增量更新時(shí),PUKALE模型在各個(gè)子嵌入空間的平均準(zhǔn)確率也略有提高,這表明PUKALE 模型的增量更新具有有效性。
表7 不同規(guī)模數(shù)據(jù)集下模型準(zhǔn)確率對(duì)比Table 7 Comparison of models accuracy under different scale datasets
3.1.4 PUKALE 模型性能分析
為了比較PUKALE 模型和其他知識(shí)表示學(xué)習(xí)模型的訓(xùn)練效果,本文進(jìn)行對(duì)比實(shí)驗(yàn),設(shè)置如下:向量空間維度d分別設(shè)置為{30,40,50};訓(xùn)練集三元組個(gè)數(shù)為90 000;驗(yàn)證集三元組個(gè)數(shù)為10 000;嵌入空間三元組個(gè)數(shù)分別設(shè)置為{1 000,1 500,2 000,3 000};margin 參數(shù)范圍為{0.1,0.2,0.3};學(xué)習(xí)率learning_rate 參數(shù)范圍為{0.1,0.01}。實(shí)驗(yàn)結(jié)果如表8 所示。
表8 PUKALE 與其他知識(shí)表示學(xué)習(xí)模型準(zhǔn)確率對(duì)比Table 8 Comparison of accuracy between PUKALE and other knowledge representation learning models
從表8 可以看出,KALE 模型和PUKALE 模型的準(zhǔn)確率均優(yōu)于TranE、TransH、TransR 模型,PUKALE 在各個(gè)嵌入空間的平均準(zhǔn)確率比KALE低,但是MRR 相比KALE 有所提高,PUKALE 準(zhǔn)確率比KALE 低的原因在于KALE 訓(xùn)練時(shí)只有一個(gè)全局嵌入空間,其可以完整學(xué)習(xí)所有三元組的信息,而PUKALE 是將三元組按語(yǔ)義相關(guān)和結(jié)構(gòu)相關(guān)劃分到各個(gè)子嵌入空間中,由于嵌入空間生成算法具有差異性,因此相關(guān)的三元組不一定能全部劃分到同一個(gè)嵌入空間,導(dǎo)致在各個(gè)嵌入空間學(xué)習(xí)的信息不一定完整,平均準(zhǔn)確率降低。PUKALE 的MRR 有所提高的原因在于嵌入空間的選擇機(jī)制會(huì)忽略掉一些不相關(guān)的嵌入空間和三元組,精簡(jiǎn)了三元組的搜索范圍,使得測(cè)試三元組的排名更靠前。雖然PUKALE的準(zhǔn)確性低于KALE,但是PUKALE 支持增量更新,進(jìn)行增量更新時(shí)是在局部嵌入空間重新訓(xùn)練,而不是在整個(gè)數(shù)據(jù)集上進(jìn)行重新訓(xùn)練。在大規(guī)模三元組場(chǎng)景下,PUKALE 的更新時(shí)間消耗遠(yuǎn)低于KALE,這在后續(xù)的實(shí)時(shí)語(yǔ)義數(shù)據(jù)流處理中具有重要意義。
本節(jié)將PUKAEL 模型添加推理嵌入到CSPARQLengine 中進(jìn)行2 種場(chǎng)景實(shí)驗(yàn),測(cè)試其在2 種場(chǎng)景下的推理查詢(xún)時(shí)延,并與傳統(tǒng)的CSPARQL 推理查詢(xún)和KALE推理查詢(xún)進(jìn)行對(duì)比。場(chǎng)景1 是具有傳遞閉包規(guī)則的艦船戰(zhàn)斗群隸屬關(guān)系推理,場(chǎng)景2 是較為復(fù)雜的動(dòng)態(tài)威脅感知推理。場(chǎng)景1 的規(guī)則如表9 所示。
表9 場(chǎng)景1 閉包規(guī)則Table 9 Scenario 1 closure rule
表9 規(guī)則表示,如果艦船目標(biāo)x 和艦船目標(biāo)y 處于同一個(gè)戰(zhàn)斗組,艦船目標(biāo)y 和艦船目標(biāo)z 處于同一個(gè)戰(zhàn)斗組,則艦船目標(biāo)x 和艦船目標(biāo)z 處于同一個(gè)戰(zhàn)斗組。對(duì)于艦船目標(biāo)x,如果獲取了與其同組的y 和z,則可以通過(guò)分析其同組艦船目標(biāo)的歷史活動(dòng)進(jìn)行意圖分析。因此,在數(shù)據(jù)流平臺(tái)快速推理出x 同組的其他艦船目標(biāo)比較關(guān)鍵。另外,該規(guī)則存在傳遞閉包特征,推理結(jié)果可以作為推理?xiàng)l件繼續(xù)使用。
針對(duì)表9 構(gòu)造的Rule1,本文在CSPARQL-engine中使用如下查詢(xún)語(yǔ)句Query1,表示查詢(xún)出所有與艦船x 同組的艦船。
Query1傳遞閉包查詢(xún)
場(chǎng)景2 的規(guī)則如表10 所示。該規(guī)則表示,如果艦船目標(biāo)a 裝載了武器b,武器b 的目標(biāo)是c,而艦船目標(biāo)d 的類(lèi)型是c,則艦船目標(biāo)a 對(duì)艦船目標(biāo)d 存在潛在威脅。
表10 場(chǎng)景2 復(fù)雜推理規(guī)則Table 10 Scenario 2 complex reasoning rule
針對(duì)規(guī)則2,本文使用的推理查詢(xún)語(yǔ)句如Query2所示。Query2 是一個(gè)較為復(fù)雜的推理查詢(xún),表示如果在時(shí)間點(diǎn)time1 和位置1 發(fā)現(xiàn)了2 艘艦船x 和y,并且x對(duì)y 有威脅,而在時(shí)間點(diǎn)time2(time2>time1)和位置2又發(fā)現(xiàn)了x 和y,并且2 個(gè)區(qū)域在一定范圍內(nèi),則查詢(xún)出2 艘艦船的信息。
Query2復(fù)雜推理規(guī)則查詢(xún)
針對(duì)以上2 個(gè)查詢(xún),本文實(shí)驗(yàn)所設(shè)置的參數(shù)如下:數(shù)據(jù)流窗口大小分別為{10,20,30,40},單位為秒;每秒窗口三元組的數(shù)量為{2 000,4 000,8 000,16 000,32 000,64 000};窗口的步長(zhǎng)為1 s。根據(jù)以上輸入?yún)?shù)可以得到實(shí)驗(yàn)結(jié)果如圖7、圖8 所示。
圖7 規(guī)則1 推理查詢(xún)時(shí)間延遲Fig.7 Rule1 reasoning and query time delay
圖8 規(guī)則2 推理查詢(xún)時(shí)間延遲Fig.8 Rule2 reasoning and query time delay
實(shí)驗(yàn)結(jié)果表明:在相同的條件限制下,CSPARQL-engine 在PUKALE 作為推理引擎時(shí)的推理查詢(xún)延遲明顯低于傳統(tǒng)的CSPARQL 規(guī)則推理引擎,而且傳統(tǒng)的CSPARQL 規(guī)則推理引擎在三元組輸入速率達(dá)到32 000 個(gè)/s 時(shí)失去響應(yīng),而在使用PUKALE 和KALE 作為推理引擎時(shí),CSPARQLengine 還能正常工作;CSPARQL-engine 在使用PUKALE 作為推理引擎時(shí)的推理查詢(xún)時(shí)延在三元組速率低于16 000 個(gè)/s 時(shí)與KALE 作為推理引擎時(shí)延遲差別不大,但在三元組速率達(dá)到32 000 個(gè)/s 或64 000 個(gè)/s 時(shí),PUKALE 推理的性能略好于KALE,原因在于KALE 推理只有一個(gè)全局配置空間,在計(jì)算時(shí)對(duì)所有三元組都會(huì)計(jì)算一次,在三元組個(gè)數(shù)較多的情況下會(huì)有較多的無(wú)效計(jì)算,比較耗時(shí),而PUKALE 采用多嵌入空間的方式,能過(guò)濾掉一些無(wú)效嵌入空間和三元組,因此,在三元組個(gè)數(shù)較多的情況下,其計(jì)算量較少,性能較高。
本文在知識(shí)表示學(xué)習(xí)模型KALE 的基礎(chǔ)上引入多嵌入空間,提出一種PUKALE 模型,并設(shè)計(jì)3 種嵌入空間生成策略以及2 種嵌入空間選擇策略。為了提升數(shù)據(jù)流推理引擎的推理效率,本文將PUKALE 模型嵌入實(shí)時(shí)數(shù)據(jù)流推理平臺(tái)CSPARQL-engine,并與傳統(tǒng)的CSPARQL 推理和KALE 推理進(jìn)行對(duì)比。實(shí)驗(yàn)結(jié)果表明,相較KALE 的全量更新方式,PUKALE 中的增量更新方式在三元組數(shù)量較大、更新較頻繁的場(chǎng)景下具有顯著優(yōu)勢(shì),在50 萬(wàn)圖譜規(guī)模數(shù)據(jù)集中時(shí)間消耗約下降93%。此外,相較傳統(tǒng)的CSPARQL 推理,PUKALE 推理的查詢(xún)時(shí)間約縮短85%,且其更適用于大規(guī)模實(shí)時(shí)語(yǔ)義數(shù)據(jù)流推理查詢(xún)?nèi)蝿?wù)。
PUKALE 模型在知識(shí)圖譜在線更新時(shí)使用局部子嵌入空間訓(xùn)練,雖然避免了在整個(gè)圖譜上重新訓(xùn)練,縮短了訓(xùn)練時(shí)間,然而,局部子空間并不能保存圖譜全局結(jié)構(gòu)信息,從而導(dǎo)致信息學(xué)習(xí)不全的問(wèn)題。此外,PUKALE 利用TransE 的打分函數(shù)計(jì)算每個(gè)三元組的能量分?jǐn)?shù),其并不能很好地建模1~N、N~1、N~N的關(guān)系。因此,后續(xù)將為PUKALE 設(shè)計(jì)新的三元組學(xué)習(xí)及打分機(jī)制,弱化TransE 中三元組h+r≈t的嚴(yán)格限制,進(jìn)一步提升PUKALE 模型對(duì)1~N、N~1、N~N關(guān)系的建模及適應(yīng)能力。