(中國艦船研究院 北京 100101)
軍用公共計算環(huán)境承擔(dān)軍方計算和存儲職能,通常獨立運行,要求高可靠性、高實時性,其計算能力和數(shù)據(jù)存儲能力相對受限。而其中的定制化軟件面臨著定制化軟件之間互相沖突、軟件與底層配置不一致等常見問題的考驗,采用混合模糊匹配算法可以避免提示信息與錯誤毫無關(guān)聯(lián)的情況,提高軍用公共計算環(huán)境的可靠性,減少無效操作,彌補計算能力不足等問題。
本文提出一種基于語義及詞型的混合模糊匹配算法并形成一款軟件自修復(fù)工具。如圖1所示,其軟件安裝位置為操作系統(tǒng)之上、信息平臺集成軟件群之下。結(jié)合自更新的錯誤模型庫,配合深度學(xué)習(xí)算法開發(fā)了一款服務(wù)于軍用公共計算環(huán)境的軟件自修復(fù)工具,主要實現(xiàn)功能包括對軟件底層配置文件的自檢查,收集錯誤信息并與軟件自身模型庫進行匹配,以及部分問題的自動修復(fù)。
圖1 軍用公共計算環(huán)境架構(gòu)
圖2為軟件自修復(fù)程序運行設(shè)計思路,其軟件主要機理:根據(jù)系統(tǒng)提示錯誤信息以及當(dāng)前狀態(tài)與自身錯誤庫中數(shù)據(jù)進行模糊匹配,通過深度學(xué)習(xí)算法提供相似度最大的錯誤信息給客戶,確保報錯的準(zhǔn)確性和可讀性。最終根據(jù)輸出的錯誤與軟件解決方案庫進行匹配,向用戶提供更為詳細可讀的解決方案,并在一定權(quán)限下完成簡單錯誤的自我修復(fù)。
圖2 軟件自修復(fù)程序運行設(shè)計思路
本文所設(shè)計的針對軍用平臺的混合模糊匹配算法主要包含詞型級模糊匹配算法和語義級模糊匹配算法兩個模塊。
利用深度學(xué)習(xí)方法實現(xiàn)語義級模糊匹配算法,該軟件主要提供三種解決思路,分別是基于Skip-gram的模糊匹配算法、基于問答形式的匹配算法和DSSM深度語義匹配算法。
3.2.1 基于Skip-gram的模糊匹配算法
Word2Vec是一種經(jīng)典的語句處理算法,該方法運用了基于神經(jīng)網(wǎng)絡(luò)概率語言模型的自然語言處理技術(shù),Word2Vec詞向量語言模型就是基于神經(jīng)網(wǎng)絡(luò)概率模型,將自然語言中的字詞轉(zhuǎn)為計算機可以理解的稠密向量,本質(zhì)上是一種降維。在隱含層,通常包含CBOW技術(shù)和Skip-gram技術(shù)[3,8]。
3.2.2 基于深度學(xué)習(xí)的DSSM語義匹配算法
如圖3所示,DSSM從下往上可以分為三層結(jié)構(gòu):輸入層、表示層、匹配層。
圖3 DSSM結(jié)構(gòu)示意圖
圖4 CNN-DSSM卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)
DSSM(Deep Structured Semantic Models)的原理:通過搜索引擎里Query和Title的海量的點擊曝光日志,用DNN把Query和Title表達為低維語義向量,并通過余弦相似度距離來計算兩個語義向量的距離,最終訓(xùn)練出語義相似度模型[6]。該模型既可以用來預(yù)測兩個句子的語義相似度,又可以獲得某句子的低維語義向量表達。
本文開發(fā)的自修復(fù)軟件采用CNN-DSSM技術(shù),相比于DSSM容易產(chǎn)生的信息混淆的特點,CNN-DSSM通過卷積層提取了滑動窗口下的上下文信息,又通過池化層提取了全局的上下文信息,使得上下文信息得到較為有效的保留,能更好地保留原本語義用于匹配[7]。接下來介紹CNN-DSSM從底層到頂層三層模型的工作方式并舉例說明其處理中文語句的過程。
1)輸入層
由于本軟件的語言環(huán)境為中文,因此DSSM原本常見的英文的處理方式(word-trigramletter-trigram)需要進行修改,由于中文的粒度切分帶來的誤差是否可控一直是個難題,故只針對中文文本采用保守的中文單字切分得到的字向量(1.5萬維)作為輸入是比較可控的。
2)表示層
CNN-DSSM的表示層由一個卷積神經(jīng)網(wǎng)絡(luò)組成,如圖4所示其結(jié)構(gòu)如下。
(1)卷積層—Convolutionallayer
卷積層卷積層的作用是提取滑動窗口下的上下文特征。如上圖所示每個中文字經(jīng)過切分之后共有Q/D(Query/Doc)個單字,每個單字經(jīng)過wordhash都可以由一個小的向量表示,之后設(shè)定卷積滑動窗口大小得到featuremap矩陣,通過計算得到卷積核的數(shù)量完成到一維卷積。輸出固定維數(shù)(300)的向量表示為{ωi,bi},其中ωi表示第i層的權(quán)值 矩 陣 ,bi表 示 第 i層 的 bias項[10]。 輸 出 為ct=tanh(ωift+bi)i=2…N-1,其中N取決于神經(jīng)網(wǎng)絡(luò)深度和訓(xùn)練模型卷積層數(shù)。
(2)池化層—Maxpoolinglayer
池化層的作用是為句子找到全局的上下文特征。池化層以Max-over-timepooling的方式工作,穩(wěn)定使得每個featuremap都取最大值,得到一個300維的向量。輸出向量為v=tanh(ωict+bi)i=2…N-1。為了保證機器訓(xùn)練,要求Maxpooling層要保持固定的輸出維度,是因為下一層全連接層要求有固定的輸入層數(shù)要求。
(3)全連接層—Semanticlayer
3)匹配層
在訓(xùn)練階段,通過極大似然估計,取得最小化損失函數(shù)為
劇場里又響起一陣音樂,是那首著名的《骷髏之舞》,峰峰相連的音符串成一段又一段的高潮,不停撩撥著我心中那根脆弱的弦。
其殘差會在表示層的DNN中反向傳播,最終通過隨機梯度下降(SGD)使模型收斂,得到各網(wǎng)絡(luò)層的參數(shù){ωi,bi}。兩個需要對比的原始語句(Query和Doc)經(jīng)過匹配層處理后的語義相似性可以用這兩個語義向量(128維的余弦相似度)來表示:
通過softmax函數(shù)可以把Query與正樣本Doc的語義相似性轉(zhuǎn)化為一個后驗概率[12]:
其中r為softmax的平滑因子,R(Q,D+)為Query下的正樣本,R(Q,D')為Query下的負樣本(采取隨機負采樣),D為Query下的整個樣本空間。
考慮到詞形級匹配算法對于同義句子的匹配情況差,而詞義級匹配算法雖然能夠較好匹配同義句,但匹配時間較長,對數(shù)據(jù)要求較高。本文綜合考慮兩者的優(yōu)缺點,創(chuàng)新性地設(shè)計了混合匹配算法。其工作流程為如下。
首先輸入需要匹配的語句,系統(tǒng)所運行的軟件啟動模糊匹配功能,第一環(huán)節(jié)通過詞型匹配進行識別,如果Sim值大于等于0.9則匹配成功,輸出相應(yīng)結(jié)果;否則進行第二環(huán)節(jié)語義級匹配,通過Skip-gram以及DSSM確定結(jié)果。為了證明所設(shè)計的模糊匹配算法具有優(yōu)于任意單一類型算法的效果,本文采用公開的語料庫進行訓(xùn)練,對比詞型級匹配算法、語義級匹配算法以及混合模糊匹配算法各自的訓(xùn)練結(jié)果,通過實驗數(shù)據(jù)來證明本文提出算法的可行性以及閾值定值合理性。
該算法對于匹配準(zhǔn)確率及效率影響最為重要的參數(shù)是第一環(huán)節(jié)中詞型匹配閾值的確定方法,本文通過機器學(xué)習(xí)進行大量的語句訓(xùn)練并結(jié)合一定的數(shù)學(xué)方法,完成了從詞型級匹配轉(zhuǎn)向語義級匹配的分水嶺閾值定值。
圖5 不同閾值下各個算法精確度
圖6 不同閾值下各算法時間開銷
圖5為各算法在不同閾值情況下,10000對句子匹配準(zhǔn)確率??梢钥闯?,在閾值較低的情況下,混合算法的匹配準(zhǔn)確度較低,當(dāng)閾值在0.9左右時,開始高于兩種算法。
圖6為各算法在不同閾值情況下,對1000對句子進行匹配所需要的時間(s)。可以看出,當(dāng)閾值高于0.9時,混合算法所需的時間明顯增大。
本文以參數(shù)t表示時間參數(shù),v表示準(zhǔn)確率參數(shù),x表示兩者綜合效率參數(shù),n為樣本總數(shù),轉(zhuǎn)換公式:x=1/t+v/t+v2/t+...+vn/t,上式可以轉(zhuǎn)化為x=1/(1-v)t,當(dāng)n趨近于無窮大時,兩式等價。
圖7 各算法效率參數(shù)與準(zhǔn)確度關(guān)系圖
從圖7可以看出,在不考慮準(zhǔn)確率較低的情況下,閾值為0.5時,效率參數(shù)x取得最大值。但考慮到算法的匹配質(zhì)量,我們將閾值為0.5的情況舍棄,此時可以看出,最佳閾值取值為0.9。
通過以上理論推導(dǎo)以及實驗數(shù)據(jù)支撐可以得出結(jié)論,本文所提出的混合模糊匹配算法在詞型初篩閾值取值為0.9時,性能優(yōu)于目前常見的每種單一算法,且綜合效率值低于詞型級匹配算法高于語義級匹配算法。通過清晰的架構(gòu)與合理的流程做到了既保證精確度提升又使響應(yīng)速度在可接受范圍內(nèi)。
4.2.1 算法適用場景
場景1:艦艇??吭诟劭诨蚓嚯x距離陸基較近,有較好的網(wǎng)絡(luò)環(huán)境時,可通過公有云從公共資源池獲取訓(xùn)練數(shù)據(jù),并借助公共計算能力,對模型參數(shù)數(shù)據(jù)進行更新,同時也會將艦艇本身所獲取的新的數(shù)據(jù)傳入公有云,更新公共資源池的數(shù)據(jù)資源。模型參數(shù)更新保證了軟件自修復(fù)工具可以實時的進步,借助公有云資源池完成軟件內(nèi)錯誤描述庫的周期性更新以及下載訓(xùn)練數(shù)據(jù)對軟件內(nèi)語義級匹配算法的效果進行優(yōu)化。
場景2:當(dāng)艦艇處于執(zhí)行任務(wù)狀態(tài)時,因其距離岸基較遠,網(wǎng)絡(luò)通訊能力較差,無法有效獲取公共云的計算能力和數(shù)據(jù)。此時艦艇因計算存儲能力受限,只進行有限的數(shù)據(jù)訓(xùn)練,并在一定程度上提高使用詞型級匹配的頻次。
4.2.2 軟件自修復(fù)工具的定制化規(guī)則
根據(jù)上一節(jié)中應(yīng)用場景分析不難看出,本文所設(shè)計開發(fā)的軟件自修復(fù)工具的運行環(huán)境比較特殊,軟件需要進行一些針對性的定制來適應(yīng)其工作的軍用公共計算環(huán)境。為了解決艦艇出海執(zhí)行任務(wù)時在某些網(wǎng)絡(luò)環(huán)境較弱的情況下,相應(yīng)的計算存儲能力也收到一定的限制。為解決該問題,在DSSM模塊搭建深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)時(這個選擇也有文本轉(zhuǎn)向量特性的原因),規(guī)定卷積層搭建30~40層。這樣可以有效地降低對數(shù)據(jù)存儲能力的要求。在全連接層搭建2~3層來降低峰值計算量,緩解計算需求劇增的情況。通過實驗證實,所搭建的神經(jīng)網(wǎng)絡(luò)在處理語句的精確度和響應(yīng)速度方面均達到了理論預(yù)期的要求。
此外,該軍用公共計算環(huán)境因戰(zhàn)場信息獲取及時性、準(zhǔn)確性而要求整體具備高實時高可靠的特點,實裝軟件均針對軍用環(huán)境進行了相關(guān)調(diào)整,使其具備僅運行詞型級匹配模塊的功能,確保在特殊條件下不占用過多的計算資源。
本文基于幾種常見的模糊匹配算法,結(jié)合深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò),針對軍用公共計算環(huán)境特點設(shè)計了一種混合模糊匹配算法和相關(guān)軟件架構(gòu),開發(fā)了一款軟件自修復(fù)工具。該軟件具有清晰的設(shè)計思路、架構(gòu)方法符合軟件科學(xué)、工作邏輯縝密,通過實驗和理論推導(dǎo)證明了該軟件核心算法的性能具有一定的能效提升,通過定制化可滿足軍用需求。