周浩軒,周筠昌,孫晶萌,陳珂
(廣東石油化工學(xué)院 計(jì)算機(jī)學(xué)院,廣東 茂名 525000)
機(jī)器問(wèn)答(QA)是借助自然語(yǔ)言處理(NLP)技術(shù),使計(jì)算機(jī)可以了解和回復(fù)人們用自然語(yǔ)言所提交的問(wèn)題[1]。傳統(tǒng)機(jī)器問(wèn)答系統(tǒng)依靠關(guān)鍵字和網(wǎng)頁(yè)超鏈接為基礎(chǔ)來(lái)實(shí)現(xiàn)。隨著時(shí)代和技術(shù)的發(fā)展,使用該方式的傳統(tǒng)搜索引擎難以滿(mǎn)足用戶(hù)的需求,為了準(zhǔn)確回答用戶(hù)提出的問(wèn)題,采用了自然語(yǔ)言搜索為主要方式,并且?guī)?lái)了更快的處理速度,讓自然語(yǔ)言搜索技術(shù)研究漸漸成為自然語(yǔ)言處理領(lǐng)域的熱門(mén)研究[2]。隨著NLP技術(shù)的發(fā)展,深度神經(jīng)網(wǎng)絡(luò)模型開(kāi)始應(yīng)用到各種自然語(yǔ)言處理任務(wù)中[3]。在機(jī)器問(wèn)答任務(wù)中使用深度神經(jīng)網(wǎng)絡(luò)模型則不需要再進(jìn)行額外的特征提取,在數(shù)據(jù)預(yù)處理后,即可以訓(xùn)練出語(yǔ)義信息豐富的詞向量,用來(lái)代替人工對(duì)詞向量進(jìn)行標(biāo)注[4]。因此,基于深度神經(jīng)網(wǎng)絡(luò)的機(jī)器問(wèn)答模型在性能上遠(yuǎn)遠(yuǎn)優(yōu)于傳統(tǒng)模型。
目前,在大量研究中采用深度神經(jīng)網(wǎng)絡(luò)作為編碼器來(lái)提取句子的特征,并用向量表示,進(jìn)一步減少人工提取特征的步驟[5]。Wang等[6]對(duì)句子進(jìn)行詞匯語(yǔ)義的分解和組合,計(jì)算每個(gè)單詞的語(yǔ)義匹配向量進(jìn)行相似度學(xué)習(xí)。Chen 等[7]提出了一個(gè)協(xié)作對(duì)抗網(wǎng)絡(luò)(CAN),通過(guò)使用一個(gè)生成器和鑒別器對(duì)兩個(gè)句子之間的共同特征進(jìn)行建模,也檢測(cè)了兩個(gè)句子中的對(duì)齊詞并吸收其上下文,進(jìn)一步對(duì)遞歸神經(jīng)網(wǎng)絡(luò)(RNN)的隱藏狀態(tài)建模。Rzayev等[8]提出了一種集成的方法,將細(xì)粒度的問(wèn)題分類(lèi)與為答案選擇任務(wù)設(shè)計(jì)的深度學(xué)習(xí)模型相集成。受到上述研究和Bert(bidirectional encoder representations from transformers)模型的啟發(fā),本文提出了一種基于Bert模型的答案選擇型機(jī)器問(wèn)答方法。
基于Bert的問(wèn)答模型不同于傳統(tǒng)模型,在不需要其他模塊的情況下可以直接向用戶(hù)輸出答案。該模型包括預(yù)處理模塊、預(yù)訓(xùn)練模塊和答案選擇模塊。預(yù)處理模塊主要處理輸入的問(wèn)題和回答,進(jìn)行分詞、刪除停止詞、低頻詞、非正式文本以及詞性替換的內(nèi)容,分詞模塊采用了jieba中文詞庫(kù)進(jìn)行分詞,在數(shù)據(jù)清洗后將處理后的句子傳遞給下一部分。預(yù)處理后,句子被送入預(yù)訓(xùn)練模型中,進(jìn)行特征提取操作,該方法可以有效地讓機(jī)器通過(guò)矩陣權(quán)重理解自然語(yǔ)言,隨后輸出的特征向量將帶有深層語(yǔ)義信息;語(yǔ)義特征向量通過(guò)進(jìn)入預(yù)訓(xùn)練Bert微調(diào)模型解碼模塊輸出,送入答案分類(lèi)模型,得到候選答案。模型架構(gòu)如圖1 所示。
圖1 基于Bert模型的機(jī)器問(wèn)答結(jié)構(gòu)
Bert的核心是一個(gè)Transformer模型,具有可變數(shù)量的編碼層和自我注意力模型。當(dāng) Bert 模型進(jìn)行預(yù)訓(xùn)練形成語(yǔ)言表示模型后,只需要對(duì)模型進(jìn)行遷移學(xué)習(xí)網(wǎng)絡(luò)訓(xùn)練,即可應(yīng)用于下游特定性語(yǔ)言處理任務(wù),對(duì)字級(jí)、句級(jí)、句對(duì)級(jí)的自然語(yǔ)言處理任務(wù)均適用。 Bert的兩個(gè)主要步驟是預(yù)訓(xùn)練和微調(diào)。預(yù)訓(xùn)練的目的是先在未標(biāo)記數(shù)據(jù)上進(jìn)行訓(xùn)練;而微調(diào)則是預(yù)訓(xùn)練會(huì)對(duì)其參數(shù)進(jìn)行初始化,再用下游任務(wù)訓(xùn)練后產(chǎn)生的標(biāo)記數(shù)據(jù)對(duì)Bert模型所有參數(shù)進(jìn)行微調(diào)[9]。
在Bert模型預(yù)訓(xùn)練主要有兩個(gè)任務(wù),分別是掩碼語(yǔ)言模型(MLM)和下一句預(yù)測(cè)(NSP)。MLM任務(wù)使用了Mask(面具)對(duì)15%已分類(lèi)的單詞進(jìn)行屏蔽,然后通過(guò)Bert模型進(jìn)行預(yù)測(cè),并利用最終的損失函數(shù)計(jì)算被遮蓋住的標(biāo)記,該任務(wù)的目的是關(guān)注語(yǔ)料集中的每個(gè)詞語(yǔ),從而得到更準(zhǔn)確的上下文的語(yǔ)義信息。NSP的目的是讓模型理解句子間的關(guān)聯(lián)性,可在任何一個(gè)級(jí)別語(yǔ)料庫(kù)進(jìn)行訓(xùn)練,對(duì)句子對(duì)A和B,B有一半的概率是緊隨A的實(shí)際下一句(IsNext),另一半概率則是語(yǔ)料庫(kù)中的隨機(jī)句子(NotNext)。將這個(gè)句子對(duì)進(jìn)行拼接時(shí)在句首添加標(biāo)識(shí)[CLS],A、B間則用標(biāo)識(shí)[SEP]分隔開(kāi)來(lái),并對(duì)[CLS]做一個(gè)二分類(lèi)任務(wù)。
長(zhǎng)短記憶網(wǎng)絡(luò)(LSTM)是循環(huán)神經(jīng)網(wǎng)絡(luò)的一種改進(jìn),通過(guò)加入細(xì)胞狀態(tài)、記憶門(mén)、遺忘門(mén)、輸出門(mén)等結(jié)構(gòu)[10],使網(wǎng)絡(luò)更適合學(xué)習(xí)長(zhǎng)距離依賴(lài)關(guān)系。
在Devlin等[10]所提方法的基礎(chǔ)上加以改進(jìn),將1.1節(jié)得到的[CLS]向量作為輸入向量送入全連接神經(jīng)網(wǎng)絡(luò)模型(FC模型)中進(jìn)行分類(lèi)(見(jiàn)圖2)。全連接的隱藏層大小為1024,輸入一維向量,長(zhǎng)度為768,輸出層大小為2。經(jīng)過(guò)Softmax函數(shù)后,以概率形式進(jìn)行輸出。對(duì)數(shù)據(jù)進(jìn)行清洗過(guò)程,此時(shí)文本數(shù)據(jù)格式進(jìn)行轉(zhuǎn)換,其表示為Input=Bertpro(Q,A);Bert模型輸入為(ECLS,E1,…,EN)=Bert(Input);FC模型的relu激活函數(shù)為HL=relu(Wh1ECLS+bh1);歸一化指數(shù)函數(shù)為f(Q,A)=Softmax(Wh2HL+bh2)。其中,Wh1∈R768×1024、Wh2∈R1024×2為FC輸出層參數(shù)矩陣;bh1∈R1024、bh2∈R2為偏置函數(shù)。
圖2 預(yù)訓(xùn)練Bert模型+FC模型結(jié)構(gòu)
模型的輸出由雙向LSTM模型中隱藏層輸出拼接而成,輸入向量在Bert模型中不同層中對(duì)預(yù)測(cè)結(jié)果會(huì)產(chǎn)生不同影響,因此,提取出Transformer模型和Bert模型中不同層的輸出向量,對(duì)這些向量合成拼接,送入BiLSTM中進(jìn)行訓(xùn)練,最終作為全連接神經(jīng)網(wǎng)絡(luò)輸入執(zhí)行分類(lèi)操作,模型結(jié)構(gòu)如圖3所示。
提取Transformer層問(wèn)答對(duì)的token向量,其輸出向量表示為T(mén)okenlayer=Bertlayer(Input)。
對(duì)不同Transformer層問(wèn)答對(duì)的token向量進(jìn)行合成拼接操作,表示為Econcat=fconcat(Tokenlayer1,…,Tokenlayern)
圖3 預(yù)訓(xùn)練Bert+BiLSTM模型結(jié)構(gòu)
將合成拼接后的向量輸入至BiLSTM網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練,得到h=BiLSTM(Econcat)。
最后,進(jìn)行最大池化操作,此時(shí)有h0=fpool(h)。
本文采用的數(shù)據(jù)集是由騰訊實(shí)驗(yàn)室提出的中文多輪話題驅(qū)動(dòng)的對(duì)話數(shù)據(jù)集Natural-Conv,它是一個(gè)針對(duì)多輪話題驅(qū)動(dòng)的情景對(duì)話的中文對(duì)話數(shù)據(jù)集,適用于模擬多輪自然對(duì)話中的話題互動(dòng),該數(shù)據(jù)集的語(yǔ)料庫(kù)中的數(shù)據(jù)是以對(duì)話為基礎(chǔ)的,基于新聞文章的內(nèi)容展開(kāi)特定的話題進(jìn)行交流。與常見(jiàn)的數(shù)據(jù)集有所不同:首先,此次對(duì)話的參與者可以談?wù)摮掝}外他們想要交流的任何事情,并且在話題間轉(zhuǎn)換十分自然;其次,該語(yǔ)料集的兩位參與者在進(jìn)行對(duì)話任務(wù)時(shí)是遵循正常邏輯的;最后,該語(yǔ)料集允許在談話中進(jìn)行閑聊和問(wèn)候。該數(shù)據(jù)集包含了約40萬(wàn)條預(yù)料和19.9萬(wàn)個(gè)對(duì)話,涉及多個(gè)領(lǐng)域,平均對(duì)話回合約20。
本實(shí)驗(yàn)采用的是Google開(kāi)放域機(jī)器問(wèn)答競(jìng)賽項(xiàng)目的金牌項(xiàng)目解決方案,模型為Bert-large ,使用與論文中頭數(shù)相同的4個(gè)注意力頭數(shù)的Transformer,全連接網(wǎng)絡(luò)寬度為512,輸入輸出均為512。
本文將Bert+FC模型在Google 的GPU上經(jīng)過(guò)50次的迭代訓(xùn)練,平均訓(xùn)練時(shí)間為680 min。設(shè)置的Epoch為50,但模型運(yùn)行時(shí),發(fā)現(xiàn)迭代次數(shù)為38次時(shí)產(chǎn)生了最優(yōu)模型,再訓(xùn)練無(wú)法更加優(yōu)化隨即停止。此時(shí),該模型在訓(xùn)練集和測(cè)試集上,損失值與訓(xùn)練迭代次數(shù)的關(guān)系如圖4所示,訓(xùn)練集和測(cè)試集上的準(zhǔn)確率與迭代次數(shù)的關(guān)系如圖5所示。
圖4 損失函數(shù)與迭代次數(shù)的關(guān)系 圖5 迭代次數(shù)與準(zhǔn)確率的提升
由圖4、圖5可知,當(dāng)訓(xùn)練次數(shù)約為38次時(shí),所得損失函數(shù)及準(zhǔn)確率趨于穩(wěn)定。
為了比較模型在不同數(shù)據(jù)集上的表現(xiàn),本文又采用了NLPCC-ICCPOL DBQA數(shù)據(jù)集。所選用的NLPCC-ICCPOL DBQA同樣是中文數(shù)據(jù)集,由人工對(duì)其進(jìn)行標(biāo)注,訓(xùn)練集和測(cè)試集分類(lèi)如表1所示。該數(shù)據(jù)集中提供的問(wèn)題,需要模型從一系列候選答案中找出正確的答案語(yǔ)句,每條數(shù)據(jù)由三個(gè)部分組成:?jiǎn)栴}、答案和標(biāo)簽,具體與Natural-Conv數(shù)據(jù)集差距不大。 在兩個(gè)數(shù)據(jù)集上,對(duì)Bert+FC模型和Bert+BiLSTM模型進(jìn)行驗(yàn)證,其結(jié)果如表2所示。
表1 訓(xùn)練集和測(cè)試集數(shù)據(jù)量訓(xùn)練集測(cè)試集Doc-Tech2394112120Doc-Edu112332232Doc-Health1226132
由表2可知,兩個(gè)模型在不同的數(shù)據(jù)集上都取得了較為優(yōu)異的成果,針對(duì)Bert+BiLSTM模型,在Natural-Conv數(shù)據(jù)集上的MRR和MAP指標(biāo)相對(duì)NLPCC-ICCPOL DBQA高出約1%,而ACC@1指標(biāo)高出約2.8%。整體而言,Bert+BiLSTM模型比Bert+FC模型表現(xiàn)更優(yōu)秀;且Bert+BiLSTM模型和Bert+FC模型在NLPCC-ICCPOL DBQA上的結(jié)果不如Natural-Conv數(shù)據(jù)集。其主要是Natural-Conv數(shù)據(jù)集訓(xùn)練數(shù)據(jù)為181882條,而NLPCC-ICCPOL DBQA訓(xùn)練數(shù)據(jù)為53417條,由此可知,訓(xùn)練數(shù)據(jù)對(duì)結(jié)果產(chǎn)生影響十分深遠(yuǎn)。
表2 采用不同數(shù)據(jù)集實(shí)驗(yàn)結(jié)果模型Natural-Conv數(shù)據(jù)集MRRMAPACC@1NLPCC-ICCPOLDBQA數(shù)據(jù)集MRRMAPACC@1Bert+FC0.8140.7750.7900.80050.80090.7139Bert+BiLSTM0.8380.8250.8490.81020.81100.7204
對(duì)比2020年Github公布在Natural-Conv數(shù)據(jù)集上最新的任務(wù)評(píng)測(cè)數(shù)據(jù),其結(jié)果如表3所示。
由表3可看出,本文提出的答案選擇模型效果相比其他大部分模型較為有效。Bert+FC模型在MRR、MAP、ACC@1三個(gè)評(píng)價(jià)指標(biāo)上較為優(yōu)異,這證明相比沒(méi)采用預(yù)訓(xùn)練Bert微調(diào)模型的其他模型,本文模型在數(shù)據(jù)處理時(shí)有更大優(yōu)勢(shì);Bert+BiLSTM模型在MRR、MAP、ACC@1三個(gè)評(píng)價(jià)指標(biāo)中與Bert+FC模型相比,不分伯仲,這證明了本文采用的基于預(yù)訓(xùn)練Bert模型微調(diào)策略的有效性。表3中的模型大多單一采用BiLSTM模型和Transformer模型作為學(xué)習(xí)模型,相比而言,本文的基于預(yù)訓(xùn)練Bert微調(diào)模型在獲取文本語(yǔ)義、上下文信息方面有著更為顯著的優(yōu)勢(shì)。
表3 Natural-Conv數(shù)據(jù)集評(píng)測(cè)任務(wù)模型MRRMAPACC@1BiMPM0.85920.85960.7906Transformer0.82690.82630.7395BiLSTM0.81200.81110.7385LSTM+Attention0.75390.75880.6373模型MRRMAPACC@1CNN0.75260.75190.6390LSTM0.74280.74220.6287Bert+FC0.81400.77500.7900Bert+BiLTSM0.83800.82500.8490
本文研究了基于Bert模型的機(jī)器問(wèn)答技術(shù),采用了預(yù)訓(xùn)練Bert模型的使用方式和微調(diào)方式,使用FC模型和BiLSTM模型與其相結(jié)合構(gòu)建出新的模型。并在Natural-Conv數(shù)據(jù)集和NLPCC-ICCPOL DBQA數(shù)據(jù)集上,對(duì)本文采用的方法和模型都做出了實(shí)驗(yàn)驗(yàn)證。結(jié)果表明,相對(duì)傳統(tǒng)的深度學(xué)習(xí)模型來(lái)說(shuō),基于預(yù)訓(xùn)練Bert模型的答案選擇模型性能有著明顯的提高。在實(shí)驗(yàn)過(guò)程中發(fā)現(xiàn)Bert預(yù)訓(xùn)練模型對(duì)數(shù)據(jù)量大小也十分敏感,但由于在微調(diào)階段參數(shù)過(guò)多,需要多次調(diào)試才能達(dá)到最佳性能。
廣東石油化工學(xué)院學(xué)報(bào)2022年6期