本文对原论文中的核心内容做翻译和讲解

系统

论文提出的模型架构如下图所示,一部分部署在云端服务器中,一部分部署在终端设备上(用户的移动设备):

翻译 深度模型(十四):EdgeRec

3.1 系统概要

EdgeRec系统的主要模块和工作流程如下:

  • 本地客户端(Client Native):本地客户端首先初始化请求并缓存云端推荐服务返回的推荐结果。然后收集用户行为并触发模型服务模块。最后从模型服务模块获取未曝光商品的有序列表。
  • 模型服务(Model Serving):模型服务模块从本地客户端接收用户行为和原始候选商品。进行特征处理并运行重排模型,并将用户日志发往服务器。最后向本地客户端输出排序后的候选者商品。
  • 推荐服务(Recommender System):云端推荐系统生产候选者列表。这里的云端推荐服务可以看作本地重排模块的召回服务。
  • 离线训练服务(Offline Training):离线训练模块首先收集模型服务模块发送的日志,然后构建样本训练模型。然后将模型划分为三个部分1)用户行为子模型,2)上下文感知重排子模型,3)embedding矩阵(例如商品类别和品牌等)。最后用户行为子模型和上下文感知重排子模型会发送到客户端,embedding矩阵会在服务以key-value形式存储。

3.2 系统实现

本地客户端触发重排的实际包括1)用户点击一个商品。2)用户删除一个商品。3)用户连续跳过kk个商品。我们认为这些类型的行为都能揭示用户当前的偏好,推荐系统应该及时响应。

4 算法

我们首先给出重排的正式定义。然后介绍所用的特征以及我们的思考。最后我们讨论我们提出的模型:用户行为模型和上下文感知重排模型

4.1 问题定义

给定初始有序列表SrS_r,由现在的云端的推荐系统产生,并缓存在移动设备上。对Client Native模块触发、模型服务模型响应的重排请求rRr\in R,我们的目标是找到一个打分函数ϕ\phi并且:

  • (1) 商品ii的特征表示为xi\bold{x}_i
  • (2) 本地排序上下文表示为s\bold{s}
  • (3) 当前推荐环境中实时用户行为上下文表示为C\bold{C}.

寻找打分函数ϕ\phi的方法是最小化下面的损失函数LL:

L=rRl({yi,ϕ(xi,s,C)iSr})L = \sum_{r\in R}l(\{y_i,\phi(\bold{x}_i,\bold{s},\bold{C})|i\in S_r\})

其中yiy_i表示物品ii的标签,比如点击标记为1,非点击标记为0。并且ϕ\phi的值域为0到1。

在先前的工作中,对考虑本地排名上下文的重排模型进行了大量研究。本地排名上下文表示为用户与初始有序候选商品间的交互列表,通过RNN [1,29]或Transformer [19]进行建模。在这里,我们认为本地排序上下文已成为包括我们在内的重排模型的默认组成部分。此外,我们认为实时用户行为上下文对于重排问题也很重要,尤其是在瀑布流推荐场景中,尽管之前很少有人考虑它。

4.2 特征系统

本节我们首先讨论我们的特征系统,然后详细介绍商品曝光以及商品详情页相关的用户行为特征,以及相应的商品特征。

4.2.1 我们的想法:首先,在个性化的搜索额推荐系统中,“个性化”主要依赖用户行为数据。比如Youtube-DNN[7],DIN[26],DUPN[18]以及其他的相关工作[13,20,25,27],他们都将用户近期交互过的商品列表作为个性化排序模型的输入。然而之前的工作都只考虑了"正反馈"交互,很少考虑“负反馈”交互。诚然正反馈相关来说更清晰,噪音更小。但实时的“负反馈”交互也很重要,特别是在瀑布流场景下的RS系统。举个直观的例子,淘宝RS系统中,一类商品多次曝光之后,对应的CTR会显著的降低。

