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

近年來,BERT等Transformer模型大放異彩,在搜索推薦系統應用也成為業界的一種潮流。美美今天介紹的這篇文章,將分享Transformer在美團搜索排序上的實踐經驗。

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

引言

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

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

本文旨在分享 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 在美團搜索排序中的實踐

圖1 Transformer 結構示意圖


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

Multi-Head Attention

Multi-Head Attention 實際上是 h 個 Self-Attention 的集成, h 代表頭的個數。其中 Self-Attention 的計算公式如下:

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

其中,Q代表查詢,K代表鍵,V代表數值。

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

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

得到三個矩陣:

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

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

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

Point-wise Feed-Forward Networks

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

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

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

美團搜索排序Transformer實踐經驗

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

特徵工程

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

模型結構

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

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

圖2 Transformer & Deep 結構示意圖

相比 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 所示:

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

圖3 Transformer 行為序列建模

行為序列建模模塊

輸入部分

  • 分為短期行為序列和長期行為序列。
  • 行為序列內部的每個行為原始表示是由商戶 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 所示:

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

圖4 Transformer 行為序列建模

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

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

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

圖5 Transformer 行為序列建模

該版本的離線指標相比第二個版本模型有提升,上線效果相比線上 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)按照從大到小進行排序。

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

圖6 Transformer 重排序

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

  • 特徵向量生成:由原始特徵(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: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/illustrated-transformer/

[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:1905.06482, 2019.

[10] Zhuang T, Ou W, Wang Z. Globally optimized mutual influence aware ranking in e-commerce search[J]. 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 部。

---------- END ----------

招聘信息

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

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


分享到:


相關文章: