鄭玉昆,李 丹,范 臻,劉奕群,張 敏,馬少平
(1. 清華大學(xué) 計(jì)算機(jī)系,北京 100084;2. 阿姆斯特丹大學(xué) ILPS,荷蘭 阿姆斯特丹 1098XH)
近年來,機(jī)器閱讀理解發(fā)展迅速,成為了深度學(xué)習(xí)領(lǐng)域的熱點(diǎn)。隨著多個(gè)閱讀理解與問答數(shù)據(jù)集的發(fā)布,越來越多端到端的深度學(xué)習(xí)方法被提出,算法性能上取得了極大進(jìn)步。數(shù)據(jù)集方面,斯坦福問答數(shù)據(jù)集SQuAD[1]和微軟閱讀理解數(shù)據(jù)集MS MARCO[2]是兩個(gè)目前最為流行的真實(shí)問答數(shù)據(jù)集。其中,SQuAD屬于抽取式的問答數(shù)據(jù)集,但不同于以往類似數(shù)據(jù)集的是,SQuAD數(shù)據(jù)集涉及了多種模式的上下文邏輯推理。MS MARCO數(shù)據(jù)集從Bing搜索引擎中收集問題的文檔,答案不再具有約束,即一些答案可能由用戶撰寫,存在無法與段落完全匹配的文字或者同時(shí)包含多個(gè)段落片段。MS MARCO數(shù)據(jù)集的設(shè)置更接近真實(shí)閱讀理解與問答的情景,同時(shí)任務(wù)也更具有挑戰(zhàn)性。目前兩個(gè)數(shù)據(jù)集的最新排行榜上機(jī)器均取得了超過人類平均水平的成績,極大地推動(dòng)了深度學(xué)習(xí)在自然語言理解的發(fā)展。
此次2018機(jī)器閱讀理解技術(shù)競賽采用全新的DuReader數(shù)據(jù)集[3],與MS MARCO數(shù)據(jù)集類似,DuReader采用了來自百度搜索引擎的真實(shí)查詢詞作為問題,從搜索引擎檢索的頂部文檔中進(jìn)行答案標(biāo)注。因此,此次比賽具有更真實(shí)的任務(wù)設(shè)定,同時(shí)面臨查詢意圖模糊、多文檔、多段落、答案可能不在文檔中出現(xiàn)等多方面挑戰(zhàn)。
本文介紹了在此次比賽中我們使用的模型設(shè)計(jì)以及實(shí)驗(yàn)結(jié)果。為了應(yīng)對(duì)復(fù)雜的實(shí)驗(yàn)挑戰(zhàn),我們在R-Net模型基礎(chǔ)上設(shè)計(jì)了基于自注意力機(jī)制的多任務(wù)深度閱讀理解模型T-Reader。模型的主要擴(kuò)展有以下三點(diǎn):
(1) 在模型中加入了跨段落和跨文檔兩個(gè)級(jí)別的注意力機(jī)制,使得問題下所有的段落能夠?qū)崿F(xiàn)信息交互。
(2) 在預(yù)測答案范圍的基礎(chǔ)上加入了基于預(yù)測答案的段落排序網(wǎng)絡(luò),使用增強(qiáng)學(xué)習(xí)的方法直接優(yōu)化評(píng)價(jià)指標(biāo)。
(3) 借鑒信息檢索領(lǐng)域中排序?qū)W習(xí)(learning to rank)的常用方法,手動(dòng)提取了問題—段落精準(zhǔn)匹配特征作為額外的模型輸入,顯式地捕捉問題詞項(xiàng)在段落中的分布模式。
我們將模型分別在search和zhidao兩種數(shù)據(jù)集上單獨(dú)進(jìn)行訓(xùn)練、驗(yàn)證和測試,最終在Test v2測試集取得了Rouge-L為54.41,BLEU-4為47.77的表現(xiàn),在所有參賽隊(duì)伍中性能表現(xiàn)獲得第八名。
在斯坦福問答數(shù)據(jù)集SQuAD[1]出現(xiàn)之前,傳統(tǒng)的機(jī)器閱讀數(shù)據(jù)集主要分為兩類: (1)通過人工標(biāo)注建立的閱讀理解數(shù)據(jù)集,這種數(shù)據(jù)集一般數(shù)據(jù)規(guī)模很小,難以用于深度模型的訓(xùn)練; (2)從真實(shí)語料中抽取段落構(gòu)成的數(shù)據(jù)集,其中各個(gè)段落中部分詞匯被去除,模型的訓(xùn)練目標(biāo)為判斷句中缺失的單詞,補(bǔ)全句子。受數(shù)據(jù)規(guī)模和質(zhì)量影響,傳統(tǒng)的閱讀理解問題研究進(jìn)展緩慢。2016年發(fā)布的SQuAD真正為機(jī)器閱讀理解領(lǐng)域提供了一份數(shù)據(jù)量大且標(biāo)注可靠的真實(shí)問答類數(shù)據(jù)集,有力推動(dòng)了機(jī)器閱讀理解領(lǐng)域的研究。
另一份大規(guī)模數(shù)據(jù)集,微軟閱讀理解數(shù)據(jù)集 (MS MARCO)[2]則直接向用戶提供多個(gè)相關(guān)文檔摘要,并直接采用用戶的答案作為標(biāo)準(zhǔn)答案,這種生成式的問答問題更加貼近實(shí)際,也對(duì)問答模型的性能提出了更高的要求。
早在SQuAD數(shù)據(jù)集產(chǎn)生之前,許多團(tuán)隊(duì)已經(jīng)將深度學(xué)習(xí)方法應(yīng)用于閱讀理解的相關(guān)問題,并取得了不錯(cuò)的效果。Hermann等人受到機(jī)器翻譯和圖像識(shí)別領(lǐng)域成果的啟發(fā),第一次在機(jī)器閱讀理解領(lǐng)域引入了注意力機(jī)制(attention)的概念,進(jìn)行問題和答案對(duì)應(yīng)的向量及單個(gè)字詞的權(quán)重交互[4]。Kadlec等人在模型中引入指針網(wǎng)絡(luò)(pointer network),結(jié)合指針網(wǎng)絡(luò)和注意力機(jī)制進(jìn)行缺失單詞的預(yù)測[5]。
在SQuAD發(fā)布后,不斷有端到端的深度模型被提出。Wang和Jiang首先提出Match-LSTM模型[6],實(shí)現(xiàn)了基于單詞的帶權(quán)重匹配和單詞間的信息交互;之后他們又進(jìn)一步將指針網(wǎng)絡(luò)和Match-LSTM模型結(jié)合[7],使模型能夠預(yù)測SQuAD數(shù)據(jù)集中每一個(gè)問題對(duì)應(yīng)的最佳答案在文中的起止位置?;贛atch-LSTM和指針網(wǎng)絡(luò),微軟亞洲研究院的研究人員提出了R-Net模型[8]。R-Net模型在問題—答案注意力計(jì)算的基礎(chǔ)上又引入了自我匹配注意力機(jī)制(self-matching attention),并結(jié)合使用了詞項(xiàng)、字符兩種表示,繼續(xù)提升了模型在SQuAD和MS MARCO數(shù)據(jù)集上的效果。
為了完成MS MARCO類數(shù)據(jù)集中生成答案式的任務(wù),Tan等人在R-Net的基礎(chǔ)上又提出了S-Net[9],該模型通過提取特征-生成答案兩部分,利用已有模型和思路提取特征后,使用雙向GRU進(jìn)行答案生成。
在實(shí)現(xiàn)T-Reader的過程中我們主要參考了R-Net的模型設(shè)計(jì),包括編碼層、問題—段落匹配層、段落匹配層和指針網(wǎng)絡(luò)。除此之外,我們新加入了基于預(yù)測的答案范圍和段落文本表示的段落排序網(wǎng)絡(luò)。在實(shí)現(xiàn)T-Reader的過程中,我們也針對(duì)比賽任務(wù)進(jìn)行了特殊的設(shè)計(jì),例如,加入問題—段落精準(zhǔn)匹配信號(hào)、文檔標(biāo)題信息以及段落位置信息等。T-Reader模型框架如圖1所示。
圖1 T-Reader模型框架
對(duì)于問題和段落文本,我們采用了類似R-Net的處理方法,使用循環(huán)神經(jīng)網(wǎng)絡(luò)處理變長的詞項(xiàng)序列。循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)有很多變種,例如,LSTM和GRU等。以往工作中[8-9],GRU在效率和效果上均有很好的表現(xiàn),所以本次工作中我們也沿用了GRU作為循環(huán)神經(jīng)網(wǎng)絡(luò)的實(shí)現(xiàn)。除了詞項(xiàng)級(jí)別的表示外,R-Net還使用了字符級(jí)別的詞嵌入向量,用于表示未出現(xiàn)在詞表中的詞項(xiàng)。在實(shí)現(xiàn)過程中,囿于計(jì)算資源有限,我們沒有采用字符級(jí)詞嵌入向量。
(1)
(2)
其中,ct通過基于注意力機(jī)制的問題和段落交互得到式(8)~式(10)。
(11)
其中,ct通過基于段落的自注意力機(jī)制得到式(15)~式(17)。
特別地,為了增強(qiáng)模型對(duì)于文檔表示的學(xué)習(xí)能力,我們嘗試了多種自注意力機(jī)制的作用級(jí)別: 段落級(jí)別、文檔級(jí)別和問題級(jí)別,即分別將一個(gè)段落、文檔和問題下所有文檔作為自注意力層的輸入。經(jīng)過測試,我們最終選取了文檔級(jí)別作為最終的實(shí)現(xiàn)。盡管在我們的測試中,較高的級(jí)別帶來越好的模型表現(xiàn),但這也意味著模型需要占用越大的計(jì)算資源和越長的訓(xùn)練時(shí)間,此時(shí)的模型提升卻十分有限。為了彌補(bǔ)問題級(jí)別文檔信息交互的缺失,我們引入額外的文檔信息交互層。首先,對(duì)于文檔di={pi1,pi2,…,pis},我們將循環(huán)神經(jīng)網(wǎng)絡(luò)最后一個(gè)時(shí)刻的隱狀態(tài)作為文檔的表示oi,如式(18)所示。
oi=BiGRU(pi1,pi2,…,pis)
(18)
(19)
指針網(wǎng)絡(luò),也是模型中預(yù)測答案范圍的輸出層,我們在此部分沿用了以往工作中的常見做法。首先我們使用循環(huán)神經(jīng)網(wǎng)絡(luò)重新對(duì)段落中每個(gè)詞項(xiàng)表示進(jìn)行學(xué)習(xí),如式(20)所示。
(20)
特殊地,在初始時(shí)刻,我們使用問題向量表示rq作為GRU的初始狀態(tài),如式(21)~式(23)所示。
該網(wǎng)絡(luò)用于最小化答案質(zhì)量得分sp與段落p中當(dāng)前預(yù)測答案的Rouge-L值的誤差。
實(shí)驗(yàn)數(shù)據(jù)采用本次機(jī)器閱讀理解比賽提供的數(shù)據(jù)集DuReader,預(yù)先分為訓(xùn)練集、驗(yàn)證集和測試集三部分。數(shù)據(jù)集包含30萬問題和超過100萬文檔。每個(gè)數(shù)據(jù)樣本可以歸納為四元組: {q,t,D,A},其中q是問題,t是問題類型,D是相關(guān)文檔集合,A是人工生成的標(biāo)準(zhǔn)答案集合。問題類型包含三類: 是否類(YesNo)、實(shí)體類(Entity)、描述類(Description)。數(shù)據(jù)根據(jù)文檔來源分為search和zhidao類,分別來自百度搜索和百度知道。經(jīng)過觀察,我們發(fā)現(xiàn)兩類文本存在不同: zhidao類文檔內(nèi)容多由網(wǎng)站用戶生成,文檔平均長度更長且答案更加顯式清楚地在文中分布。
DuReader數(shù)據(jù)集的主要特點(diǎn)為答案較多樣、存在答案改寫。具體表現(xiàn)為zhidao中70.8%的問題和search中62.2%的問題都包含多個(gè)答案。答案和文檔的編輯距離較大,其中51.3%的樣本的最小編輯距離(minimum edit distance)大于10。平均來說,問題包含4.8個(gè)詞,答案包含69.6個(gè)詞,文檔包含396個(gè)詞。
實(shí)驗(yàn)采用Rouge-L和BLEU-4作為評(píng)價(jià)指標(biāo)。Rouge-L衡量準(zhǔn)確率和召回率,考察候選答案和參考答案在最長公共子序列上的準(zhǔn)確率和召回率。BLEU-4衡量準(zhǔn)確率,考察一元至四元詞匯共現(xiàn)的頻率。兩個(gè)指標(biāo)共同反映答案的可信度和可讀性。
本次實(shí)驗(yàn)我們?nèi)匀徊扇《温涑槿∵B續(xù)片段的方式得到最終的預(yù)測答案。但DuReader數(shù)據(jù)集存在答案無法與段落完全匹配的情況,因此為了驗(yàn)證答案抽取的方式能否在當(dāng)前數(shù)據(jù)上取得較好的表現(xiàn),我們在圖2中統(tǒng)計(jì)了所有問題下最佳答案片段的Rouge-L值的分布。其中,search和zhidao均有超過95%的問題能夠在文檔中找到Rouge-L大于0.7以上的連續(xù)答案片段。二者互相比較可以發(fā)現(xiàn),zhidao數(shù)據(jù)下該分布較search更為集中,超過90%的問題按照答案抽取的方式能夠找到標(biāo)準(zhǔn)答案?;谝陨戏治觯覀冋J(rèn)為答案抽取的方式可以在當(dāng)前數(shù)據(jù)集上取得較好的表現(xiàn)。
圖2 數(shù)據(jù)集search和zhidao中問題最佳抽取式答案片段的Rough-L分布
本次實(shí)驗(yàn)中,我們在全量數(shù)據(jù)集上采用在默認(rèn)參數(shù)下的Skip-gram模型訓(xùn)練得到維度為300的詞嵌入向量,依據(jù)詞頻取前50萬個(gè)詞項(xiàng)作為模型詞嵌入層的大小,未包含在詞項(xiàng)中的詞項(xiàng)統(tǒng)一記為UNK。模型基于PyTorch實(shí)現(xiàn),所有GRU均為1層,其隱向量維度為150。對(duì)于文本序列的處理,模型最多保留問題和段落的前40和500個(gè)詞項(xiàng)。模型的丟棄率(dropout rate)為0.2,初始學(xué)習(xí)率(learning rate)為0.01,優(yōu)化器使用Adadelta。模型訓(xùn)練時(shí)批處理大小(batch size)為2,使用兩個(gè)GPU加速計(jì)算。訓(xùn)練迭代10萬輪后在訓(xùn)練集和驗(yàn)證集上達(dá)到收斂,用時(shí)4天。
對(duì)于答案范圍預(yù)測網(wǎng)絡(luò),我們使用交叉熵作為損失函數(shù),如式(30)所示。
Lspan=-log(p(posstart))-log(p(posend))
(30)
其中,posstart和posend分別為全局最佳答案的起始和終止位置。對(duì)于段落排序網(wǎng)絡(luò),我們使用平均平方誤差(MSE)作為損失函數(shù),如式(31)所示。
(31)
其中,rpred為模型預(yù)測的Rouge-L值,rtarget為當(dāng)前預(yù)測答案真實(shí)的Rouge-L值。最終模型的損失函數(shù)為二者的和,如式(32)所示。
L=Lspan+Lrank
(32)
我們采用了官方提供的BiDAF和Match-LSTM模型作為基線方法。NI-Readers為本次評(píng)測第一名的方法。表1報(bào)告了T-Reader和其他基線方法在Test v2數(shù)據(jù)上的表現(xiàn), 其中,T-Readersub表示去掉段落排序網(wǎng)絡(luò)的T-Reader模型??梢钥闯?,T-Reader模型取得了優(yōu)于基準(zhǔn)模型BiDAF、Match-LSTM和R-Net的表現(xiàn),但較此次比賽的最佳方法NI-Reader仍有較大的差距。在去掉段落排序網(wǎng)絡(luò)后,T-Reader在Rouge-L和BLEU-4表現(xiàn)上均有下降,因此可以認(rèn)為基于增強(qiáng)學(xué)習(xí)的段落排序網(wǎng)絡(luò)可以提升模型效果。
表1 Rough-L和BLEU-4結(jié)果比較
我們對(duì)不同模型生成的答案進(jìn)行了樣例分析,示例如圖3所示。樣例A中T-Reader正確預(yù)測出答案,而BiDAF模型預(yù)測的答案盡管也相關(guān),但不夠簡潔。另外,我們發(fā)現(xiàn)存在部分T-Reader生成的答案在語義層面能夠被納為一個(gè)合格的答案,但在指標(biāo)上卻比較低。我們認(rèn)為這是由兩個(gè)主要原因造成的。一是文檔中具有多個(gè)答案,而人工標(biāo)注的至多三個(gè)參考答案無法完全覆蓋。例如樣例B中,T-Reader和BiDAF生成的答案從邏輯上都可以認(rèn)為是正確的,但是由于與參考答案重合較少,兩個(gè)系統(tǒng)得分較低。二是評(píng)價(jià)指標(biāo)(如Rouge-L)無法考慮語義,使得系統(tǒng)評(píng)價(jià)存在偏差。例如樣例C中,T-Reader生成的答案是不正確的,但是得分較高;而BiDAF生成的答案是正確的,但由于過多解釋性的內(nèi)容使得其得分反而降低。
圖3 答案樣例展示答案后的數(shù)字表示Rouge-L值
本次比賽我們設(shè)計(jì)并實(shí)現(xiàn)了基于自注意力機(jī)制的多任務(wù)機(jī)器閱讀模型T-Reader。在參考R-Net基礎(chǔ)上,我們在編碼層加入問題與段落精準(zhǔn)匹配信號(hào)、段落位置信息以及問題類型擴(kuò)展文本表示,在段落匹配層引入跨段落和跨文檔兩級(jí)的信息交互,同時(shí)在指針網(wǎng)絡(luò)后加入了基于強(qiáng)化學(xué)習(xí)的段落排序網(wǎng)絡(luò),進(jìn)一步提升了模型效果。
在未來工作中,我們希望能夠?qū)Χ温湮恢靡蛩貙?duì)模型效果的影響進(jìn)行分析,同時(shí)優(yōu)化模型設(shè)計(jì),減少參數(shù)數(shù)量,降低計(jì)算空間占用。