MT-BERT在文本檢索任務中的實踐

基於微軟大規模真實場景數據的閱讀理解數據集MS MARCO,美團搜索與NLP中心提出了一種針對該文本檢索任務的BERT算法方案DR-BERT,該方案是第一個在官方評測指標MRR@10上突破0.4的模型。
本文系DR-BERT算法在文本檢索任務中的實踐分享,希望對從事檢索、排序相關研究的同學能夠有所啓發和幫助。

背景

提高機器閱讀理解(MRC)能力以及開放領域問答(QA)能力是自然語言處理(NLP)領域的一大重要目標。在人工智能領域,很多突破性的進展都基於一些大型公開的數據集。比如在計算機視覺領域,基於對ImageNet數據集研發的物體分類模型已經超越了人類的表現。類似的,在語音識別領域,一些大型的語音數據庫,同樣使得了深度學習模型大幅提高了語音識別的能力。

近年來,爲了提高模型的自然語言理解能力,越來越多的MRC和QA數據集開始湧現。但是,這些數據集或多或少存在一些缺陷,比如數據量不夠、依賴人工構造Query等。針對這些問題,微軟提出了一個基於大規模真實場景數據的閱讀理解數據集MS MARCO (Microsoft Machine Reading Comprehension)[1]。該數據集基於Bing搜索引擎和Cortana智能助手中的真實搜索查詢產生,包含100萬查詢,800萬文檔和18萬人工編輯的答案。

基於MS MARCO數據集,微軟提出了兩種不同的任務:一種是給定問題,檢索所有數據集中的文檔並進行排序,屬於文檔檢索和排序任務;另一種是根據問題和給定的相關文檔生成答案,屬於QA任務。在美團業務中,文檔檢索和排序算法在搜索、廣告、推薦等場景中都有着廣泛的應用。此外,直接在所有候選文檔上進行QA任務的時間消耗是無法接受的,QA任務必須依靠排序任務篩選出排名靠前的文檔,而排序算法的性能直接影響到QA任務的表現。基於上述原因,我們主要將精力放在基於MS MARCO的文檔檢索和排序任務上。

自2018年10月MACRO文檔排序任務發佈後,迄今吸引了包括阿里巴巴達摩院、Facebook、微軟、卡內基梅隆大學、清華等多家企業和高校的參與。在美團的預訓練MT-BERT平臺[14]上,我們提出了一種針對該文本檢索任務的BERT算法方案,稱之爲DR-BERT(Enhancing BERT-based Document Ranking Model with Task-adaptive Training and OOV Matching Method)。DR-BERT是第一個在官方評測指標MRR@10上突破0.4的模型,且在2020年5月21日(模型提交日)-8月12日期間位居榜首,主辦方也單獨發表推文表示了祝賀,如下圖1所示。DR-BERT模型的核心創新主要包括領域自適應的預訓練、兩階段模型精調及兩種OOV(Out of Vocabulary)匹配方法。

圖1 官方祝賀推文及MARCO 排行榜

相關介紹

Learning to Rank

在信息檢索領域,早期就已經存在很多機器學習排序模型(Learning to Rank)用來解決文檔排序問題,包括LambdaRank[2]、AdaRank[3]等,這些模型依賴很多手工構造的特徵。而隨着深度學習技術在機器學習領域的流行,研究人員提出了很多神經排序模型,比如DSSM[4]、KNRM[5]等。這些模型將問題和文檔的表示映射到連續的向量空間中,然後通過神經網絡來計算它們的相似度,從而避免了繁瑣的手工特徵構建。

圖2 Pointwise、Pairwise、Listwise訓練的目標

根據學習目標的不同,排序模型大體可以分爲Pointwise、Pairwise和Listwise。這三種方法的示意圖如上圖2所示。其中,Pointwise方法直接預測每個文檔和問題的相關分數,儘管這種方法很容易實現,然而對於排序來說,更重要的是學到不同文檔之間的排序關係。基於這種思想,Pairwise方法將排序問題轉換爲對兩兩文檔的比較。具體來講,給定一個問題,每個文檔都會和其他的文檔兩兩比較,判斷該文檔是否優於其他文檔。這樣的話,模型就學習到了不同文檔之間的相對關係。

然而,Pairwise的排序任務存在兩個問題:第一,這種方法優化兩兩文檔的比較而非更多文檔的排序,跟文檔排序的目標不同;第二,隨機從文檔中抽取Pair容易造成訓練數據偏置的問題。爲了彌補這些問題,Listwise方法將Pairwsie的思路加以延伸,直接學習排序之間的相互關係。根據使用的損失函數形式,研究人員提出了多種不同的Listwise模型。比如,ListNet[6]直接使用每個文檔的top-1概率分佈作爲排序列表,並使用交叉熵損失來優化。ListMLE[7]使用最大似然來優化。SoftRank[8]直接使用NDCG這種排序的度量指標來進行優化。大多數研究表明,相比於Pointwise和Pairwise方法,Listwise的學習方式能夠產生更好的排序結果。

BERT

自2018年穀歌的BERT[9]的提出以來,預訓練語言模型在自然語言處理領域取得了很大的成功,在多種NLP任務上取得了SOTA效果。BERT本質上是一個基於Transformer架構的編碼器,其取得成功的關鍵因素是利用多層Transoformer中的自注意力機制(Self-Attention)提取不同層次的語義特徵,具有很強的語義表徵能力。如圖3所示,BERT的訓練分爲兩部分,一部分是基於大規模語料上的預訓練(Pre-training),一部分是在特定任務上的微調(Fine-tuning)。

圖3 BERT的結構和訓練模式

在信息檢索領域,很多研究人員也開始使用BERT來完成排序任務。比如,[10][11]就使用BERT在MS MARCO上進行實驗,得到的結果大幅超越了當時最好的神經網絡排序模型。[10]使用了Pointwise學習方式,而[11]使用了Pairwise學習方式。這些工作雖然取得了不錯的效果,但是未利用到排序本身的比較信息。基於此,我們結合BERT本身的語義表徵能力和Listwise排序,取得了很大的進步。

模型介紹

任務描述

基於DeepCT候選初篩

由於MS MARCO中的數據量很大,直接使用深度神經網絡模型做Query和所有文檔的相關性計算會消耗大量的時間。因此,大部分的排序模型都會使用兩階段的排序方法。第一階段初步篩選出top-k的候選文檔,然後第二階段使用深度神經網絡對候選文檔進行精排。這裏我們使用BM25算法來進行第一步的檢索,BM25常用的文檔表示方法包括TF-IDF等。

但是TF-IDF不能考慮每個詞的上下文語義。DeepCT[12]爲了改進這種問題,首先使用BERT對文檔單獨進行編碼,然後輸出每個單詞的重要性程度分數。通過BERT強大的語義表徵能力,可以很好衡量單詞在文檔中的重要性。如下圖4所示,顏色越深的單詞,其重要性越高。其中的“stomach”在第一個文檔中的重要性更高。

圖4 DeepCT估單詞的重要性,同一個詞在不同文檔中的重要性不同

DeepCT的訓練目標如下所示:

其中QTR(t,d)表示文檔d中單詞t的重要性分數,Qd表示和文檔d相關的問題,Q{d,t}表示文檔d對應的問題中包含單詞t的子集。輸出的分數可以當做詞頻(TF)使用,相當於對文檔的詞的重要性進行了重新估計,因此可以直接使用BM25算法進行檢索。我們使用DeepCT作爲第一階段的檢索模型,得到top-k個文檔作爲文檔候選集合D={D1,D2,…,Dk}。

領域自適應預訓練

由於我們的模型是基於BERT的,而BERT本身的預訓練使用的語料和當前的任務使用的語料並不是同一個領域。我們得出這個結論是基於對兩部分語料中top-10000高頻詞的分析,我們發現MARCO的top-10000高頻詞和BERT基線使用的語料有超過40%的差異。因此,我們有必要使用當前領域的語料對BERT進行預訓練。由於MS MARCO屬於大規模語料,我們可以直接使用該數據集中的文檔內容對BERT進行預訓練。我們在第一階段使用MLM和NSP預訓練目標函數在MS MARCO上進行預訓練。

兩階段精調

圖5 模型結構

下面介紹我們提出的精調模型,上圖5展示了我們提出的模型的結構。精調分爲兩個階段:Pointwise精調和Listwise精調。

Pointwise問題類型感知的精調

第一階段的精調,我們的目標是通過Pointwise的訓練方式建立問題和文檔的關係。我們將Query-Document作爲輸入,使用BERT對其編碼,匹配問題和文檔。考慮到問題和文檔的匹配模式和問題的類型有很大的關係,我們認爲在該階段還需要考慮問題的類型。因此,我們使用問題,問題類型和文檔一起通過BERT進行編碼,得到一個深層交互的語義表示。具體的,我們將問題類型T、問題Q和第i個文檔Di拼接成一個序列輸入,如下式所示:

其中<SEP>表示分隔符,<CLS>的位置對應的編碼表示Query-Document的關係。

經過BERT編碼後,我們取最後一層中<CLS>位置的表示hi爲Query-Document的關係表示。然後通過Softmax計算他們的得分,得到:

該分數Ti通過交叉熵損失函數進行優化。通過以上的預訓練,模型對不同的問題學到了不同的匹配模式。該階段的預訓練可以稱爲類型自適應(Type-Adaptive)模型精調。

Listwise 精調

爲了使得模型直接學習不同排序的比較關係,我們通過Listwise的方式對模型進行精調。具體的,在訓練過程中,對於每個問題,我們採樣n+個正例以及n-個負例作爲輸入,這些文檔是從候選文檔集合D中隨機產生。注意,由於硬件的限制,我們不能將所有的候選文檔都輸入到當前模型中。因此我們選擇了隨機採樣的方式來進行訓練。

和預訓練中使用BERT的方式類似,我們得到正例和負例中每個文檔的表示,hi+和hi-。然後通過一個單層感知機將上面得到的表示降維並轉換成一個分數,即:

其中W和b是模型中可學習的參數。接下來對於每個文檔的分數,我們通過一個文檔級別的比較和歸一化得到:

這一步,我們將文檔中的正例的分數和負例的分數進行比較,得到Listwise的排名分數。我通過這一步,我們得到了一個文檔排序列表,我們可以將文檔排序的優化轉化爲最大化正例的分數。因此,模型可以通過負對數似然損失優化,如下式所示:

至於爲什麼使用兩個階段的精調模型,主要出於如下兩點考慮:

  1. 我們發現首先學習問題和文檔的相關性特徵然後學習排序的特徵相比,直接學習排序特徵效果好。

  2. MARCO是標註不充分的數據集合。換句話說,許多和問題相關的文檔未被標註爲1,這些噪聲容易造成模型過擬合。第一階段的模型可以用來過濾訓練數據中的噪聲,從而可以有更好的數據監督第二階段的精調模型。

解決OOV的錯誤匹配問題

在BERT中,爲了減少詞表的規模以及解決Out-of-vocabulary(OOV)的問題,使用了WordPiece方法來分詞。WordPiece會把不在詞表裏的詞,即OOV詞拆分成片段,如圖6所示,原始的問題中包含詞“bogue”,而文檔中包含詞“bogus”。在WordPiece方法下,將“bogue”切分成”bog”和“##ue”,並且將“bogus”切分成”bog”和“##us”。我們發現,“bogus”和“bogue”是不相關的兩個詞,但是由於WordPiece切分出了匹配的片段“bog”,導致兩者的相關性計算分數比較高。

圖6 BERT WordPiece處理前/後的文本

爲了解決這個問題,我們提出了一種是對原始詞(WordPiece切詞之前)做精準匹配的特徵。所謂“精確匹配”,指的是某個詞在文檔和問題中同時出現。精準匹配是信息檢索和機器閱讀理解中非常重要的一個技術。根據以往的研究,很多閱讀理解模型加入該特徵之後都可以有一定的效果提升。具體的,在Fine-tuning階段,我們對於每個詞構造了一個精準匹配特徵,該特徵表示該單詞是否出現在問題以及文檔中。在編碼階段之前,我們就將這個特徵映射到一個向量,和原本的Embedding進行組合:

圖7 詞還原機制的工作原理

除此之外,我們還提出了一種詞還原機制如圖7所示,詞還原機制能夠將WordPiece切分的Subtoken的表示合併,從而能更好地解決OOV錯誤匹配的問題。具體來說,我們使用Average Pooling對Subtoken的表示合併作爲隱層的輸入。除此之外,如上圖7所示,我們使用了MASK處理Subtoken對應的非首位的隱層位置。值得注意的是,詞還原機制也能很好地避免模型的過擬合問題。這是因爲MARCO的集合標註是比較稀疏的,換句話說,有很多正例未被標註爲1,因此容易導致模型過擬合這些負樣本。詞還原機制一定程度上起到了Dropout的作用。

總結與展望

以上內容就對我們提出的DR-BERT模型進行了詳細的介紹。我們提出的DR-BERT模型主要採用了任務自適應預訓練以及兩階段模型精調訓練。除此之外,還提出了詞還原機制和精確匹配特徵提高OOV詞的匹配效果。通過在大規模數據集MS MARCO的實驗,充分驗證了該模型的優越性,希望這些能對大家有所幫助或者啓發。

參考文獻

[1] Payal Bajaj, Daniel Campos, et al. 2016. “MS MARCO: A Human Generated MAchine Reading COmprehension Dataset” NIPS.

[2] Christopher J. C. Burges, Robert Ragno, et al. 2006. “Learning to Rank with Nonsmooth Cost Functions” NIPS.

[3] Jun Xu and Hang Li. 2007. “AdaRank: A Boosting Algorithm for Information Retrieval”. SIGIR.

[4] Po-Sen Huang, Xiaodong He, et al. 2013. “Learning deep structured semantic models for web search using clickthrough data”. CIKM.

[5] Chenyan Xiong, Zhuyun Dai, et al. 2017. “End-to-end neural ad-hoc ranking with kernel pooling”. SIGIR.

[6] Zhe Cao, Tao Qin, et al. 2007. “Learning to rank: from pairwise approach to listwise approach”. ICML.

[7] Fen Xia, Tie-Yan Liu, et al. 2008. “Listwise Approach to Learning to Rank: Theory and Algorithm”. ICML.

[8] Mike Taylor, John Guiver, et al. 2008. “SoftRank: Optimising Non-Smooth Rank Metrics”. In WSDM.

[9] Devlin, J., Chang, M. W., Lee, K., & Toutanova, K. 2018. “Bert: Pre-training of deep bidirectional transformers for language understanding”. arXiv preprint arXiv:1810.04805.

[10] Rodrigo Nogueira and Kyunghyun Cho. 2019. “Passage Re-ranking with BERT”. arXiv preprint arXiv:1901.04085 (2019).

[11] Rodrigo Nogueira, Wei Yang, Kyunghyun Cho, and Jimmy Lin. 2019. “Multi-stage document ranking with BERT”. arXiv preprint arXiv:1910.14424 (2019).

[12] Zhuyun Dai and Jamie Callan. 2019. “Context-aware sentence/passage term importance estimation for first stage retrieval”. arXiv preprint arXiv:1910.10687 (2019)

[13] Hiroshi Mamitsuka. 2017. “Learning to Rank: Applications to Bioinformatics”.

[14] 楊揚、佳昊等. 美團BERT的探索和實踐.

作者介紹

興武,弘胤,金剛,富崢,武威等,均來自美團AI平臺/搜索與NLP中心。

特別感謝中國科學院軟件所研究員金蓓弘老師在MARCO比賽和文章撰寫過程中給予的指導和幫助。

本文轉載自公衆號美團技術團隊(ID:meituantech)。

原文鏈接

MT-BERT在文本檢索任務中的實踐

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章