引言

美團搜索是美團App上最大的連接人和服務的入口,覆蓋了團購、外賣、電影、酒店、買菜等各種生活服務。隨着用戶量快速增長,越來越多的用戶在不同場景下都會通過搜索來獲取自己想要的服務。理解用戶Query,將用戶最想要的結果排在靠前的位置,是搜索引擎最核心的兩大步驟。但是,用戶輸入的Query多種多樣,既有商戶名稱和服務品類的Query,也有商戶別名和地址等長尾的Query,準確刻畫Query與Doc之間的深度語義相關性至關重要。基於Term匹配的傳統相關性特徵可以較好地判斷Query和候選Doc的字面相關性,但在字面相差較大時,則難以刻畫出兩者的相關性,比如Query和Doc分別爲“英語輔導”和“新東方”時兩者的語義是相關的,使用傳統方法得到的Query-Doc相關性卻不一致。

2018年底,以Google BERT[1]爲代表的預訓練語言模型刷新了多項NLP任務的最好水平,開創了NLP研究的新範式:即先基於大量無監督語料進行語言模型預訓練(Pre-training),再使用少量標註語料進行微調(Fine-tuning)來完成下游的NLP任務(文本分類、序列標註、句間關係判斷和機器閱讀理解等)。美團AI平臺搜索與NLP部算法團隊基於美團海量業務語料訓練了MT-BERT模型,已經將MT-BERT應用到搜索意圖識別、細粒度情感分析、點評推薦理由、場景化分類等業務場景中[2]。

作爲BERT的核心組成結構,Transformer具有強大的文本特徵提取能力,早在多項NLP任務中得到了驗證,美團搜索也基於Transformer升級了核心排序模型,取得了不錯的研究成果[3]。爲進一步優化美團搜索排序結果的深度語義相關性,提升用戶體驗,搜索與NLP部算法團隊從2019年底開始基於BERT優化美團搜索排序相關性,經過三個月的算法迭代優化,離線和線上效果均取得一定進展,本文主要介紹BERT在優化美團搜索核心排序上的探索過程以及實踐經驗。

BERT簡介

近年來,以BERT爲代表的預訓練語言模型在多項 NLP 任務上都獲得了不錯的效果。下圖1簡要回顧了預訓練語言模型的發展歷程。2013年,Google提出的 Word2vec[4]通過神經網絡預訓練方式來生成詞向量(Word Embedding),極大地推動了深度自然語言處理的發展。針對Word2vec生成的固定詞向量無法解決多義詞的問題,2018年,Allen AI團隊提出基於雙向LSTM網絡的ELMo[5]。ELMo根據上下文語義來生成動態詞向量,很好地解決了多義詞的問題。2017年底,Google提出了基於自注意力機制的Transformer[6]模型。

相比RNN模型,Transformer語義特徵提取能力更強,具備長距離特徵捕獲能力,且可以並行訓練,在機器翻譯等NLP任務上效果顯著。Open AI團隊的GPT[7]使用Transformer替換RNN進行深層單向語言模型預訓練,並通過在下游任務上Fine-tuning驗證了Pretrain-Finetune範式的有效性。在此基礎上,Google BERT引入了MLM(Masked Language Model)及NSP(Next Sentence Prediction,NSP)兩個預訓練任務,並在更大規模語料上進行預訓練,在11項自然語言理解任務上刷新了最好指標。BERT的成功啓發了大量後續工作,總結如下:

  • 融合更多外部知識的百度ERNIE[8], 清華ERNIE[9]和K-BERT[10]等;
  • 優化預訓練目標的ERNIE 2.0[11],RoBERTa[12],SpanBERT[13],StructBERT[14]等;
  • 優化模型結構或者訓練方式的ALBERT[15]和ELECTRA[16]。關於預訓練模型的各種後續工作,可以參考復旦大學邱錫鵬老師最近的綜述[17],本文不再贅述。

基於預訓練好的BERT模型可以支持多種下游NLP任務。BERT在下游任務中的應用主要有兩種方式:即Feature-based和Finetune-based。其中Feature-based方法將BERT作爲文本編碼器獲取文本表示向量,從而完成文本相似度計算、向量召回等任務。而Finetune-based方法是在預訓練模型的基礎上,使用具體任務的部分訓練數據進行訓練,從而針對性地修正預訓練階段獲得的網絡參數。該方法更爲主流,在大多數任務上效果也更好。

由於BERT在NLP任務上的顯著優勢,一些研究工作開始將BERT應用於文檔排序等信息檢索任務中。清華大學Qiao等人[18]詳細對比了Feature-based和Finetune-based兩種應用方式在段落排序(Passage Ranking)中的效果。滑鐵盧大學Jimmy Lin團隊[19]針對文檔排序任務提出了基於Pointwise和Pairwise訓練目標的MonoBERT和DuoBERT模型。此外,該團隊[20]提出融合基於BERT的Query-Doc相關性和Query-Sentence相關性來優化文檔排序任務的方案。爲了優化檢索性能和效果,Bing廣告團隊[21]提出一種雙塔結構的TwinBERT分別編碼Query和Doc文本。2019年10月,Google在其官方博客介紹了BERT在Google搜索排序和精選摘要(Featured Snippet)場景的應用,BERT強大的語義理解能力改善了約10%的Google搜索結果[22],除了英文網頁,Google也正在基於BERT優化其他語言的搜索結果。值得一提的是美團AI平臺搜索與NLP部在WSDM Cup 2020檢索排序評測任務中提出了基於Pairwise模式的BERT排序模型和基於LightGBM的排序模型,取得了榜單第一名的成績[23]。

