美團BERT的探索和實踐

他山之石,能夠攻玉。美團點評樂動體育LD90.VIP團隊一直緊跟業界前沿技術,開展了基於美團點評業務數據的預訓練研究工做,訓練了更適配美團點評業務場景的MT-BERT模型,經過微調將MT-BERT落地到多個業務場景中,並取得了不錯的業務效果。算法

背景

2018年,天然語言處理(Natural Language Processing,NLP)領域最激動人心的進展莫過於預訓練語言模型,包括基於RNN的ELMo[1]和ULMFiT[2],基於Transformer[3]的OpenAI GPT[4]及Google BERT[5]等。下圖1回顧了近年來預訓練語言模型的發展史以及最新的進展。預訓練語言模型的成功,證實了咱們能夠從海量的無標註文本中學到潛在的語義信息,而無需爲每一項下游NLP任務單獨標註大量訓練數據。此外,預訓練語言模型的成功也開創了NLP研究的新範式[6],即首先使用大量無監督語料進行語言模型預訓練(Pre-training),再使用少許標註語料進行微調(Fine-tuning)來完成具體NLP任務(分類、序列標註、句間關係判斷和機器閱讀理解等)。緩存

所謂的「預訓練」,其實並非什麼新概念,這種「Pre-training and Fine-tuning」的方法在圖像領域早有應用。2009年,鄧嘉、李飛飛等人在CVPR 2009發佈了ImageNet數據集[7],其中120萬張圖像分爲1000個類別。基於ImageNet,以圖像分類爲目標使用深度卷積神經網絡(如常見的ResNet、VCG、Inception等)進行預訓練,獲得的模型稱爲預訓練模型。針對目標檢測或者語義分割等任務,基於這些預訓練模型,經過一組新的全鏈接層與預訓練模型進行拼接,利用少許標註數據進行微調,將預訓練模型學習到的圖像分類能力遷移到新的目標任務。預訓練的方式在圖像領域取得了普遍的成功,好比有學者將ImageNet上學習獲得的特徵表示用於PSACAL VOC上的物體檢測,將檢測率提升了20%[8]。安全

他山之石,能夠攻玉。圖像領域預訓練的成功也啓發了NLP領域研究,深度學習時代普遍使用的詞向量(即詞嵌入,Word Embedding)即屬於NLP預訓練工做。使用深度神經網絡進行NLP模型訓練時,首先須要將待處理文本轉爲詞向量做爲神經網絡輸入,詞向量的效果會影響到最後模型效果。詞向量的效果主要取決於訓練語料的大小,不少NLP任務中有限的標註語料不足以訓練出足夠好的詞向量,一般使用跟當前任務無關的大規模未標註語料進行詞向量預訓練,所以預訓練的另外一個好處是能加強模型的泛化能力。目前,大部分NLP深度學習任務中都會使用預訓練好的詞向量(如Word2Vec[9]和GloVe[10]等)進行網絡初始化(而非隨機初始化),從而加快網絡的收斂速度。網絡

預訓練詞向量一般只編碼詞彙間的關係,對上下文信息考慮不足,且沒法處理一詞多義問題。如「bank」一詞,根據上下文語境不一樣,可能表示「銀行」,也可能表示「岸邊」,卻對應相同的詞向量,這樣顯然是不合理的。爲了更好的考慮單詞的上下文信息,Context2Vec[11]使用兩個雙向長短時記憶網絡(Long Short Term Memory,LSTM)[12]來分別編碼每一個單詞左到右(Left-to-Right)和右到左(Right-to-Left)的上下文信息。相似地,ELMo也是基於大量文本訓練深層雙向LSTM網絡結構的語言模型。ELMo在詞向量的學習中考慮深層網絡不一樣層的信息,並加入到單詞的最終Embedding表示中,在多個NLP任務中取得了提高。ELMo這種使用預訓練語言模型的詞向量做爲特徵輸入到下游目標任務中,被稱爲Feature-based方法。架構