另一方面,前面个性化排序模型的工作值考虑交互商品的特征(包括类别,品牌等等),重点目标是“交互商品”。然而,“交互动作”也应该考虑。比如用户点击商品之后,商品详情页内容的交互动作(包括收藏,加购物车等等)也反应了用户对商品的偏好。相反,虽然用户没有点击商品,但在商品曝光页的交互行为(包括滚动速度,曝光时长等等)也能反应商品负向的程度。有时用户长时间关注一件商品曝光页面,但并未点击,并不能代表用户不喜欢它。特别是在瀑布流场景下,曝光页的信息越来越丰富,图片越来越大,各种关键字,甚至是自动播放的视频,点击已成为一种稀有的正向反馈。

最后,基于我们提出的EdgeRec系统,用户的所有行为特征都在端设备(比如用户的移动设备)收集、提取和使用。相对目前的客户端-服务器结构的推荐系统,可以克服网络带宽和延迟的限制。所以我们可以实时的利用用户更丰富更详细的行为。另外,用户的原始行为在自己的移动设备上处理和使用,用户的隐私问题更有保障。

总结来说,我们的特征系统是全新的,并且(1)从只依赖正反馈行为到同时注意正反馈和负反馈行为,(2)从只考虑交互商品到同事考虑交互商品和响应的交互行为,(3)从“准实时”系统到“超实时”系统。

4.2.2 商品曝光用户行文特征 。商品曝光后用户行为揭示推荐系统曝光页内用户对商品的交互行为。图3a解释了淘宝推荐页面中商品的曝光场景。商品曝光后用户行为特征可以分为以下三类:(1)商品曝光统计特征(e1e2)(e_1 \sim e_2),(2)用户滚动统计特征(e3e5)(e_3\sim e_5),(3)用户删除反馈(e6)(e_6),(4)曝光时长(e7)(e_7).我们将(e1e7)(e_1\sim e_7)拼接后作为相应物品ii的物品曝光用户行为特征,并表示为aIEi\bold{a}_{IE}^i.

4.2.3 商品详情页用户行为特征。图3b解释了淘宝推荐系统中商品详情页的场景。商品详情页的用户行为特征可以分为以下几类:(1)商品详情页统计特征(d1)(d_1)。(2)每一块的点击情况(d2d11)(d_2 \sim d_{11})。(3)停留时长(d12)(d_{12})。我们将特征(d1d12)(d_1\sim d_{12})拼接后作为商品ii的详情页用户行为特征,并表示为aIPVi\bold{a}_{IPV}^i

4.2.4. 商品特征。除了用户行为特征外,我们还需要商品的特征。商品的特征可以分为:(1)学习得出的embedding特征(p1p6)(p_1 \sim p_6)。(2)基础排序模型提供的原始特征(p7)(p_7)。我们将(p1p7)(p_1\sim p_7)拼接后作为商品特征,并表示为pi\bold{p}^i

翻译 深度模型(十四):EdgeRec

4.3 异构用户行为序列模型

在本节中,我们将介绍如何建模Eq1中定义的实时用户行为上下文CC。 按照工作[7,18,26],我们也采用序列建模方法。但是,正如我们在第二节中讨论的那样,以前的作品仅考虑用户的正反馈商品。 使他们无法根据我们提出的特征系统很好地处理用户行为序列建模。挑战在于用户行为数据的异构性有两个方面。在我们的工作中,针对以下两个异构性我们提出了异构用户行为序列模型(HUBSM)。

第一个异构性来自商品曝光用户行为和商品详情页用户行为。由于点击行为相对曝光来说比较稀有,所以如果将二者统一编码,我们任务详情页的用户行为会被挤压。因此我们决定对二者分别建模。第二个异构性来自用户交互行为和用户交互商品。我们选择首先将二者分别建模,然后通过行为注意力机制将二者进行融合。

