Transformer 在美團搜索排序中的實踐

引言

美團搜索是美團 App 鏈接用戶與商家的一種重要方式,而排序策略則是搜索鏈路的關鍵環節,對搜索展現效果起着相當重要的效果。目前,美團的搜索排序流程爲多層排序,分別是粗排、精排、異構排序等,多層排序的流程主要是爲了平衡效果和性能。其中搜索核心精排策略是 DNN 模型,美團搜索始終貼近業務,而且結合先進技術,從特徵、模型結構、優化目標角度對排序效果進行了全面的優化。git

近些年,基於 Transformer[1] 的一些 NLP 模型大放光彩,好比 BERT[2] 等等,將 Transformer 結構應用於搜索推薦系統也成爲業界的一個潮流。好比應用於對 CTR 預估模型進行特徵組合的 AutoInt[3]、行爲序列建模的 BST[4] 以及重排序模型 PRM[5],這些工做都證實了 Transformer 引入搜索推薦領域能取得不錯的效果,因此美團搜索核心排序也在 Transformer 上進行了相關的探索。github

本文旨在分享 Transformer 在美團搜索排序上的實踐經驗。內容會分爲如下三個部分:第一部分對 Transformer 進行簡單介紹,第二部分會介紹 Transfomer 在美團搜索排序上的應用以及實踐經驗,最後一部分是總結與展望。但願能對你們有所幫助和啓發。算法

Transformer 簡介

Transformer 是谷歌在論文《Attention is all you need》[1] 中提出來解決 Sequence to Sequence 問題的模型,其本質上是一個編解碼(Encoder-Decoder )結構,編碼器 Encoder 由 6 個編碼 block 組成,Encoder 中的每一個 block 包含 Multi-Head Attention 和 FFN(Feed-Forward Network);一樣解碼器 Decoder 也是 6 個解碼 block 組成,每一個 block 包含 Multi-Head Attention、Encoder-Decoder Attention 和 FFN。具體結構如圖 1 所示,其詳細的介紹可參考文獻[1,6]。性能優化

考慮到後續內容出現的 Transformer Layer 就是 Transformer 的編碼層,這裏先對它作簡單的介紹。它主要由如下兩部分組成:微信

Multi-Head Attention網絡

Multi-Head Attention 其實是 h 個 Self-Attention 的集成, h 表明頭的個數。其中 Self-Attention 的計算公式以下:性能

其中,Q表明查詢,K表明鍵,V表明數值。學習

在咱們的應用實踐中,原始輸入是一系列 Embedding 向量構成的矩陣 E
,矩陣 E 首先經過線性投影:優化

獲得三個矩陣:編碼

而後將投影后的矩陣輸入到 Multi-Head Attention。計算公式以下:

Point-wise Feed-Forward Networks

該模塊是爲了提升模型的非線性能力提出來的,它就是全鏈接神經網絡結構,計算公式以下:

Transformer Layer 就是經過這種自注意力機制層和普通非線性層來實現對輸入信號的編碼,獲得信號的表示。

美團搜索排序Transformer實踐經驗

Transformer 在美團搜索排序上的實踐主要分如下三個部分:第一部分是特徵工程,第二部分是行爲序列建模,第三部分是重排序。下面會逐一進行詳細介紹。

特徵工程

在搜索排序系統中,模型的輸入特徵維度高但稀疏性很強,而準確的交叉特徵對模型的效果又相當重要。因此尋找一種高效的特徵提取方式就變得十分重要,咱們借鑑 AutoInt[3] 的方法,採用 Transformer Layer 進行特徵的高階組合。

模型結構

咱們的模型結構參考 AutoInt[3] 結構,但在實踐中,根據美團搜索的數據特色,咱們對模型結構作了一些調整,以下圖 2 所示:

相比 AutoInt[3],該結構有如下不一樣:

  • 保留將稠密特徵和離散特徵的 Embedding 送入到 MLP 網絡,以隱式的方式學習其非線性表達。
  • Transformer Layer 部分,不是送入全部特徵的 Embedding,而是基於人工經驗選擇了部分特徵的 Embedding,第一點是由於美團搜索場景特徵的維度高,全輸入進去會提升模型的複雜度,致使訓練和預測都很慢;第二點是,全部特徵的 Embedding 維度不徹底相同,也不適合一塊兒輸入到 Transformer Layer 。

Embedding Layer 部分:衆所周知在 CTR 預估中,除了大規模稀疏 ID 特徵,稠密類型的統計特徵也是很是有用的特徵,因此這部分將全部的稠密特徵和稀疏 ID 特徵都轉換成 Embedding 表示。

Transformer 部分:針對用戶行爲序列、商戶 、品類 、地理位置等 Embedding 表示,使用 Transformer Layer 來顯示學習這些特徵的交叉關係。

MLP 部分:考慮到 MLP 具備很強的隱式交叉能力,將全部特徵的 Embedding 表示 concat 一塊兒輸入到 MLP。

實踐效果及經驗

效果:離線效果提高,線上 QV_CTR 效果波動。

經驗:

  • 三層 Transformer 編碼層效果比較好。
  • 調節多頭注意力的「頭」數對效果影響不大 。
  • Transformer 編碼層輸出的 Embedding 大小對結果影響不大。
  • Transformer 和 MLP 融合的時候,最後結果融合和先 concat 再接一個全鏈接層效果差很少。

行爲序列建模

理解用戶是搜索排序中一個很是重要的問題。過去,咱們對訓練數據研究發現,在訓練數據量很大的狀況下,item 的大部分信息均可以被 ID 的 Embedding 向量進行表示,可是用戶 ID 在訓練數據中是十分稀疏的,用戶 ID 很容易致使模型過擬合,因此須要大量的泛化特徵來較好的表達用戶。這些泛化特徵能夠分爲兩類:一類是偏靜態的特徵,例如用戶的基本屬性(年齡、性別、職業等等)特徵、長期偏好(品類、價格等等)特徵;另外一類是動態變化的特徵,例如刻畫用戶興趣的實時行爲序列特徵。而用戶實時行爲特徵可以明顯增強不一樣樣本之間的區分度,因此在模型中優化用戶行爲序列建模是讓模型更好理解用戶的關鍵環節。

目前,主流方法是採用對用戶行爲序列中的 item 進行 Sum-pooling 或者 Mean-pooling 後的結果來表達用戶的興趣,這種假設全部行爲內的 item 對用戶的興趣都是等價的,於是會引入一些噪聲。尤爲是在美團搜索這種交互場景,這種假設每每是不能很好地進行建模來表達用戶興趣。

近年來,在搜索推薦算法領域,針對用戶行爲序列建模取得了重要的進展:DIN 引入注意力機制,考慮行爲序列中不一樣 item 對當前預測 item 有不一樣的影響[7];而 DIEN 的提出,解決 DIN 沒法捕捉用戶興趣動態變化的缺點[8]。DSIN 針對 DIN 和 DIEN 沒有考慮用戶歷史行爲中的 Session 信息,由於每一個 Session 中的行爲是相近的,而在不一樣 Session 之間的差異很大,它在 Session 層面上對用戶的行爲序列進行建模[9];BST 模型經過 Transformer 模型來捕捉用戶歷史行爲序列中的各個 item 的關聯特徵,與此同時,加入待預測的 item 來達到抽取行爲序列中的商品與待推薦商品之間的相關性[4]。這些已經發表過的工做都具備很大的價值。接下來,咱們主要從美團搜索的實踐業務角度出發,來介紹 Transformer 在用戶行爲序列建模上的實踐。

模型結構

在 Transformer 行爲序列建模中,咱們迭代了三個版本的模型結構,下面會依次進行介紹。

模型主要構成:全部特徵(user 維度、item 維度、query 維度、上下文維度、交叉維度)通過底層 Embedding Layer 獲得對應的 Embedding 表示;建模用戶行爲序列獲得用戶的 Embedding 表示;全部 Embedding concat 一塊兒送入到三層的 MLP 網絡。

第一個版本:由於原來的 Sum-pooling 建模方式沒有考慮行爲序列內部各行爲的關係,而 Transformer 又被證實可以很好地建模序列內部之間的關係,因此咱們嘗試直接將行爲序列輸入到 Transformer Layer,其模型結構如圖3 所示:

行爲序列建模

輸入部分:

  • 分爲短時間行爲序列和長期行爲序列。
  • 行爲序列內部的每一個行爲原始表示是由商戶 ID,以及一些商戶泛化信息的 Embedding 進行 concat 組成。
  • 每段行爲序列的長度固定,不足部分使用零向量進行補齊。

輸出部分:對 Transformer Layer 輸出的向量作 Sum-pooling (這裏嘗試過Mean-pooling、concat,效果差很少)獲得行爲序列的最終 Embedding 表示。

該版本的離線指標相比線上 Base(行爲序列 Sum-pooling) 模型持平,儘管該版本沒有取得離線提高,可是咱們繼續嘗試優化。

第二個版本:第一個版本存在一個問題,對全部的 item 打分的時候,用戶的 Embedding 表示都是同樣的,因此參考 BST[4],在第一個版本的基礎上引入 Target-item,這樣能夠學習行爲序列內部的 item 與 Target-item 的相關性,這樣在對不一樣的 item 打分時,用戶的 Embedding 表示是不同的,其模型結構以下圖4 所示:

該版本的離線指標相比線上 Base(行爲序列 Sum-pooling) 模型提高,上線發現效果波動,咱們仍然沒有灰心,繼續迭代優化。

第三個版本:和第二個版本同樣,一樣針對第一個版本存在的對不一樣 item 打分,用戶 Embedding 表示同樣的問題,嘗試在第一個版本引入 Transformer 的基礎上,疊加 DIN[7] 模型裏面的 Attention-pooling 機制來解決該問題,其模型結構如圖5 所示:

該版本的離線指標相比第二個版本模型有提高,上線效果相比線上 Base(行爲序列 Sum-pooling)有穩定提高。

實踐效果及經驗

效果:第三個版本(Transformer + Attention-pooling)模型的線上 QV_CTR 和 NDCG 提高最爲顯著。

經驗:

  • Transformer 編碼爲何有效?Transformer 編碼層內部的自注意力機制,可以對序列內 item 的相互關係進行有效的建模來實現更好的表達,而且咱們離線實驗不加 Transformer 編碼層的 Attention-pooling,發現離線 NDCG 降低,從實驗上證實了 Transformer 編碼有效。
  • Transformer 編碼爲何優於 GRU ?忽略 GRU 的性能差於 Transformer;咱們作過實驗將行爲序列長度的上限往下調,Transformer 的效果相比 GRU 的效果提高在縮小,可是總體仍是行爲序列的長度越大越好,因此Transformer 相比 GRU 在長距離時,特徵捕獲能力更強。
  • 位置編碼(Pos-Encoding)的影響咱們試過加 Transformer 裏面原生的正餘弦以及距當前預測時間的時間間隔的位置編碼都無效果,分析應該是咱們在處理行爲序列的時候,已經將序列切割成不一樣時間段,必定程度上包含了時序位置信息。爲了驗證這個想法,咱們作了僅使用一個長序列的實驗(對照組不加位置編碼,實驗組加位置編碼,離線 NDCG 有提高),這驗證了咱們的猜想。
  • Transformer 編碼層不須要太多,層數過多致使模型過於複雜,模型收斂慢效果很差。
  • 調節多頭注意力的「頭」數對效果影響不大。

重排序

在引言中,咱們提到美團搜索排序過去作了不少優化工做,可是大部分都是集中在 PointWise 的排序策略上,未能充分利用商戶展現列表的上下文信息來優化排序。一種直接利用上下文信息優化排序的方法是對精排的結果進行重排,這能夠抽象建模成一個序列(排序序列)生成另外一個序列(重排序列)的過程,天然聯想到可使用 NLP 領域經常使用的 Sequence to Sequence 建模方法進行重排序建模。

目前業界已有一些重排序的工做,好比使用 RNN 重排序[10-11]、Transformer 重排序[5]。考慮到 Transformer 相比 RNN 有如下兩個優點:(1)兩個 item 的相關性計算不受距離的影響 (2)Transformer 能夠並行計算,處理效率比 RNN 更高;因此咱們選擇 Transformer 對重排序進行建模。

模型結構

模型結構參考了 PRM[5],結合美團搜索實踐的狀況,重排序模型相比 PRM 作了一些調整。具體結構如圖 6 所示,其中 D1,D2,...,Dn 是重排商戶集合,最後根據模型的輸出 Score(D1),Score(D2),...,Score(Dn)按照從大到小進行排序。

主要由如下幾個部分構成:

  • 特徵向量生成:由原始特徵(user、item、交叉等維度的稠密統計特徵)通過一層全鏈接的輸出進行表示。
  • 輸入層:其中 X 表示商戶的特徵向量,P 表示商戶的位置編碼,將特徵向量 X 與位置向量 P 進行 concat 做爲最終輸入。
  • Transformer編碼層:一層 Multi-Head Attention 和 FFN 的。
  • 輸出層:一層全鏈接網絡獲得打分輸出 Score。

模型細節:

  • 特徵向量生成部分和重排序模型是一個總體,聯合端到端訓練。
  • 訓練和預測階段固定選擇 TopK 進行重排,遇到某些請求曝光 item 集不夠 TopK 的狀況下,在末尾補零向量進行對齊。

實踐效果及經驗

效果:Transformer 重排序對線上 NDCG 和 QV_CTR 均穩定正向提高。

經驗:

  • 重排序大小如何選擇?考慮到線上性能問題,重排序的候選集不能過大,咱們分析數據發現 95% 的用戶瀏覽深度不超過 10,因此咱們選擇對 Top10 的商戶進行重排。
  • 位置編碼向量的重要性:這個在重排序中很重要,須要位置編碼向量來刻畫位置,更好的讓模型學習出上下文信息,離線實驗發現去掉位置向量 NDCG@10 降低明顯。
  • 性能優化:最初選擇商戶所有的精排特徵做爲輸入,發現線上預測時間太慢;後面進行特徵重要性評估,篩選出部分重要特徵做爲輸入,使得線上預測性能知足上線要求。
  • 調節多頭注意力的「頭」數對效果影響不大。

總結和展望

2019 年末,美團搜索對 Transformer 在排序中的應用進行了一些探索,既取得了一些技術沉澱也在線上指標上取得比較明顯的收益,不過將來還有不少的技術能夠探索。

  • 在特徵工程上,引入 Transformer 層進行高階特徵組合雖然沒有帶來收益,可是在這個過程當中也再次驗證了沒有萬能的模型對全部場景數據有效。目前搜索團隊也在探索在特徵層面應用 BERT 對精排模型進行優化。
  • 在行爲序列建模上,目前的工做集中在對已有的用戶行爲數據進行建模來理解用戶,將來要想更加深刻全面的認識用戶,更加豐富的用戶數據必不可少。當有了這些數據後如何進行利用,又是一個能夠探索的技術點,好比圖神經網絡建模等等。
  • 在重排序建模上,目前引入 Transformer 取得了一些效果,同時隨着強化學習的普及,在美團這種用戶與系統強交互的場景下,用戶的行爲反饋蘊含着很大的研究價值,將來利用用戶的實時反饋信息進行調序是個值得探索的方向。例如,根據用戶上一刻的瀏覽反饋,對用戶下一刻的展現結果進行調序。

除了上面提到的三點,考慮到美團搜索上承載着多個業務,好比美食、到綜、酒店、旅遊等等,各個業務之間既有共性也有本身獨有的特性,而且除了優化用戶體驗,也須要知足業務需求。爲了更好的對這一塊建模優化, 咱們也正在探索 Partition Model 和多目標相關的工做,歡迎業界同行一塊兒交流。

參考資料

  • [1] Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need[C]//Advances in neural information processing systems. 2017: 5998-6008.
  • [2] Devlin J, Chang M W, Lee K, et al. Bert: Pre-training of deep bidirectional transformers for language understanding[J]. arXiv preprint arXiv:1810.04805, 2018.
  • [3] Song W, Shi C, Xiao Z, et al. Autoint: Automatic feature interaction learning via self-attentive neural networks[C]//Proceedings of the 28th ACM International Conference on Information and Knowledge Management. 2019: 1161-1170.
  • [4] Chen Q, Zhao H, Li W, et al. Behavior sequence transformer for e-commerce recommendation in Alibaba[C]//Proceedings of the 1st International Workshop on Deep Learning Practice for High-Dimensional Sparse Data. 2019: 1-4.
  • [5] Pei C, Zhang Y, Zhang Y, et al. Personalized re-ranking for recommendation[C]//Proceedings of the 13th ACM Conference on Recommender Systems. 2019: 3-11.
  • [6] http://jalammar.github.io/ill...
  • [7] Zhou G, Zhu X, Song C, et al. Deep interest network for click-through rate prediction[C]//Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. ACM, 2018: 1059-1068.
  • [8] Zhou G, Mou N, Fan Y, et al. Deep interest evolution network for click-through rate prediction[C]//Proceedings of the AAAI Conference on Artificial Intelligence. 2019, 33: 5941-5948.
  • [9] Feng Y, Lv F, Shen W, et al. Deep Session Interest Network for Click-Through Rate Prediction[J]. arXiv preprint arXiv:1905.06482, 2019.
  • [10] Zhuang T, Ou W, Wang Z. Globally optimized mutual influence aware ranking in e-commerce search[J]. arXiv preprint arXiv:1805.08524, 2018.
  • [11] Ai Q, Bi K, Guo J, et al. Learning a deep listwise context model for ranking refinement[C]//The 41st International ACM SIGIR Conference on Research & Development in Information Retrieval. 2018: 135-144.

做者簡介

肖垚,家琪,周翔,陳勝,雲森,永超,仲遠,均來自美團 AI 平臺搜索與 NLP 部負責人。

招聘信息

美團搜索核心排序組,長期招聘搜索推薦算法工程師,座標北京。歡迎感興趣的同窗發送簡歷到:tech@meituan.com(郵件標題請註明:美團搜索核心排序組)

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

相關文章
相關標籤/搜索