另外一種方法是微調(Fine-tuning)。GPT、BERT和後續的預訓練工做都屬於這一範疇,直接在深層Transformer網絡上進行語言模型訓練,收斂後針對下游目標任務進行微調,不須要再爲目標任務設計Task-specific網絡從頭訓練。關於NLP領域的預訓練發展史,張俊林博士寫過一篇很詳實的介紹[13],本文再也不贅述。框架

Google AI團隊提出的預訓練語言模型BERT(Bidirectional Encoder Representations from Transformers),在11項天然語言理解任務上刷新了最好指標,能夠說是近年來NLP領域取得的最重大的進展之一。BERT論文也斬獲NLP領域頂會NAACL 2019的最佳論文獎,BERT的成功也啓發了大量的後續工做,不斷刷新了NLP領域各個任務的最佳水平。有NLP學者宣稱,屬於NLP的ImageNet時代已經來臨[14]。分佈式

美團點評做爲中國領先的生活服務電子商務平臺,涵蓋搜索、推薦、廣告、配送等多種業務場景,幾乎涉及到各類類型的天然語言處理任務。在咱們的平臺上,迄今爲止積累了近40億條用戶公開評價(UGC),如何高效而準確地完成對海量UGC的天然語言理解和處理是美團點評技術團隊面臨的挑戰之一。美團NLP中心一直緊跟業界前沿技術,開展了基於美團點評業務數據的預訓練研究工做,訓練了更適配美團點評業務場景的MT-BERT模型,經過微調將MT-BERT落地到多個業務場景中,並取得了不錯的業務效果。工具

BERT模型介紹性能

BERT是基於Transformer的深度雙向語言表徵模型,基本結構如圖2所示,本質上是利用Transformer結構構造了一個多層雙向的Encoder網絡。Transformer是Google在2017年提出的基於自注意力機制(Self-attention)的深層模型,在包括機器翻譯在內的多項NLP任務上效果顯著,超過RNN且訓練速度更快。不到一年時間內,Transformer已經取代RNN成爲神經網絡機器翻譯的State-Of-The-Art(SOTA)模型,包括谷歌、微軟、百度、阿里、騰訊等公司的線上機器翻譯模型都已替換爲Transformer模型。關於Transformer的詳細介紹能夠參考Google論文《Attention is all you need》[3]。學習

模型結構

如表1所示,根據參數設置的不一樣,Google 論文中提出了Base和Large兩種BERT模型。

輸入表示

針對不一樣的任務,BERT模型的輸入能夠是單句或者句對。對於每個輸入的Token,它的表徵由其對應的詞表徵(Token Embedding)、段表徵(Segment Embedding)和位置表徵(Position Embedding)相加產生,如圖3所示:

  • 對於英文模型,使用了Wordpiece模型來產生Subword從而減少詞表規模;對於中文模型,直接訓練基於字的模型。
  • 模型輸入須要附加一個起始Token,記爲[CLS],對應最終的Hidden State(即Transformer的輸出)能夠用來表徵整個句子,用於下游的分類任務。
  • 模型可以處理句間關係。爲區別兩個句子,用一個特殊標記符[SEP]進行分隔,另外針對不一樣的句子,將學習到的Segment Embeddings 加到每一個Token的Embedding上。
  • 對於單句輸入,只有一種Segment Embedding;對於句對輸入,會有兩種Segment Embedding。

預訓練目標

BERT預訓練過程包含兩個不一樣的預訓練任務,分別是Masked Language Model和Next Sentence Prediction任務。

Masked Language Model(MLM)

經過隨機掩蓋一些詞(替換爲統一標記符[MASK]),而後預測這些被遮蓋的詞來訓練雙向語言模型,而且使每一個詞的表徵參考上下文信息。

這樣作會產生兩個缺點:(1)會形成預訓練和微調時的不一致,由於在微調時[MASK]老是不可見的;(2)因爲每一個Batch中只有15%的詞會被預測,所以模型的收斂速度比起單向的語言模型會慢,訓練花費的時間會更長。對於第一個缺點的解決辦法是,把80%須要被替換成[MASK]的詞進行替換,10%的隨機替換爲其餘詞,10%保留原詞。因爲Transformer Encoder並不知道哪一個詞須要被預測,哪一個詞是被隨機替換的,這樣就強迫每一個詞的表達須要參照上下文信息。對於第二個缺點目前沒有有效的解決辦法,可是從提高收益的角度來看,付出的代價是值得的。

Next Sentence Prediction(NSP)

爲了訓練一個理解句子間關係的模型,引入一個下一句預測任務。這一任務的訓練語料能夠從語料庫中抽取句子對包括兩個句子A和B來進行生成,其中50%的機率B是A的下一個句子,50%的機率B是語料中的一個隨機句子。NSP任務預測B是不是A的下一句。NSP的目的是獲取句子間的信息,這點是語言模型沒法直接捕捉的。

Google的論文結果代表,這個簡單的任務對問答和天然語言推理任務十分有益,可是後續一些新的研究[15]發現,去掉NSP任務以後模型效果沒有降低甚至還有提高。咱們在預訓練過程當中也發現NSP任務的準確率通過1-2個Epoch訓練後就能達到98%-99%,去掉NSP任務以後對模型效果並不會有太大的影響。

數據&算力

Google發佈的英文BERT模型使用了BooksCorpus(800M詞彙量)和英文Wikipedia(2500M詞彙量)進行預訓練,所需的計算量很是龐大。BERT論文中指出,Google AI團隊使用了算力強大的Cloud TPU進行BERT的訓練,BERT Base和Large模型分別使用4臺Cloud TPU(16張TPU)和16臺Cloud TPU(64張TPU)訓練了4天(100萬步迭代,40個Epoch)。可是,當前國內互聯網公司主要使用Nvidia的GPU進行深度學習模型訓練,所以BERT的預訓練對於GPU資源提出了很高的要求。

MT-BERT實踐

美團BERT(MT-BERT)的探索分爲四個階段:

(1)開啓混合精度實現訓練加速。

(2)在通用中文語料基礎上加入大量美團點評業務語料進行模型預訓練,完成領域遷移。

(3)預訓練過程當中嘗試融入知識圖譜中的實體信息。

(4)經過在業務數據上進行微調,支持不一樣類型的業務需求。MT-BERT總體技術框架如圖4所示:

基於美團點評AFO平臺的分佈式訓練

正如前文所述,BERT預訓練對於算力有着極大要求,咱們使用的是美團內部開發的AFO[16](AI Framework On Yarn)框架進行MT-BERT預訓練。AFO框架基於YARN實現數千張GPU卡的靈活調度,同時提供基於Horovod的分佈式訓練方案,以及做業彈性伸縮與容錯等能力。Horovod是Uber開源的深度學習工具[17],它的發展吸收了Facebook《一小時訓練ImageNet》論文[18]與百度Ring Allreduce[19]的優勢,可爲用戶實現分佈式訓練提供幫助。根據Uber官方分別使用標準分佈式TensorFlow和Horovod兩種方案,分佈式訓練Inception V3和ResNet-101 TensorFlow模型的實驗驗證顯示,隨着GPU的數量增大,Horovod性能損失遠小於TensorFlow,且訓練速度可達到標準分佈式TensorFlow的近兩倍。相比於Tensorflow分佈式框架,Horovod在數百張卡的規模上依然能夠保證穩定的加速比,具有很是好的擴展性。

Horovod框架的並行計算主要用到了兩種分佈式計算技術:控制層的Open MPI和數據層的Nvidia NCCL。控制層面的主要做用是同步各個Rank(節點),由於每一個節點的運算速度不同,運算完每個Step的時間也不同。若是沒有一個同步機制,就不可能對全部的節點進行梯度平均。Horovod在控制層面上設計了一個主從模式,Rank 0爲Master節點,Rank1-n爲Worker節點,每一個Worker節點上都有一個消息隊列,而在Master節點上除了一個消息隊列,還有一個消息Map。每當計算框架發來通訊請求時,好比要執行Allreduce,Horovod並不直接執行MPI,而是封裝了這個消息並推入本身的消息隊列,交給後臺線程去處理。後臺線程採用定時輪詢的方式訪問本身的消息隊列,若是非空,Woker會將本身收到的全部Tensor通訊請求都發給Master。由於是同步MPI,因此每一個節點會阻塞等待MPI完成。Master收到Worker的消息後,會記錄到本身的消息Map中。若是一個Tensor的通訊請求出現了n次,也就意味着,全部的節點都已經發出了對該Tensor的通訊請求,那麼這個Tensor就須要且可以進行通訊。Master節點會挑選出全部符合要求的Tensor進行MPI通訊。不符合要求的Tensor繼續留在消息Map中,等待條件知足。決定了Tensor之後,Master又會將能夠進行通訊的Tensor名字和順序發還給各個節點,通知各個節點能夠進行Allreduce運算。

混合精度加速

當前深度學習模型訓練過程基本採用單精度(Float 32)和雙精度(Double)數據類型,受限於顯存大小,當網絡規模很大時Batch Size就會很小。Batch Size太小一方面容易致使網絡學習過程不穩定而影響模型最終效果,另外一方面也下降了數據吞吐效率,影響訓練速度。爲了加速訓練及減小顯存開銷,Baidu Research和Nvidia在ICLR 2018論文中[20]合做提出了一種Float32(FP32)和Float16(FP16)混合精度訓練的方法,而且在圖像分類和檢測、語音識別和語言模型任務上進行了有效驗證。Nvidia的Pascal和Volta系列顯卡除了支持標準的單精度計算外,也支持了低精度的計算,好比最新的Tesla V100硬件支持了FP16的計算加速,P4和P40支持INT8的計算加速,並且低精度計算的峯值要遠高於單精浮點的計算峯值。

爲了進一步加快MT-BERT預訓練和推理速度, 咱們實驗了混合精度訓練方式。混合精度訓練指的是FP32和FP16混合的訓練方式,使用混合精度訓練能夠加速訓練過程而且減小顯存開銷,同時兼顧FP32的穩定性和FP16的速度。在模型計算過程當中使用FP16加速計算過程,模型訓練過程當中權重會存儲成FP32格式(FP32 Master-weights),參數更新時採用FP32類型。利用FP32 Master-weights在FP32數據類型下進行參數更新可有效避免溢出。此外,一些網絡的梯度大部分在FP16的表示範圍以外,須要對梯度進行放大使其能夠在FP16的表示範圍內,所以進一步採用Loss Scaling策略經過對Loss進行放縮,使得在反向傳播過程當中梯度在FP16的表示範圍內。

爲了提升預訓練效率,咱們在MT-BERT預訓練中採用了混合精度訓練方式。

加速效果

如圖5所示,開啓混合精度的訓練方式在單機單卡和多機多卡環境下顯著提高了訓練速度。爲了驗證混合精度模型會不會影響最終效果,咱們分別在美團點評業務和通用Benchmark數據集上進行了微調實驗,結果見表2和表3。

表2 開啓混合精度訓練的MT-BERT模型在美團點評業務Benchmark上效果對比

表3 開啓混合精度訓練的MT-BERT模型在中文通用Benchmark上效果對比

經過表2和表3結果能夠發現,開啓混合精度訓練的MT-BERT模型並無影響效果,反而訓練速度提高了2倍多。

領域自適應

Google發佈的中文BERT模型是基於中文維基百科數據訓練獲得,屬於通用領域預訓練語言模型。因爲美團點評積累了大量業務語料,好比用戶撰寫的UGC評論和商家商品的文本描述數據,爲了充分發揮領域數據的優點,咱們考慮在Google中文BERT模型上加入領域數據繼續訓練進行領域自適應(Domain Adaptation),使得模型更加匹配咱們的業務場景。實踐證實,這種Domain-aware Continual Training方式,有效地改進了BERT模型在下游任務中的表現。因爲Google未發佈中文BERT Large模型,咱們也從頭預訓練了中文MT-BERT Large模型。