这里我们采用的编码函数是包含GRU的RNN模型。GRU的目标是解决RNN模型的梯度消息问题。它的基本思想是通过一个更新门和一个重置门控制网络状态的更新。我们将包含多层GRU网络的编码器表示为:

(X^,s)=GRU(X)(\hat{X},s)=GRU(X).

其中X={xi}1inX=\{x^i\}_{1\le i \le n}表示输入特征,X^={x^i}1in\hat{X}=\{\hat{x}^i\}_{1\le i \le n}表示输出的编码结果,ss表示RNN网络的最终状态。融合函数采用简单的拼接函数,对于两个输入特性向量X={xi}1inX=\{x^i\}_{1\le i \le n}Y={yi}1inY=\{y^i\}_{1\le i \le n},融合函数的表示为:

Z=CONCAT(X,Y)Z=CONCAT(X, Y)

其中Z={zi}1inZ=\{z^i\}_{1\le i\le n}表示融合后的输出序列。当然,这里可以采用更复杂的编码模型(比如Transformer)和融合函数(比如DNN网络)。考虑到移动设备的计算和存储效率,我们这里依然采用GRU和拼接函数。

商品曝光用户行为序列模型:我们定义AIE={aIEi}1im\bold{A}_{IE}=\{\bold{a}_{IE}^i\}_{1\le i \le m}表示商品曝光用户行为特征向量。PIE={pIEi}1im\bold{P}_{IE}=\{\bold{p}_{IE}^i\}_{1\le i \le m}表示用户曝光商品特征向量。mm表示预设的序列长度。不够的将用0填充。我们用下列方式得出行为编码序列A^IE\hat{\bold{A}}_{IE},商品编码序列P^IE\hat{\bold{P}}_{IE},以及融合后的结果B^IE\hat{\bold{B}}_{IE}

(A^IE={a^IEi}1im,)=GRU(AIE)(\hat{\bold{A}}_{IE}=\{\hat{\bold{a}}_{IE}^i\}_{1\le i \le m}, _)=GRU(\bold{A}_{IE})

(P^IE={p^IEi}1im,)=GRU(PIE)(\hat{\bold{P}}_{IE}=\{\hat{\bold{p}}_{IE}^i\}_{1\le i \le m}, _)=GRU(\bold{P}_{IE})

B^IE={b^IEi}1im=CONCAT(A^IE,P^IE)\hat{\bold{B}}_{IE}=\{\hat{\bold{b}}_{IE}^i\}_{1\le i \le m}=CONCAT(\hat{\bold{A}}_{IE}, \hat{\bold{P}}_{IE})

商品详情页用户行为序列模型:我们定义AIPV={aIPVi}1in\bold{A}_{IPV}=\{\bold{a}_{IPV}^i\}_{1\le i \le n}表示商品详情页用户行为特征向量。PIPV={pIPVi}1in\bold{P}_{IPV}=\{\bold{p}_{IPV}^i\}_{1\le i \le n}表示用户详情页商品特征向量。nn表示预设的序列长度。不够的将用0填充。我们用下列方式得出行为编码序列A^IPV\hat{\bold{A}}_{IPV},商品编码序列P^IPV\hat{\bold{P}}_{IPV},以及融合后的结果B^IPV\hat{\bold{B}}_{IPV}

(A^IPV={a^IPVi}1in,)=GRU(AIPV)(\hat{\bold{A}}_{IPV}=\{\hat{\bold{a}}_{IPV}^i\}_{1\le i \le n}, _)=GRU(\bold{A}_{IPV})

(P^IPV={p^IPVi}1in,)=GRU(PIPV)(\hat{\bold{P}}_{IPV}=\{\hat{\bold{p}}_{IPV}^i\}_{1\le i \le n}, _)=GRU(\bold{P}_{IPV})

B^IPV={b^IPVi}1in=CONCAT(A^IPV,P^IPV)\hat{\bold{B}}_{IPV}=\{\hat{\bold{b}}_{IPV}^i\}_{1\le i \le n}=CONCAT(\hat{\bold{A}}_{IPV}, \hat{\bold{P}}_{IPV})

