BERT在美團搜索核心排序的探索和實踐

爲進一步優化美團搜索排序結果的深度語義相關性,提高用戶體驗,搜索與NLP部算法團隊從2019年末開始基於BERT優化美團搜索排序相關性,通過三個月的算法迭代優化,離線和線上效果均取得必定進展。本文主要介紹探索過程以及實踐經驗。html

引言

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

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

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

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],本文再也不贅述。

圖1 NLP預訓練發展歷程

基於預訓練好的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等。字面匹配的相關性特徵在美團搜索排序模型中起着重要做用,但字面匹配有它的侷限,主要表如今:app

  • 詞義侷限:字面匹配沒法處理同義詞和多義詞問題,如在美團業務場景下「賓館」和「旅店」雖然字面上不匹配,但都是搜索「住宿服務」的同義詞;而「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等深度學習模型。給定<Query, Doc>,咱們將基於BERT預測的Query-Doc相關性分數做爲特徵用於L2模型的訓練中。

圖2 美團搜索核心排序相關性優化技術架構圖

算法探索

數據加強

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的品牌信息對<Query, POI>樣本進行了重點優化。

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

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

圖3 POI品牌信息優化樣本示意圖

模型優化

知識融合

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

引入品類信息的預訓練

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

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

圖4 BERT輸入部分加入Doc(POI)品類信息

對於模型輸入部分,咱們將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所示:

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

圖6 Pairwise Fine-tuning模型結構

對於同一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所示:

圖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甚至INT八、二值網絡)表示取代原有精度(FP32)表示。

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

表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 核心排序框架圖

美團搜索線上排序服務框架如上圖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 線上AB效果對比(*表示AB一週穩定正向)

從表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 部高級研究員。

閱讀更多技術文章,請掃碼關注微信公衆號-美團技術團隊!

相關文章
相關標籤/搜索