咱們選擇了5箇中文Benchmark任務以及3個美團點評業務Benchmark在內的8個數據集對模型效果進行驗證。實驗結果如表4所示,MT-BERT在通用Benchmark和美團點評業務Benchmark上都取得了更好的效果。

表4 MT-BERT模型和Google BERT模型在8個Benchmark上的效果對比

知識融入

BERT在天然語言理解任務上取得了巨大的成功,但也存在着一些不足。其一是常識(Common Sense)的缺失。人類平常活動須要大量的常識背景知識支持,BERT學習到的是樣本空間的特徵、表徵,能夠看做是大型的文本匹配模型,而大量的背景常識是隱式且模糊的,很難在預訓練數據中進行體現。其二是缺少對語義的理解。模型並未理解數據中蘊含的語義知識,缺少推理能力。在美團點評搜索場景中,須要首先對用戶輸入的Query進行意圖識別,以確保召回結果的準確性。好比,對於「宮保雞丁」和「宮保雞丁醬料」兩個Query,兩者的BERT語義表徵很是接近,可是蘊含的搜索意圖卻大相徑庭。前者是菜品意圖,即用戶想去飯店消費,然後者則是商品意圖,即用戶想要從超市購買醬料。在這種場景下,BERT模型很難像正常人同樣作出正確的推理判斷。

爲了處理上述狀況,咱們嘗試在MT-BERT預訓練過程當中融入知識圖譜信息。知識圖譜能夠組織現實世界中的知識,描述客觀概念、實體、關係。這種基於符號語義的計算模型,能夠爲BERT提供先驗知識,使其具有必定的常識和推理能力。在咱們團隊以前的技術文章[21]中,介紹了NLP中心構建的大規模的餐飲娛樂知識圖譜——美團大腦。咱們經過Knowledge-aware Masking方法將「美團大腦」的實體知識融入到MT-BERT預訓練中。

BERT在進行語義建模時,主要聚焦最原始的單字信息,卻不多對實體進行建模。具體地,BERT爲了訓練深層雙向的語言表徵,採用了Masked LM(MLM)訓練策略。該策略相似於傳統的完形填空任務,即在輸入端,隨機地「遮蔽」掉部分單字,在輸出端,讓模型預測出這些被「遮蔽」的單字。模型在最初並不知道要預測哪些單字,所以它輸出的每一個單字的嵌入表示,都涵蓋了上下文的語義信息,以便把被「掩蓋」的單字準確的預測出來。

圖6左側展現了BERT模型的MLM任務。輸入句子是「全聚德作的烤鴨久負盛名」。其中,「聚」,「的」,「久」3個字在輸入時被隨機遮蔽,模型預訓練過程當中須要對這3個遮蔽位作出預測。

BERT模型經過字的搭配(好比「全X德」),很容易推測出被「掩蓋」字信息(「德」),但這種作法只學習到了實體內單字之間共現關係,並無學習到實體的總體語義表示。所以,咱們使用Knowledge-aware Masking的方法來預訓練MT-BERT。具體的作法是,輸入仍然是字,但在隨機」遮蔽」時,再也不選擇遮蔽單字,而是選擇「遮蔽」實體對應的詞。這須要咱們在預訓練以前,對語料作分詞,並將分詞結果和圖譜實體對齊。圖6右側展現了Knowledge-aware Masking策略,「全聚德」被隨機「遮蔽」。MT-BERT須要根據「烤鴨」,「久負盛名」等信息,準確的預測出「全聚德」。經過這種方式,MT-BERT能夠學到「全聚德」這個實體的語義表示,以及它跟上下文其餘實體之間的關聯,加強了模型語義表徵能力。基於美團大腦中已有實體信息,咱們在MT-BERT訓練中使用了Knowledge-aware Masking策略,實驗證實在細粒度情感分析任務上取得了顯著提高。

表5 MT-BERT在細粒度情感分析數據集上效果

模型輕量化

BERT模型效果拔羣,在多項天然語言理解任務上實現了最佳效果,可是因爲其深層的網絡結構和龐大的參數量,若是要部署上線,還面臨很大挑戰。以Query意圖分類爲例,咱們基於MT-BERT模型微調了意圖分類模型,協調工程團隊進行了1000QPS壓測實驗,部署30張GPU線上卡參與運算,在線服務的TP999高達50ms之多,難以知足上線要求。

爲了減小模型響應時間,知足上線要求,業內主要有三種模型輕量化方案。

  • 低精度量化。在模型訓練和推理中使用低精度(FP16甚至INT八、二值網絡)表示取代原有精度(FP32)表示。
  • 模型裁剪和剪枝。減小模型層數和參數規模。
  • 模型蒸餾。經過知識蒸餾方法[22]基於原始BERT模型蒸餾出符合上線要求的小模型。

在美團點評搜索Query意圖分類任務中,咱們優先嚐試了模型裁剪的方案。因爲搜索Query長度較短(一般不超過16個漢字),整個Sequence包含的語義信息有限,裁剪掉幾層Transformer結構對模型的語義表徵能力不會有太大影響,同時又能大幅減小模型參數量和推理時間。通過實驗驗證,在微調過程當中,咱們將MT-BERT模型裁剪爲4層Transfomer結構(MT-BERT-MINI,MBM),實驗效果如圖7所示。能夠發現,Query分類場景下,裁剪後的MBM沒有產生較大影響。因爲減小了一些沒必要要的參數運算,在美食和酒店兩個場景下,效果還有小幅的提高。

MBM在同等壓測條件下,壓測服務的TP999達到了12-14ms,知足搜索上線要求。除了模型裁剪,爲了支持更多線上需求,咱們還在進行模型蒸餾實驗,蒸餾後的6層MT-BERT模型在大多數下游任務中都沒有顯著的效果損失。值得一提的是,BERT模型輕量化是BERT相關研究的重要方向,最近Google公佈了最新ALBERT模型(A Lite BERT)[23],在減小模型參數量的同時在天然語言理解數據集GLUE上刷新了SOTA。

在美團點評業務中的應用

圖8展現了基於BERT模型微調能夠支持的任務類型,包括句對分類、單句分類、問答(機器閱讀理解)和序列標註任務。

  1. 句對分類任務和單句分類任務是句子級別的任務。預訓練中的NSP任務使得BERT中的「[CLS]」位置的輸出包含了整個句子對(句子)的信息,咱們利用其在有標註的數據上微調模型,給出預測結果。
  2. 問答和序列標註任務都屬於詞級別的任務。預訓練中的MLM任務使得每一個Token位置的輸出都包含了豐富的上下文語境以及Token自己的信息,咱們對BERT的每一個Token的輸出都作一次分類,在有標註的數據上微調模型並給出預測。

基於MT-BERT的微調,咱們支持了美團搜索和點評搜索的多個下游任務,包括單句分類任務、句間關係任務和序列標註任務等等。

單句分類

細粒度情感分析

美團點評做爲生活服務平臺,積累了大量真實用戶評論。對用戶評論的細粒度情感分析在深入理解商家和用戶、挖掘用戶情感等方面有相當重要的價值,而且在互聯網行業已有普遍應用,如個性化推薦、智能搜索、產品反饋、業務安全等領域。爲了更全面更真實的描述商家各屬性狀況,細粒度情感分析須要判斷評論文本在各個屬性上的情感傾向(即正面、負面、中立)。爲了優化美團點評業務場景下的細粒度情感分析效果,NLP中心標註了包含6大類20個細粒度要素的高質量數據集,標註過程當中採用嚴格的多人標註機制保證標註質量,並在AI Challenger 2018細粒度情感分析比賽中做爲比賽數據集驗證了效果,吸引了學術界和工業屆大量隊伍參賽。

針對細粒度情感分析任務,咱們設計了基於MT-BERT的多任務分類模型,模型結構如圖9所示。模型架構總體分爲兩部分:一部分是各情感維度的參數共享層(Share Layers),另外一部分爲各情感維度的參數獨享層(Task-specific Layers)。其中參數共享層採用了MT-BERT預訓練語言模型獲得文本的上下文表徵。MT-BERT依賴其深層網絡結構以及海量數據預訓練,能夠更好的表徵上下文信息,尤爲擅長提取深層次的語義信息。參數獨享層採用多路並行的Attention+Softmax組合結構,對文本在各個屬性上的情感傾向進行分類預測。經過MT-BERT優化後的細粒度情感分析模型在Macro-F1上取得了顯著提高。

細粒度情感分析的重要應用場景之一是大衆點評的精選點評模塊,如圖10所示。精選點評模塊做爲點評App用戶查看高質量評論的入口,其中精選點評標籤承載着結構化內容聚合的做用,支撐着用戶高效查找目標UGC內容的需求。細粒度情感分析可以從不一樣的維度去挖掘評論的情感傾向。基於細粒度情感分析的情感標籤可以較好地幫助用戶篩選查看,同時外露更多的POI信息,幫助用戶高效的從評論中獲取消費指南。

Query意圖分類

在美團點評的搜索架構中,Deep Query Understanding(DQU)都是重要的前置模塊之一。對於用戶Query,須要首先對用戶搜索意圖進行識別,如美食、酒店、演出等等。咱們跟內部的團隊合做,嘗試了直接使用MT-BERT做爲Query意圖分類模型。爲了保證模型在線Inference時間,咱們使用裁剪後的4層MT-BERT模型(MT-BERT-MINI,MBM模型)上線進行Query意圖的在線意圖識別,取得的業務效果如圖11所示:

同時對於搜索日誌中的高頻Query,咱們將預測結果以詞典方式上傳到緩存,進一步減小模型在線預測的QPS壓力。MBM累計支持了美團點評搜索17個業務頻道的Query意圖識別模型,相比原有模型,均有顯著的提高,每一個頻道的識別精確度都達到95%以上。MBM模型上線後,提高了搜索針對Query文本的意圖識別能力,爲下游的搜索的召回、排序及展現、頻道流量報表、用戶認知報表、Bad Case歸因等系統提供了更好的支持。

推薦理由場景化分類

推薦理由是點評搜索智能中心數據挖掘團隊基於大衆點評UGC爲每一個POI生產的天然語言可解釋性理由。對於搜索以及推薦列表展現出來的每個商家,咱們會用一句天然語言文原本突出商家的特點和賣點,從而讓用戶可以對展現結果有所感知,「知其然,更知其因此然」。近年來,可解釋的搜索系統愈來愈受到關注,給用戶展現商品或內容的同時透出解釋性理由,正在成爲業界通行作法,這樣不只能提高系統的透明度,還能提升用戶對平臺的信任和接受程度,進而提高用戶體驗效果。在美團點評的搜索推薦場景中,推薦理由有着普遍的應用場景,起到解釋展現、亮點推薦、場景化承載和個性化體現的重要做用,目前已經有46個業務方接入了推薦理由服務。

對於不一樣的業務場景,對推薦理由會有不一樣的要求。在外賣搜索場景下,用戶可能更爲關注菜品和配送速度,不太關注餐館的就餐環境和空間,這種狀況下只保留符合外賣場景的推薦理由進行展現。一樣地,在酒店搜索場景下,用戶可能更爲關注酒店特點相關的推薦理由(如交通是否方便,酒店是否近海近景區等)。

咱們經過內部合做,爲業務方提供符合不一樣場景需求的推薦理由服務。推薦理由場景化分類,即給定不一樣業務場景定義,爲每一個場景標註少許數據,咱們能夠基於MT-BERT進行單句分類微調,微調方式如圖8(b)所示。

句間關係

句間關係任務是對兩個短語或者句子之間的關係進行分類,常見句間關係任務如天然語言推理(Natural Language Inference, NLI)、語義類似度判斷(Semantic Textual Similarity,STS)等。