4.4 行为注意力上下文感知重排模型

候选商品序列的编码:我们用PCND={pCNDi}1ik\bold{\bold{P}}_{CND}=\{\bold{p}_{CND}^i\}_{1\le i\le k}表示云端推荐系统生产的有序推荐列表。kk表示预设的推荐列表的长度,不够的用0填充。我们采用GRU网络对列表进行编码,并将网络的状态作为本地排序上下文:

KaTeX parse error: Undefined control sequence: \l at position 57: …ND}^i\}_{1\le i\̲l̲1 k}, \bold{s}_…

其中P^CND\hat{\bold{P}}_{CND}表示候选者列表编码之后的序列。sCND\bold{s}_{CND}表示本地排序上下文。

行为注意力模型:对于每一个目标商品p^CNDt\hat{\bold{p}}_{CND}^t,首先分别对P^IE\hat{\bold{P}}_{IE}P^IPV\hat{\bold{P}}_{IPV}应用注意力模型,并将注意力分布分别表示为{attIEtj}1jm\{att_{IE}^{tj}\}_{1\le j\le m}{attIPVtj}1jn\{att_{IPV}^{tj}\}_{1\le j\le n}。然后通过融合注意力与B^IE,B^IPV\hat{\bold{B}}_{IE},\hat{\bold{B}}_{IPV}得到目标上地的行为注意力上下文cIEt,cIPVt\bold{c}_{IE}^t,\bold{c}_{IPV}^t

attIEtj=softmax(v1Ttanh(W1p^CNDt+W2p^IEj)),1jmatt_{IE}^{tj}=softmax(v_1^Ttanh(W_1\hat{\bold{p}}_{CND}^t + W_2\hat{\bold{p}}_{IE}^j)),1\le j\le m

cIEt=1jmattIEtjb^IEj\bold{c}_{IE}^{t} = \sum_{1\le j \le m}att_{IE}^{tj}\hat{\bold{b}}_{IE}^j

attIPVtj=softmax(v2Ttanh(W3p^CNDt+W4p^IPVj)),1jnatt_{IPV}^{tj}=softmax(v_2^Ttanh(W_3\hat{\bold{p}}_{CND}^t + W_4\hat{\bold{p}}_{IPV}^j)), 1\le j\le n

cIPVt=1jnattIPVtjb^IPVj\bold{c}_{IPV}^t=\sum_{1\le j\le n}att_{IPV}^{tj}\hat{\bold{b}}_{IPV}^j

其中W1,W2,W3,W4,v1,v2W_1, W_2, W_3, W_4, v_1, v_2为可训练参数。

损失:我们首先拼接1)cIEt,cIPVt\bold{c}_{IE}^t,\bold{c}_{IPV}^t,作为C\bold{C},2)p^CNDt\hat{\bold{p}}_{CND}^t作为目标商品的数xi\bold{x}_i. 3)sCND\bold{s}_{CND}作为本地排序上下文s\bold{s}。然后将凭借结果作为输入,输入到MLP网络,然后通过sigmoid函数得到目标商品的分数o^t\hat{o}^t。最后应用交叉熵损失训练模型。

ot=[c^IEt;c^IPVt;p^CNDt;sCND]\bold{o}^t=[\hat{\bold{c}}_{IE}^t;\hat{\bold{c}}_{IPV}^t;\hat{\bold{p}}_{CND}^t;\bold{s}_{CND}]

o^t=σ(MLP(ot))\hat{o}^t=\sigma(MLP(\bold{o}^t))

L=rR1ikyilog(o^i)+(1yi)log(1o^i)L=\sum_{r\in R}\sum_{1\le i\le k}y_ilog(\hat{o}^i) + (1-y_i)log(1-\hat{o}^i)
翻译 深度模型(十四):EdgeRec

相关文章: