美團搜索是美團 App 鏈接用戶與商家的一種重要方式,而排序策略則是搜索鏈路的關鍵環節,對搜索展現效果起着相當重要的效果。目前,美團的搜索排序流程爲多層排序,分別是粗排、精排、異構排序等,多層排序的流程主要是爲了平衡效果和性能。其中搜索核心精排策略是 DNN 模型,美團搜索始終貼近業務,而且結合先進技術,從特徵、模型結構、優化目標角度對排序效果進行了全面的優化。git
近些年,基於 Transformer[1] 的一些 NLP 模型大放光彩,好比 BERT[2] 等等,將 Transformer 結構應用於搜索推薦系統也成爲業界的一個潮流。好比應用於對 CTR 預估模型進行特徵組合的 AutoInt[3]、行爲序列建模的 BST[4] 以及重排序模型 PRM[5],這些工做都證實了 Transformer 引入搜索推薦領域能取得不錯的效果,因此美團搜索核心排序也在 Transformer 上進行了相關的探索。github
本文旨在分享 Transformer 在美團搜索排序上的實踐經驗。內容會分爲如下三個部分:第一部分對 Transformer 進行簡單介紹,第二部分會介紹 Transfomer 在美團搜索排序上的應用以及實踐經驗,最後一部分是總結與展望。但願能對你們有所幫助和啓發。算法
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 在美團搜索排序上的實踐主要分如下三個部分:第一部分是特徵工程,第二部分是行爲序列建模,第三部分是重排序。下面會逐一進行詳細介紹。
在搜索排序系統中,模型的輸入特徵維度高但稀疏性很強,而準確的交叉特徵對模型的效果又相當重要。因此尋找一種高效的特徵提取方式就變得十分重要,咱們借鑑 AutoInt[3] 的方法,採用 Transformer Layer 進行特徵的高階組合。
咱們的模型結構參考 AutoInt[3] 結構,但在實踐中,根據美團搜索的數據特色,咱們對模型結構作了一些調整,以下圖 2 所示:
相比 AutoInt[3],該結構有如下不一樣:
Embedding Layer 部分:衆所周知在 CTR 預估中,除了大規模稀疏 ID 特徵,稠密類型的統計特徵也是很是有用的特徵,因此這部分將全部的稠密特徵和稀疏 ID 特徵都轉換成 Embedding 表示。
Transformer 部分:針對用戶行爲序列、商戶 、品類 、地理位置等 Embedding 表示,使用 Transformer Layer 來顯示學習這些特徵的交叉關係。
MLP 部分:考慮到 MLP 具備很強的隱式交叉能力,將全部特徵的 Embedding 表示 concat 一塊兒輸入到 MLP。
實踐效果及經驗
效果:離線效果提高,線上 QV_CTR 效果波動。
經驗:
理解用戶是搜索排序中一個很是重要的問題。過去,咱們對訓練數據研究發現,在訓練數據量很大的狀況下,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 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 提高最爲顯著。
經驗:
在引言中,咱們提到美團搜索排序過去作了不少優化工做,可是大部分都是集中在 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 重排序對線上 NDCG 和 QV_CTR 均穩定正向提高。
經驗:
2019 年末,美團搜索對 Transformer 在排序中的應用進行了一些探索,既取得了一些技術沉澱也在線上指標上取得比較明顯的收益,不過將來還有不少的技術能夠探索。
除了上面提到的三點,考慮到美團搜索上承載着多個業務,好比美食、到綜、酒店、旅遊等等,各個業務之間既有共性也有本身獨有的特性,而且除了優化用戶體驗,也須要知足業務需求。爲了更好的對這一塊建模優化, 咱們也正在探索 Partition Model 和多目標相關的工做,歡迎業界同行一塊兒交流。
肖垚,家琪,周翔,陳勝,雲森,永超,仲遠,均來自美團 AI 平臺搜索與 NLP 部負責人。
美團搜索核心排序組,長期招聘搜索推薦算法工程師,座標北京。歡迎感興趣的同窗發送簡歷到:tech@meituan.com(郵件標題請註明:美團搜索核心排序組)
閱讀更多技術文章,請掃碼關注微信公衆號-美團技術團隊!