Query改寫是在搜索引擎中對用戶搜索Query進行同義改寫,改善搜索召回結果的一種方法。在美團和點評搜索場景中,一般一個商戶或者菜品會有不一樣的表達方式,例如「火鍋」也稱爲「涮鍋」。有時不一樣的詞語表述相同的用戶意圖,例如「婚紗攝影」和「婚紗照」,「配眼鏡」和「眼鏡店」。Query改寫能夠在不改變用戶意圖的狀況下,儘量多的召回知足用戶意圖的搜索結果,提高用戶的搜索體驗。爲了減小誤改寫,增長準確率,須要對改寫後Query和原Query作語義一致性判斷,只有語義一致的Query改寫對才能上線生效。Query語義一致性檢測屬於STS任務。咱們經過MT-BERT微調任務來判斷改寫後Query語義是否發生漂移,微調方式如圖8(a)所示,把原始Query和改寫Query構成句子對,即「[CLS] text_a [SEP] text_b [SEP]」的形式,送入到MT-BERT中,經過「[CLS]」判斷兩個Query之間關係。實驗證實,基於MT-BERT微調的方案在Benchmark上準確率和召回率都超過原先的XGBoost分類模型。

序列標註

序列標註是NLP基礎任務之一,給定一個序列,對序列中的每一個元素作一個標記,或者說給每個元素打一個標籤,如中文命名實體識別、中文分詞和詞性標註等任務都屬於序列標註的範疇。命名實體識別(Named Entity Recognition,NER),是指識別文本中具備特定意義的實體,主要包括人名、地名、機構名、專有名詞等,以及時間、數量、貨幣、比例數值等文字。

在美團點評業務場景下,NER主要需求包括搜索Query成分分析,UGC文本中的特定實體(標籤)識別/抽取,以及客服對話中的槽位識別等。NLP中心和酒店搜索算法團隊合做,基於MT-BERT微調來優化酒店搜索Query成分分析任務。酒店Query成分分析任務中,須要識別出Query中城市、地標、商圈、品牌等不一樣成分,用於肯定後續的召回策略。

在酒店搜索Query成分分析中,咱們對標籤採用「BME」編碼格式,即對一個實體,第一個字須要預測成實體的開始B,最後一個字須要預測成實體的結束E,中間部分則爲M。以圖13中酒店搜索Query成分分析爲例,對於Query 「北京昆泰酒店」,成分分析模型須要將「北京」識別成地點,而「昆泰酒店」識別成POI。MT-BERT預測高頻酒店Query成分後經過緩存提供線上服務,結合後續召回策略,顯著提高了酒店搜索的訂單轉化率。

將來展望

1. 一站式MT-BERT訓練和推理平臺建設

爲了下降業務方算法同窗使用MT-BERT門檻,咱們開發了MT-BERT一站式訓練和推理平臺,一期支持短文本分類和句間關係分類兩種任務,目前已在美團內部開放試用。

基於一站式平臺,業務方算法同窗上傳業務訓練數據和選擇初始MT-BERT模型以後,能夠提交微調任務,微調任務會自動分配到AFO集羣空閒GPU卡上自動運行和進行效果驗證,訓練好的模型能夠導出進行部署上線。

2. 融入知識圖譜的MT-BERT預訓練

正如前文所述,儘管在海量無監督語料上進行預訓練語言模型取得了很大的成功,但其也存在着必定的不足。BERT模型經過在大量語料的訓練能夠判斷一句話是否通順,可是卻不理解這句話的語義,經過將美團大腦等知識圖譜中的一些結構化先驗知識融入到MT-BERT中,使其更好地對生活服務場景進行語義建模,是須要進一步探索的方向。

3. MT-BERT模型的輕量化和小型化

MT-BERT模型在各個NLU任務上取得了驚人的效果,因爲其複雜的網絡結構和龐大的參數量,在真實工業場景下上線面臨很大的挑戰。如何在保持模型效果的前提下,精簡模型結構和參數已經成爲當前熱門研究方向。咱們團隊在低精度量化、模型裁剪和知識蒸餾上已經作了初步嘗試,可是如何針對不一樣的任務類型選擇最合適的模型輕量化方案,還須要進一步的研究和探索。

相關文章
相關標籤/搜索