搜索相關性

美團搜索場景下相關性任務定義如下:給定用戶Query和候選Doc(通常爲商戶或商品),判斷兩者之間相關性。搜索Query和Doc的相關性直接反映結果頁排序的優劣,將相關性高的Doc排在前面,能提高用戶搜索決策效率和搜索體驗。爲了提升結果的相關性,我們在召回、排序等多個方面做了優化,本文主要討論在排序方面的優化。通過先對Query和Doc的相關性進行建模,把更加準確的相關性信息輸送給排序模型,從而提升排序模型的排序能力。Query和Doc的相關性計算是搜索業務核心技術之一,根據計算方法相關性主要分爲字面相關性和語義相關性。

字面相關性

早期的相關性匹配主要是根據Term的字面匹配度來計算相關性,如字面命中、覆蓋程度、TFIDF、BM25等。字面匹配的相關性特徵在美團搜索排序模型中起着重要作用,但字面匹配有它的侷限,主要表現在:

  • 詞義侷限 :字面匹配無法處理同義詞和多義詞問題,如在美團業務場景下“賓館”和“旅店”雖然字面上不匹配,但都是搜索“住宿服務”的同義詞;而“COCO”是多義詞,在不同業務場景下表示的語義不同,可能是奶茶店,也可能是理髮店。
  • 結構侷限 :“蛋糕奶油”和“奶油蛋糕”雖詞彙完全重合,但表達的語義完全不同。 當用戶搜“蛋糕奶油”時,其意圖往往是找“奶油”,而搜“奶油蛋糕”的需求基本上都是“蛋糕”。

語義相關性

爲了解決上述問題,業界工作包括傳統語義匹配模型和深度語義匹配模型。傳統語義匹配模型包括:

  • 隱式模型 :將Query、Doc都映射到同一個隱式向量空間,通過向量相似度來計算Query-Doc相關性,例如使用主題模型LDA[24]將Query和Doc映射到同一向量空間;
  • 翻譯模型 :通過統計機器翻譯方法將Doc進行改寫後與Query進行匹配[25]。

這些方法彌補了字面匹配方法的不足,不過從實際效果上來看,還是無法很好地解決語義匹配問題。隨着深度自然語言處理技術的興起,基於深度學習的語義匹配方法成爲研究熱點,主要包括基於表示的匹配方法(Representation-based)和基於交互的匹配方法(Interaction-based)。

基於表示的匹配方法:使用深度學習模型分別表徵Query和Doc,通過計算向量相似度來作爲語義匹配分數。微軟的DSSM[26]及其擴展模型屬於基於表示的語義匹配方法,美團搜索借鑑DSSM的雙塔結構思想,左邊塔輸入Query信息,右邊塔輸入POI、品類信息,生成Query和Doc的高階文本相關性、高階品類相關性特徵,應用於排序模型中取得了很好的效果。此外,比較有代表性的表示匹配模型還有百度提出 SimNet[27],中科院提出的多視角循環神經網絡匹配模型(MV-LSTM)[28]等。

基於交互的匹配方法:這種方法不直接學習Query和Doc的語義表示向量,而是在神經網絡底層就讓Query和Doc提前交互,從而獲得更好的文本向量表示,最後通過一個MLP網絡獲得語義匹配分數。代表性模型有華爲提出的基於卷積神經網絡的匹配模型ARC-II[29],中科院提出的基於矩陣匹配的的層次化匹配模型MatchPyramid[30]。

基於表示的匹配方法優勢在於Doc的語義向量可以離線預先計算,在線預測時只需要重新計算Query的語義向量,缺點是模型學習時Query和Doc兩者沒有任何交互,不能充分利用Query和Doc的細粒度匹配信號。基於交互的匹配方法優勢在於Query和Doc在模型訓練時能夠進行充分的交互匹配,語義匹配效果好,缺點是部署上線成本較高。

BERT語義相關性

BERT預訓練使用了大量語料,通用語義表徵能力更好,BERT的Transformer結構特徵提取能力更強。中文BERT基於字粒度預訓練,可以減少未登錄詞(OOV)的影響,美團業務場景下存在大量長尾Query(如大量數字和英文複合Query)字粒度模型效果優於詞粒度模型。此外,BERT中使用位置向量建模文本位置信息,可以解決語義匹配的結構侷限。綜上所述,我們認爲BERT應用在語義匹配任務上會有更好的效果,基於BERT的語義匹配有兩種應用方式:

  • Feature-based :屬於基於表示的語義匹配方法。類似於DSSM雙塔結構,通過BERT將Query和Doc編碼爲向量,Doc向量離線計算完成進入索引,Query向量線上實時計算,通過近似最近鄰(ANN)等方法實現相關Doc召回。
  • Finetune-based :屬於基於交互的語義匹配方法,將Query和Doc對輸入BERT進行句間關係Fine-tuning,最後通過MLP網絡得到相關性分數。

Feature-based方式是經過BERT得到Query和Doc的表示向量,然後計算餘弦相似度,所有業務場景下Query-Doc相似度都是固定的,不利於適配不同業務場景。此外,在實際場景下爲海量Doc向量建立索引存儲成本過高。因此,我們選擇了Finetune-based方案,利用搜索場景中用戶點擊數據構造訓練數據,然後通過Fine-tuning方式優化Query-Doc語義匹配任務。圖2展示了基於BERT優化美團搜索核心排序相關性的技術架構圖,主要包括三部分:

  • 數據樣本增強:由於相關性模型的訓練基於搜索用戶行爲標註的弱監督數據,我們結合業務經驗對數據做了去噪和數據映射。爲了更好地評價相關性模型的離線效果,我們構建了一套人工標註的Benchmark數據集,指導模型迭代方向。

  • BERT領域適配:美團業務場景中,Query和Doc以商戶、商品、團購等短文本爲主,除標題文本以外,還存在商戶/商品描述、品類、地址、圖譜標籤等結構化信息。我們首先改進了MT-BERT預訓練方法,將品類、標籤等文本信息也加入MT-BERT預訓練過程中。在相關性Fine-tuning階段,我們對訓練目標進行了優化,使得相關性任務和排序任務目標更加匹配,並進一步將兩個任務結合進行聯合訓練。此外,由於BERT模型前向推理比較耗時,難以滿足上線要求,我們通過知識蒸餾將12層BERT模型壓縮爲符合上線要求的2層小模型,且無顯著的效果損失。

  • 排序模型優化:核心排序模型(本文記爲L2模型)包括LambdaDNN[31]、TransformerDNN[3]、MultiTaskDNN等深度學習模型。給定 ,我們將基於BERT預測的Query-Doc相關性分數作爲特徵用於L2模型的訓練中。

算法探索

數據增強

BERT Fine-tuning任務需要一定量標註數據進行遷移學習訓練,美團搜索場景下Query和Doc覆蓋多個業務領域,如果採用人工標註的方法爲每個業務領域標註一批訓練樣本,時間和人力成本過高。我們的解決辦法是使用美團搜索積累的大量用戶行爲數據(如瀏覽、點擊、下單等), 這些行爲數據可以作爲弱監督訓練數據。在DSSM模型進行樣本構造時,每個Query下抽取1個正樣本和4個負樣本,這是比較常用的方法,但是其假設Query下的Doc被點擊就算是相關的,這個假設在實際的業務場景下會給模型引入一些噪聲。

此處以商家(POI)搜索爲例,理想情況下如果一個POI出現在搜索結果裏,但是沒有任何用戶點擊,可認爲該POI和Query不相關;如果該POI有點擊或下單行爲,可認爲該POI和Query相關。下單行爲數據是用戶“用腳投票”得來的,具有更高的置信度,因此我們使用下單數據作爲正樣本,使用未點擊過的數據構造負樣本,然後結合業務場景對樣本進一步優化。數據優化主要包括對樣本去噪和引入品牌數據兩個方面。此外,爲了評測算法離線效果,我們從構造樣本中隨機採樣9K條樣本進行了人工標註作爲Benchmark數據集。

樣本去噪

無意義單字Query過濾。由於單字Query表達的語義通常不完整,用戶點擊行爲也比較隨機,如<優,花漾星球專櫃(中央大道倍客優)>,這部分數據如果用於訓練會影響最終效果。我們去除了包含無意義單字Query的全部樣本。

正樣本從用戶下單的POI中進行隨機採樣,且過濾掉Query只出現在POI的分店名中的樣本,如<大潤發,小龍坎老火鍋(大潤發店)>,雖然Query和POI字面匹配,但其實是不相關的結果。

負樣本嘗試了兩種構造方法:全局隨機負採樣和Skip-Above採樣。

  • 全局隨機負採樣:用戶沒有點擊的POI進行隨機採樣得到負例。我們觀察發現隨機採樣同樣存在大量噪聲數據,補充了兩項過濾規則來過濾數據。① 大量的POI未被用戶點擊是因爲不是離用戶最近的分店,但POI和Query是相關的,這種類型的樣例需要過濾掉,如<蛙小俠 ,蛙小俠(新北萬達店)>。② 用戶Query裏包含品牌詞,並且POI完全等同於品牌詞的,需要從負樣本中過濾,如<德克士喫飯 ,德克士>。

  • Skip-Above採樣:受限於App搜索場景的展示屏效,無法保證召回的POI一次性得到曝光。若直接將未被點擊的POI作爲負例,可能會將未曝光但相關的POI錯誤地採樣爲負例。爲了保證訓練數據的準確性,我們採用Skip-Above方法,剔除這些噪音負例,即從用戶點擊過的POI之上沒有被點擊過的POI中採樣負例(假設用戶是從上往下瀏覽的POI)。

品牌樣本優化

美團商家中有很多品牌商家,通常品牌商家擁有數百上千的POI,如“海底撈”、“肯德基”、“香格里拉酒店”等,品牌POI名稱多是“品牌+地標”文本形式,如“北京香格里拉飯店”。對Query和POI的相關性進行建模時,如果僅取Query和POI名進行相關性訓練,POI名中的“地標”會給模型帶來很大幹擾。例如,用戶搜“香格里拉酒店”時會召回品牌“香格里拉酒店”的分店,如“香格里拉酒店”和“北京香格里拉飯店”等,相關性模型受地標詞影響,會給不同分店會打出不同的相關性分數,進而影響到後續排序模型的訓練。因此,我們對於樣本中的品牌搜索樣本做了針對性優化。搜索品牌詞有時會召回多個品牌的結果,假設用戶搜索的品牌排序靠後,而其他品牌排序靠前會嚴重影響到用戶體驗,因此對Query和POI相關性建模時召回結果中其他品牌的POI可認爲是不相關樣本。針對上述問題,我們利用POI的品牌信息對 樣本進行了重點優化。

  • POI名映射到品牌 :在品牌搜Query不包含地標詞的時候,將POI名映射到品牌(非品牌POI不進行映射),從而消除品牌POI分店名中地標詞引入的噪聲。如Query是“香格里拉酒店”,召回的“香格里拉大酒店”和“北京香格里拉飯店”統一映射爲品牌名“香格里拉酒店”。Query是“品牌+地標”形式(如“香格里拉飯店 北京”)時,用戶意圖明確就是找某個地點的POI,不需要進行映射,示例如下圖3所示。
  • 負樣本過濾 :如果搜索詞是品牌詞,在選取負樣本的時候只在其他品牌的樣本中選取。如POI爲“香格里拉實力希爾頓花園酒店”、“桔子香格里拉古城酒店”時,同Query “香格里拉酒店”雖然字面很相似,但其明顯不是用戶想要的品牌。

經過樣本去噪和品牌樣本優化後,BERT相關性模型在Benchmark上的Accuracy提升23BP,相應地L2排序排序模型離線AUC提升17.2BP。

模型優化

知識融合

我們團隊基於美團業務數據構建了餐飲娛樂領域知識圖譜—“美團大腦”[32],對於候選Doc(POI/SPU),通過圖譜可以獲取到該Doc的大量結構化信息,如地址、品類、團單,場景標籤等。美團搜索場景中的Query和Doc都以短文本爲主,我們嘗試在預訓練和Fine-tuning階段融入圖譜品類和實體信息,彌補Query和Doc文本信息的不足,強化語義匹配效果。

引入品類信息的預訓練

由於美團搜索多模態的特點,在某些情況下,僅根據Query和Doc標題文本信息很難準確判斷兩者之間的語義相關性。如<考研班,虹蝶教育>,Query和Doc標題文本相關性不高,但是“虹蝶教育”三級品類信息分別是“教育-升學輔導-考研”,引入相關圖譜信息有助於提高模型效果,我們首先基於品類信息做了嘗試。

在相關性判別任務中,BERT模型的輸入是 對。對於每一個輸入的Token,它的表徵由其對應的詞向量(Token Embedding)、片段向量(Segment Embedding)和位置向量(Position Embedding)相加產生。爲了引入Doc品類信息,我們將Doc三級品類信息拼接到Doc標題之後,然後跟Query進行相關性判斷,如圖4所示。

對於模型輸入部分,我們將Query、Doc標題、三級類目信息拼接,並用[SEP]分割,區分3種不同來源信息。對於段向量,原始的BERT只有兩種片段編碼EA和EB,在引入類目信息的文本信息後,引入額外的片段編碼EC。引入額外片段編碼的作用是防止額外信息對Query和Doc標題產生交叉干擾。由於我們改變了BERT的輸入和輸出結構,無法直接基於MT-BERT進行相關性Fine-tuning任務。我們對MT-BERT的預訓練方式做了相應改進,BERT預訓練的目標之一是NSP(Next Sentence Prediction),在搜索場景中沒有上下句的概念,在給定用戶的搜索關鍵詞和商戶文本信息後,判斷用戶是否點擊來取代NSP任務。

添加品類信息後,BERT相關性模型在Benchmark上的Accuracy提升56BP,相應地L2排序模型離線AUC提升6.5BP。

引入實體成分識別的多任務Fine-tuning

在美團搜索場景中,Query和Doc通常由不同實體成分組成,如美食、酒店、商圈、品牌、地標和團購等。除了文本語義信息,這些實體成分信息對於Query-Doc相關性判斷至關重要。如果Query和Doc語義相關,那兩者除了文本語義相似外,對應的實體成分也應該相似。例如,Query爲“Helens海倫司小酒館”,Doc爲“Helens小酒館(東鼎購物中心店)”,雖然文本語義不完全匹配,但二者的主要的實體成分相似(主體成分爲品牌+POI形式),正確的識別出Query/Doc中的實體成分有助於相關性的判斷。微軟的MT-DNN[33]已經證明基於預訓練模型的多任務Fine-tuning可以提升各項子任務效果。由於BERT Fine-tuning任務也支持命名實體識別(NER)任務,因而我們在Query-Doc相關性判斷任務的基礎上引入Query和Doc中實體成分識別的輔助任務,通過對兩個任務的聯合訓練來優化最終相關性判別結果,模型結構如下圖5所示:

多任務學習模型的損失函數由兩部分組成,分別是相關性判斷損失函數和命名實體識別損失函數。其中相關性損失函數由[CLS]位的Embedding計算得到,而實體成分識別損失函數由每個Token的Embedding計算得到。2種損失函數相加即爲最終優化的損失函數。在訓練命名實體識別任務時,每個Token的Embedding獲得了和自身實體相關的信息,從而提升了相關性任務的效果。

引入實體成分識別的多任務Fine-tuning方式後,BERT相關性模型在Benchmark上的Accuracy提升219BP,相應地L2排序模型AUC提升17.8BP。

Pairwise Fine-tuning

Query-Doc相關性最終作爲特徵加入排序模型訓練中,因此我們也對Fine-tuning任務的訓練目標做了針對性改進。基於BERT的句間關係判斷屬於二分類任務,本質上是Pointwise訓練方式。Pointwise Fine-tuning方法可以學習到很好的全局相關性,但忽略了不同樣本之前的偏序關係。如對於同一個Query的兩個相關結果DocA和DocB,Pointwise模型只能判斷出兩者都與Query相關,無法區分DocA和DocB相關性程度。爲了使得相關性特徵對於排序結果更有區分度,我們借鑑排序學習中Pairwise訓練方式來優化BERT Fine-tuning任務。

Pairwise Fine-tuning任務輸入的單條樣本爲三元組 ,對於同一Query的多個候選Doc,選擇任意一個正例和一個負例組合成三元組作爲輸入樣本。在下游任務中只需要使用少量的Query和Doc相關性的標註數據(有監督訓練樣本),對BERT模型進行相關性Fine-tuning,產出Query和Doc的相關性特徵。Pairwise Fine-tuning的模型結構如下圖6所示:

對於同一Query的候選Doc,選擇兩個不同標註的Doc,其中相關文檔記爲Doc+,不相關文檔記Doc-。輸入層通過Lookup Table 將Query, Doc+以及Doc-的單詞轉換爲 Token 向量,同時會拼接位置向量和片段向量,形成最終輸入向量。接着通過BERT模型可以分別得到(Query, Doc+)以及(Query, Doc-)的語義相關性表徵,即BERT的CLS位輸出。 經過Softmax歸一化後,可以分別得到(Query, Doc+)和(Query, Doc-)的語義相似度打分。

對於同一Query的候選Doc,選擇兩個不同標註的Doc,其中相關文檔記爲Doc+,不相關文檔記Doc-。輸入層通過Lookup Table 將Query, Doc+以及Doc-的單詞轉換爲 Token 向量,同時會拼接位置向量和片段向量,形成最終輸入向量。接着通過BERT模型可以分別得到(Query, Doc+)以及(Query, Doc-)的語義相關性表徵,即BERT的CLS位輸出。 經過Softmax歸一化後,可以分別得到(Query, Doc+)和(Query, Doc-)的語義相似度打分。

Pairwise Fine-tuning除了輸入樣本上的變化,爲了考慮搜索場景下不同樣本之間的偏序關係,我們參考RankNet[34]的方式對訓練損失函數做了優化。 令$P_{ij}$爲同一個Query下$Doc_i$相比$Doc_j$更相關的概率,其中$s_i$和$s_j$分別爲$Doc_i$和$Doc j$的模型打分,則$P {ij}=1/({1+e^{-\sigma(s_i-s j)}})$。使用交叉熵損失函數,令$S {ij}$表示樣本對的真實標記,當$Doc_i$比$Doc_j$更相關時(即$Doc_i$爲正例而$Doc j$爲負例),$S {ij}$爲1,否則爲-1,損失函數可以表示爲:$C = \sum {(i,j)\in N} \frac{1}{2} (1-S {ij} )\sigma(s_i-s_j )+log⁡(1+e^{-\sigma(s_i-s_j)})$,其中$N$表示所有在同Query下的Doc對。 使用Pairwise Fine-tuning方式後,BERT相關性模型在Benchmark上的Accuracy提升925BP,相應地L2排序模型的AUC提升19.5BP。

聯合訓練

前文所述各種優化屬於兩階段訓練方式,即先訓練BERT相關性模型,然後訓練L2排序模型。爲了將兩者深入融合,在排序模型訓練中引入更多相關性信息,我們嘗試將BERT相關性Fine-tuning任務和排序任務進行端到端的聯合訓練。

由於美團搜索涉及多業務場景且不同場景差異較大,對於多場景的搜索排序,每個子場景進行單獨優化效果好,但是多個子模型維護成本更高。此外,某些小場景由於訓練數據稀疏無法學習到全局的Query和Doc表徵。我們設計了基於Partition-model的BERT相關性任務和排序任務的聯合訓練模型,Partition-model的思想是利用所有數據進行全場景聯合訓練,同時一定程度上保留每個場景特性,從而解決多業務場景的排序問題,模型結構如下圖7所示:

