文献链接:https://arxiv.org/pdf/2005.10545v1.pdf
1. 内容简介 & 问题描述
这一篇文章是阿里提出的另一篇推荐系统的文章,思路上而言多少是接续了之前的ESMM这篇文章的,多少算是其后续的一个优化方法。
关于ESMM这个工作,相信大家基本也都了解,我之前也写过一篇小文章(文献阅读:Entire Space Multi-Task Model:An Effective Approach for Estimating Post-Click Conversion Rate)对其进行过内容整理,其针对的问题是关于SSB(Sample Selection Bias)以及DS(Data Sparsity)的,即数据选择偏差以及数据的稀疏性问题。
不过相较于ESMM模型仅仅针对CVR问题进行了一个针对性的建模与优化,而这一篇文章当中提出的ESAM方法则更加普适,可以用于各类SSB以及DS问题。
2. 主要方法描述
文章最为核心的思路还是在训练过程中加入那些长尾的数据,让模型可以见到更多的数据,进而从中学到有效的信息。
但是,不同于之前的ESMM工作当中使用隐式概率传递关系进行信号学习的方式,这里的信号学习是通过正则项的方式进行学习的。
我们首先给出模型的结构以及其对应的loss function如下:
L = L S + λ 1 ⋅ L D A + λ 2 ⋅ L D C c + λ 3 ⋅ L D C p L = L_{S} + \lambda_1 \cdot L_{DA} + \lambda_2 \cdot L_{DC}^c + \lambda_3 \cdot L_{DC}^p L=LS+λ1⋅LDA+λ2⋅LDCc+λ3⋅LDCp
其中, L S L_{S} LS是主Loss函数,对于不同的问题会有不同的定义,而剩余三个是三个正则项,其具体定义如下:
-
L D A L_{DA} LDA
L D A = 1 L 2 ∑ j , k L ( h j s T ⋅ h k s − h j t T ⋅ h k t ) 2 = 1 L 2 ∣ ∣ C o v ( D s ) − C o v ( D t ) ∣ ∣ F 2 \begin{aligned} L_{DA} & = \frac{1}{L^2} \sum_{j, k}^{L}(h_j^{sT} \cdot h_k^s - h_j^{tT} \cdot h_k^t)^2 \\ & = \frac{1}{L^2} ||Cov(D^s) - Cov(D^t)||_{F}^2 \end{aligned} LDA=L21j,k∑L(hjsT⋅hks−hjtT⋅hkt)2=L21∣∣Cov(Ds)−Cov(Dt)∣∣F2
其中,s表示有反馈的数据,即经过曝光之后的标签数据,而t表示无反馈数据,即没有经过曝光的长尾数据。后者在原先的训练设置当中是无法得到训练的。
j和k表示遍历模型输出的最终的item表示的所有维度,即他的意思是说,最终输出的表示向量 v v v的任意两个维度之间的关系相关性应该是一个比较稳定的型号。即 C o v ( D ) Cov(D) Cov(D)是一个 L × L L\times L L×L的矩阵。
通过这个正则项,模型的目标是将那些未曾经过充分训练的item,乃至在训练中从未见过的item,都能够直接生成一个合理的embedding表示。我的理解是有点类似于GNN当中的鉴别器。
-
L D C c L_{DC}^c LDCc
L D C c = ∑ j = 1 n m a x ( 0 , ∣ ∣ v d j s ∣ ∣ v d j s ∣ ∣ − c q y j s ∣ ∣ 2 2 − m 1 ) + ∑ k = 1 n y ∑ u = k + 1 n y m a x ( 0 , m 2 − ∣ ∣ c q k − c q u ∣ ∣ 2 2 ) \begin{aligned} L_{DC}^c & = \sum_{j=1}^n max(0, ||\frac{v_{d_j^s}}{||v_{d_j^s}|| - c_{q}^{y_j^s}}||_2^2 - m_1) \\ & + \sum_{k=1}^{n_y} \sum_{u=k+1}^{n_y} max(0, m_2 - ||c_q^k - c_q^u||_2^2) \end{aligned} LDCc=j=1∑nmax(0,∣∣∣∣vdjs∣∣−cqyjsvdjs∣∣22−m1)+k=1∑nyu=k+1∑nymax(0,m2−∣∣cqk−cqu∣∣22)
其中,
c q k = ∑ j = 1 n ( δ ( y j s = Y k ) ⋅ v d j s ∣ ∣ v d j s ∣ ∣ ) ∑ j = 1 n δ ( y j s = Y K ) c_q^k = \frac{\sum_{j=1}^n (\delta(y_j^s = Y_k) \cdot \frac{v_{d_j^s}}{||v_{d_j^s}||})}{\sum_{j=1}^{n} \delta(y_j^s = Y_K)} cqk=∑j=1nδ(yjs=YK)∑j=1n(δ(yjs=Yk)⋅∣∣vdjs∣∣vdjs)
这部分正则项的物理含义是说,对于任何一个user请求(即query信号),其各个标签对应的item的embedding之间应该表现出一定的聚类特征,即一个用户点击过的商品,应该与他点击过的其他商品在表征上更为接近,而与其他未点击过的商品相互远离。
上述公式当中的 n y n_y ny表示行为标签的总个数, y y y表示item的行为标签, v v v表示item的embedding表示。
-
L D C p L_{DC}^p LDCp
L D C p = − ∑ j = 1 n δ ( S c q , d j t < p 1 ∣ S c q , d j t > p 2 ) S c q , d j t l o g S c d j t ∑ j = 1 n δ ( S c q , d j t < p 1 ∣ S c q , d j t > p 2 ) L_{DC}^p = -\frac{\sum_{j=1}^n \delta(Sc_{q, d_j^t} < p_1 | Sc_{q, d_j^t} > p_2) Sc_{q, d_j^t} log Sc_{d_j^t}}{\sum_{j=1}^n \delta(Sc_{q, d_{j}^{t}} < p_1 | Sc_{q, d_j^t} > p_2)} LDCp=−∑j=1nδ(Scq,djt<p1∣Scq,djt>p2)∑j=1nδ(Scq,djt<p1∣Scq,djt>p2)Scq,djtlogScdjt
这部分正则项的物理含义事实上就是一个数据增强策略,即在计算过程中,如果对于某个long tail的数据,虽然没有标签,不过如果模型预测的概率置信度较高,那么就可以将其作为一个可信的结果补充到训练数据当中进行训练,通过这种方式来丰富训练数据。
定性来说,文中也给出了各个正则项对于训练的一个比较直观的结果示意图:
3. 实验结果分析
1. 基础实验结果考察
这篇文献首先在两个公开数据集上进行考察,发现ESAM策略在两个任务上都是有效的。
此外,对于冷启动的情况,ESAM策略同样可以获得收益。
2. 消解实验
文中同样进行了消解实验来考察各个正则项对于结果的影响,具体结果如下表所示:
可以看到,所有的正则项对结果都是产生了增益的,且其效果是可以相互兼容的。
3. 可视化结果分析
我们对于计算得到的embedding结果进行可视化呈现,得到结果如下图所示:
可以看到:
- 各个正则项确实如同他们的设计目标一样发挥了作用。
4. 结论 & 思考
结论而言,事实上这篇文章的核心点还是在于如何在训练过程中加入更多的数据从而优化SSB的问题。
只是,不同于ESMM的链式关系,这篇文章采用的方式是通过正则项进行优化,但是本质上而言,还是为了在训练模型过程当中更有效地利用长尾数据中隐藏的信息。
个人认为上述方式是非常有借鉴意义的,可以适用于其他不少的场景当中,可以mark一下,然后做点实验,也许可以有一定的性能增益。