宋厚巖,王漢軍
1(中國(guó)科學(xué)院大學(xué),北京 100049)
2(中國(guó)科學(xué)院 沈陽(yáng)計(jì)算技術(shù)研究所,沈陽(yáng) 110168)
隨著大數(shù)據(jù)時(shí)代的到來(lái),電力系統(tǒng)每天產(chǎn)生大量的數(shù)據(jù),但是這些海量的數(shù)據(jù)卻尚未得到合理的挖掘,導(dǎo)致很多潛在的價(jià)值沒(méi)有被開(kāi)發(fā),如何管理和挖掘這些數(shù)據(jù)的價(jià)值成為了電力系統(tǒng)改革和發(fā)展的新動(dòng)力.為了更好地挖掘電力系統(tǒng)的海量數(shù)據(jù),電力系統(tǒng)與人工智能的結(jié)合呼之欲出.電力知識(shí)的提取對(duì)于構(gòu)建電力系統(tǒng)知識(shí)圖譜來(lái)說(shuō)十分重要.簡(jiǎn)單來(lái)說(shuō),就是從電力系統(tǒng)產(chǎn)生的海量數(shù)據(jù)中提取電力知識(shí)三元組,并利用圖數(shù)據(jù)庫(kù)技術(shù)構(gòu)建電力系統(tǒng)知識(shí)圖譜,以方便海量電力數(shù)據(jù)的管理和挖掘.
知識(shí)圖譜(knowledge graph)是由谷歌在2012年正式提出的概念,重點(diǎn)在于提高搜索引擎的智能化和效率.知識(shí)圖譜實(shí)際上是一個(gè)語(yǔ)義網(wǎng)絡(luò),語(yǔ)義網(wǎng)絡(luò)就是用節(jié)點(diǎn)表示實(shí)體或?qū)傩?邊表示實(shí)體之間、實(shí)體與屬性之間的各種語(yǔ)義關(guān)系[1-3].其中,實(shí)體是指客觀存在于現(xiàn)實(shí)世界中且可區(qū)分的物體或事物;屬性是描述實(shí)體特征的信息,如面積和長(zhǎng)度等.關(guān)系是知識(shí)圖譜最重要的特征,據(jù)此才能實(shí)現(xiàn)萬(wàn)事萬(wàn)物的互聯(lián),從而支持各種應(yīng)用,如語(yǔ)義理解和信息檢索等.
所謂知識(shí)抽取,就是提取來(lái)自不同來(lái)源、不同結(jié)構(gòu)的數(shù)據(jù),形成知識(shí)最終存到知識(shí)圖譜的過(guò)程.知識(shí)抽取的大致任務(wù)如圖1所示.
圖1 知識(shí)抽取分類圖
傳統(tǒng)的知識(shí)抽取方法包括基于統(tǒng)計(jì)機(jī)器學(xué)習(xí)的方法、基于自然語(yǔ)言處理的方法和基于深度學(xué)習(xí)的方法.對(duì)于基于深度學(xué)習(xí)的知識(shí)抽取方法,專家們?cè)?014年逐漸提出將CNN用于知識(shí)抽取,提出了CNN、RNN和LSTM 等一系列方法模型[4-6].深度學(xué)習(xí)網(wǎng)絡(luò)模型知識(shí)提取方法的一般過(guò)程是在分詞后輸入詞向量信息,然后通過(guò)卷積神經(jīng)網(wǎng)絡(luò)自動(dòng)學(xué)習(xí),這大大減少了人工標(biāo)注語(yǔ)料庫(kù)的人力物力,同時(shí)避免了傳統(tǒng)方法中使用自然語(yǔ)言處理等方法造成的累積誤差的傳播語(yǔ)等問(wèn)題.
然而目前大多數(shù)的知識(shí)抽取方法中都使用單一的CNN和RNN 模型,然而CNN 擅長(zhǎng)的是對(duì)于知識(shí)的實(shí)體局部最重要特征的抽取,但是卻不是十分適合對(duì)于序列輸入的處理;反之,RNN 相比于CNN 而言,在任意長(zhǎng)度的序列化處理上有更好的優(yōu)勢(shì),但是提取實(shí)體局部重要特征卻顯得不夠充分,所以針對(duì)于以上兩種模型的不足,本文改進(jìn)一種基于GRU和PCNN 模型的電力知識(shí)抽取方法.通過(guò)將GRU 模型與PCNN 模型的結(jié)合,可以將二者的優(yōu)點(diǎn)更完美的結(jié)合起來(lái),最終通過(guò)實(shí)驗(yàn)驗(yàn)證,該模型對(duì)于電力知識(shí)抽取相比于單一的CNN模型、RNN 模型等神經(jīng)網(wǎng)絡(luò)模型有更好的效果[7].
本文所采用的基于深度學(xué)習(xí)的GRU 神經(jīng)元和PCNN 模型電力知識(shí)抽取模型結(jié)構(gòu)圖如圖2所示.
圖2 電力知識(shí)抽取模型結(jié)構(gòu)圖
本文所設(shè)計(jì)的電力知識(shí)抽取模型的訓(xùn)練主要包括以下幾部分:
(1)輸入層:輸入層的主要任務(wù)是將電力數(shù)據(jù)輸入到電力知識(shí)抽取模型中;
(2)嵌入層:通過(guò)分詞工具和Word2Vec 詞向量工具對(duì)輸入層輸入的數(shù)據(jù)處理最終得到詞向量W,將其作為GRU 模型的輸入層;
(3)GRU 層:利用GRU 層計(jì)算輸入層得到的字向量信息,得到包含新信息的新的詞向量.新詞向量通過(guò)詞向量與詞向量的位置向量相拼接所得到的.新詞向量不僅包含詞向量本身的語(yǔ)義信息,還包含詞向量的位置信息;
(4)PCNN 層:通過(guò)對(duì)上層特征向量進(jìn)行實(shí)體劃分,通過(guò)分段最大池化分從劃分結(jié)果中提取最重要的局部特征信息,最終得到句子特征向量P;
(5)輸出層:將通過(guò)PCNN 層得到的特征向量P輸入到Softmax 分類器中得到最終的電力知識(shí)抽取結(jié)果.
GRU是一種RNN 網(wǎng)絡(luò),該模型的優(yōu)點(diǎn)在于它適用于處理序列數(shù)據(jù),因此被廣泛應(yīng)用于語(yǔ)音處理、自然語(yǔ)言處理等方向.它的內(nèi)部結(jié)構(gòu)與LSTM 網(wǎng)絡(luò)的內(nèi)部結(jié)構(gòu)非常相似,但是GRU 模型可以有效解決傳統(tǒng)RNN 網(wǎng)絡(luò)存在的問(wèn)題例如梯度爆炸和梯度消失等.并且與LSTM 網(wǎng)絡(luò)相比,GRU的優(yōu)點(diǎn)是在于去除細(xì)胞單元狀態(tài),傳輸信息實(shí)在隱藏狀態(tài)下進(jìn)行的.盡管GRU 模型與LSTM 模型相似,但前者結(jié)構(gòu)更加簡(jiǎn)單,參數(shù)更少.相比之下,GRU 模型就更容易訓(xùn)練.GRU 模型只包含兩個(gè)門結(jié)構(gòu),結(jié)構(gòu)簡(jiǎn)單,GRU 神經(jīng)元結(jié)構(gòu)如圖3所示.
圖3 GRU 神經(jīng)元結(jié)構(gòu)
如圖3所示,xt為輸入數(shù)據(jù),ht為GRU 模型的輸出,rt、zt分別代表t時(shí)刻的重置門與更新門,具體公式如下:
其中,σ為Sigmoid 函數(shù),[]表示兩個(gè)向量相連,×表示矩陣的Hadamard 積,Wr,Wz,Wh分別為重置門,更新門,以及候選隱匿狀態(tài)的權(quán)重矩陣,其中為t時(shí)刻的候選狀態(tài).
在解決自然語(yǔ)言處理時(shí),通過(guò)引用雙向循環(huán)來(lái)處理序列化數(shù)據(jù)[8-10].本文所采用雙向GRU 模型作為電力知識(shí)抽取的一部分,其模型結(jié)構(gòu)分為3 層,分別是輸入層(input layer)、隱藏層(hidden layer)、輸出層(output layer)[11],其模型如圖4所示.
圖4 雙向GRU 模型
在模型的訓(xùn)練過(guò)程中,前向傳播過(guò)程中公式表示如式(6)~式(8)所示:
在輸出層部分,輸出層的輸入為:
輸出層的輸出為:
在得到最終的輸出后,就可以計(jì)算出整個(gè)網(wǎng)絡(luò)傳遞的損失,單個(gè)樣本某時(shí)刻的損失為:
從而可得到單個(gè)樣本的在所有時(shí)刻的損失為:
采用后向誤差傳播算法來(lái)學(xué)習(xí)網(wǎng)絡(luò),先要求出損失函數(shù)對(duì)各參數(shù)的偏導(dǎo):
其中,各中間參數(shù)為:
從訓(xùn)練結(jié)果來(lái)看,通過(guò)以上公式可知神經(jīng)網(wǎng)絡(luò)的結(jié)果最終趨于收斂,因此本文選擇GRU 來(lái)用于電力知識(shí)的抽取.
PCNN (Piece-wise-CNN)模型是CNN 模型的一種,CNN 模型全稱是卷積神經(jīng)網(wǎng)絡(luò)模型,近年來(lái)被應(yīng)用于自然語(yǔ)言處理例如情感分析,文本分類等任務(wù),而PCNN是近年來(lái)被發(fā)現(xiàn)用于關(guān)系抽取的十分經(jīng)典的一個(gè)模型,也是目前公認(rèn)的效果較好的抽取模型,因此本文選用PCNN 進(jìn)行電力知識(shí)提取是可行的[12-14].
PCNN 模型主要由以下幾部分組成,其結(jié)構(gòu)如圖5所示.
圖5 PCNN 模型
(1)向量表達(dá):句子的向量表達(dá)為兩部分拼接結(jié)果:詞嵌入和位置嵌入.使用Skip-gram 方法預(yù)訓(xùn)練詞向量;使用Position embedding 表示句子單詞到兩個(gè)實(shí)體的相對(duì)距離.隨機(jī)初始化兩個(gè)位置嵌入矩陣,句向量表示為:
其中,s為句子長(zhǎng)度(單詞數(shù)),d=dw+dp×2.
(2)卷積層:對(duì)于長(zhǎng)度為s的句子,首尾填充w-1長(zhǎng)度,則卷積核w的輸出為:
若使用n個(gè)卷積核,則卷積操作的輸出為:
(3)分段最大化池化層:卷積層輸出維度為Rn×(s+w-1),輸出維度依賴于句子的長(zhǎng)度,為了便于下游任務(wù),卷積層的輸出必須獨(dú)立于序列長(zhǎng)度,一般采用池化操作,使用單一最大池化無(wú)法捕獲兩個(gè)實(shí)體的結(jié)構(gòu)信息特征,PCNN 使用分段最大池化代替單一最大池化,分段最大池化輸出長(zhǎng)度為3的向量:
拼接所有卷積核分段池化層輸出為p1:n,靜非線性函數(shù)輸出為(維度與句子長(zhǎng)度無(wú)關(guān))
(4)Softmax 層:首先將輸出轉(zhuǎn)化為類別分?jǐn)?shù)(Softmax轉(zhuǎn)換為類別概率)
(5)多實(shí)例學(xué)習(xí):為降低數(shù)據(jù)標(biāo)注錯(cuò)誤的影響,PCNN 使用多實(shí)例(半監(jiān)督)學(xué)習(xí).考慮包含T個(gè)包的訓(xùn)練集{M1,M2,…,MT},其中包中qi個(gè)不同實(shí)體互為獨(dú)立.對(duì)于實(shí)例,神經(jīng)網(wǎng)絡(luò)Θ 輸出向量o,其中第r個(gè)關(guān)系對(duì)應(yīng)的概率為:
將目標(biāo)函數(shù)定義為極小化每個(gè)包的損失,從而降低包中數(shù)據(jù)標(biāo)注錯(cuò)誤的影響.每個(gè)包的標(biāo)簽已知,包中實(shí)例標(biāo)簽未知,訓(xùn)練過(guò)程中將包中實(shí)例在包標(biāo)簽上的最大概率作為預(yù)測(cè)輸出,則目標(biāo)函數(shù)定義為:
整個(gè)過(guò)程如算法1所示.
算法1.多實(shí)例學(xué)習(xí)1.初始化θ.將包按照bs的大小劃分成小批量.2.隨機(jī)選擇一個(gè)小批量,然后將包逐一送進(jìn)網(wǎng)絡(luò).mji(3.根據(jù)式(33)在每個(gè)包中尋找第j 個(gè)實(shí)例.1≤i≤bs)mji(4.通過(guò)Adadelta 算法,基于的梯度更新參數(shù)θ.5.重復(fù)步驟2~步驟4,直至收斂或訓(xùn)練輪數(shù)達(dá)到最大輪數(shù).1≤i≤bs)
本文數(shù)據(jù)集來(lái)源于某電網(wǎng)電力系統(tǒng)的電力調(diào)度產(chǎn)生的數(shù)據(jù).該數(shù)據(jù)集包括訓(xùn)練集和測(cè)試集兩個(gè)部分.其中訓(xùn)練集包括32.6 k 個(gè)句子,1478.6 k 個(gè)字;測(cè)試集包括2.6 k 個(gè)句子,98.5 k 個(gè)字.對(duì)于電力關(guān)系的分類,通過(guò)從電力領(lǐng)域?qū)I(yè)詞典中獲取實(shí)體以及通過(guò)百度百科爬取相關(guān)電力詞匯及信息,通過(guò)去除重復(fù)信息,選取出現(xiàn)頻率最高并且符合實(shí)際電力領(lǐng)域的實(shí)體關(guān)系如表1所示.
表1 關(guān)系分類
電力知識(shí)抽取的評(píng)價(jià)指標(biāo)有準(zhǔn)確率(P)、召回率(R)和F1 值.其中計(jì)算方式為:
其中,參數(shù)分別定義為:Tp為模型識(shí)別正確的實(shí)體個(gè)數(shù),Fp為模型識(shí)別出的不相關(guān)實(shí)體的個(gè)數(shù),Fn為相關(guān)的實(shí)體但是模型沒(méi)有識(shí)別出個(gè)數(shù).
為了驗(yàn)證模型的效果,進(jìn)行如下實(shí)驗(yàn)設(shè)置,首先應(yīng)用Word2Vec 詞向量工具進(jìn)行訓(xùn)練,模型選用Skipgram 模型.詞向量訓(xùn)練參數(shù)如表2所示.
表2 Word2Vec 訓(xùn)練參數(shù)
分別在CNN、RNN、GRU、PCNN 以及本文提出的GRU+PCNN 模型進(jìn)行實(shí)驗(yàn).為了保證結(jié)果的公平性,所有模型均采用同樣的訓(xùn)練集數(shù)據(jù),并且所有模型的參數(shù)保持一致.訓(xùn)練方式為訓(xùn)練CNN、RNN、GRU、PCNN 及GRU+PCNN 模型的所有參數(shù),參數(shù)設(shè)置如表3所示,在訓(xùn)練的過(guò)程中記錄下每一輪的訓(xùn)練后的準(zhǔn)確率.
表3 GRU+PCNN 模型訓(xùn)練參數(shù)
通過(guò)上述實(shí)驗(yàn),5 種不同模型在相同的測(cè)試集下得到的準(zhǔn)確率、召回率、F1 值如表4所示.
表4 各模型對(duì)比結(jié)果(%)
從本實(shí)驗(yàn)結(jié)果中,可以發(fā)現(xiàn),本文所采用的基于GRU和PCNN 模型無(wú)論在準(zhǔn)確率、召回率及F1 值都比其他單一神經(jīng)網(wǎng)絡(luò)模型結(jié)果更優(yōu).由于PCNN 模型通過(guò)分片最大化池及多實(shí)例學(xué)習(xí),可以更好的獲取上下文信息,使得PCNN 比GRU 可以發(fā)揮出發(fā)更好的優(yōu)勢(shì);另一方面,GRU 模型具有良好的學(xué)習(xí)依賴關(guān)系的能力.綜上,本文所才用的GRU+PCNN 模型比其他模型有明顯的提升的原因就在于GRU+PCNN 模型融合了兩個(gè)單一模型的優(yōu)點(diǎn),不僅具備了GRU的優(yōu)點(diǎn),例如學(xué)習(xí)長(zhǎng)依賴關(guān)系的能力,還具有PCNN 模型的優(yōu)點(diǎn)如提取局部重要特征的能力,因此使得本文所選用的GRU+PCNN 模型比其他單一模型無(wú)論是準(zhǔn)確率還是召回率都有明顯的提升.
本文通過(guò)將深度學(xué)習(xí)模型PCNN和雙向GRU的組合模型對(duì)于電力領(lǐng)域進(jìn)行知識(shí)抽取.該模型相比于傳統(tǒng)的基于監(jiān)督學(xué)習(xí)、機(jī)器學(xué)習(xí)及單一神經(jīng)網(wǎng)絡(luò)模型等存在的問(wèn)題加以改善,使得該模型既具有PCNN 模型的優(yōu)點(diǎn),例如PCNN 模型通過(guò)分段最大池化及多實(shí)例學(xué)習(xí)來(lái)提取句子局部最重要特征的優(yōu)點(diǎn)等,與此同時(shí)還具備GRU 模型的優(yōu)點(diǎn),例如GRU 可以學(xué)習(xí)長(zhǎng)序列依賴關(guān)系的能力.最終訓(xùn)練得到的實(shí)驗(yàn)結(jié)果相比于傳統(tǒng)模型及單一神經(jīng)網(wǎng)絡(luò)模型都有較好的結(jié)果,未來(lái)的工作將嘗試進(jìn)一步優(yōu)化模型來(lái)提高電力知識(shí)抽取的效果.