輸入層:模型輸入是由文本特徵向量、用戶行爲序列特徵向量和其他特徵向量3部分組成。

  • 文本特徵向量使用BERT進行抽取,文本特徵主要包括Query和POI相關的一些文本(POI名稱、品類名稱、品牌名稱等)。將文本特徵送入預訓練好的MT-BERT模型,取CLS向量作爲文本特徵的語義表示。
  • 用戶行爲序列特徵向量使用Transformer進行抽取[3]。
  • 其他特徵主要包括:① 統計類特徵,包含Query、Doc等維度的特徵以及它們之間的交叉特徵,使用這些特徵主要是爲了豐富Query和Doc的表示,更好地輔助相關性任務訓練。② 文本特徵,這部分的特徵同1中的文本特徵,但是使用方式不同,直接將文本分詞後做Embedding,端到端的學習文本語義表徵。③ 傳統的文本相關性特徵,包括Query和Doc的字面命中、覆蓋程度、BM25等特徵,雖然語義相關性具有較好的作用,但字面相關性仍然是一個不可或缺的模塊,它起到信息補充的作用。

共享層:底層網絡參數是所有場景網絡共享。

場景層:根據業務場景進行劃分,每個業務場景單獨設計網絡結構,打分時只經過所在場景的那一路。

損失函數:搜索業務更關心排在頁面頭部結果的好壞,將更相關的結果排到頭部,用戶會獲得更好的體驗,因此選用優化NDCG的Lambda Loss[34]。

聯合訓練模型目前還在實驗當中,離線實驗已經取得了不錯的效果,在驗證集上AUC提升了234BP。目前,場景切分依賴Query意圖模塊進行硬切分,後續自動場景切分也值得進行探索。

應用實踐

由於BERT的深層網絡結構和龐大參數量,如果要部署上線,實時性上面臨很大挑戰。在美團搜索場景下,我們對基於MT-BERT Fine-tuning好的相關性模型(12層)進行了50QPS壓測實驗,在線服務的TP99增加超過100ms,不符合工程上線要求。我們從兩方面進行了優化,通過知識蒸餾壓縮BERT模型,優化排序服務架構支持蒸餾模型上線。

模型輕量化

爲了解決BERT模型參數量過大、前向計算耗時的問題,常用輕量化方法有三種:

  • 知識蒸餾 :模型蒸餾是在一定精度要求下,將大模型學到的知識遷移到另一個輕量級小模型上,目的是降低預測計算量的同時保證預測效果。Hinton在2015年的論文中闡述了核心思想[35],大模型一般稱作Teacher Model,蒸餾後的小模型一般稱作Student Model。具體做法是先在訓練數據上學習Teacher Model,然後Teacher Model對無標註數據進行預測得到僞標註數據,最後使用僞標註數據訓練Student Model。HuggingFace提出的DistilBERT[36]和華爲提出的TinyBERT[37] 等BERT的蒸餾模型都取得了不錯的效果,在保證效果的情況下極大地提升了模型的性能。
  • 模型裁剪 :通過模型剪枝減少參數的規模。
  • 低精度量化 :在模型訓練和推理中使用低精度(FP16甚至INT8、二值網絡)表示取代原有精度(FP32)表示。

在Query意圖分類任務[2]中,我們基於MT-BERT裁剪爲4層小模型達到了上線要求。意圖分類場景下Query長度偏短,語義信息有限,直接裁剪掉幾層Transformer結構對模型的語義表徵能力不會有太大的影響。在美團搜索的場景下,Query和Doc拼接後整個文本序列變長,包含更復雜的語義關係,直接裁剪模型會帶來更多的性能損失。因此,我們在上線Query-Doc相關性模型之前,採用知識蒸餾方式,在儘可能在保持模型性能的前提下對模型層數和參數做壓縮。兩種方案的實驗效果對比見下表1:

在美團搜索核心排序的業務場景下,我們採用知識蒸餾使得BERT模型在對響應時間要求苛刻的搜索場景下符合了上線的要求,並且效果無顯著的性能損失。知識蒸餾(Knowledge Distillation)核心思想是通過遷移知識,從而通過訓練好的大模型得到更加適合推理的小模型。首先我們基於MT-BERT(12 Layers),在大規模的美團點評業務語料上進行知識蒸餾得到通用的MT-BERT蒸餾模型(6 Layers),蒸餾後的模型可以作爲具體下游任務Fine-tuning時的初始化模型。在美團搜索的場景下,我們進一步基於通用的MT-BERT蒸餾模型(6 Layers)進行相關性任務Fine-tuning ,得到MT-BERT蒸餾(2 Layers)進行上線。

排序服務架構優化

美團搜索線上排序服務框架如上圖8所示,主要包括以下模塊:

  • 模型在線預估框架(Augur) :支持語言化定義特徵,配置化加載和卸載模型與特徵,支持主流線性模型與TF模型的在線預估;基於Augur可以方便地構建功能完善的無狀態、分佈式的模型預估服務。爲了能方便將BERT特徵用於排序模型,Augur團隊開發了Model Stacking功能,完美支持了BERT as Feature;這種方式將模型的分數當做一個特徵,只需要在Augur服務模型配置平臺上進行特徵配置即可,很好地提升了模型特徵的迭代效率。
  • 搜索模型實驗平臺(Poker) :支持超大規模數據和模型的離線特徵抽取、模型訓練,支持BERT模型自助訓練/Fine-tuning和預測;同時打通了Augur服務,訓練好的模型可以實現一鍵上線,大大提升了模型的實驗效率。

TF-Serving在線模型服務:L2排序模型、BERT模型上線使用TF-Serving進行部署。TF-Serving預測引擎支持Faster Transformer[38]加速BERT推理,提升了線上的預估速度。

爲了進一步提升性能,我們將頭部Query進行緩存只對長尾Query進行在線打分,線上預估結合緩存的方式,即節約了GPU資源又提升了線上預估速度。經過上述優化,我們實現了50 QPS下,L2模型TP99只升高了2ms,滿足了上線的要求。

線上效果

針對前文所述的各種優化策略,除了離線Benchmark上的效果評測之外,我們也將模型上線進行了線上AB評測,Baseline是當前未做任何優化的排序模型,我們獨立統計了各項優化在Baseline基礎上帶來的變化,由於線上真實環境影響因素較多,爲了確保結論可信,我們同時統計了QVCTR和NDCG兩個指標,結果如表2所示:

從表2可以看出,各項優化對線上排序核心指標都帶來穩定的提升。用戶行爲數據存在大量噪聲不能直接拿來建模,我們基於美團搜索排序業務特點設計了一些規則對訓練樣本進行優化,還藉助POI的品牌信息對樣本進行映射和過濾。通過人工對樣本進行評測發現,優化後的樣本更加符合排序業務特點以及“人”對相關性的認知,同時線上指標的提升也驗證了我們優化的有效性。知識融合的BERT模型引入大量結構化文本信息,彌補了POI名本身文本信息少的問題,排序模型CTR和NDCG都有明顯的提升。對數據樣本的優化有了一定的效果。爲了更加匹配業務場景,我們從模型的角度進行優化,模型損失函數改用排序任務常用的Pairwise Loss,其考慮了文檔之間的關係更加貼合排序任務場景,線上排序模型NDCG取得了一定的提升。

總結與展望

本文總結了搜索與NLP算法團隊基於BERT在美團搜索核心排序落地的探索過程和實踐經驗,包括數據增強、模型優化和工程實踐。在樣本數據上,我們結合了美團搜索業務領域知識,基於弱監督點擊日誌構建了高質量的訓練樣本;針對美團搜索多模態特點,在預訓練和Fine-tuning階段融合圖譜品類和標籤等信息,彌補Query和Doc文本較短的不足,強化文本匹配效果。

在算法模型上,結合搜索排序優化目標,引入了Pairwise/Listwise的Fine-tuning訓練目標,相比Pointwise方式在相關性判斷上更有區分度。這些優化在離線Benchmark評測和線上AB評測中帶來了不同幅度的指標提升,改善了美團搜索的用戶體驗。

在工程架構上,針對BERT在線預估性能耗時長的問題,參考業界經驗,我們採用了BERT模型輕量化的方案進行模型蒸餾裁剪,既保證模型效果又提升了性能,同時我們對整體排序架構進行了升級,爲後續快速將BERT應用到線上預估奠定了良好基礎。

搜索與NLP算法團隊會持續進行探索BERT在美團搜索中的應用落地,我們接下來要進行以下幾個優化:

  • 融合知識圖譜信息對長尾流量相關性進行優化:美團搜索承接着多達幾十種生活服務的搜索需求,當前頭部流量相關性問題已經較好地解決,長尾流量的相關性優化需要依賴更多的高質量數據。我們將利用知識圖譜信息,將一些結構化先驗知識融入到BERT預訓練中,對長尾Query的信息進行增強,使其可以更好地進行語義建模。
  • 相關性與其他任務聯合優化:美團搜索場景下Query和候選Doc都更結構化,除文本語義匹配外,Query/Doc文本中蘊含的實體成分、意圖、類目也可以用於輔助相關性判斷。目前,我們將相關性任務和成分識別任務結合進行聯合優化已經取得一定效果。後續我們考慮將意圖識別、類目預測等任務加入相關性判斷中,多視角、更全面地評估Query-Doc的相關性。
  • BERT相關性模型和排序模型的深入融合:當前兩個模型屬於兩階段訓練方式,將BERT語義相關性作爲特徵加入排序模型來提升點擊率。語義相關性是影響搜索體驗的重要因素之一,我們將BERT相關性和排序模型進行端到端聯合訓練,將相關性和點擊率目標進行多目標聯合優化,提升美團搜索排序的綜合體驗。

參考資料

[1] Devlin, Jacob, et al. “BERT: Pre-training of deep bidirectional transformers for language understanding.” arXiv preprint arXiv:1810.04805 (2018).

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

[3] 肖垚、家琪等. Transformer在美團搜索排序中的實踐

[4] Mikolov, Tomas, et al. “Efficient estimation of word representations in vector space.” arXiv preprint arXiv:1301.3781 (2013).

[5] Peters, Matthew E., et al. “Deep contextualized word representations.” arXiv preprint arXiv:1802.05365 (2018).

[6] Vaswani, Ashish, et al. “Attention is all you need.” Advances in neural information processing systems. 2017.

[7] Radford, Alec, et al. “ Improving language understanding by generative pre-training .”

[8] Sun, Yu, et al. “Ernie: Enhanced representation through knowledge integration.” arXiv preprint arXiv:1904.09223 (2019).

[9] Zhang, Zhengyan, et al. “ERNIE: Enhanced language representation with informative entities.” arXiv preprint arXiv:1905.07129 (2019).

[10] Liu, Weijie, et al. “K-bert: Enabling language representation with knowledge graph.” arXiv preprint arXiv:1909.07606 (2019).

[11] Sun, Yu, et al. “Ernie 2.0: A continual pre-training framework for language understanding.” arXiv preprint arXiv:1907.12412 (2019).

[12] Liu, Yinhan, et al. “Roberta: A robustly optimized bert pretraining approach.” arXiv preprint arXiv:1907.11692 (2019).

[13] Joshi, Mandar, et al. “Spanbert: Improving pre-training by representing and predicting spans.” Transactions of the Association for Computational Linguistics 8 (2020): 64-77.

[14] Wang, Wei, et al. “StructBERT: Incorporating Language Structures into Pre-training for Deep Language Understanding.” arXiv preprint arXiv:1908.04577 (2019).

[15] Lan, Zhenzhong, et al. “Albert: A lite bert for self-supervised learning of language representations.” arXiv preprint arXiv:1909.11942 (2019)

[16] Clark, Kevin, et al. “Electra: Pre-training text encoders as discriminators rather than generators.” arXiv preprint arXiv:2003.10555 (2020).

[17] Qiu, Xipeng, et al. “Pre-trained Models for Natural Language Processing: A Survey.” arXiv preprint arXiv:2003.08271 (2020).

[18] Qiao, Yifan, et al. “Understanding the Behaviors of BERT in Ranking.” arXiv preprint arXiv:1904.07531 (2019).

[19] Nogueira, Rodrigo, et al. “Multi-stage document ranking with BERT.” arXiv preprint arXiv:1910.14424 (2019).

[20] Yilmaz, Zeynep Akkalyoncu, et al. “Cross-domain modeling of sentence-level evidence for document retrieval.” Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing and the 9th International Joint Conference on Natural Language Processing (EMNLP-IJCNLP). 2019.

[21]Wenhao Lu, et al. “TwinBERT: Distilling Knowledge to Twin-Structured BERT Models for Efficient Retrieval.” arXiv preprint arXiv: 2002.06275

[22]Pandu Nayak.

[23]帥朋、會星等. WSDM Cup 2020檢索排序評測任務第一名經驗總結

[24] Blei, David M., Andrew Y. Ng, and Michael I. Jordan. “Latent dirichlet allocation.” Journal of machine Learning research 3.Jan (2003): 993-1022.

[25] Jianfeng Gao, Xiaodong He, and JianYun Nie. Click-through-based Translation Models for Web Search: from Word Models to Phrase Models. In CIKM 2010.

[26] Huang, Po-Sen, et al. “Learning deep structured semantic models for web search using clickthrough data.” Proceedings of the 22nd ACM international conference on Information & Knowledge Management. 2013.

[27] SimNet .

[28] Guo T, Lin T. Multi-variable LSTM neural network for autoregressive exogenous model[J]. arXiv preprint arXiv:1806.06384, 2018.

[29] Hu, Baotian, et al. “Convolutional neural network architectures for matching natural language sentences.” Advances in neural information processing systems. 2014.

[30] Pang, Liang, et al. “Text matching as image recognition.” Thirtieth AAAI Conference on Artificial Intelligence. 2016.

[31] 非易、祝升等. 大衆點評搜索基於知識圖譜的深度學習排序實踐 .

[32] 仲遠、富崢等. 美團餐飲娛樂知識圖譜——美團大腦揭祕 .

[33] Liu, Xiaodong, et al. “Multi-task deep neural networks for natural language understanding.” arXiv preprint arXiv:1901.11504 (2019).

[34] Burges, Christopher JC. “From ranknet to lambdarank to lambdamart: An overview.” Learning 11.23-581 (2010): 81.

[35] Hinton, Geoffrey, Oriol Vinyals, and Jeff Dean. “Distilling the knowledge in a neural network.” arXiv preprint arXiv:1503.02531 (2015).

[36] Sanh, Victor, et al. “DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter.” arXiv preprint arXiv:1910.01108 (2019).

[37] Jiao, Xiaoqi, et al. “Tinybert: Distilling bert for natural language understanding.” arXiv preprint arXiv:1909.10351 (2019).

[38] Faster Transformer .

作者簡介

  • 李勇,美團 AI 平臺搜索與 NLP 部算法工程師。
  • 佳昊,美團 AI 平臺搜索與 NLP 部算法工程師。
  • 楊揚,美團 AI 平臺搜索與 NLP 部算法工程師。
  • 金剛,美團 AI 平臺搜索與 NLP 部算法專家。
  • 周翔,美團 AI 平臺搜索與 NLP 部算法專家。
  • 朱敏,美團 AI 平臺搜索與 NLP 部技術專家。
  • 富崢,美團 AI 平臺搜索與 NLP 部資深算法專家。
  • 陳勝,美團 AI 平臺搜索與 NLP 部資深算法專家。
  • 雲森,美團 AI 平臺搜索與 NLP 部研究員。
  • 永超,美團 AI 平臺搜索與 NLP 部高級研究員。
相關文章