Practice on Long Sequential User Behavior Modeling for Click-Through Rate Prediction

本文主要記錄了這篇文章的主要方法和貢獻,以及個人的一些思考和想法,歡迎討論!
最開始是在語雀寫的,導出後可能格式有點問題,歡迎移步語雀:

https://www.yuque.com/docs/share/fee366de-68ba-4254-9a57-cccfe3edd356?#

 

Alibaba, KDD 2019

https://arxiv.org/abs/1905.09248

 

Contribution

  1. 解耦了用戶興趣捕捉模塊,UIC
    1. traffic request Vs. trigger event
  2. 設計了memory-based模型MIMN來從長序列行爲數據中建模用戶興趣
    1. Sequence up to 1000 (120 days
    2. based on NTM ( Alex Graves, Greg Wayne, and Ivo Danihelka. 2014. Neural turing machines. arXiv preprint arXiv:1410.5401 (2014).
    3. implemented with UIC module

 

User Interest Center Architecture

 

image.png

A是目前的推薦服務架構,B是本文設計了UIC的服務架構。

他們的區別在於B將UIC解耦出來,用戶興趣特徵的計算不再由廣告服務請求觸發,而是由用戶的實時動作觸發,因此在廣告服務請求發生時,這部分特徵已經計算好了。

Long Sequential Modeling

image.png

粉色部分爲文章對sequence的建模,灰色部分爲利用sequence建模後的特徵以及其他常規特徵進行最後的預測

對sequence的建模分爲兩部分,一部分爲對長期序列運用神經圖靈機機制進行建模,另一部分是在這一基礎上再進行high-order 信息的建模,用於刻畫用戶興趣的變化。

Nerual Turing Machine

文章主要基於原始的神經圖靈機,使用神經圖靈機來對用戶行爲序列進行建模。

Alex Graves, Greg Wayne, and Ivo Danihelka. 2014. Neural turing machines. arXiv preprint arXiv:1410.5401 (2014).

 

神經圖靈機的直觀理解:

一個可微的memory機制,由controller、read head、write head、memory組成。

有兩個操作,讀操作和寫操作

  • 讀的時候,由controller給出“地址”,將對應地址的數據讀出來

image.png

image.png

image.png

k_t是 controller給出的“地址”,是一個向量;M_t(i) 是t時刻的i-th memory slot;

w_t^r(i) 是一個權重,是i-th memory slot在讀寫時的權重,和k_t越像的memory slot的權重越高

最後輸出的是所有memory slot的加權和(因爲做了soft max所以近似取了某一個最像的memory slot

  • 寫的時候,由controller給出“地址”,將對應地址的數據進行更新

image.png

controller 是一個rnn

 

神經圖靈機是如何完成對序列的建模的:

  • memory裏存的是什麼?從理論分析,memory裏很有可能存放了序列中有代表性的幾個特徵,相當於對sequence先做了聚類,然後將聚類的中心或mean存在了memory裏。(實驗部分沒有分析,需要對神經圖靈機進一步瞭解
  • Vs. pooling?基於上一點的分析,pooling只能存放一個特徵,可能是用戶長期動作的一個傾向;神經圖靈機可以存放多個特徵,可能是用戶長期動作中的多個傾向,比如好幾個品類的商品。
  • Vs. attention? 神經圖靈機對應於attention的k,v部分,attention是在所有item中算weight,而神經圖靈機爲item做了聚類、篩選

 

 

Memory Utilization Regularization

文章對神經圖靈機做的一個改進,使得memory的利用更爲balance

 

Memory Induction Unit

MIU也會維護一個memory S,  和 memory M對應。

在t-th時刻,MIU會對memory M進行一次read,將memory slot按照w排序,選M中前K個memory slot更新自己的memory S中對應的部分。

更新方法如下:

 image.png

使用GRU,基於上一時刻的S(i)作爲hidden state,使用這一時刻排序後的i-th M,和這一時刻的用戶動作特徵,來更新S(i)。

 

理解:

MIU中的memory存放的是用戶興趣的變化。

 

Experiments

  • 在公開數據集(Taobao, Amazon)上相較DIEN AUC上漲1%左右
  • Ablation Study
    • Slot Number of Memory:長序列需要slot數更多,短序列需要slot數更少。但文章這裏只是對tabao和amazon上的number實驗結果不同做了分析(tabao sequence長,Amazon短)。這樣的分析沒有說服力,應該在tabao數據集上調整sequence長度,分析長度和memory slot number的數量的關係,才能給出一個令人信服的結果。
    • Memory utilization:用了memory utiliza- tion regularization trick後,memory slot的利用更均衡,auc更好。
    • Memory Induction Unit:用了MIU,AUC有0.005%的提升。image.png

image.png

用了MUR神經圖靈機建模用戶行爲序列的方法才work;

直接長序建模和high-order信息建模帶來的增益一半一半

  • Industrial Dataset
    • 性能效率:

image.png

    • A/B Testing: CTR 7.5%, RPM 6%
    • 部署的實踐經驗
    • todo

 

Comments

採用memory-based的方法進行用戶長序行爲建模的做法十分新穎,也符合一些對用戶長序行爲建模的啓發式經驗。將user interest解耦的做法可以被廣泛應用。這種memory-based&解耦user interest的架構看起來是長序用戶行爲數據建模的一種解決方案。

但是神經圖靈機的技術不太流行,對於它的復現效果還是存疑。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章