揭祕!阿里巴巴基於Transformer的推薦系統
全文共 3074字,預計學習時長 6分鐘
中國最大的電商平臺阿里巴巴,不僅是電商界的巨頭,在推薦系統研究領域也處於領軍地位。其最新論文《阿里巴巴電商推薦系統的行為順序Transformer模型》(https://arxiv.org/pdf/1905.06874.pdf)成為推動推薦系統發展的又一力作。
在這項研究中,阿里巴巴使用當下流行的Transformer模型捕捉線上購物過程中使用者行為的序列訊號,以此對使用者的下一次點選進行預測。
候選商品排名
推薦系統經常使用兩層的檢索和排名正規化,阿里巴巴也不例外。在檢索步驟,阿里巴巴以高召回率篩選整個商品集(當然數量遠遠大於一百萬個)中的一百萬個相關候選商品集。在排名步驟,對準確度高的候選商品進行排序。本論文聚焦排名步驟,主要介紹其在阿里巴巴旗下中國最大的C2C平臺——淘寶之中如何工作。
序列行為的重要性
當預測使用者網上購物的下一次點選時,順序十分重要。舉例來說,使用者買了一部iPhone後,往往會惦記手機殼,或者剛買了一條褲子後試圖找與之搭配的鞋子。以往的工作要麼完全忽視使用者行為的序列訊號(Cheng et. al, 2016),要麼對過往點選商品和候選商品之間的關係進行編碼,但並未將使用者點選的序列特性併入在內(Zhou et. al, 2017)。然而,由於Transformer模型使用了自注意力,所以它能在使用者行為序列中捕捉商品間的相關度以及順序的重要性。正因如此,阿里巴巴和淘寶團隊計劃在他們稱之為行為序列Transformer模型(BST)中運用這項功能。
BST架構
推薦任務建模為一個二元分類問題:給定使用者u的點選行為順序為S(u) = {v1, v2, …, vn},使用者點選商品n時,任務是在序列的過往商品中,習得一個函式以預測使用者u在時間t時點選目標候選商品v1的可能性。BST模型是谷歌WDL(Wide & Deep Learning)模型的改版(Cheng et. al, 2016),其中過往點選商品和相關特徵(類別、價格等)的嵌入都連在一起並嵌入低維向量中,然後送入多層感知器中。BST模型在WDL模型中新增了一個Transformer層,通過捕捉那些點選的序列特性更好地學習使用者點選商品的表示。
從下至上,BST模型架構由以下幾個部分組成:
嵌入層
在模型的第一層,幾種型別的特徵都被嵌入到低維向量中,因此得名“嵌入層”。這些特徵分別是:1)各種商品級和使用者級特徵,統稱為“其它特徵”(論文未作詳細闡釋),2)使用者點選每個商品的序列被稱為“使用者行為序列”,3)目標候選商品。溫馨提示,候選商品源自某個候選級模型,這一點論文中也未提及。
使用者行為中每個商品的點選序列被看作是以下兩個特徵的結合:
1. “序列商品特徵”包含item_id 和category_id。文中指出,儘管商品特徵很多,但筆者發現使用這兩個特徵效果最好。
2. “位置特徵”用於捕獲序列中的順序資訊,因為Transformer架構不像RNN,前者沒有序列順序的定義。商品vi 的位置值表示為pos(vi) = t(vt) - t(vi),其中 t(vt) 代表推薦時間, t(vi) 是使用者點選商品 vi時的時間戳。筆者發現這比之前Transformer論文中使用的sin函式和cos函式表現更好。
使用者行為序列和目標商品嵌入然後跨過Transformer層,然而“其它特徵”並非如此。
Transformer層
Transformer層由兩個子層組成(見圖1),其中使用者行為點選序列和候選商品的嵌入都經歷了多次轉換。這導致每個商品的嵌入包含點選序列中與其他商品相關的順序和重要性。依次瀏覽每個子層:
1. 自注意子層
自注意操作首先將序列中的商品嵌入作為輸入,然後為每個商品建立query、key和value向量。這三個向量通過將嵌入和三個訓練時習得的投影矩陣
相乘得出,其中d表示商品嵌入的維度。所有商品的query、key和value都可以表示為矩陣形式
,嵌入矩陣E中的每行對應使用者行為點選序列中的每一件商品。接下來,將Q、K、V矩陣輸入到縮放點積注意層中,獲得一個輸出,其定義如下:
執行操作一次以上後,可以將其看作一個attention的“頭”。與原始的Transformer論文一樣,其中運用到了多頭注意(MH),對各種隨機初始化投影矩陣
, 進行了attention操作,隨後結果合併到一起,並與另一個權重矩陣
相乘, 此過程如下所示:
其中的h代表多頭的數量,最終結果S將傳遞給Transformer模型中的下一子層。
2. 前饋網路子層
與原始的Transformer相關論文一樣,自注意子層的輸出S會通過逐點前饋神經網路。
3. 合併子層
對每個子層進行處理後,要進行層規範化、LeakyReLU和dropout。自注意和FFN子層的整體輸出如下:
其中
是可學習的引數。
Transformer層的結果是矩陣F,其代表使用者行為點選序列中商品的嵌入,以及包含使用者點選序列特性的目標商品。
MLP
“其它特徵”的嵌入和Transformer層的輸出向量相連,然後使用ReLU啟用函式和sigmoid啟用函式通過三個完全連線的層,由此,可預測出使用者點選目標商品v_tvt的可能性。為訓練此模型,此處使用了交叉熵(cross-entropy)損失函式:
函式中的D代表所有樣本;
表示使用者是否點選了某個商品,y為1時表示使用者已點選,y為0則未點選;p(x)是BST網路的輸出值,表示使用者點選候選商品x的概率。
實驗
表1: BST模型的引數
BST模型和基準線是用Python 2.7和Tensorflow 1.4實現的,並選用“Adagrad”作為優化器。模型引數如表1所示。
使用淘寶app的8天執行日誌進行實驗,前7天用於訓練,最後1天用於測試。資料集的資料如下表2所示:
表2: 來自淘寶資料集的資料
實驗中使用的基準線是WDL、DIN和整合序列資訊的WDL——WDL(+Seq),這些基準線包含過往已點選商品的嵌入平均值。AUC用於評估模型離線時的表現。對於線上A/B測試,使用CTR和平均應答時間(RT,對於給定query生成推薦所需的花費)評估模型。
結果如表3所示。在離線實驗中,把WDL比作WDL(+Seq)時,很顯然,即使用簡單的平均方式,合併序列資訊也很重要。結果表明,BST模型對基準線所做的改進很有必要。作者指出,由於此RT與WDL和DIN的RT差不多,因此保證了在現實世界大型案例中將RT等複雜模型部署到生產中的可行性。
表3: 實驗結果。BST(b=1)表示含一個自注意模組的BST模型,經發現其可以提供最佳離線和線上結果。
結論
阿里巴巴的研究員強調了另一案例,即NLP中的想法可以成功地應用於推薦系統。本論文作出了兩項主要貢獻。第一,BST模型與以往模型不同,前者可通過把Transformer模型併入一個標準多層感知器中,成功捕獲使用者網上購物行為中的序列訊號。第二,大規模的在生產中部署BST模型不僅是一個可行方法,同時還適合阿里巴巴和淘寶當前的生產模式。阿里巴巴推薦系統搜尋團隊接下來會做些什麼,讓我們拭目以待。
https://www.toutiao.com/a6739350054781321740/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946223/viewspace-2657912/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 京東推薦系統架構揭祕:大資料時代下的智慧化改造架構大資料
- 關於《推薦系統實踐》
- 關於推薦系統中的特徵工程特徵工程
- 推薦系統
- 【推薦系統篇】--推薦系統之訓練模型模型
- 編輯推薦之《推薦系統》
- 知了 | 基於NLP的智慧問答推薦系統
- 基於內容的推薦系統演算法演算法
- 【推薦系統篇】--推薦系統之測試資料
- 《推薦系統學習》之推薦系統那點事
- Mahout的taste推薦系統引擎(影片推薦案例)AST
- 雲音樂推薦系統(二):推薦系統的核心演算法演算法
- 推薦系統概述
- 機器學習 — 推薦系統機器學習
- 《推薦系統實踐》筆記 01 推薦系統簡介筆記
- 阿里巴巴黑科技排程系統揭祕 – 何劍 | JTalk 第六期阿里
- 阿里巴巴黑科技排程系統揭祕 - 何劍 | JTalk 第六期阿里
- 《推薦系統實踐》關於Latent Factor Model
- 推薦個適用於製造業的CRM系統?
- LibRec: 基於機器學習的大資料推薦系統機器學習大資料
- 推薦系統論文之序列推薦:KERL
- 推薦系統: 相關推薦方法對比
- 推薦系統一——深入理解YouTube推薦系統演算法演算法
- 【推薦系統篇】--推薦系統介紹和基本架構流程架構
- 推薦系統應該如何保障推薦的多樣性?
- 《推薦系統》-DIN模型模型
- 《推薦系統》-PNN模型模型
- python 推薦系統Python
- 推薦系統雜談
- 推薦系統評估
- 推薦:看板系統Trello
- 圖靈推薦系統圖靈
- 推薦系統概念篇
- PredictionIO:開源的推薦系統
- 推薦系統的評估方法
- 序列推薦系統的前世今生
- 開源的.NET系統推薦
- 推薦系統的那點事