蔡銀瓊,范意興,郭嘉豐,張儒清
1.中國科學(xué)院 計(jì)算技術(shù)研究所 網(wǎng)絡(luò)數(shù)據(jù)科學(xué)與技術(shù)重點(diǎn)實(shí)驗(yàn)室,北京 100190
2.中國科學(xué)院大學(xué),北京 100190
大規(guī)模的查詢-文檔檢索是搜索系統(tǒng)中的一個(gè)關(guān)鍵問題,其目的是在給定用戶查詢的情況下,從大型文檔庫中返回一組相關(guān)文檔。為了平衡搜索的效率和有效性,現(xiàn)代搜索系統(tǒng)通常在實(shí)際應(yīng)用中采用多級(jí)流水線排序架構(gòu),如圖1 所示。其中,第一階段檢索致力于從大型存儲(chǔ)庫中召回一組初始的相關(guān)文檔候選集。之后,采用多個(gè)重排序階段對(duì)相關(guān)文檔的排序列表進(jìn)行修剪和改進(jìn)。這樣的“檢索+重排序”流水線架構(gòu)已被學(xué)術(shù)界[1-2]和工業(yè)界[3]廣泛采用,并在多個(gè)信息檢索基準(zhǔn)數(shù)據(jù)集上取得了非常先進(jìn)的結(jié)果[4-5]。
圖1 現(xiàn)代信息檢索系統(tǒng)的多級(jí)流水線架構(gòu)Fig.1 Multi-stage architecture of modern information retrieval systems
長期以來,第一階段檢索一直被經(jīng)典的基于詞項(xiàng)的模型(如BM25[6])所主導(dǎo)。具體而言,查詢和文檔都采用離散的符號(hào)表示(即詞袋表示),然后利用倒排索引技術(shù)支持大規(guī)模文檔的組織和檢索。這種基于詞項(xiàng)的模型由于其簡單的邏輯和強(qiáng)大的索引而非常有效。同時(shí),它們也被證明在實(shí)際應(yīng)用中取得了良好的召回效果[2-3]。然而,這種基于詞項(xiàng)的模型存在明顯的缺點(diǎn):(1)基于符號(hào)表示,容易遭受詞匯不匹配問題[7-8];(2)基于獨(dú)立性假設(shè)并忽略詞序信息,無法很好地捕獲文檔語義信息[9]。由于這些局限,基于詞項(xiàng)的模型可能會(huì)成為一個(gè)“攔路虎”,從一開始就阻止重排序模型接觸到相關(guān)文檔,從而成為整個(gè)搜索系統(tǒng)的性能瓶頸。
為了更好地在第一階段檢索中建模語義信息,研究者們?cè)谶^去幾十年間不斷努力,提出了查詢擴(kuò)展模型[10-12]、詞項(xiàng)依賴模型[13-15]、主題模型[16-17]、翻譯模型[18-19]等早期的語義檢索模型。但是由于這些方法大多仍處于離散化的符號(hào)表征范式中,不可避免地繼承了其局限性。近年來,隨著表達(dá)學(xué)習(xí)方法在信息檢索領(lǐng)域的發(fā)展,研究者們對(duì)第一階段語義檢索模型的研究興趣呈爆炸式增長,并取得了顯著的成果[20-23]。為了滿足第一階段檢索快速、高效召回的需求,大多數(shù)情況下這些模型都采用雙編碼器(bi-encoder)架構(gòu)。它們對(duì)查詢和文檔進(jìn)行獨(dú)立的編碼,分別得到一個(gè)稠密表示向量,然后基于得到的查詢/文檔表示使用簡單的相似度函數(shù)(例如內(nèi)積和余弦相似度)計(jì)算查詢-文檔對(duì)的相關(guān)性得分。這樣的模型架構(gòu)可以對(duì)所有文檔進(jìn)行離線編碼,并利用稠密向量索引工具[24]建立索引,從而支持快速檢索。
盡管雙編碼器的結(jié)構(gòu)維持了檢索的高效性,但是相比跨編碼器(cross-encoder)卻犧牲了部分的檢索準(zhǔn)確性。一個(gè)主要的原因就是雙編碼器模型在計(jì)算查詢和文檔表示的過程中缺少兩者之間的交互信息,即在對(duì)文檔進(jìn)行獨(dú)立編碼的過程中是查詢不可知的。而通常文檔都比查詢具有更長的文本序列,包含多個(gè)不同的主題,因此只使用一個(gè)向量表示很難覆蓋文檔包含的全部信息,而且多個(gè)主題信息糅雜在一個(gè)向量表示中也會(huì)影響與查詢的相關(guān)性判斷。
為了提高基于單表達(dá)的雙編碼器模型的有效性,本文提出了基于多表達(dá)的語義檢索模型。該模型仍然采用雙編碼器架構(gòu),從而能夠保持檢索的高效性。但是對(duì)查詢和文檔使用不同的編碼模型,分別對(duì)查詢得到單個(gè)表示和對(duì)文檔得到多個(gè)表示。在計(jì)算查詢-文檔對(duì)的相似度時(shí),分別計(jì)算文檔各個(gè)表示和查詢表示之間的相似度得分,然后以最高得分作為文檔和查詢的最終相關(guān)度。進(jìn)一步,為了保證文檔多個(gè)表示之間的差異性,并能夠捕捉文檔中不同主題的信息,引入了覆蓋率(coverage)機(jī)制[25]。
為了評(píng)估本文提出的多表達(dá)模型的有效性,在MS MARCO數(shù)據(jù)集上進(jìn)行段落排序和文檔排序?qū)嶒?yàn),結(jié)果顯示本文模型相比基準(zhǔn)模型取得了明顯的性能提升。同時(shí),進(jìn)行了消融實(shí)驗(yàn)和關(guān)鍵參數(shù)分析實(shí)驗(yàn),證明了使用覆蓋率機(jī)制的多表達(dá)結(jié)構(gòu)可以有效地提高雙編碼器模型的檢索性能。本文的主要貢獻(xiàn)如下:
(1)分析了基于單表達(dá)的語義檢索模型容易存在信息丟失的缺陷性,從而影響檢索準(zhǔn)確性。
(2)提出了一種基于多表達(dá)的語義檢索模型。通過使用覆蓋率機(jī)制對(duì)文檔得到多個(gè)向量表示,從而可以在不影響雙編碼器模型的檢索效率的情況下提高雙編碼器模型的檢索性能。
(3)進(jìn)行了對(duì)比實(shí)驗(yàn),在MS MARCO 數(shù)據(jù)集上比基準(zhǔn)方法取得了更好的性能,證明了本文所提方法的有效性。
本章簡要回顧與第一階段語義檢索相關(guān)的工作,包括早期的語義檢索模型和最近的基于神經(jīng)網(wǎng)絡(luò)的語義檢索模型。
從20世紀(jì)90年代到21世紀(jì)初,人們對(duì)提升基于詞項(xiàng)的檢索方法進(jìn)行了廣泛的研究,這里簡要介紹其中一些較為經(jīng)典的方法。
為了彌補(bǔ)查詢和文檔之間的不匹配,可以使用查詢擴(kuò)展技術(shù)[26]從外部資源中選擇詞匯來擴(kuò)展原始查詢。查詢擴(kuò)展方法有很多種,一般可以分為全局方法[10-11]和局部方法[27-28]。全局方法通過分析被檢索語料庫中的詞匯共現(xiàn)或使用手工制作的同義詞庫(例如WordNet)來擴(kuò)展或重新格式化查詢?cè)~[29]。另一方面,局部方法根據(jù)原始查詢檢索到的排名靠前的文檔調(diào)整查詢,這種查詢擴(kuò)展通常被稱為偽相關(guān)反饋(pseudo-relevance feedback,PRF)[30]。查詢擴(kuò)展方法在信息檢索應(yīng)用中得到了廣泛的研究和應(yīng)用,但它們并不總是能得到一致的提升,尤其是基于偽相關(guān)反饋的方法更容易出現(xiàn)查詢漂移問題[31]。
另一個(gè)研究方向關(guān)注詞與詞之間的語義關(guān)系,通常通過建立詞的共現(xiàn)關(guān)系來發(fā)現(xiàn)文本中潛在的主題,并根據(jù)主題信息進(jìn)行查詢和文檔的匹配。主題建模方法在自然語言處理(natural language processing,NLP)任務(wù)中受到了廣泛關(guān)注??偟膩碚f,它們可以分為兩類,包括概率方法和非概率方法。應(yīng)用主題模型提高檢索效果的研究主要有兩種。第一種是首先獲取主題空間中的查詢和文檔表示,然后根據(jù)主題表示計(jì)算查詢-文檔對(duì)的相關(guān)度[17]。另一種是將主題模型與基于詞項(xiàng)的方法相結(jié)合。一種簡單而直接的做法是將主題模型和基于詞項(xiàng)的模型計(jì)算出的相關(guān)性分?jǐn)?shù)線性組合起來[32],另外也可以把概率主題模型作為信息檢索語言模型的平滑方法[33]。
解決詞匯不匹配問題的另一個(gè)嘗試是統(tǒng)計(jì)翻譯方法。統(tǒng)計(jì)機(jī)器翻譯(statistical machine translation,SMT)通過將查詢視為一種語言的文本,將文檔視為另一種語言的文本來實(shí)現(xiàn)信息檢索。Berger 和Lafferty[18]首先提出將檢索任務(wù)描述為統(tǒng)計(jì)機(jī)器翻譯問題,以條件概率P(d|q)將查詢q轉(zhuǎn)化為文檔d。翻譯概率可以通過查詢與其相關(guān)文檔來估計(jì),例如點(diǎn)擊數(shù)據(jù)集。然而,由于數(shù)據(jù)稀疏性,統(tǒng)計(jì)機(jī)器翻譯模型通常難以訓(xùn)練,而且在大多數(shù)情況下都沒有比基于偽相關(guān)反饋的詞項(xiàng)檢索更有效[12],因此統(tǒng)計(jì)機(jī)器翻譯模型在信息檢索領(lǐng)域并沒有得到太廣泛的應(yīng)用。
2016年之后,隨著深度神經(jīng)模型在重排序階段的語義建模中顯示出強(qiáng)大的能力,將深度學(xué)習(xí)技術(shù)應(yīng)用于第一階段檢索的研究激增,并取得了初步的效果[20-23]。
其中一條研究路線是改進(jìn)傳統(tǒng)離散符號(hào)表示范式中的文本表示[20-21,34],即利用神經(jīng)網(wǎng)絡(luò)模型對(duì)基于詞項(xiàng)的方法的加權(quán)機(jī)制進(jìn)行改進(jìn)。這種方法在仍然采用基于稀疏詞項(xiàng)檢索的情況下,在構(gòu)建文檔索引之前利用神經(jīng)網(wǎng)絡(luò)模型重新評(píng)估文檔中出現(xiàn)的詞項(xiàng)的重要性,而不是使用預(yù)定義的啟發(fā)式函數(shù)。例如,Dai和Callan[20]提出了一個(gè)基于BERT 的框架(DeepCT)來評(píng)估文檔中詞項(xiàng)的重要性,然后用預(yù)測(cè)的詞項(xiàng)權(quán)重替換倒排索引中的原始TF(term frequency)字段。除了顯式地預(yù)測(cè)詞項(xiàng)的權(quán)重外,另一種方法是使用額外的詞項(xiàng)來擴(kuò)充文檔,這樣就可以在倒排索引中提升關(guān)鍵詞項(xiàng)的權(quán)重。例如,doc2query[34]模型基于查詢-文檔對(duì)訓(xùn)練seq2seq模型,對(duì)給定文檔生成對(duì)應(yīng)的查詢,形成擴(kuò)展文檔,然后依賴BM25 算法從擴(kuò)展文檔的集合中進(jìn)行檢索。Bai 等人[21]結(jié)合了權(quán)重評(píng)估和詞項(xiàng)擴(kuò)展兩種思想,提出了一個(gè)新的SparTerm 框架。它利用預(yù)先訓(xùn)練好的語言模型將基于頻率的詞袋表示映射到整個(gè)詞匯表中稀疏的詞項(xiàng)重要性分布,這樣它可以同時(shí)學(xué)習(xí)已有詞項(xiàng)的權(quán)重,并為文檔擴(kuò)展新的詞項(xiàng)。實(shí)驗(yàn)結(jié)果表明,這些方法有效地改進(jìn)了基于詞項(xiàng)的第一階段檢索方法。
另一種方法拋棄了稀疏表示范式,使用稠密表示范式形成一系列新的語義檢索模型[22-23]。為了支持高效的檢索,這類方法往往需要通過近似最近鄰算法[35-36]進(jìn)行索引和檢索。為了滿足第一階段檢索高效性的需求,稠密檢索模型通常采用雙編碼器架構(gòu),它由接受不同輸入(查詢和文檔)并獨(dú)立學(xué)習(xí)單獨(dú)的稠密嵌入的雙網(wǎng)絡(luò)組成,然后將學(xué)習(xí)到的稠密表示輸入到匹配層,該匹配層通常通過簡單的相似性函數(shù)來實(shí)現(xiàn),以產(chǎn)生最終的相關(guān)性得分。例如,DPR(dense passage retriever)[22]模型基于BERT 雙編碼器來學(xué)習(xí)文本塊的稠密嵌入?;贒PR 模型的檢索器在開放域問答數(shù)據(jù)集上取得了優(yōu)于Lucene BM25系統(tǒng)的效果,并有利于提高端到端的問答性能。與DPR相似,RepBERT[23]模型采用基于BERT 的雙編碼器來獲得查詢和文檔表示,然后將查詢和文檔表示的內(nèi)積作為相關(guān)性得分。實(shí)驗(yàn)結(jié)果表明,RepBERT算法在MS MARCO段落排序任務(wù)上優(yōu)于BM25算法。
本章將介紹本文提出的基于多表達(dá)的語義檢索模型。首先介紹第一階段檢索任務(wù)的問題形式化,然后介紹多表達(dá)檢索模型,最后介紹模型的訓(xùn)練方法和在線檢索方法。
給定一個(gè)查詢q,第一階段檢索的目的是從一個(gè)大型語料庫C={d1,d2,…,dN}中召回所有潛在相關(guān)的文檔。形式上,給定一個(gè)數(shù)據(jù)集,其中qi表示用戶查詢,Di=[di1,di2,…,dik]表示查詢qi的文檔列表,并且Yi=[yi1,yi2,…,yik]∈R 是Di中每個(gè)文檔對(duì)應(yīng)的相關(guān)性標(biāo)簽。注意,因?yàn)椴豢赡苁謩?dòng)標(biāo)注所有的大量文檔,這里每個(gè)查詢的帶標(biāo)簽的文檔數(shù)k通常明顯小于語料庫大小N。第一階段檢索的目標(biāo)是從D 學(xué)習(xí)一個(gè)模型s(·,·),該模型給相關(guān)的(q,d)對(duì)高分,給不相關(guān)的低分。然后,對(duì)于任何查詢-文檔對(duì)(q,d),s(q,d)給出一個(gè)反映q和d之間相關(guān)度的分?jǐn)?shù),從而可以根據(jù)預(yù)測(cè)的分?jǐn)?shù)對(duì)語料庫C中的所有文檔進(jìn)行排序。
和典型的雙編碼器架構(gòu)相同,本文提出的多表達(dá)檢索模型的基本架構(gòu)如圖2所示。它主要由編碼模塊、聚合模塊和匹配模塊三個(gè)模塊組成。編碼模塊由兩個(gè)編碼器網(wǎng)絡(luò)組成,分別接收查詢和文檔的詞序列輸入,然后對(duì)其進(jìn)行獨(dú)立的上下文編碼。聚合模塊接收編碼器的輸出,對(duì)查詢得到一個(gè)全局表示向量,對(duì)文檔得到多個(gè)全局表示向量。匹配模塊基于查詢表示和文檔表示,使用簡單的相似度函數(shù)計(jì)算查詢-文檔對(duì)的相關(guān)性得分。
圖2 模型架構(gòu)Fig.2 Model architecture
2.2.1 編碼模塊
編碼模塊由查詢編碼器和文檔編碼器兩個(gè)網(wǎng)絡(luò)組成,它們的輸入分別是查詢和文檔的詞序列q={q1,q2,…,qn}和d={d1,d2,…,dm},其中n和m分別是查詢和文檔的長度。對(duì)于查詢編碼器和文檔編碼器,本文采用BERT模型[37],且兩個(gè)編碼器的參數(shù)是共享的。
BERT 的模型結(jié)構(gòu)主要分為兩部分,包括詞嵌入層和編碼層。詞嵌入層部分的目的在于將查詢和文檔中的離散符號(hào)映射到稠密的實(shí)值向量空間。BERT使用多種詞嵌入方式,包括:詞義向量,每個(gè)詞對(duì)應(yīng)一個(gè)向量;位置向量,每個(gè)位置對(duì)應(yīng)一個(gè)向量;段向量,區(qū)分詞來自查詢還是文檔。將這三個(gè)向量相加可以獲得一個(gè)詞的最終向量表達(dá)。編碼層在詞向量的基礎(chǔ)上通過全連接和自我注意力機(jī)制,對(duì)詞向量進(jìn)行變換。BERT 中采用多層Transformer 單元的堆疊,每個(gè)單元中采用多頭的注意力機(jī)制和殘差連接機(jī)制,并加入層歸一化機(jī)制。在自我注意力機(jī)制之后通過全連接結(jié)構(gòu)把向量重新投影。
2.2.2 聚合模塊
聚合模塊接收編碼模塊的輸出,得到查詢和文檔的最終向量表示。
對(duì)于查詢,它通常的文本序列都比較短,并且有較為集中的主題,因此直接將BERT 模型輸出中[CLS]對(duì)應(yīng)的編碼表示作為整個(gè)查詢的向量表示eq。
對(duì)于文檔,它通常很長,并且包含多個(gè)主題的信息。因此只使用單個(gè)向量表示很難覆蓋整個(gè)文檔的內(nèi)容,并且把不同主題的信息糅雜在單個(gè)向量中也會(huì)影響與查詢向量的匹配過程?;诖藙?dòng)機(jī),將文檔詞嵌入序列聚合得到多個(gè)向量表示,具體的計(jì)算方式如下所示:
其中,k是一個(gè)超參數(shù),表示每個(gè)文檔的向量表示個(gè)數(shù)。而且
其中,σ表示softmax函數(shù),cj∈Rh×1是第j個(gè)注意力層的參數(shù)。
但是,直接使用多個(gè)注意力層將文檔詞嵌入序列聚合得到多個(gè)向量表示很難保證不同向量之間的差異性。為了使不同的向量表示覆蓋文檔不同部分的信息,引入了覆蓋率機(jī)制[25]。具體地,記錄歷史j個(gè)注意力權(quán)重分布的累計(jì),即:
在計(jì)算第j+1 個(gè)文檔向量表示時(shí),通過式(2)得到后,用歷史累計(jì)注意力權(quán)重分布更新本次的注意力權(quán)重分布:
2.2.3 匹配模塊
通過聚合模塊,得到查詢q的單個(gè)向量表示eq和文檔d的多個(gè)向量表示??紤]到第一階段檢索對(duì)效率的要求,只能使用簡單的相似度計(jì)算函數(shù)。這里使用內(nèi)積函數(shù)計(jì)算向量之間的相似度得分,即:
在訓(xùn)練過程中,使用交叉熵?fù)p失函數(shù)來優(yōu)化所提出模型中的所有參數(shù),即:
其中,q表示查詢,d+是q的相關(guān)文檔,D-是q的不相關(guān)文檔集。本文使用兩種負(fù)樣本采樣策略來構(gòu)造不相關(guān)文檔集。其中一種是使用BM25 召回的排名靠前的不相關(guān)文檔作為難負(fù)樣本,另一種是使用訓(xùn)練時(shí)當(dāng)前批量內(nèi)其他查詢對(duì)應(yīng)的文檔作為隨機(jī)負(fù)樣本。整個(gè)優(yōu)化過程使用標(biāo)準(zhǔn)的梯度下降算法。
一旦模型訓(xùn)練完成,就可以對(duì)文檔集合中所有的文檔離線計(jì)算它們對(duì)應(yīng)的向量表示。為了支持快速檢索,一般需要借助稠密向量索引工具,例如Faiss,對(duì)這些文檔建立索引。在在線檢索過程中,當(dāng)一個(gè)新的查詢到來時(shí),首先使用查詢編碼器得到查詢的向量表示,然后再借助索引工具進(jìn)行文檔檢索。
但是,一般的索引工具僅支持內(nèi)積或歐氏距離等基本相似度計(jì)算函數(shù),無法直接進(jìn)行式(5)的計(jì)算。因此,在實(shí)際應(yīng)用時(shí),首先對(duì)每個(gè)文檔及其所有表示建立映射關(guān)系。然后在建立索引時(shí),將每個(gè)向量表示視為一個(gè)索引單位。在檢索過程中,計(jì)算查詢表示和每個(gè)向量表示的內(nèi)積,返回最大的top-k個(gè)向量表示編號(hào),然后再映射回文檔編號(hào)并進(jìn)行去重處理。
本章介紹具體的實(shí)驗(yàn)設(shè)置及結(jié)果分析,以驗(yàn)證所提方法的有效性。
MS MARCO[4]是微軟推出的一個(gè)段落和文檔排序數(shù)據(jù)集。段落排序任務(wù)的重點(diǎn)是對(duì)包含大約880 萬個(gè)段落的集合進(jìn)行排序。段落排序任務(wù)提供了約80.8 萬個(gè)查詢和相關(guān)段落對(duì)用于監(jiān)督模型訓(xùn)練。每個(gè)查詢與稀疏的相關(guān)性判斷相關(guān)聯(lián),其中一個(gè)(或極少數(shù)個(gè))段落被標(biāo)記為相關(guān),沒有任何段落被明確表示為不相關(guān)。文檔排序任務(wù)的重點(diǎn)是對(duì)完整文檔進(jìn)行排序,其中包含相關(guān)段落的文檔被假定為相關(guān)文檔。整個(gè)文檔集合包含大約300 萬個(gè)文檔,訓(xùn)練集包含了大約36.7 萬個(gè)查詢。這兩個(gè)任務(wù)所用數(shù)據(jù)集的具體統(tǒng)計(jì)信息如表1所示。
表1 MS MARCO數(shù)據(jù)集的統(tǒng)計(jì)信息Table 1 Statistics of MS MARCO dataset
對(duì)于段落排序任務(wù),使用官方指標(biāo)MRR@10(mean reciprocal rank)。對(duì)于文檔排序任務(wù),使用官方指標(biāo)MRR@100。除了排序指標(biāo)MRR 外,對(duì)于第一階段檢索,召回能力也是一個(gè)很重要的評(píng)價(jià)標(biāo)準(zhǔn),因此還對(duì)段落排序任務(wù)和文檔排序任務(wù)分別增加了Recall@1000和Recall@100的評(píng)價(jià)指標(biāo)。
為了驗(yàn)證本文所提出模型的有效性,使用一些經(jīng)典的檢索算法和前沿的語義檢索算法作為在上述數(shù)據(jù)集上評(píng)價(jià)的基準(zhǔn)方法。這些算法的介紹如下:
(1)BM25[6]是一個(gè)經(jīng)典的概率檢索模型,通常作為檢索任務(wù)的一個(gè)強(qiáng)基準(zhǔn)模型。
(2)DeepCT[20]使用BERT模型預(yù)測(cè)段落中出現(xiàn)的每個(gè)詞的權(quán)重,并使用這些權(quán)重替換倒排索引中的TF 字段,然后再使用BM25模型進(jìn)行檢索。
(3)HDCT[38]類似于DeepCT 模型,區(qū)別在于它是一個(gè)用來學(xué)習(xí)長文檔中的詞項(xiàng)權(quán)重的模型。首先估計(jì)段落級(jí)詞項(xiàng)的權(quán)重,然后通過加權(quán)求和將段落級(jí)詞項(xiàng)權(quán)重合并為文檔級(jí)詞項(xiàng)權(quán)重。
(4)Doc2query[34]使用生成模型對(duì)每個(gè)文檔生成多個(gè)查詢,并使用這些生成結(jié)果擴(kuò)展原始文檔。然后再基于這些擴(kuò)展后的文檔,使用BM25進(jìn)行檢索。
(5)SparTerm[21]利用BERT 模型將基于詞頻的詞袋表示映射到整個(gè)詞匯表空間的詞項(xiàng)重要性分布。這樣可以同時(shí)學(xué)習(xí)已有詞項(xiàng)的權(quán)重,并為文檔擴(kuò)展新的詞項(xiàng)。
(6)RepBERT[23]是一個(gè)典型的基于雙編碼器的語義檢索模型。它使用BERT模型作為編碼器,分別對(duì)查詢和文檔得到一個(gè)向量表示,然后使用內(nèi)積計(jì)算查詢-文檔對(duì)的相關(guān)度。
本文使用Anserini 工具包[39]進(jìn)行BM25 檢索,使用PyTorch 框架實(shí)現(xiàn)本文提出的模型。對(duì)于本文模型,使用BERT-base模型進(jìn)行編碼器部分的初始化,其他模塊的參數(shù)使用PyTorch 中默認(rèn)的初始化函數(shù)進(jìn)行初始化。BERT-base模型有12層Transformer單元,隱含層維度為768,多頭注意力機(jī)制的頭數(shù)為12。對(duì)于段落排序任務(wù),將k設(shè)置為4,對(duì)于文檔排序,設(shè)置k為8。對(duì)于查詢,將其截?cái)嗷蛱畛涞?2 個(gè)詞。對(duì)于段落和文檔,分別將其截?cái)嗷蛱畛涞?56 和512 個(gè)詞。使用AdamW 算法進(jìn)行模型的優(yōu)化,批量大小設(shè)為32。
本文使用Faiss[24]工具包來支持大規(guī)模相似向量的檢索。具體地,使用IVFPQ(inverted file system product quantization)索引方式。在索引創(chuàng)建時(shí),將向量劃分成16 個(gè)子向量,簇的個(gè)數(shù)設(shè)置為2 000。對(duì)于在線檢索過程,對(duì)每個(gè)查詢向量,搜索最近的10 個(gè)簇進(jìn)行匹配,并返回規(guī)定數(shù)量的排名靠前的文檔。
表2 給出了不同模型在段落排序任務(wù)上的評(píng)估結(jié)果。從結(jié)果中可以看出,所有的語義檢索模型相比傳統(tǒng)的基于詞項(xiàng)的BM25 模型在Recall 和MRR 指標(biāo)上都有明顯的性能提升。在所有的基于語義檢索的基準(zhǔn)模型中,基于雙編碼器架構(gòu)的RepBERT 模型相比DeepCT、Doc2query 和SparTerm 模型取得了更好的結(jié)果。但是,相比使用單個(gè)表示的RepBERT 模型,本文提出的基于多表示的模型有進(jìn)一步的性能提高,在Recall@1000和MRR@10 指標(biāo)上相比基準(zhǔn)模型都取得了明顯的性能優(yōu)勢(shì)。
表2 段落排序任務(wù)上各模型的性能對(duì)比Table 2 Performance comparison of models on passage ranking task
表3 展示了不同模型在文檔排序任務(wù)上的評(píng)估結(jié)果。與段落排序任務(wù)相同,所有的語義檢索模型相比基于詞項(xiàng)的BM25 模型在Recall 和MRR 指標(biāo)上都有明顯的性能提升。但是,在所有的基于語義檢索的基準(zhǔn)模型中,基于雙編碼器架構(gòu)的RepBERT 模型相比HDCT 和SparTerm 沒有明顯的性能優(yōu)勢(shì)。這可能是因?yàn)樵谖臋n排序任務(wù)中,文檔長度更長,包含的信息量更大,而RepBERT模型將文檔壓縮成一個(gè)向量表示,容易造成嚴(yán)重的信息損失,從而影響檢索結(jié)果。同樣在雙編碼器框架下,本文提出的多表達(dá)語義檢索模型相比所有的語義檢索基準(zhǔn)模型可以取得明顯的性能優(yōu)勢(shì),說明了基于多表達(dá)的語義檢索模型的有效性。
表3 文檔排序任務(wù)上各模型的性能對(duì)比Table 3 Performance comparison of models on document ranking task
為了進(jìn)一步分析本文提出的多表達(dá)語義檢索模型的有效性,在段落排序任務(wù)數(shù)據(jù)集上進(jìn)行消融實(shí)驗(yàn)。
依次對(duì)本文提出的多表達(dá)語義檢索模型去掉覆蓋率機(jī)制(-coverage),去掉多表達(dá)聚合模塊并將文檔聚合模塊使用與查詢聚合模塊一樣的方式(-multi-rep)。
如表4所示,如果去掉coverage機(jī)制,模型會(huì)有明顯的性能下降。說明如果對(duì)段落文本聚合的幾個(gè)向量表示不加任何約束,則使用多個(gè)向量表示相比只使用一個(gè)向量表示所能提供的增益非常有限。這很可能是因?yàn)槟P透菀壮蛭臋n的多個(gè)向量表示比較接近的方向收斂,而加入覆蓋率機(jī)制可以有效地解決這個(gè)問題。
表4 段落排序任務(wù)消融實(shí)驗(yàn)結(jié)果Table 4 Results of ablation experiment on passage ranking task
進(jìn)一步地,將多表達(dá)的文檔聚合模塊替換成與查詢聚合模塊一樣的方式,即直接取BERT 輸出的[CLS]處的向量作為文檔表示。表4中的結(jié)果顯示,模型的性能會(huì)繼續(xù)下降,這表明了對(duì)文檔使用多個(gè)向量表示的有效性。
在本文提出的多表達(dá)語義檢索模型中,文檔聚合成多個(gè)表達(dá)的個(gè)數(shù)k是一個(gè)非常關(guān)鍵的參數(shù)。因此,在段落排序和文檔排序任務(wù)上對(duì)不同的k值進(jìn)行分析,實(shí)驗(yàn)結(jié)果如圖3和圖4所示。
圖3 性能隨段落表示向量個(gè)數(shù)的變化Fig.3 Performance over different number of passage representation vectors
圖4 性能隨文檔表示向量個(gè)數(shù)的變化Fig.4 Performance over different number of document representation vectors
從結(jié)果可以看出,在兩個(gè)任務(wù)上,模型性能隨著k值的變化所呈現(xiàn)的趨勢(shì)相似。隨著k值的增加,模型的MRR 指標(biāo)會(huì)先升高,再逐漸下降。如果設(shè)置較低的k值,比如對(duì)文檔排序任務(wù)設(shè)置k值為4,則模型的性能提升并不十分明顯。對(duì)于段落排序和文檔排序任務(wù),最優(yōu)的k值分別為4 和16。這是因?yàn)槲臋n排序任務(wù)的文檔長度(平均約為1 129)相比段落排序任務(wù)的文檔長度(平均約為57)更大,長文檔包含更多的信息和更多、更分散的主題,因此需要聚合成的表達(dá)個(gè)數(shù)更多。
需要注意的是,如果將k設(shè)置得過大(例如對(duì)文檔排序任務(wù)設(shè)置k值為32),模型的性能會(huì)變差。這是因?yàn)槿绻O(shè)置k值大于最優(yōu)值,則文檔內(nèi)表達(dá)同一個(gè)主題的內(nèi)容可能被強(qiáng)制分散到多個(gè)表達(dá)中,導(dǎo)致在檢索過程中查詢向量僅可見少量的文檔信息,從而無法將相關(guān)文檔排到靠前的位置。為了進(jìn)一步驗(yàn)證該結(jié)果,計(jì)算了在k值逐漸增加時(shí),所產(chǎn)生的文檔多個(gè)表達(dá)之間的最小余弦相似度的變化情況。圖5 展示了在文檔排序任務(wù)上的實(shí)驗(yàn)結(jié)果。從結(jié)果可以看到,一旦k值大于最優(yōu)值,文檔各表達(dá)之間的最小相似度會(huì)出現(xiàn)急劇下降。
圖5 文檔表達(dá)間的最小相似度隨文檔表示向量個(gè)數(shù)的變化Fig.5 Minimum similarity between document representations over different number of document representation vectors
本文提出了基于多表達(dá)的第一階段語義檢索模型。該模型使用雙編碼器架構(gòu),將查詢和文檔分別表示成一個(gè)向量表達(dá)和多個(gè)向量表達(dá),從而解決了基于單表達(dá)的模型存在的文檔信息丟失問題。進(jìn)一步地,為了保證文檔的多個(gè)向量表示之間的差異性,并能夠覆蓋文檔中不同主題的信息,在文檔的聚合模塊引入了覆蓋率機(jī)制。在MS MARCO 數(shù)據(jù)集的段落排序和文檔排序任務(wù)上進(jìn)行了詳盡的實(shí)驗(yàn)驗(yàn)證,本文模型相比以往的語義檢索模型都取得了更好的結(jié)果。通過對(duì)模型進(jìn)行消融分析和關(guān)鍵參數(shù)分析,進(jìn)一步驗(yàn)證了多表達(dá)機(jī)制和覆蓋率機(jī)制的有效性。
在未來的工作中,將會(huì)探索設(shè)計(jì)可學(xué)習(xí)的模型,針對(duì)不同的文檔預(yù)測(cè)最優(yōu)的向量表達(dá)個(gè)數(shù),從而進(jìn)一步提高檢索性能。