1. 程式人生 > >推薦中的多工學習-ESMM

推薦中的多工學習-ESMM

本文將介紹阿里發表在 SIGIR’18 的論文ESMM《Entire Space Multi-Task Model: An Effective Approach for Estimating Post-Click Conversion Rate》。文章提出使用多工學習解決CVR(轉化率)預估時的樣本選擇偏差和資料稀疏問題。

  • 背景

在推薦系統、線上廣告等應用中,CVR預估比CTR預估更加重要,CTR預估聚焦於點選率預估,即預測使用者會不會點選,但是使用者點選後進行消費才是最終目標。傳統的CVR預估任務通常採用類似於CTR預估的技術,然而,這種做法存在兩個重大問題:1) 樣本選擇偏差;2) 訓練資料稀疏

1.樣本選擇偏差

轉化是在點選之後發生,傳統CVR預估模型在clicked資料上訓練,但是在推理時使用了整個樣本空間見圖。訓練樣本和實際資料不服從同一分佈,不符合機器學習中訓練資料和測試資料獨立同分布的假設。直觀的說,會產生轉化的使用者不一定都是進行了點選操作的使用者,如果只使用點選後的樣本來訓練,會導致CVR學習產生偏置。具體的實驗結果可以見原論文[1]

2.訓練資料稀疏

訓練資料稀疏問題很明顯,點選樣本在整個樣本空間中只佔了很小一部分,而轉化樣本更少,高度稀疏的訓練資料使得模型的學習變得相當困難。

  • ESMM

首先明確CTR、CVR、CTCVR。CTR表示點選率、CVR表示假設使用者點選後的轉化率、CTCVR表示使用者點選並且成功轉化。

如何解決上述問題?ESMM 引入點選率(CTR)和點選轉化率(CTCVR)作為輔助任務,將CVR作為一箇中間變數。它們的關係如下
\[ \underbrace{p(y=1, z=1 | x)}_{p C T C V R}=\underbrace{p(y=1 | x)}_{p C T R} \times \underbrace{p(z=1 | y=1, x)}_{p C V R} \]
可以看出,\(pCTR\)和\(pCTCVR\)是在整個樣本空間上進行學習得到的,只是label不同,\(pCVR\)是中間變數,這樣就解決了樣本選擇偏差問題。模型架構如下

可以看出在 ESMM 中,CVR 與 CTR 任務共享Embedding 引數。這種引數共享機制使 ESMM 中的 CVR 網路可以從未點選的樣本中學習,在一定程度緩解了資料稀疏性問題。

至此,兩個問題已經被解決了,下面看下ESMM如何學習,模型的損失函式如下:
\[ \begin{aligned}L\left(\theta_{c v r}, \theta_{c t r}\right) &=\sum_{i=1}^{N} l\left(y_{i}, f\left(x_{i} ; \theta_{c t r}\right)\right)+\sum_{i=1}^{N} l\left(y_{i} \& z_{i}, f\left(x_{i} ; \theta_{c t r}\right) \times f\left(x_{i} ; \theta_{c v r}\right)\right)\end{aligned} \]
第一項是CTR預估的損失,點選label為1否則為0;第二項是CTCVR預估的損失,點選且轉化的label為1,否則為0。

這裡還有一個問題,既然\(pCTCVR\)可以由\(pCTR\)和\(pCVR\)相乘得到,那麼從理論上說,轉化為除法也可以,即
\[ p(z=1 | y=1, x)=\frac{p(y=1, z=1 | x)}{p(y=1 | x)} \]
這樣可以分別訓練兩個模型,CTR和CVCTR,最終也可以得到CVR。論文對這種情況做了實驗分析,發現實際上\(pCTR\)的值較小,會引起數值不穩定。

  • discussion
  1. 巧妙的引入了兩個輔助任務解決CVR預估,解決了樣本選擇偏置問題,共享引數可以緩解資料稀疏
  2. 多工學習在其他領域已經有很多應用,但在推薦中,更應該結合具體的資料和任務設計。例如,在跨領域任務中,不同領域的環境樣本是不一樣的,但使用者資訊可能有重複,那麼針對這種場景怎麼設計多工學習,樣本資訊的利用需要更多得考慮。

references:

[1] Xiao Ma, Liqin Zhao, Guan Huang, Zhi Wang, Zelin Hu, Xiaoqiang Zhu, and Kun Gai. 2018. Entire Space Multi-Task Model: An Effective Approach for Estimating Post-Click Conversion Rate. SIGIR (2018).

[2] https://github.com/alibaba/x-deeplearning/wiki/%E5%85%A8%E7%A9%BA%E9%97%B4%E5%A4%9A%E4%BB%BB%E5%8A%A1%E6%A8%A1%E5%9E%8B(ES