人工智能

美團BERT的探索和實踐

廣告
廣告

他山之石,可以攻玉。美團點評NLP團隊一直緊跟業界前沿技術,開展了基于美團點評業務數據的預訓練研究工作,訓練了更適配美團點評業務場景的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甚至INT8、二值網絡)表示取代原有精度(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任務上取得了驚人的效果,由于其復雜的網絡結構和龐大的參數量,在真實工業場景下上線面臨很大的挑戰。如何在保持模型效果的前提下,精簡模型結構和參數已經成為當前熱門研究方向。我們團隊在低精度量化、模型裁剪和知識蒸餾上已經做了初步嘗試,但是如何針對不同的任務類型選擇最合適的模型輕量化方案,還需要進一步的研究和探索。

參考文獻

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

[2] Howard, Jeremy, and Sebastian Ruder. “Universal language model fine-tuning for text classification.” arXiv preprint arXiv:1801.06146 (2018).

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

[4] Alec Radford, Karthik Narasimhan, Tim Salimans, and Ilya Sutskever. 2018. Improving Language Understanding by Generative Pre-Training. Technical report, OpenAI.

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

[6] Ming Zhou. “The Bright Future of ACL/NLP.” Proceedings of the 57th Annual Meeting of the Association for Computational Linguistics. (2019).

[7] Deng, Jia, et al. “Imagenet: A large-scale hierarchical image database.” 2009 IEEE conference on computer vision and pattern recognition. Ieee, (2009).

[8] Girshick, Ross, et al. “Rich feature hierarchies for accurate object detection and semantic segmentation.” Proceedings of the IEEE conference on computer vision and pattern recognition. 2014.

[9] Mikolov, Tomas, et al. “Distributed representations of words and phrases and their compositionality.” Advances in neural information processing systems. 2013.

[10] Jeffrey Pennington, Richard Socher, and Christopher D. Manning. 2014. Glove: Global vectors for word representation. In EMNLP.

[11] Oren Melamud, Jacob Goldberger, and Ido Dagan.2016. context2vec: Learning generic context embedding with bidirectional lstm. In CoNLL.

[12] Hochreiter, Sepp, and Jürgen Schmidhuber. “Long short-term memory.” Neural computation 9.8 (1997): 1735-1780.

[13] 張俊林. 從Word Embedding到BERT模型—自然語言處理中的預訓練技術發展史. https://zhuanlan.zhihu.com/p/49271699

[14] Sebastion Ruder. “NLP’s ImageNet moment has arrived.” http://ruder.io/nlp-imagenet/. (2019)

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

[16] 鄭坤. 使用TensorFlow訓練WDL模型性能問題定位與調優. https://tech.meituan.com/2018/04/08/tensorflow-performance-bottleneck-analysis-on-hadoop.html

[17] Uber. “Meet Horovod: Uber’s Open Source Distributed Deep Learning Framework for TensorFlow”. https://eng.uber.com/horovod/

[18] Goyal, Priya, et al. “Accurate, large minibatch sgd: Training imagenet in 1 hour.” arXiv preprint arXiv:1706.02677 (2017).

[19] Baidu. https://github.com/baidu-research/baidu-allreduce

[20] Micikevicius, Paulius, et al. “Mixed precision training.” arXiv preprint arXiv:1710.03740 (2017).

[21] 仲遠,富崢等. 美團餐飲娛樂知識圖譜——美團大腦揭秘. https://tech.meituan.com/2018/11/22/meituan-brain-nlp-01.html

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

[23] Google. ALBERT: A Lite BERT for Self-supervised Learning of Language Representations. https://openreview.net/pdf?id=H1eA7AEtvS. (2019)

作者簡介

楊揚,佳昊,禮斌,任磊,峻辰,玉昆,張歡,金剛,王超,王珺,富崢,仲遠,都來自美團搜索與NLP部。

我還沒有學會寫個人說明!

螞蟻金服研究員玉伯回顧阿里十一年成長之路

上一篇

如何統一服務調用框架?

下一篇

你也可能喜歡

美團BERT的探索和實踐

長按儲存圖像,分享給朋友

ITPUB 每周精要將以郵件的形式發放至您的郵箱


微信掃一掃

微信掃一掃
重庆快乐10分苹果版本 麻将玩法介绍视频教程 现在学做led显示屏赚钱吗 劳务不收费怎么赚钱 50个赚钱 麻将软件作弊器城游麻将 杭州种植葡萄赚钱吗 fcf五福集团怎么赚钱了 创盈彩票群 开源硬件赚钱 csgo运营商怎么赚钱 彩友网安卓 比较赚钱的steam游戏 有什么手机棋牌能赚钱 森林麻将五常玩法 用力不赚钱赚钱不用力白手创业 怎样不花钱还能赚钱