北大在《AutoInt: Automatic Feature Interaction Learning via Self-Attentive Neural Networks》提出了AutoInt,我们来看下。

摘要

CTR预估的目标是,预测一个用户在一个ad或item上的概率,它对于许多在线应用(比如在线广告和推荐系统)很关键。但存在许多挑战,因为:

  • 1) input features(例如:user id、user age、item id、item category)通常是稀疏高维
  • 2) 有效的预测通常依赖于高阶组合特征(cross features),由domain experts手工处理非常耗时,很难穷举。因此,对于稀疏高维原始特征,以及它们的特征组合,发现它们的低维表示需要一些工作。

本文提出了一种有效方法:AutoInt来自动学习关于input features的高阶特征交叉。我们提出的算法非常通用,它可以被同时应用到numerical和categorical的input features上。特别的,我们会将numerical和categorical features映射到相同的低维空间中。接着,使用一个带residual connections的multihead self-attentive neural network来显式建模在低维空间中的feature interactions。整个模型可以通过end-to-end的方式有效满足大规模的原始数据。具体代码:: https://github.com/DeepGraphLearning/RecommenderSystems

3.问题定义

我们首先正义定义ctr预测问题:

定义1: CTR Prediction

假设:\(x \in R^n\)表示user u的features和item v的features的concatenation,其中:

  • categorical features使用one-hot encoding表示
  • n是concatenated features的维度

那么,CTR预测的问题的目标是:预测user u根据feature vector x在item v上的点击概率。

CTR预测的一个简单做法是:将x看成是input features,并部署类似于LR的分类器进行预测。然而,由于原始featrue vector x非常稀疏且高维,模型很容易overfit。因此,在低维连续空间中表示raw input features是可行的。另外,在其它文献中,利用高阶组合特征来生成好的预测表现很重要。特别的,我们以如下方式定义高阶组合特征:

定义2: p-order组合特征

给定input feature vector \(x \in R^n\),一个p阶组合特征被定义成:

\[g(x_{i_1}, \cdots, x_{i_p})\]

其中:每个feature来自一个不同的field

  • p是feature fields的数目
  • \(g(\cdot)\)是non-additive combination function,比如:乘法 和 外积,例如:\(x_{i_1} \times x_{i_2}\)是一个关于\(x_{i_1}\)和\(x_{i_2}\)的二阶组合特征

传统的,有意义的高阶组合特征(high-order comibatorial features)可以通过domain experts进行人工构建。然而,这非常耗时,很难泛化到其它domains上。另外,手工构建所有有意义的高阶特征是不可能的。因此,我们开发了一种方法来自动发现有意义的高阶组合特征,同时将所有这些features映射到低维连续空间上,正式地,我们以如下方式定义问题:

定义3: 问题定义

给定一个input feature vector \(x \in R^n\)用于ctr预测,我们的目标是:学习一个关于x的低维表示,它会建模高阶组合特征。

4.AutoInt

4.1 总览

我们的方法会将原始稀疏高维feature vector映射到低维空间上,同时建模高阶特征交叉。如图1所示,我们提出的方法会将sparse feature vector x作为input,后跟一个embedding layer,它会将所有features(包括:categorical和numerical)投影到相同的低维空间上。接着,我们将所有fields的embeddings feed到一个新的interacting layer上,它使用一个multi-head self-attentive neural network来实现。对于每个interacting layer,高阶features通过attention机制来组合,不同类型的combinations可以使用multi-head机制进行评估,它会将features映射到不同的subspaces上。通过将多个interacting layers进行stacking,不同阶的combinatorial features可以被建模。

图片名称

图1

最终interacting layer的output是input feature的低维表示,它可以建模high-order组合特征,进一步通过一个sigmoid function用来估计ctr。接着,我们会详细介绍。

4.2 Input Layer

我们首先表示user profiles和item属性作为一个sparse vector,它是所有fields的concatenation。特别的:

\[x = [x_1; x_2; \cdots; x_M]\]

…(1)

其中:

  • M是总的feature fields的数目
  • \(x_i\)是第i个fields的feature representation

当第i个field是categorical时,\(x_i\)是一个one-hot vector(例如:在图2中的\(x_1\));当第i个field为numerical时,\(x_i\)是一个scalar value(例如:图2中的\(x_M\))。

图片名称

图2

4.3 Embedding Layer

由于categorical features的feature表示是非常稀疏高维的,一种常用方式是将它们表示成低维空间(例如:world embeddings)。特别的,我们将每个categorical feature使用一个低维vector来表示:

\[e_i = V_i x_i\]

…(2)

其中:

  • \(V_i\)是field i的一个embedding matrix
  • \(x_i\)是一个one-hot vector

通常,categorical features可以是multi-valued,例如:\(x_i\)是一个multi-hot vector。以电影观看预测为例,由于有个Genre的feature field,它会描述一个电影的types,它通常是multi-valued(例如:对于电影来说”Titanic”是Drama和Romance)。为了兼容multi-valued inputs,我们进一步修改等式(2),将multi-valued feature表示成相应feature embedding vectors的平均

\[e_i = \frac{1}{q} V_i x_i\]

…(3)

其中:

  • q是样本对于第i个field的values的数目
  • \(x_i\)是该field的multi-hot vector表示

为了允许categorical和numerical features的特征交叉,我们在相同的低维特征空间中表示numerical features。特别的,我们将numerical feature表示成:

\[e_m = v_m x_m\]

…(4)

其中:

  • \(v_m\)是field m的一个embedding vector
  • \(x_m\)是一个scalar value

通过这么做,embedding layer的output可以是一个关于多个embedding vectors的concatenation,如图2表示。

4.4 Interacting layer

一旦numerical和categorical features在相同的低维空间中存在,我们会在该空间中建模高阶组合特征(high-order cominatorical features)。关键问题是决定:哪个features应该被组合来形成有意义的high-order features。这在传统上由domain experts完成,它们会基于经验来创建有意义的特征组合。在本paper中,我们使用一个新方法“multi-head self-attention”机制来解决该问题。

Multi-head self-attentive network已经在建模复杂关系中取得了很好的效果。例如,它在机器翻译和句子embedding上,对于建模特别的word dependency具有优越性,已经被成功应用到捕获在graph embedding中的node相似性。这里,我们会将这些最新技术进行扩展来建模不同feature fields间的相关性。

特别的,我们采用key-value attention机制来决定,哪个feature combinations是有意义的。以feature m为例,接下来我们将解释如何标识涉及feature m的多个有意义的高阶特征。我们首先定义:feature m和feature k间在一个指定attention head h下的相关性:

\[a_{m,k}^{(h)} = \frac{exp(\phi^{(h)} (e_m, e_k))}{\sum_{l=1}^M exp(\phi^{(h)} (e_m, e_l))} \\ \phi^{(h)}(e_m, e_k)= <W_{Query}^{(h)} e_m, W_{Key}^{(h)} e_k>\]

…(5)

其中,\(\phi^{(h)} (\cdot, \cdot)\)是一个attention function,它定义了feature m和k间的相似性。它可以定义成一个neural network,或者一个简单的内积,例如:\(<\cdot, \cdot>\)。在本工作中,我们使用inner product是因为它的简单和有效。等式(5)中的\(W_{Query}^{(h)}, W_{Key}^{(h)} \in R^{d' \times d}\)是transformation矩阵,它会将原始的embedding space \(R^d\)映射到一个新的空间\(R^{d'}\)中。接着,我们会在子空间h中更新feature m的表示,通过将所有由系数\(a_{m,k}^{(h)}\)指定的所有相关特征进行组合来完成:

\[\bar{e}_m^{(h)} = \sum_{k=1}^M a_{m,k}^{(h)} (W_{Value}^{(h)} e_k)\]

…(6)

其中,\(W_{Value}^{(h)} \in R^{d' \times d}\)

由于,\(\bar{e}_m^{(h)} \in R^{d'}\)是一个feature m和它相关features(在head h下)的组合,它可以表示成由我们的方法学到的一个新的组合特征。考虑气候,个维护feature不能上课测IHI而已工程i莫高窟人combinatorial features,我们可以使用多个heads来达成,它可以创建不同的subspaces并分别学习不同的feature interactions。我们以如下方式收集在所有subspaces中学到的combinatorial features:

\[\bar{e}_m = \bar{m}^{(1)} \oplus \bar{m}^{(2)} \oplus \cdots \oplus \bar{m}^{(H)}\]

…(7)

其中,\(\oplus\)是concatenation operator,其中H是total heads的数目。

图片名称

图3

为了保留之前学到的combinatorial features,包含raw individual (例如:一阶) features,我们在网络中添加标准的residual connections:

\[e_m^{Res} = ReLU(\bar{e}_m + W_{Res} e_m)\]

…(8)

其中,\(W_{Res} \in R^{d' H \times d}\)是关于didension mismatching的投影矩阵,其中,\(ReLU(z) = max(0, z)\)是一个非线性activation function。

有了这样的一个interacting layer,每个feature的表示\(e_m\)会被更新成一个新的feature representation \(e_m^{Res}\),它是一个高阶features的表示。我们可以将多个这样的layers进行stack,前一interacting layer的output可以做为下一interacting layer的input。通过这样做,我们可以建模任意阶的combinatorical features。

4.5 Output layer

interacting layer的output是一个关于feature vectors \(\lbrace e_m^{Res} \rbrace_{m=1}^M\)的集合,其中,包含了由residual block保留的raw individual features,以及由multi-head self-attention机制学到的combinatorial features。对于最终的CTR预测,我们可以将所有进行concatenate,接着应用一个非线性投影:

\[\hat{y} = \sigma(w^T (e_1^{Res} \oplus e_2^{Res} \oplus \cdots e_M^{Res} ) + b)\]

…(9)

其中,\(w \in R^{d' H M}\)是一个列投影向量,它可以对concatenated features进行线性组合,b是bias,\(\sigma(x) = 1 / (1+e^{-x})\)会将values转化成users的点击概率上。

4.6 训练

我们的loss funciton 是log loss,它根据以下进行定义:

\[Logloss = - \frac{1}{N} \sum_{j=1}^N (y_j log(\hat{y}_j + (1-y_j) log(1-\hat{y}_j))\]

…(10)

其中,\(y_j\)和\(\hat{y}_j\)分别是user clicks的ground truth和预估的CTR,j会索引训练样本,N是训练样本总数。模型中学习的参数是:\(\lbrace V_i, v_m, W_{Query}^(h), W_{Key}^{(h)}, W_{Value}^{(h)}, W_{Res}, w, b\rbrace\),它们会通过使用gradient descent方式对total Logloss进行最小化更新。

4.7 AutoInt分析

建模任意阶组合特征

给定由等式(5)-(8)的feature interaction的operator,我们接着分析低阶和高阶组合特征是如何建模的。

对假设存在四个feature fields(例如:M=4)分别由\(x_1, x_2, x_3与x_4\)各自表示。在第一个interacting layer,每个独立的feature会通过attention机制(等式5)与任意其它features进行交叉,因此会使用不同的相关weightes捕获二阶特征交叉:\(g(x_1,x_2), g(x_2, x_3), g(x_3, x_4)\),其中interaction function \(g(\cdot)\)的non-additive特性 (定义2)可以通过activation function \(ReLU(\cdot)\)的non-linearity来进行保证。理想的,涉及\(x_1\)的组合特征可以被编码成第一个feature field \(e_1^{Res}\)的updated representation。由于对于其它feature fields来说是相同的源头,所有二阶特征交叉可以被编码成第一个interacting layer的output,其中attention weights会distill有用的特征组合。

接下来,我们证明了高阶特征交叉可以在第二个interacting layer中建模。给定由第一个interacting layer生成的第一个feature field \(e_1^{Res}\)的representation、以及第三个feature field \(e_3^{Res}\),涉及\(x_1, x_2, x_3\)的三阶组合特征可以被建模,允许\(e_1^{Res}\)来attend on \(e_3^{Res}\),因为\(e_1^{Res}\)包含了interaction \(g(x_1, x_2)\)以及\(e_3^{Res}\)包含了单个特征\(x_3\)(来自residual connection)。另外,组合特征的最大阶会随着interacting layers的数目进行指数增长。 例如,四阶特征交叉\(g(x_1, x_2, x_3, x_4)\)可以通过\(e_1^{Res}\)和\(e_3^{Res}\)的组合进行捕获,它分别包含了二阶交叉\(g(x_1, x_2)\)以及\(g(x_3, x_4)\)。因此,少量的interacting layers足够去建模高阶特征交叉。

基于上述分析,我们可以看到,AutoInt会以一个hierarchical的方式使用attention机制来学习feature interactions,例如:从低阶到高阶,所有低阶特征交叉可以通过residual connections进行捎带。这是有保证且合理的,因为学习hierarchical representation已经在计算机视觉和语音处理中对于DNN来说相当有效。

空间复杂度(Space Complexity)

embedding layer,它在NN-based方法中是一个共享组件,包含了nd的参数,其中n是input feature的sparse representation的维度,d是embedding size。由于一个interacting layer包含了以下的weight matrics:\(\lbrace W_{Query}^{(h)} , W_{Key}^{(h)}, W_{Value}^{h}, W_{Res} \rbrace\),在一个L-layer network的参数数目是\(L \times (3d d' + d'Hd)\),它与feature fields M的数目是独立的。最终,在output layer中存在\(d' H M + 1\)个参数。只要interacting layers被关注,空间复杂度是\(O(Ldd'H)\)。注意,H和d’通常很小(例如:H=2 以及d’=32),它会使得interacting layer相当memory-efficient。

时间复杂度(TIme Complexity)

在每个interacting layer中,计算开销是two-fold的。首先,对于一个head计算attention weights会花费\(O(Mdd' + M^2 d')\)的时间。接着,在一个head下形成组合特征也会花费\(O(Md d' + M^2 d')\)的时间。由于我们有H个heads,它总共花费\(O(MHd'(M+d)))\)的时间。由于H, d, d’通常很小,所以很高效。

5.实验

参考

《Feedback Control of Real-Time Display Advertising》在PID中引入了feedback control。

1.介绍

从2009年,RTB(real-time bidding)在展示广告中变成一个新范式。不同于常规的人工谈判(human negotiation)或者预设置一个固定的曝光价格,RTB会创建一个曝光级别的竞拍(impression-level auction),使得广告主可以通过服务于DSPs的计算机算法为单次曝光进行竞价(bid)。竞价决策依赖于每个ad曝光的utility(实用:例如:对于生成点击或转化的一次曝光的likelihood和经济值)以及cost(开销:例如:实际支付价格)。更重要的,实时信息(比如:特定的用户人口统计学、兴趣分段以及许多上下文信息)可以被用来帮助竞价算法评估每个广告曝光。有了实时决策机制,RTB可以比其它在线广告形式生成更高的ROI(投资回报率)

RTB除了分发效果驱动的广告外,不幸的是,会导致高度可变性(volatilities),它们通过主要的KPIs进行measure,比如:

  • CPM(每千人成本:cost per mile)
  • AWR(竞拍获胜率:auction winning ratio)
  • eCPC(每击点击有效开销:effective cost per click)
  • CTR(点击率)

所有这四个KPIs会随时间在广泛使用的bidding strategy上剧烈波动。这样的不稳定性造成了广告主在最优化和控制KPIs vs. 开销上很困难。

本paper中,提出使用feecback control理论来解决RTB中的不稳定问题。Feedback controllers被广泛用于多个应用中,主要维持在预定义的reference values上进行对变量进行动态更改。应用场景有:飞机方向控制、机器人工智能。在我们的RTB场景中,指定的KPI value,依赖于广告主的需求,可以被看成是我们希望使用一个预定义的reference value进行控制的变量。我们的研究主要有两个用例:

  • 1) 对于效果驱动的广告:我们关注于获得一个点击所需的平均开销的feedback control,通过eCPC进行measure
  • 2) 对于品牌广告:为了确保一个campaign的指定高曝光,我们关注于控制对于目标曝光的竞拍获胜率,通过AWR进行measure

更特别的,对于到来的广告展示机会请求(bid request),我们会采用它们中的每个作为control input信号,并考虑竞价的gain(调整值)作为control output信号。我们会开发两个controllers进行测试:

  • PID controller
  • WL controller

我们在大规模实验上测试了feedback control的效果,它们使用reference value、以及reference dynamics的不同setting。通过经验研究,我们发现PID和WL controllers可以控制eCPC和AWR,而PID则比WL提供一个更好的control accuracy和健壮性。

。。。

2.准备

2.1 RTB Flow steps

RTB eco-system的主要components间的交互过程归结为以下几步:

  • (0) 当一个用户访问一个支持广告的网站(例如:web pages、流视频以及移动apps),每个ad placement将会向广告交易平台(ad exchange)触发一个广告请求
  • (1) 对于该次特定ad曝光,广告交易平台会发送bid requests给每个广告主的DSP bidding agent,同时带上相关的信息:user和context信息
  • (2) 有了bid request和每个满足要求的ads的信息,bidding agent会计算一个bid price,接着bid response( ad, bid price)会发送回exchange
  • (3) …

2.2 Bidding Strategies

对于DSP bidding agents的一个基本问题是,找到对于一个即将到来的bid request采用多少开销进行竞价(bid)。对于每个ad曝光,bid决策依赖于:utility(例如:CTR,期望回报)以及开销cost(例如:期望支付的价格)。在广泛采用的bidding strategy中,utility会通过CTR estimation进行评估,而base price则基于bid landscape进行调节来进行开销评估。paper[25]生成的竞价策略如下:

\[b(t) = b_0 \frac{\theta_t}{\theta_0}\]

…(0)

其中:

  • \(\theta_t\)是对于在时刻t的bid request的预估CTR(estimated CTR);
  • \(\theta_0\)是在target condition(例如:一个用户兴趣片段:user interest segment)下的平均CTR(average CTR)
  • \(b_0\)是对于target condition的可调节基础竞价(tuned base bid price)

在本文中,我们采用该方法,并采用一个logistic CTR estimator.

2.3 Feedback Control理论

3.RTB feedback control系统

图2展示了RTB feedback control系统的图示。传统的bidding strategy可以表示为在DSP bidding agent中的bid calculator module。controller会扮演着根据bid calculator调整bid价格的角色。

图片名称

图2 集成在RTB系统中的feedback controller

特别的,monitor会接收到来自ad exchange的auction win通知和来自ad tracking系统的用户点击反馈,它整体上会看成是dynamic system。接着,当前的KPI值(比如:AWR和eCPC)会被计算。如果该任务会使用reference value来控制eCPC,在reference eCPC和measured eCPC间的error因子会被计算,并接着会发送到control function中。输出控制信号会被发送到actuator中,它会使用control signal来调整来自bid calculator的原始bid price。调整后的bid price会将合理的ad(qualified ad)打包成bid response,并发送回ad exchange进行auction。

3.1 Actuator

对于在t时刻的bid request,auctuator会考虑当前控制信息\(\phi(t)\)来将bid价格从\(b(t)\)调整到一个新的值\(b_a(t)\)。在我们的模型中,控制信号,它会在下一节中以数学形式定义,这在bid price上的一个增益。总之,当控制信号\(\phi(t)\)为0时,不会进行bid调整。这是不同的actuator模型,在我们的工作中,我会选择使用:

\[b_a(t) = b(t) exp(\lbrace \phi(t) \rbrace)\]

…(2)

其中,当\(\phi(t) = 0\)时,该模型会满足\(b_a(t)\)。其它比如线性模型\(b_a(t) = b(t) (1+\phi(t))\)的模型也会在我们的研究中,但当一个大的负向控制信号被发到actuator时执行效果很差,其中linear actuator通常会响应一个负或零的bid,这在我们场景中是无意义的。相反的,指数模型是合适的,因为它天然会避免一个负的竞价,从而解决上述缺点。在之后的研究中,我们会基于指数形式的actuator model上报分析。

3.2 PID controller

我们考虑的第一个controller是经典的PID controller。如名字所示,一个PID controller会从基于error因子的比例因子、积分因子和微分因子的一个线性组合上生成控制信号:

\[e(t_k) = x_r - x(t_k), \\ \phi(t_{k+1}) \rightarrow \lambda_P e(t_k) + \lambda_I \sum\limits_{j=1}^k e(t_j) \Delta t_j + \lambda_D \frac{\Delta e(t_k)}{\Delta t_k}\]

…(3)(4)

其中:

  • error factor \(e(t_k)\)是\(x_r\)减去当前控制变量值\(x(t_k)\)的reference value
  • 更新时间间隔给定如下\(\Delta t_j = t_j - t_{j-1}\),error factors的变化是\(\Delta e(t_k) = e(t_k) - e(t_{k-1})\),其中: \(\lambda_P, \lambda_I, \lambda_D\)是每个control factor的weight参数。

注意,这里的control factors都是在离散时间\((t_1, t_2, \cdots)\)上的,因为bidding事件是离散的,它实际上会周期性更新control factors。所有的control factors \((\phi(t), e(t_k), \lambda_P, \lambda_I, \lambda_D)\)仍会在两个updates间保持相同,在等式(2)中的控制信号\(\phi(t)\)等于\(\phi(t_k)\)。我们看到:

  • P factor会趋向于将当前变量值push到reference value
  • I factor会减小从当前时间开始的累计error
  • D factor会控制该变量的波动

3.3 Waterlevel-based Controller

Waterlevel-based(WL) Controller是另一种feedback model,它会通过water level来切换设备控制:

\[\phi(t_{k+1}) \rightarrow \phi(t_k) + \gamma(x_r - x(t_k))\]

…(5)

其中,\(\gamma\)是对于在指数scale下的\(\phi(t_k)\)次更新的step size参数。

对比起PID, WL controller只会使用变量与reference value间的差异。另外,它会提供一个顺序控制信号。也就是说,下个control信号会基于前者进行调整。

3.4 为点击最大化设置References

假设:feedback controller是用来分发广告主的KPI目标的一个有效工具。在该节中,我们会演示feedback control机制可以被当成一个模型无关(model-free)的点击最大化框架(click maximisation framework),它可以嵌入到任意bidding策略,并执行:在不同channels上,通过设置smart reference values来进行竞价预算分配。

当一个广告主在指定目标受众时(通常会组合上广告曝光上下文分类)来进行它指定的campaign,来自独立channels(比如:不同的广告交易平台(ad exchanges)、不同的用户regions、不同的用户PC/model设备等)的满足目标规则(target rules)的曝光(impressions)。通常,DSP会集合许多ad exchanges,并分发来自所有这些广告交易平台(ad exchanges)的所需ad曝光(只要曝光能满足target rule),尽管市场价格会大有不同。图3展示了:对于相同的campaign,不同的广告交易平台(ad exchanges)会有不同的eCPC。如【34】中所说,在其它channels上(比如:user regions和devices上)也会有所不同。

图片名称

图3 跨不同ad exchanges的不同eCPCs。Dataset: iPinYou

开销差异提供给广告主一个机会,可以基于eCPC来最优化它的campaign效果。为了证实这点,假设一个DSP被集成到两个广告交易平台A和B。对于在该DSP中的一个campaign,如果来自A的eCPC要比B的高,这意味着来自平台B的库存要比平台A的费用更高效,接着会重新分配一些预算给A和B,这将潜在减小该campaign的整体eCPC。实际上,预算重分配(budget reallocation)可以通过对平台A减小竞价、并增加平台B的竞价来完成。这里,我们正式提出一个用于计算每个交易平台的均衡eCPC模型:它可以被用作最优化reference eCPC来进行feedback control,并在给定预算约束下生成一个最大数目的点击

数学上,假设对于一个给定的ad campaign,存在n个交易平台(可以是其它channels),比如:1, 2, …, n,它们对于一个target rule具有ad volume。在我们的公式里,我们关注最优化点击,而转化率公式可以相似被获取到。假设:

  • \(\epsilon_i\):是在交易平台i上的eCPC
  • \(c_i(\epsilon_i)\):是campaign在交易平台i上调整竞价后使得eCPC为\(\epsilon_i\),所对应的在该campaign的lifetime中获得的点击数

对于广告主,他们希望在给定campaign预算B下,最大化campaign-level的点击数(会使得成本\(\epsilon_i\)越小):

\[\underset{\epsilon_1,\epsilon_2,\cdots,\epsilon_n}{max} \sum_i c_i(\epsilon_i) \\ s.t. \sum_i c_i(\epsilon_i) \epsilon_i = B\]

…(6)(7)

它的拉格朗日项为:

\[L(\epsilon_1,\epsilon_2,\cdots,\epsilon_n, \alpha) = \sum_i c_i(\epsilon_i) - \alpha ( \sum\limits_i c_i(\epsilon_i) \epsilon_i - B)\]

…(8)

其中,\(\alpha\)是Lagrangian乘子。接着我们采用它在\(\epsilon_i\)上的梯度为0,进行求解:

\[\frac{\partial L(\epsilon_1,\epsilon_2,\cdots,\epsilon_n, \alpha)}{\partial \epsilon_i} = c_i'(\epsilon_i) - \alpha(c_i' (\epsilon_i) \epsilon_i + c_i(\epsilon_i)) = 0 \\ \frac{1}{\alpha} = \frac{c_i' (\epsilon_i) \epsilon_i + c_i(\epsilon_i)}{c_i'(\epsilon_i)} = \epsilon_i + \frac{c_i(\epsilon_i)}{c_i'(\epsilon_i)}\]

…(9) (10)

其中,对于每个交易平台i都适用于该等式。这样,我们可以使用\(\alpha\)来桥接任意两个平台i和j的等式:

\[\frac{1}{\alpha} = \epsilon_i + \frac{c_i(\epsilon_i)}{c_i'(\epsilon_i)} = \epsilon_j + \frac{c_j(\epsilon_j)}{c_j'(\epsilon_j)}\]

…(11)

因此,最优解条件给定如下:

\[\frac{1}{\alpha} = \epsilon_1 + \frac{c_1(\epsilon_1)}{c_1'(\epsilon_1)} = \epsilon_2 + \frac{c_2(\epsilon_2)}{c_2'(\epsilon_2)} = ... = \epsilon_n + \frac{c_n(\epsilon_n)}{c_n'(\epsilon_n)} \\ \sum_i c_i(\epsilon_i) \epsilon_i = B\]

…(12)(13)

通过足够的数据样本,我们可以发现,\(c_i(\epsilon_i)\)通常是一个凹函数(concave)和平滑(smooth)函数。一些示例如图4所示。

图片名称

图4 eCPC vs. clicks数目。clicks和eCPC会通过整个iPinYou的每个campaign的training dataset计算,通过对等式(1)中的\(b_0\)进行调参进行计算

基于该观察,可以将\(c_i(\epsilon_i)\)定义成一个通用多项式:

\[c_i(\epsilon_i) = c_i^* a_i (\frac{\epsilon_i}{\epsilon_i^*})^{b_i}\]

…(14)

其中,

  • \(\epsilon_i^*\)是在交易平台i在训练数据周期期间,该campaignad库存的历史平均eCPC
  • \(c_i^*\):相应的点击数(click number)

这两个因子可以直接从训练数据中获得。参数\(a_i\)和\(b_i\)可以进行调参来拟合训练数据。

等式(14)转成(12):

\[\frac{1}{\alpha} = \epsilon_i + \frac{c_i(\epsilon_i)}{c_i'(\epsilon_i)} = \epsilon_i + ... = (1+\frac{1}{b_i}) \epsilon_i\]

…(15)

我们将等式(12)重写:

\[\frac{1}{\alpha} = (1+\frac{1}{b_1}) \epsilon_1 = (1+\frac{1}{b_2}) \epsilon_2 = ... = (1+\frac{1}{b_n}) \epsilon_n \\ \epsilon_i = \frac{b_i}{\alpha (b_i+1)}\]

…(16) (17)

有意思的是,从等式(17)中我们发现:equilibrium不会是以下状态:即交易平台的eCPCs是相同的。作为替代,当在平台间重新分配任意预算量时,不会做出更多的总点击;例如,在一个双平台的情况下,当来自一个平台的点击增加等于另一个的下降时,会达到平衡。更特别的,我们从等式(17)观察到,对于广告交易平台i,如果它的点击函数\(c_i(\epsilon_i)\)相当平(例如:在特定区域,点击数会随着eCPC的增加而缓慢增加),那么学到的\(b_i\)会很小。这意味着因子\(\frac{b_i}{b_i + 1}\)也会很小;接着从等式(17)我们可以看到:在广告交易平台i中最优的eCPC应相当小。

将等式(14)和等式(17)代入等式(7)中:

\[\sum_i \frac{c_i^* a_i}{\epsilon_i^{* b_i}} (\frac{b_i}{b_i + 1})^{b_i + 1} (\frac{1}{\alpha})^{b_i + 1} = B\]

…(18)

出于简洁,我们将每个ad交易平台i的参数 \(\frac{c_i^* a_i}{\epsilon_i^{* b_i}} (\frac{b_i}{b_i + 1})^{b_i + 1}\) 表示为\(\delta_i\)。这给出了一个更简洁的形式:

\[\sum_i \delta_i (\frac{1}{\alpha})^{b_i + 1} = B\]

…(19)

等式(19)对于\(\alpha\)没有封闭解(closed form slove)。然而,由于\(b_i\)非负,\(\sum_i \delta_i (\frac{1}{\alpha})^{b_i + 1}\)随着\(\frac{1}{\alpha}\)单调增,你可以通过使用一个数值求解法(比如:SGD或Newton法)来轻易获得\(\alpha\)的解。最终,基于求解得的\(\alpha\),我们可以使用等式(17)来发现每个ad交易平台i的最优的eCPC \(\epsilon_i\)。

实际上,这些eCPCs是我们希望该campaign在相应的交易平台达到的reference value。我们可以使用PID controllers来达到这样的reference eCPCs,(对于每个广告交易平台i,通过设置在等式(3)中的\(x_r\)作为\(\epsilon_i\)),以达到在campaign level上的点击最大数

作为特例,如果我们将campaign的整个容量(volume)看成一个channel,该方法可以被直接用于一个通用的bid optimisation tool。它会使用campaign的历史数据来决定最优化的eCPC,接着通过控制eCPC来执行click optimisation来将最优的eCPC设置为reference。注意,该multi-channel click最大化框架可以灵活地合并到任意竞价策略中。

4.实证研究

4.1 评估setup

Dataset 我们在iPinYou DSP上收集的公开数据集上测试了我们的系统。它包含了在2013年的10天内来自9个campaigns要的日志数据,它包含了:

  • 64.75M的bid记录数据
  • 以及19.5M的曝光数据
  • 14.79K的点击以及16K条人民币的消费数据

根据数据发布者,每个campaign最近3天的数据会被split成test data,剩余作为training data。dataset的磁盘大小为35GB。关于dataset的更多统计和分析提供在[34]。该dataset是以record-per-row的格式存在,其中,每行包含了三个部分:

  • i) 该次拍卖(auction)的features,比如:time、location、IP地址、URL/发布者的domain、ad slot size、用户兴趣分段等。每条记录的features会被indexed成0.7M维度的稀疏二元vector,它会feed到一个关于竞价策略的logistic regression CTR estimator中
  • ii) 拍卖获胜价格,它是该bid赢得该次auction的和threshold
  • iii) 用户在ad impression上的feedback,比如:点击 或 未点击

评估协议(evaluation protocol)

我们遵循过去在bid optimisation上的研究的evaluation protocol。特别的,对于每条数据记录,我们会将feature信息传递到我们的bidding agent中。我们的bidding agent会基于CTR预估以及等式(1)中的参数生成一个新的bid。我们接着会对生成的bid 与 记录的实际auction winning price进行对比。如果该bid比auction winning price要更高,我们可以知道bidding agent会在该次auction上胜出,并且获得该次ad impression。如果该次ad impression record会带来一次click,那么该placement会生成一个正向结果(一次click),开销等于winning price。如果没有发生click行为,该placement会产生一次负向结果,并浪费钱。control参数会每2小时更新(作为一轮)。

值得一提的是,历史的用户反馈会被广泛用来评估信息检索系统和推荐系统。他们所有都会使用历史点击作为一个proxy来关联训练prediction model,也会形成ground truth。相似的,我们的evaluation protocol会保留user contexts、displayed ads(creatives 等)、bid requests 、以及auction environment不变。我们希望回答:在相同的context下,如果广告主给出一个不同或更好的竞价策略或采用一个feedback loop,他们是否能获得在有限预算下的更好点击。对于用户来说只要没有任何变化,点击仍会相同。该方法对于评估bid optimisation来说很好,并且在展示广告工业界被广泛采用

Evaluation Measures

我们在feedback control系统中采用一些常用的measures。我们将errorband定义为在reference value上\(\pm 10%\)的区间。如果在该区域内控制变量settles,我们认为该变量被成功控制。convergence的speed()也同样重要。特别的,我们会评估rise time来确认该控制变量进入到error band中有多快。我们也会使用settling time来评估受控变量成功限制在error band内有多快。然而,快收敛(fast convergence)会带来控制不准(inaccurate control)问题。在settling(称为稳态:)之后,我们使用RMSE-SS来评估在controlled variable value与reference value间的RMSE。最后,我们会通过计算在该settling后该变量值的标准差,来measure该control stability,称为“SD-SS”。

对于bid optimisation的效果,我们会使用campaign的总达成点击数(total achieved click number)和eCPC来作为主要评估measures。我们也会监控与效果相关的曝光(比如:曝光数、AWR和CPM)。

实证研究的组织

包含了在控制两个KPIs(eCPC和AWR)的以下5个部分。

  • i) 4.2节,我们会回答提出的feedback control系统是否实际上能控制这些KPIs
  • iii) 4.3节,会集中在PID controller,并研究它在设置target variable上的特性
  • iii) 4.4节, 我们关注PID controller并研究它在设置target变量上的属性
  • iv) 4.5节,我们利用PID controllers作为一个bid optimization tool,并研究了它在跨多个广告交易平台间优化campaign点击和eCPC上的效果。
  • v) 最后,讨论PID controller调参

4.2 control容量

对于每个campaign,我们会检查在两个KPIs上的两个controllers。我们首先调整在训练数据上的控制参数来最小化settling time。接着我们采用在test data上的controllers并观察效果。在每个campaign上的详细控制效果如表1所示。图5展示了controlled KPI vs. timesteps(例如:轮)曲线。曲水平线意味着reference。

图片名称

图5 eCPC和AWR上的控制效果

我们从结果看到:

  • (i) 所有PID controllers可以设置在KPIs的error band内(小于40轮的settling time),它意味着PID control可以在给定reference value上设置两个KPIs。
  • (ii) 在eCPC上的WL controller,在test data上不会work,即使我们可以找出在训练数据上的好参数。这是因为当面对RTB的巨大动态性时,WL controller会尝试通过短时效果反馈(transient performance feedbacks)影响平均系统行为
  • (iii)对于在AWR上的WL,大多数campaigns是可控的,但仍有两个campaigns会在设置 reference value时失败。
  • (iv) 对比在AWR上的PID,WL总是产生更高的RMSE-SS和SD-SS,但比overshot百分比要更低。这种control settings会具有一个相当短的rise time,通常会面对一个更高的overshot。
  • (v) 另外,我们观察到,具有更高CTR estimator AUC效果的campaigns,通常会获得更短的settling time。

根据上述结果,PID controller在test RTB cases上完胜WL controller。我们相信,这是因为在PID controller中的integral factor可以帮助减小累积误差(例如:RMSE-SS),derivative factor可以帮助减小变量波动(variable fluctuation,例如:SD-SS)。设置AWR比eCPC要更容易。这主要是因为AWR只依赖于市场价格分布,而eCPC会额外涉及user feedback,例如:CTR,而prediction会具有很大不确定性

4.3 控制难度(control difficulty)

在本节中,我们会通过添加更高或更低的reference values来进一步扩展control capability实验进行对比。我们的目标是:研究不同levels的reference values在control difficulty上的影响。我们遵循相同的模式来训练和测试controllers。然而,替代展示准确的performance value效果,我们这里只关注不同reference settings上的效果对比。

在达成settling time、RMSE-SS和SD-SS的分布,以及三个refrence levels的setting,如图6(a)(b)所示,使用PID来控制eCPC和AWR。我们观察到,平均setting time、RMSE-SS、SD-SS,会随着refrence values变高而减小。这表明:具有更高reference的eCPC和AWR的控制任务会更容易达成,因为可以更高的竞价来赢得更多获胜、并且花费更多。随着reference越高,越接近初始performance value,控制信号不会带来更严重的bias或易变性(volatility),这会导致更低的RMSE-SS和SD-SS。对于page limit,使用WL的control效果不会在这里呈述。结果与PID相近。

图片名称

图6 使用PID的控制难度对比

图7给出了具有三个reference levels两个controllers的特定控制曲线,它在一个样本campaign 3386。我们发现:当reference value会远离控制变量的初始值时,会在eCPC和AWR上为settling带来更大的难度。这建议广告主在设置一个模糊控制目标会引入unsettling或更大易变性的风险。广告主应尝试找出在target value和practical control performance间的一个最好trade-off。

图片名称

图7 campaign 3386在eCPC和AWR上使用不同reference values的控制效果

4.4 PID setting:静态 vs. 动态references

比例因子、微分因子、积分因子的组合,可以使PID feedback自动高效调整在control lifetime期间的settling过程。可选的,你可以经验性地调整reference value,以便达到期望的reference value。对于eCPC control的示例,如果刚好在耗尽首个一半预算之后,campaign的达成eCPC(achived eCPC)要比intial reference value要更高,那么广告主会希望降低reference以便加快下调,最终在耗尽完预算之前达到它初始的eCPC目标。PID feedback controller会通过它的积分项来隐式地处理这样的问题。在本节中,我们研究了RTB feedback control机制,对于广告主是否必要仍必要,来根据campaign的实时效果来有目的地调整reference value。

Dynamic reference Adjustment Model

为了模拟广告主的策略,在预算限制下来动态变更eCPC和AWR的reference value,我们提出一种dynamic reference adjustment model来计算在\(t_k\)后的新reference \(x_r(t_{k+1})\)

\[x_r(t_{k+1}) = \frac{(B - s(t_k)) x_r x(t_k)}{B x(t_k) - s(t_k) x_r }\]

…(20)

其中:

  • \(x_r\)是initial reference value
  • \(x(t_k)\)是在timestep \(t_k\)时的达成KPI(eCPC或AWR)
  • B是campaign budget
  • \(s(t_k)\)是开销

我们可以看到,等式(20)中:

  • 当\(x_r(t_k) = x_r\), \(x_r(t_{k+1})\)会设置成与\(x_r\)相同;
  • 当\(x_r(t_k) > x_r\)时,\(x_r(t_{k+1})\)会设置得比\(x_r\)更低,反之

出于可读性,我们会在附录详细介绍微分项。使用等式(20)我们可以计算新的reference \(\frac{eCPC}{AWR}\) \(x_r(t_{k+1})\),并使用它来替换等式(3)中的\(x_r\)来计算error factor,以便做出动态reference control。

结果与讨论

图8展示了具有基于等式(20)计算的动态reference PID control的效果。campaign效果会在当预算耗尽时停止。从该图看到,对于eCPC和AWR control,动态reference会采用一个激进模式,将eCPC或AWR沿着原始的reference value(虚线)进行推进。这实际上会模拟一些广告主的策略:当performance低于reference时,更高的dynamic reference会将总效果更快地推向intial reference。另外,对于AWR control,我们可以看到,当预算即将耗尽时,dynamic reference会起伏不定。这是因为当所剩预算不够时,reference value会通过等式(20)设置得过高或过低,以便将效果push到初始目标。很显然这是一个低效的解决方案。

图片名称

图8 使用PID的动态reference control

另外,我们直接对比了PID在dynamic-reference controllers(dyn)和标准静态reference(st)上的数量控制效果。除了settling time外,我们也对比了settling cost,它表示在settling前的花费预算。在所有campaigns上整体效果,eCPC control如图9(a)所示;AWR control如图9(b)所示。结果表明:

  • (i) 对于eCPC control,dynamic reference controllers不会比static-reference controller效果更好
  • (ii) 对于AWR control,dynamic-reference controllers可以减小settling time和cost,但accuracy(RMSE-SS)和stability(SD-SS)会比static-reference controllers更糟。这是因为dynamic reference本身会带来易变性(如图8)。这些结果表明,PID controller提供了一个够好的方式来朝着预先指定的reference来设置变量,无需动态调整reference来加速使用我们的方法。

图片名称

图9 使用PID的Dynamic vs. static reference

4.5 click maximisation的reference setting

我们已经研究了feedback control如何用于点击最大化的目标。如第3.4节所示,bid requests通常来自不同的广告交易平台,其中,市场支配力和CPM价格是不同的。给定一个预算限制,控制eCPC在每个交易平台上的点击数最大化,可以通过各自在每个平台上设置最优的eCPC reference来达到。

在该实验中,我们为每个广告平台构建了一个PID feedback controller,其中,reference eCPCs通过等式(17)和等式(19)进行计算。我们会基于每个campaign的训练数据来训练PID参数,接着在test data上测试bidding的效果。如表3所示,在所有广告交易平台上的eCPC,对于所有测试campaigns都会设置在reference value上(settling time少于40)。

  • multiple:我们将多个平台eCPC feedback control方法称为multiple。
  • uniform:除了multiple外,我们也测试了一个baseline方法,它会在所有ad交易平台上分配一个单一最优均匀eCPC reference,表示为“uniform”。
  • none:我们也会使用没有feedback control的线性bidding策略作为baseline,表示为“none”。

在多个evaluation measures上的对比如图10所示。我们观察到:

  • (i) 在achieved clicks数目和eCPC上,feedback-control-enabled bidding策略(uniform和multiple)要极大胜过non-controlled bidding策略(none)。这表明,合理的controlling eCPCs会导致在最大化clicks上的一个最优解
  • (ii) 通过重分配预算,在不同广告交易平台上设置不同reference eCPCs,multiple会进一步胜过uniform
  • (iii) 在impression相关的指标上,feedback-control-enabled bidding策略会比non-controlled bidding stategy获得更多曝光,通过减少它们的bids(CPM)以及AWR,但达成更多的bid volumes。这建议我们:通过分配更多预算到具有更低值的impressions上,可以潜在生成更多点击。作为一个副产品,它会证实【33】的理论。

图片名称

图10 Bid最优化效果

作为示例,图11会绘制在campaign 1458上的三个方法的settling效果。三条曲线是在三个交易平台上的reference eCPCs。我们可以看到:在三个广告交易平台上的eCPCs。我们可以看到,在三个交易平台上的eCPCs成功设置在reference eCPCs。同时,campaign-level eCPC (multiple)会比uniform和none设置在一个更低值。

图片名称

图11 多交易平台的feedback control的settlement

4.6 PID参数调整

在该节中,我们共享了一些关于PID controller调参以及在线更新的经验。

参数搜索

经验上,\(\lambda_D\)不会极大地改变control效果。\(\lambda_D\)只需要一个很小值,比如:\(1 \times 10^{-5}\),会减小overshoot并能轻微缩短settling time。这样,参数搜索的焦点是\(\lambda_P\)和\(\lambda_I\)。我们不会使用开销很大的grid search,我们会执行一个adaptive coordinate search。对于每个update,我们会fix住一个参数,更改另一个来寻找能产生更短settling time的最优值,对于每次shooting,这种line searching step length会指数收缩。通常在3或4次迭代后,会达到局部最优解(local optima),我们会发现这样的解与grid search是高度可比的。

设置\(\phi(t)\)的bounds

我们也发现:设置控制信号\(\phi(t)\)的上下界对于KPIs可控来说很重要。由于在RTB中的动态性,用户CTR在一个周期内下降是正常的,这会使得eCPC更高。相应的feedback可能产生在bids上一个大的负向增益(nagative gain),这会导致极低的bid price,并且在剩余rounds上没有win、click以及没有额外开销。在这种情况下,一个合理的低下限(-2)的目标可以消除上述极端影响,可以阻止严重的负向控制信号。另外,一个上限(5)为了避免在远超reference value的变量增长。

在线参数更新

由于DSP会在feedback control下运行,收集的数据会被立即使用来训练一个新的PID controller并更新老的。我们研究了PID参数使用最近数据进行在线更新的可能性。特别的,在使用训练数据初始化PID参数后,我们会在每10轮上对controller进行重训练(例如:在round 10, 20, 30),在test stage使用所有之前的数据并使用与training stage相同的参数搜索方法。在re-training中的参数搜索会在每个controller上花费10分钟,它比round周期(2小时)要更短。图12展示了分别使用在线和郭线PID参数的control效果。可以看到,在每10轮后,在线调参的PID在管理控制围绕reference value的eCPC上会比离线更有效,产生更短的settling time以及更低的overshoot。另外,当切换参数时,没有明显的干扰或不稳定发生。有了在线参数更新,我们可以开始基于several-hour的training data来训练controllers并采用新数据来自适应更新参数来提升control效果。

图片名称

图12 在线/离线参数更新的控制

5.在线部署与测试

参考

ali在《COLD: Towards the Next Generation of Pre-Ranking System》中讲述了他们的实现。

摘要

长期以来,pre-ranking只是ranking模块的一个简化版本,它要处理待排序的更大集合的候选。这里的努力是为了简化ranking模型,以便在online inerence时处理大量数据。例如,在展示广告系统中,SOTA 的preranking模型会根据vector-product based的深度架构:user-wise和ad-wise vectors会以offline方式进行预计算,online时计算获取preranking score。很明显,这种模型限制会导致次优的performance。

本paper中,我们从算法系统co-design的角度来重新思考pre-ranking系统。除了解记模型架构的计算能力(computing power)限制外(会造成模型效果的loss),这里我们设计了一个新的pre-ranking系统,会对pre-ranking模型和computing power做joint optimization。我们将之命名为COLD(Computing power cost-aware Online and Lightweight Deep pre-ranking system),COLD在三方面是SOTA的:

  • 1) 在COLD中会使用一个带有交叉特征的专属deep model
  • 2) 通过在inference加速上进行optimization tricks,计算开销明显下降。这为COLD使用更复杂深度模型来达到更好performance带来空间
  • 3) COLD模型以online learning和servering方式运行,可以很好地处理数据分布偏移(data distribution shift)的挑战

同时,COLD的fully online pre-ranking系统会使用一个灵活的基础设施来支持高效的新模型开发和online A/B testing。自2019以来,COLD已经被部署到ALibaba展示广告系统的所有产品上,并带来了极大提升。

1.介绍

有许多papers介绍如何构建一个高效的ranking系统。然而,非常少的工作关注于pre-ranking系统。本文将讨论在展示广告系统中设计pre-ranking系统。该技术也能应用到推荐、搜索引擎中。

传统上,pre-ranking系统的候选集的size可以扩展到上万。它是ranking系统的百倍。另一方面,ranking和pre-ranking系统有严格的latency限制,例如:10-20ms。这种情况下,pre-ranking系统通常被设计成一个lightweight ranking系统,它可以简化ranking模型以解决online inference时的计算爆炸。

1.1 pre-ranking系统的开发历史简介

回看pre-ranking在工作界的开发历史,我们可以将模型视图分为4代,如图2所示。

图片名称

图2

第1代是非个性化的ad-wise statistical score。它会通过将每个ad的最近CTR做平均来计算pre-ranking score。该score会以很高频率更新。LR模型是第二代系统,它是一个关于大规模ranking模型的lightweight版本。它可以以online learning和serving的方式更新。Vector-product based的deep模型是第三代,也是当前SOTA的pre-ranking模型。在这种方法中,user-wise和ad-wise embedding vectors是以offline方式单独预先计算好,它没有user-ad交叉特征,接着两个vectors的内积会通过在线计算来获得pre-ranking score。尽管vector-product-based DNN可以极大增加前两代的模型效果,它仍然有两个地方有提升空间:

  • 1) 模型表征能力(Model expression ability):如[17]所示,模型的表征能力被限制在vector-product的形式上
  • 2) 模型更新频率:vector-product based DNN的embedding vectors需要offline进行预计算,然后加载到server的内存中进行online计算。这意味着vector-product based DNN模型只能以一种low-frequency的方式更新,使得它很难适配最新的data distribution shift,特别是当数据变化很大时(比如:双十一前后)

上述提到的三代pre-ranking系统会具有相同的范式:计算能力(computing power)被看成是一个常数限制,在此之下开发pre-ranking模型。也就是说,模型的设计和计算能力的optimization是解耦的(decoupled),这通常会导致模型的简化版可以满足计算能力的需求。这也会导致次优的效果。

2. CLOD:新一代pre-ranking系统

在本paper中,我们从算法系统co-design的角度重新思考了pre-ranking系统的挑战。作为替代,这里重新设计了一个新的pre-ranking系统,它会对pre-ranking模型和计算能力开销一起进行jointly optimizaing。我们将它命名为COLD,如图2所示。我们将COLD看成是第4代pre-ranking系统。COLD会同时考虑模型设计和系统设计。COLD中的计算能力开销(computing power cost)是个变量,它可以与模型效果一起进行jointly优化。换句话说,COLD是一个灵活的pre-ranking系统,在模型效果和计算能力开销间进行trade-off。

COLD的关键特征是:

  • 1) 在COLD中会使用带交叉特征的Arbitrary deep model。在真实系统中,COLD模型是一个7-layer fully connected DNN,它使用SE(Squeeze-and-Excitation)blocks。SE block可以将feature进行group selection来从复杂的ranking模型中得到一个lightweight版本。该selection会同时考虑模型效果和计算能力开销。也就是说,COLD的计算能力开销是可控的。
  • 2) 通过使用optimization tricks(比如:在inference加速中进行并行计算和semiprecision计算),计算能力开销可以显式地减小。这可以让COLD使用更复杂的deep模型来达到更好的效果
  • 3) COLD模型可以以online learning和serving的方式工作,可以为系统带来良好的能力来解决data distribution shift的问题。COLD的fully online pre-ranking系统可以提供给我们一个良好的基础设施来支持新的模型开发和快速在线A/B testing,它也是当前ranking系统所具有的最好的系统实践。

图3给出了4代ranking系统在模型表征能力和更新频率上的一个比较。COLD可以达到最好的tradeoff。自2019以来,COLD在展示广告系统的所有产品上进行部署,每天服务数亿用户。对比vector-product based DNN,COLD的online version会带来6%的RPM提升,它在商业上是一个极大的提升。

图片名称

图3

2.pre-ranking系统总览

如图1所示,pre-ranking可以被看成是一个matching和ranking 模块间的connecting link。它接收matching的结果,并执行一个粗糙的选择(rough selection),来减小后续ranking模块的候选集的size。以Alibaba的展示广告系统为例,候选集的size M会被feed到pre-ranking系统中,通常规模为一万。接着pre-ranking模型会根据特征metrics(比如:eCPM)来选择top-N的候选集合。N的幅度通常为数百。这些胜出的N个candidates会进一步通过一个复杂的ranking模型来进行排序得到最终结果,最后展示给用户。

总的说来,pre-ranking会共享与ranking相似的功能。最大的不同之处在于问题规模。很明显,对于pre-ranking系统中待排序的candidates的size会是ranking系统中的10倍或更大。在pre-ranking系统中直接使用ranking模型是不可能的,因为它会面对大量的计算开销。然而,对computing power和模型效果进行balance是设计pre-ranking系统的一个关键考虑。

2.1 Vector-Product based DNN模型

受deep learning的驱动,vector-product based DNN模型被广告用于pre-ranking系统中,并达到state-of-the-art的效果。如图2所示,vector-product based DNN模型被认为是由两个并行的sub enural networks组成。user features被feed到left sub network中,ad features则到right sub network中。对于每个sub network,features被feed给embedding layer中,接着concatenated一起,后接FC layers。这种方式下,我们可以获得两个fix-size的vectors:\(v_u\)和\(v_a\),它分别表示user和ad信息。最终,pre-ranking score p会以如下方式进行计算:

\[p = \sigma(v_u^T v_a), where \ \sigma(x)=\frac{1}{1+e^{-x}}\]

…(1)

vector-product based DNN的训练与传统ranking model的方式相类似。

2.2 缺点

vector-product based DNN模型在latency和计算资源上很高效。\(v_u\)和\(v_a\)的vectors可以以offline的方式单独预计算好,score p可以online计算。这使得它在计算开销上很友好。图4展示了经典的实现。对于前两代pre-ranking模型,vector-product based DNN可以获得极大的性能提升。

图片名称

图4

然而,vector-product based DNN模型会更关注于计算开销的减小,将模型限制在vector-product形式下,这会导致次优的效果。我们将缺点总结如下:

  • 1) 模型表征能力被限制在vector-product形式下,不能使用user-ad cross features。之前的工作【17】展示了在vector-product based的复杂深度模型的优越性。
  • 2) 通过枚举所有的users和ads,user和ad vectors需要离线进行预计算,来减小计算资源并进行latency优化。为数亿用户和数千万ads计算会花费几小时,使得它很难适应data distribution shift。当数据变化很剧烈时,会对模型效果带来伤害。
  • 3) 模型更新频率会受系统实现的影响。对于vector-product based DNN模型,在user/ad vectors indexes间的每日切换必须同时进行。

vector-product based DNN的pre-rankin系统的这些缺点源自于追剧计算能力开销,很难完全解决。

3.COLD

COLD的核心思想是,同时考虑模型设计与系统设计。在COLD中的计算开销是个变量(variable),它可以和模型performance一起进行jointly optimzied。换句话说,COLD是一个灵活的pre-ranking系统,在模型效果和计算开销间的tradeoff是可控的。

3.1 COLD中的Deep pre-ranking模型

不同于vector-product based DNN模型,它会通过限制模型结构来减小计算开销,这会造成模型效果的loss,COLD允许使用arbittrary deep models的复杂结构来确保最佳的模型效果。换句话说,SOTA deep ranking模型可以用在COLD中。例如,在我们的实际系统中,我们采用GwEN(group-wise embedding network)作为我们的初始模型结构,它是我们的ranking系统的online模型的一个早期版本。图2展示了GwEN,它是一个fully connected layer,使用feature group-wise embedding的concatenation作为inputs。注意,在GwEN network中也包括交叉特征(cross features)。

当然,直接使用复杂结构的deep rank模型的online inference的计算能力开销是不可接受的,在pre-ranking系统中待排序的candidate set的size更大。为了解决该问题,我们采用两种方式的优化策略:

  • 一种是设置一个灵活的网络结构,它可以在模型performance和计算开销间做出一个trade-off;
  • 另一种方式是,通过在inference加速上使用optimization tricks,来显式减小计算开销。

3.2 灵活的网络结构设计

总的来说,我们需要引入关于网络结构的合理设计来获得关于deep model(初始GwEN模型的一个full版本)的一个lightweight版本。可以使用以下技术(network pruning、feature selection、neural architecture search等)到该任务上。在我们的实践中,我们选择feature selection方法,它对于模型效果和计算开销间的trade-off控制来说来说方便些。也可以使用其它技术,这个读者可以进一步尝试。

特别的,我们使用SE(squeeze-and-excitation)bloack作为feature selection。SE block首先被用到CV中来显式地建模channels间的inner-dependencies。这里,我们使用SE block来获得group-wise features的重要性权重(importance weights),通过对模型效果和计算开销两者进行measure,在COLD中选择最合适的。

importance weight计算。假设\(e_i\)表示第i个input feature group的embedding。feature groups的总数是M。SE block会对input \(e_i\)压缩到一个关于weight \(s_i\)的scalar value,它的计算如下:

\[s = \sigma( W [e_1, \cdots, e_m ] + b)\]

…(2)

其中,\(s \in R^M\)是一个vector,\(W \in R^{k \times M}, b \in R^M\)。W和b是可学习的参数。接着,新的weighted embedding \(v_i\)通过在embedding \(e_i\)和importance weight \(s_i\)间的field-wise乘法计算得到。

feature group selection。weight vector s表示每个feature group的重要性。我们使用该weight来对所有feature groups进行排序(rank),并选择具有top weights的K个feature groups。接着,会进行一个offline test,来评估选择K个feature groups的lightweight版本的模型的模型效果和系统效果。metrics包括:GAUC、QPS以及RT(return time,表示模型的时延)。对于数目k有许多启发tricks,例如:features的groups,我们最终选择在给定系统效果限制下最好的GAUC版本作为我们最终的模型。这种方式下,模型效果和计算开销间的trade-off可以以灵活方式开展。

3.3 工程optimization tricks

除了通过灵活的网络架构设计来减小计算开销外,很难避免模型效果在一定程度上的损失;我们也会在工程上使用许多optimzation tricks,进一步看COLD使用复杂deep models能带来更大的收益。

这里,我们引入了一些在展示广告系统中的经验。不同的系统间可能差异比较大,大家可以根据业务实际做选择。在我们的展示广告系统中,pre-ranking模块的online inference engine主要包括两个部分:feature计算和dense network计算。在feature计算上,eigine会从indexing系统拉取user和ad features,接着计算cross-features。在dense network computation中,eigine会首先将features转换成embedding vectors,并将它们做concatenate作为network的input。

所有level的Parallelism。为了在计算开销上达到low latency和high throughput inference,增大并行计算很重要。因此,当可能时,我们的系统使用parallelism。幸运的是,不同ads的pre-rank score相互之间完全独立。这意味着他们可以并行计算,代价是:相关的user features会有些重复计算。

在high level上,一个前端(front-end)user query可以被split成许多inference queries。每个query会处理部分ads,结果会在所有queries返回之后进行merge。因此,当决定要进行split的queries数时需要进行trade-offs。更多queries意味着每个query会有更少ads,因此对于每个uqery具有更低的lantency。queries过多可能会导至大量重复计算和系统额外开销。另外,我们的系统使用RPC来实现queries,越多的queries意味着越多的network traffic,更有可能会导致delay或failure。

当处理每个query时,多线程处理可以用于feature计算。每个thread会处理部分ads来减小latency。最终,当执行dense network inference时,我们使用GPU来加速计算。

column based computation。传统上,feature计算的完成会以row-based的方式进行:ads被一条一条处理。然而,这些row-based的方法并不是cache-friendly。作为替代,我们使用一个column-based方式来将一个feature column放一起进行计算。图5展示了两种类型的计算模式。通过这样做,我们可以使用像SIMD(多数据单指令Single Instruction Multiple Data)的技术来加速feature computation。

图片名称

图5

low precision GPU计算。对于COLD模型,大多数计算是dense matrix乘法,这留给我们优化的空间。在NVIDIA的Turing架构中,T4 GPU为Float16和Int8 matrix乘法提供了extreme效果,很适合我们的case。Float16的FLOPS理论峰值是Float32的8倍以上。然而,Float16会丢失一些precision。实际上,我们发现对于一些场景,随着我们对一些feature groups使用sum-pooling,dense network的input可以非常大,超过Float16的表示。为了解决该问题,一种解决方案是使用normlization layers比如:batch-norm layer。然而,BN layer本身包含了移动变量参数(moving-variance parameters),它的规模可能会更大。这意味着计算图需要是mix-precision的,fully-connected layer会使用Float16和batch-norm layers会使用Float32.另一种方法是使用parameter-free normalization layer。例如,log函数可以将大数转换成一个合理的区间。然而,log()函数可能不能处理负数,当输入接近0时,会生成一个很大的数。因此,我们设计了一个piece-wised smooth function,称为linear-log oprator来处理unwanted行为,如等式(3)所示:

\[linear_log(x)=\\]

…(3)

linear_log()函数可以看成图6的样式。它将Float32的数字转换成一个合适的区间。如果在第一个layer上放置一个linear_log operator,它会保证network的input可以会小些。另外,linear_log()函数是\(C^1\)连续的,因此,它不会让网络训练更难。实际上,我们发现,在添加了这个layer后,network仍能达到对比原始COLD模型相近的accuracy。

图片名称

图6 linear_log function

在使用Float16进行inference之后,我们发现,CUDA kernel的running time会急剧下降,kernel launching时间会成为瓶颈。为了增强实际QPS,当开加kernels时,我们进一步使用MPS(multi-process service)来减小overhead。通过组合Float16和MPS,engne throughput是之前的两倍。

3.4 Fully Online infrastructure

受益于不受限的模型结构,COLD可以在一个fully online infrastructure上实现:training和serving都以online方式进行,如图7所示。从工业界角度,当前的最好系统实践是ranking系统自身。该infrastcture的好处有两块:

图片名称

图7

  • 1) COLD模型的online learning可以处理data distribution shift。根据我们的体验,在下一实验环节我们会展示COLD模型对比vector-product based DNN模型的提升,尤其是当数据剧烈变化时。另外,COLD模型使用online learning对于new ads是友好的。
  • 2) COLD的fully online pre-ranking系统提供给我们一个灵活的infrastructure来支持高效的新模型开发以及online A/B testing。记住,对于vector-product based DNN模型,user和ad的vectors需要离线预计算好,并通过index加载到inference engine中。因此,它涉及到许多系统的开发,以便进行两个版本vector-product based DNN模型的A/B testing。根据我们的经验,获得一个solid A/B testing结果的常见时间开销是多天,而对于COLD来说则是几小时。另外,fully online serving也会帮助COLD避免vector-product DNN模型的delayed switch。

4.实验

我们仔细对比评估了COLD的pre-ranking系统的效果。并做了模型效果和系统效果的对比。据我们所知,以下实验在online展示广告系统中执行。

4.1 实验设置

COLD模型的最强baseline是SOTA vector-product based DNN模型,它是在展示广告系统中的online pre-ranking模型的最近版本。

COLD模型和vector-product based DNN模型会使用超过900亿的样本进行训练,它们从真实系统中的log进行收集得到。注意,vector-product based DNN模型会共享与COLD模型的相同的user和ad features。vector-product based DNN模型不能引入任何user-ad交叉特征,而COLD则会使用user-ad交叉特征。作为公平对比,我们也会评估使用不同cross features的groups时的COLD模型的表现。对于COLD模型,feature embedding vectors会被concatenated在一起,接着feed到一个fully connected network(FCN)上。FCN的结构是:\(D_{in} \times 1024 \times 512 \times 256 \times 128 \times 64 \times 2\),其中\(D_{in}\)意味着被选中features的concatenated embedding vectors的维度。对于vetor-product based DNN模型,FC layers被设置成200 x 200 x 10. 对于两种模型,input feature embedding的维度被设置成16. 我们使用Adam solver来更新模型参数。GAUC被用来评估模型的offline表现。另外,人们引入一个新的top-k recall指标,以便measure在pre-ranking模型和后续ranking模型间的alignment degree。top-k的recall rate被定义如下:

\[recall = \frac{| \lbrace top\ k\ ad\ candidates \rbrace } \union \lbrace top \ m \ ad \ candidates \rbrace } {top \ m \ ad \ candidates} |\]

…(4)

其中,top k的candidates和top m的candidates会从相同的candidate set中生成,它是pre-ranking模块的input。top k ad candidates会通过pre-ranking模型进行排序,top m ad candidates则通过ranking模型进行排序。ranking metric是eCPM(expedted Cost Per Mile, eCPM = pCTR * bid)。在我们的实验中,ranking模型使用DIEN,online ranking系统的一个之前版本。

对于系统效果的评估, 我们使用包括QPS、RT的指标。这些metrics会影响在要进行pre-ranked的相同size候选集合下的计算能力开销。粗略的说,对于一个给定模型,在越低的RT下,更大的QPS意味着更低的计算开销。

4.2 模型效果的评估

表1展示了不同模型的offline评估结构。我们可以看到,对比起DIEN,COLD维持着一个相当的GAUC,并在GAUC和Recall上对比vector-product based模型同时达到了重大的提升。

我们在online A/B testing上做了细致的实验。表2展示了COLD模型的lift,胜过vector-product based DNN模型。在正常日子里,COLD模型可以达到6.1%的CTR和6.5%的RPM提升,它在商业上是一个巨大的提升。另外,在双11节,该提升会是9.1%的CTR和10.8%的RPM。这证明了COLD的fully online infrasturcture的价值,它使得模型可以适应最新的数据分布,即使当数据变化剧烈时。

4.3 系统效果的评估

我们在pre-ranking系统上使用不同模型评估了 QPS和RT。表3给出了结果。Vector-product based模型会运行在一个CPU机器上,它使用2 Intel(R) Xeon(R)Platinum 8163 CPU @ 2.50GHz (96 cores) and 512GB RAM上。COLD模型和DIEN都运行在一个使用NVIDIA T4的GPU机器上。此时,vector-product based DNN模型可以达到最佳的系统效果,它是预期结果。DIEN的计算能力开销最大。COLD则达到balance。

4.4 COLD的Ablation研究

为了进一步理解COLD的效果,我们在模型设计角度和工程优化角度同时做了实验。对于后者,它很难从系统集成上解耦所有的优化技术,并对他们进行对比。这里我们给出了在最重要因子上的评估。

略。

参考

华为在《A Practical Incremental Method to Train Deep CTR Models》对许多大厂在用的增量训练方式做了些总结。

介绍

互联网用户会训练大量在线产品和服务,因此很难区分什么对它们更有兴趣。为了减小信息过载,并满足用户的多样性需求,个性化推荐系统扮演着重要的角色。精准的个性化推荐系统有利于包括publisher和platform在内的需求侧和供给侧。

CTR预测是为了估计一个用户在特定context上、在某个推荐item上的概率。它在个性化推荐系统中扮演着重要角色,特别是在app store的商业化以及在线广告上。现在deep learning方法获得了越来越多的吸引力,因为它在预测性能和自动化特征探索上的优越性。因此,许多工业界公司都会在它们的推荐系统上部署deep ctr模型,比如:google play的Wide&Deep、Huawei AppGallery的DeepFM/PIN,Taobao的DIN和DIEN等。

然而,每件事都有两面。为了达到良好的性能,Deep CTR模型具有复杂的结构,需要在大量训练数据上进行训练许多epochs,因此它们都会具有较低的训练效率。当模型不能及时生成时,这样低效的训练(很长训练时间)会导致效果下降。我们在Huawei AppGallery上进行app推荐时观察到,当模型停止更新时,这样的效果如图1所示。举个例子:如果模型停止更新5天,模型效果在AUC上会下降0.66%,这会导致收益和用户体验的极大损失。因此,如何提升Deep CTR模型的训练效率并且不伤害它的效果是在推荐系统中的一个必要问题。分布式学习(Distributed learning)和增量学习( incremental learning )是两种常见范式来解决该问题。分布式学习需要额外的计算资源,需要将训练数据和模型分布到多个节点上来加速训练。在另一方面,增量学习会更改训练过程:从batch mode到increment mode,它会利用最近的数据来更新当前模型。然而,工业界推荐系统的大多数deep models是以batch模式进行训练的,它会使用一个fixed-size window的训练数据来迭代训练模型。在本工作中,我们主要关注incremental方法来训练deep CTR模型,它的目标是极大提升训练效率,并且不降低模型表现。

图片名称

图1 当模型停止更新不同天时,模型效果下降的表现。x轴表示training set和test set间的不同gaps

然而,大多数incremental learning方法主要关注于图片识别领域,其中:新的任务或classes会随时间被学习。而incremental learning方法在图片识别上面临着不同的状况,比如:刚来的new features等,因此,没有必要研究该话题。在本paper中,我们提出一个实用的incremental方法:IncCTR。如图2所示,三种解耦的模块被集成到我们的模型中:Data Module、Feature Module以及Model Module。

  • Data Module:会模拟一个水库(reservoir)的功能,从历史数据和incoming数据中构建训练数据。
  • Feature module:被设计成处理来自incoming data的新features,并初始化已经存在的features和new features。
  • Model模块:会部署知识蒸馏(knowledge distillation)来对模型参数进行fine-tune,并对来自之前模型的知识与来自incoming data的知识的学习进行balance。更特别的,对于teacher model我们会观察两种不同的选择。

图片名称

图2 IncCTR架构总览,其中t表示incremental step

主要贡献如下:

  • 强调了在推荐系统中通过离线模拟进行incremental learning的必要性。我们提出了一种实用的incremental方法:IncCTR来训练deep CTR模型。
  • IncCTR包括了:data模块、feature模块、以及model模块,它们分别具有构建训练数据、处理new features以及fine-tuning模型参数的功能
  • 我们会在公开数据集以及Huawei APP工业界私有数据集上进行大量实验。结果表明:对比batch模式的训练,IncCTR在训练效率上具有很大提升,可以达到较好的效果。另外,在IncCTR上每个模块的ablation study可以被执行。

paper的其余部分组织如下。在第2节,我们引入先决条件来更好理解方法和应用。我们会详述我们的增量学习框架IncCTR以及其三种单独模块。在第4节中,对比实验和消融学习的结果会用来验证框架的效果。最后,第5节下个结论。

2.先决条件

在该节中,我们引入了关于deep ctr模型的一些概念、基础知识。

2.1 Deep CTR模型

。。。

2.2 Batch模式 vs. Increment模式

在本节中,我们会表述和比较两种不同的训练模式:batch mode与increment mode。

2.2.1 使用Batch Mode进行训练

在batch mode下进行训练的模型会基于一个fixed-size time window的数据进行迭代式学习。当新数据到来时,time window会向前滑动。如图3所示,“model 0”会基于day 1到day 10的数据进行训练。接着,当新数据(”day 11”)到来时,一个新模型(称为“model 1”)会基于day 2到day 11的数据进行训练。相似的,“model 2”会基于day 3到day 12进行训练。

图片名称

图3 使用Batch Mode进行训练 vs. 使用Incremental Mode进行训练。每个block表示一天的训练数据

2.2.2 使用Incremental Mode进行训练

在incremental模式下,会基于已经存在的模型新数据进行训练。如图3所示,“Model 1”会基于已经存在的模型“Model 0”(它会基于在day 1到day 10上的数据进行训练),以及day 11的数据进行训练。接着,”Model 1”转向已经存在的模型。接着,当day 12的数据到来时,”Model 2”会基于”Model 1”和第day 12的数据进行训练。

可以看到,当使用batch mode进行训练时,两个连续的time window的训练数据会在大部分有重合。例如,day 1到day 10的数据、day 2到day 11的数据的重合部分是day 2到day 10,其中:80%的部分是共享的。在这样的环境下,使用incremental mode来替代batch mode会极大提升效率,而这样的替换又能维持效果表现。

3.方法论

我们的incremental learning框架IncCTR如图2所示。设计了三个模块:feature、model、data,会对历史数据(historical data)和新进来数据(incoming data)进行较好的trade-off。特别的:

  • Data module:会被看成是一个蓄水池(reservoir),它可以基于历史数据和新进来数据进行构建训练数据。
  • Feature module:会处理来自incoming data的new features,并会对已经存在的features和new features进行初始化。
  • Model module:会使用knowledge distillation来对模型参数进行fine-tune。

3.1 Feature Module

在推荐和信息检索场景下,feature维度通常非常高,例如:数百万 or 数十亿。这样大数目的features的出现频次符合长尾分布,其中只有少量比例的features会出现很频繁,其余很少出现。如[10]观察到的,在模型中的一半features在整个训练数据中只出现一次。很少出现的features很难被学好

因此,当使用batch模式训练时,features必须被归类成“frequent”或”infrequent”,通过统计每个feature的出现次数来完成。更正式的,对于一个feature x,它的出现次数S[x]大于一个预定义的阈值THR(例如:\(S[x] > THR\))即被认为是”frequent”,并且作为单个feature进行学习。其余”infrequent” features被当成是一个特殊的dummy feature:Others。在经过这样的处理后,每个feature通过某些策略(比如:auto-increment、hash-coding)会被映射到一个唯一id上等。出于简洁性,我们会采用一个auto-increment policy F。在batch模式下,policy F从头开始构建,它会给fixed size window的训练数据中的每个features分配唯一ids,其中unique ids会1-by-1的方式自增

然而,使用incremental模式训练会带来额外问题,因为当新数据进来时,新features会出现。如图4所示,new data的每个块都会带来一个特定比例的new features。例如,从criteo数据集上观察到,对比起在该块前存在的features集合,new data的第一块会带来12%的new features,而第14个块仍会带来4%的new features。因此,当新数据进来时,policy F需要自增更新。可能会出现:一个feature x之前被认为是Others;在new data进来后,如果该feature x的出现次数S[x]大于THR阈值,会被认为是一个唯一的feature。

图片名称

图4 来自criteo dataset观察到的,随着new data的blocks进来,new features对比起已存在features集合的比例

在分配合适的ids给所有features后,IncCTR中的feature module会对已存在featurs和new features进行初始化。当我们以batch模式训练时,feature embedding \(\epsilon\)的所有值都会被随机初始化。然而,在incremental模式下,我们会对已存在的features \(\epsilon_{exist}\)的embedding和new features \(\epsilon_{new}\)的embeddings独立进行初始化

feature模块(称为:new feature分配和feature embedding初始化)的功能如算法1所示。当new data进来时,我们首先更新每个feature(第3行)的出现次数,并继承已存在的feature分配策略(第4行)。如果来自new data的一个new feature大于该阈值(第6行),它会被添加到该policy中,id会自增1(第7行)。feature embeddings会根据一个feature是否为新来独立初始化。对于一个已经存在的feature,它会继承来自已存在模型的embedding作为它的初始化(行11)。这样的继承会将历史数据的知识转移到将自增训练的模型上。对于一个new feature,它的embedding会随机初始化,因为没有先验知识提供(行12)

图片名称

算法1

3.2 Model模块

在本节中,我们引入在IncCTR中的model模块,它会对模型进行合适训练,这样:模型仍会“记住(remember)”来自历史数据的知识,同时也会从new data上做出一些“升级(progress)”。

Fine-tune

除了已存在features的embedding外,network参数也从已存在模型继承,作为warm-start。为了使用incremental模式对模型参数进行fine-tune,我们会使用一些auxiliary tricks来达到较好表现。例如,对于\(\epsilon_{exist}\)我们会使用一个比\(\epsilon_{new}\)更低的learning rate。fine-tune的训练细节在算法2的第19-第25行进行表示。该模型会通过在prediction和ground truth间以最小化cross entropy的方式来进行最优化。我们会对该模型训练一定数目的epochs,其中:经验上我们设置数目epoch为1(第25行)

图片名称

算法2

知识蒸馏(Knowledge distillation)

除了以上的”fine-tune”外,我们引入了knowledge distillation(KD)方法来增强来自历史数据学到的知识(名义上,为了避免灾难性忘却(catastrophic forgetting))。Hinton[6] 出于高效部署,使用KD来将一个模型ensemble将knowledge转移到单个模型上,其中KD loss会被用来保留来自较重模型(cumbersome model)的知识,通过鼓励distilled model的outputs来逼近cumbersome model。相似的,LwF[7]的作者执行KD来学习新任务,并且能保持在老任务上的知识。借用相似的思想,KD可以被用在incremental learning场景中来学习来自incoming data的新知识,并保留在historical data上的记忆

当我们在IncCTR上使用KD时,我们提供了一些关于设计teacher model的参考。有两种选项。

  • KD-batch:使用batch模式训练的过期模型(outdated model),可以做为teacher model的一个天然选择来对incremental model进行distill,它会保持在一个fixed-size window上的历史数据的效果。我们使用batch模式并使用这样的teacher进行训练的KD方法称为“KD-batch”。
  • KD-self:由于batch模式训练一个模型作为teacher model,需要额外的计算资源,执行之前的incremental model作为teacher要更方便。在这种情况下,后继的incremental model会在之前incremental model的监督下进行训练。我们将这样的设计称为“KD-self”。相似的思想,在BANs中有使用,其中一个后继的student model会随机初始化,通过前一teacher model进行教导,多个student后代的ensemble是为了达到可期的表现。在图片识别领域上,所有模型会以batch模式进行训练,这与我们的框架非常不同。

当执行KD时,我们会利用soft targets \(Y_{soft}\),它由teacher model在incoming data上生成。objective function如下进行公式化:

\[L = L_{CE}(Y, \hat{Y}) + L_{KD} (\hat{Y}, Y_{soft}) + R \\ L_{KD}(Y, Y_{soft}) = L_{CE} ( \sigma(\frac{Z}{\tau}), \sigma(\frac{Z_{soft}}{\tau})) \\ L_{CE}(Y, \hat{Y}) = \sum\limits_{y_i \in Y} L_{CE}(y_i, \hat{y}_i)\]

…(2) (3) (4)

新的objective function会对标准的二元cross-entropy \(L_{CE}(\cdot)\)(其中:\(Y\)和\(\hat{Y}\)分别表示groundtruth和outputs)、KD loss \(L_{KD}(\cdot)\)进行组合。

  • KD loss \(L_{KD}(\cdot)\):是在\(\hat{Y}\)和\(Y_{soft}\)间的cross entropy(其中:\(Y_{soft}\)是teacher model的prediction),它基于logits Z和\(Z_{soft}\)。
  • 变量\(\tau\)被用来获得soft targets
  • R是正则项。

等式(2)中的loss function的目的是:distilled model的知识应对于new data来说是精准的(第一项),而它与teacher model的知识不应该有大的不同(第二项)。

KD-batch和KD-self的训练细节在算法2中的第3行到第5行,第11行到第17行有描述。KD-batch和KD-self间的差异是:teacher模型\(Teacher_t\)如何被训练。记住:在KD-batch中的teacher model是一个使用过期模型,而在KD-self中的teacher model是前一个incremental model。我们会在实验部分对它们的效果进行对比。给定input data的features,incremental模型\(M_t\)和teacher模型\(Teacher_t\)会做出预测,如第4和第13行。接着,incremental模型\(M_t\)通过最小化等式(2)的loss function进行最优化,如第14行。当模型训练至少一个epoch时训练过程会终止,KD loss会停止减少,第17行。

3.3 Data模块

从数据的视角看,对于灾难性忘却问题(catastrophic forgetting)一种简单的解决方法是:不只基于new data来训练incremental模型,同时也基于一些选中的historical data。我们计划实现一个data reservoir来提供合适的训练数据给incremental training。在existing reservoir中的一些比例的数据,和new data会互相交错构成new reservoir。在该模型中,一些问题需要进行确认,比如:在已存在的reservoir中需要保留多少比例的数据。data模块的实现目前还没完成,它是要完成框架的将来工作的一部分。

4.实验

在这部分,我们会在一个公开bechmark和私有数据集上进行实验,目标是回答以下问题:

  • RQ1: IncCTR的效果 vs. batch模式的效果?
  • RQ2: 在IncCTR框架中不同模块的贡献?
  • RQ3: IncCTR的效率 vs. batch模式?

4.1 Dataset

为了评估在IncCTR框加中提出的效果和效率,我们在公开benchmark和私有数据集上做了实验。

  • Criteo。该数据集用于CTR预估的benchmark算法。它包含了24天的连续流量日志,包括26个类别型features以及13个numerical features,第一行作为label,表示该ad是否被点击
  • HuaweiAPP。为了演示提出方法的效果,我们在商业数据集上做了离线实验。HuaweiAPP包含60个连续天的点击日志,包含了app features、匿名的user features和context features。

为了减小复制实验结果的目的,我们在criteo数据集上做了数据处理的细节。根据kaggle比赛,涉及datasampling、discretization以及feature filtering。出于商业原因,我们没有给出huaweiAPP的处理细节,但过程基本相似。

  • Data sampling:考虑数据的imbalance(只有3%的样本是正),与[12]相似,我们将负样本做down sampling,将正样本比例接近50%
  • 离散化:类别型和数值形features都存在在Criteo数据集中。然而,两种类型的features的分布本质是相当不同的[11]。在大多数推荐模型中,numerical features通过buckeing或logarithm被转换成categorical features。根据上述方式,我们使用logarithm作为离散方法:
\[v \leftarrow floor(log(v)^2)\]

…(5)

  • Featrue filtering:不频繁的features通常带的信息少,可能是噪声,因此模型很难学到这样的features。因此,根据[11],在一个特定field中的features出现次数少于20次会被设置成一个dummy feature:others。

4.2 评估

Evaluation指标:AUC和logloss(cross-entropy). AUC和logloss的提升在0.1%才被认为是一个ctr预估模型显著提升[1, 4, 15]。

baseline。使用batch模式训练的模型被用于baseline,来验证IncCTR的效果和效率。为了进一步评估模型的更新延迟(delay updating)上的影响,我们考虑使用不同的delay days的baseline。更特别的,\(Batch_i(i=0,1,2,3,4,5)\)表示baseline model具有i天的延迟。

实验细节:为了专注于deep ctr的效果和效率,当使用batch模式和IncCTR增量方式训练时,我们选择流行的deep CTR模型DCN来进行对比。

为了模似在工业界场景的训练过程,实验会在连续几天上做出。当使用batch模式进行训练时,所有数据都会使用在fixed size window内(例如:在size-w window中的数据[s, s+w), 其中\(s \in [0, T-w]\))。当使用增量模式训练时,只有具有新来天的(coming day)数据(例如:在window [s, s+1)中的size-1,其中\(s \in [w, T-1]\))提供。对于增强模型,在第一个incremental step之前,会使用batch模式训练的模型进行warm-start。也就是说,我们首先训练一个使用batch模式在[0,w)上的warm-started模型,接着会在第w天的数据上训练首个增量模型。对于criteo数据集,我们设置w=7,T=23;对于HuaweiAPP我们设置w=30,T=59作为HuaweiAPP dataset。

4.3 RQ1: 整体表现

4.4 RQ2: Ablation Studies

4.5 RQ3: 效率

参考

jd在《Reinforcement Learning to Optimize Long-term User Engagement in Recommender Systems》对long-term engagement做了建模。

摘要

Feed流机制在推荐系统中广泛被采用,特别是移动Apps。Feed streaming setting提供用户无限feeds的交互形式。这种形式下,一个好的推荐系统会更关注用户的粘性,通常以long-term user engagement的方式进行measure。这与经典的instant metrics相差较大。直接对long-term engagement直行优化是一个non-trivial问题,因为learning target通常不能由传统的supervised learning方法提供。尽管RL天然适合于对long term rewards最大化的最优化问题,应用RL来最优化long-term user engagement仍然面临着以下挑战:

  • 用户行为是多变的,它通常包含两者:instant feedback(比如:clicks)以及delayed feedback(比如:停留时长(dwell time),再次访问(revisit))
  • 另外,执行有效的off-policy learning仍然不成熟,特别是当结合上bootstrapping和function approximation时。

为了解决该问题,在该工作中,我们引入了一个RL framework——FeedRec来最优化long-term user engagement。FeedRec引入了两个部分:

  • 1) 一个Q-Network,它以hierarchical LSTM的方式设计,会建模复杂的用户行为
  • 2) 一个S-Network,它会模拟enviroment,协助Q-Network并避免在policy learning上的收敛不稳定。

实验表明,FeedRec在优化long-term user engagement上要胜于SOTA的方法。

介绍

推荐系统通过建议最匹配用户需求和喜好的商品,在信息搜索任务中帮助用户进行发现。最近,用户可以浏览由无限刷的feeds流生成的items,比如:Yahoo News的新闻流,Facebook的social流,Amazon的商品流。特别的,当与商品流交互时,用户会点击items并浏览items的详情。同时,用户可能也会跳过不够吸引人的items,并继续下刷,并有可能由于过多冗余的、不感兴趣的items的出现而离开系统。在这样的环境下,优化点击(clicks)不再是黄金法则。最大化用户的交互满意度,有两部分:

  • instant engagement(比如:click)
  • long-term engagement(比如:粘性 stickiness):通常表示用户会继续更长时间停留在streams上,并在后续重复打开streams

然而,大多数传统的推荐系统只关注于优化instant metrics(比如:CTR:点击率、CVR:转化率 conversion rate)。随着更深的交互,一个商品feed流推荐系统应不仅带来更高的CTR,同时也能保持用户与系统的活跃度。Delayed metrics通常更复杂,包括:在Apps上的dwell time,page-view的深度,在两个visits间的internal time等。不幸的是,由于建模delayed metrics的难度,直接优化delayed metrics非常具有挑战性。而一些前置工作[28]开始研究一些long-term/delayed metrics的最优化,希望找到一种系统解决方案来最优化overall engagement metrics。

直觉上,RL天生是最大化long-term rewards的,可以是一个unified framework来最优化instant和long-term user engagement。使用RL来最优化long-term user engagement本身并不是一个non-trivial问题。正如提到的,long-term user engagement是非常复杂的(例如:在多变行为上的measure,比如:dwell time, revisit),需要大量的enviroment interactions来建模这样的long term行为,并有效构建一个推荐agent。作为结果,通过在线系统从头构建一个recommender agent的代价很高,因为许多与不成熟的推荐agent的交互会伤害用户体验,甚至惹恼用户。另一种可选的方法是利用logged data构建一个离线的recommender agent,其中,off-policy learning方法会缓和trial-and-error search的开销。不幸的是,在实际推荐系统中,包括Monte Carlo(MC)和temporal difference(TD)在内的当前方法,对于offline policy learning具有缺陷:MC-based方法会有high variance的问题,尤其是在实际应用中当面对大量action space(例如:数十亿candidate items);TD-based方法可以通过使用bootstrapping技术在估计时提升效率,然而,会遇到另一个大问题:Deadly Triad(致命的三):例如:当将function approximation、bootstrapping、offline training给合在一起时,会引起不稳定(instability)和分歧(divergence)问题。不幸的是,推荐系统中的SOTA方法,使用neural结构设计,在offline policy learning中会不可避免地遇到Deadly Triad问题。

为了克服复杂行为和offline policy learning的问题,我们这里提出了一个RL-based framework,称为FeedRec,来提升推荐系统中的long-term user engagement。特别的,我们将feed streaming推荐看成是一个Markov decision process(MDP),并设计了一个Q-Network来直接最优化user engagement的metrics。为了避免在offline Q-learning中收敛不稳定的问题,我们会进一步引入S-Network,它会模拟environments,来协助policy learning。在Q-Network中,为了捕获多变的用户long-term行为的信息,会通过LSTM来建模用户行为链(user behavior chain),它包括所有的rough behaviors,比如:click、skip、browser、ordering、dwell、revisit等。当建模这样的细粒度用户行为时,会有两个问题:特定用户actions的数目是十分不平衡的(例如:click要比skips少很多);long-term user behavior的表示更复杂。我们会进一步使用temporal cell集成hierarchical LSTM到Q-Network来对fine-grained用户行为进行characterize。

另一方面,为了充分利用历史logged data,并避免在offline Q-Learning中的Deadly Triad问题,我们引入了一个environment模型,称为S-network,来模拟environment并生成仿真的用户体验,协助offline policy learning。我们会在模拟数据集和真实电商数据集上进行实验。

主要贡献如下:

  • 1) 提出了一个RL模型FeedRec,它会直接对user engagement进行最优化(同时对instant和long-term user engagement)
  • 2) 为了建模多变的用户行为,它通常同时包括:instant engagement(比如:click和order)以及long-term engagement(例如:dwell time、revisit等),提出了hiearchical LSTM的结构的Q-Network
  • 3) 为了确保在off-policy learning的收敛,设计了一个有效、安全的训练框架
  • 4) 实验结果表明,提出的算法要胜过SOTA baseline

2.相关工作

3.问题公式化

3.1 Feed Streaming推荐

在feed流推荐中,推荐系统会在离散的time steps上与一个user \(u \in U\)进行交互:

在每个time step t上,agent会feeds一个item \(i_t\),并从该user上接收一个feedback \(f_t\),其中\(i_t \in I\)会来自推荐的item set,\(f_t \in F\)是用户在\(i_t\)上的feedback/behavior,包括:点击、购买、跳过、离开等。交互过程形成一个序列:\(X_t = \lbrace u, (i_1, f_1, d_1), \cdots, (i_t, f_t, d_t) \rbrace\),其中:\(d_t\)是在推荐上的dwell time,它表示用户在推荐上的体验偏好。

给定\(X_t\),agent需要为下一个item step生成\(i_{i+1}\),它的目标是:最大化long term user engagement,例如:总点击数(total clicks) 或 浏览深度(browsing depth)。在本工作中,我们关注于在feed streaming场景如何提升所有items的期望质量(expected quality)。

3.2 Feed Streams的MDP公式

一个MDP可以通过\(M=<S, A, P, R, \gamma>\)进行定义,其中:

  • S是state space
  • A是action space
  • \(P: S \times A \times S \rightarrow R\)是转移函数(transition function)
  • \(R: S \times A \rightarrow R\)是mean reward function ,其中:r(s, a)是immediate goodness
  • \(\gamma \in [0,1]\)是discount factor。

一个(stationary) policy \(\pi: S \times A \rightarrow [0, 1]\)会在actions上分配每个state \(s \in S\)一个distribution,其中:\(a \in A\)具有概率\(\pi (a \mid s)\)。

在feed流推荐中,\(<S, A, P>\)设置如下:

  • State S:是一个states的集合。我们会在time step t上的 state设计成浏览序列\(s_t = X_{t-1}\)。在开始时,\(s_1 = \lbrace u \rbrace\)只会包含用户信息。在time step t上,\(s_t = s_{t-1} \oplus \lbrace (i_{t-1}, f_{t-1}, d_{t-1})\rbrace\)会使用old state \(s_{t-1}\)进行更新,
  • Action A:是一个关于actions的有限集合。可提供的actions依赖于state s,表示为A(s)。\(A(s_1)\)会使用所有recalled items进行初始化。\(A(s_t)\)会通过从\(A(s_{t-1})\)中移除推荐items进行更新,action \(a_t\)是正在推荐的item \(i_t\)
  • Transition P:是transition function,其中\(p(s_{t+1} \mid s_t, i_t)\)指的是,在\(s_t\)上采取action \(i_t\)之后看到state \(s_{t+1}\)的概率。在我们的case中,来自用户的feedback \(f_t\)的不确定性会根据\(t_t\)和\(s_t\)进行。

3.3 User Engagement和Reward function

之前提到,像传统推荐中,即时指标(instant metrics,比如:点击、购买等)不是用户engagement/satisfactory的唯一衡量,long term engagement更重要,它通常会以delayed metrics进行衡量,例如:浏览深度(browsing depth)、用户重复访问(user revisits)、在系统上的停留时长(dwell time)。RL learning会通过对reward functions进行设计,提供一种方式来直接对instant和delayed metrics进行直接最优化。

reward function \(R: S \times A \rightarrow R\)可以以不同的形式进行设计。我们这里会假设:在每一step t上的user engagement reward \(r_t(m_t)\)会以不同metrics进行加权求和的形式(weighted sum),来线性(linearly)地对它进行实例化:

\[r_t = \omega^T m_t\]

…(1)

其中:

  • \(m_t\)由不同metrics的column vector组成
  • \(\omega\)是weight vector

接着,我们根据instant metrics和delayed metrics给出一些reward function的实例。

3.3.1 Instant metrics

在instant user engagement中,我们会具有clicks、purchase(商业上)等。instant metrics的公共特性是:这些metrics由current action即时触发。此处我们以click为例,第t次feedback的click数可以定义成:

\[m_t^c = \#clicks(f_t)\]

3.3.2 Delayed metrics

delayed metrics包括:browsing depth、dwell time、user revisit等。这些metrics通常会被用于衡量long-term user engagement。delayed metrics会由之前的行为触发,其中一些会具有long-term dependency。这里提供会提供delayed metrics的两个示例reward functions:

1.深度指标(Depth metrics)

由于无限下刷机制,浏览的深度是在feed流场景下的一个特殊指标器(special indicator),它会与其它类型的推荐相区别。在观看了第t个feed之后,如果用户仍然在系统中并且继续下刷,系统会对该feed进行reward。直觉上,depth \(m_t^d\)的metric可以被定义成:

\[m_t^d = \#scans(f_t)\]

其中,\(\#scans(f_t)\)是第t个feedback的scans的数目。

2.返回时间指标(Return time metric)

当用户对推荐items很满意时,通常他会更经常性地使用该系统。因此,在两个visits间的间隔时间(interval time)可以影响系统的用户满意度。return time \(m_t^r\)可以被设计成时间的倒数(reciprocal of time):

\[m_t^r = \frac{\beta}{v^r}\]

其中:

  • \(v^r\)表示在两次visits间的time
  • \(\beta\)是超参数

从以上示例(click metric、depth metric以及return time metrics),我们可以清楚看到:\(m_t = [m_t^c, m_t^d, m_t^r]^T\)。注意,在MDP setting中,累积收益(cumulative rewards)是可以被最大化的,也就是说,我们实际上对总浏览深度(total browsing depth)、未来访问频次进行最优化,它们通常是long term user engagement。

4. 推荐系统的Policy learning

图片名称

为了估计future reward(例如:未来用户粘性),对于推荐项\(I_T\)的expected long-term user engagement会使用Q-value进行表示:

\[Q^{\pi} (s_t, i_t) = E_{i_k \sim \pi} [\underbrace{r_t}_{\text{current rewards}} + \underbrace{\sum\limits_{k=1}^{T_t} \gamma^k r_{t+k}}_{\text{future rewards}}]\]

…(2)

其中:

  • \(\gamma\)是discount factor,用来对current rewards和future rewards的importance进行balance
  • \(Q^{*}(s_t, i_t)\)具有由optimal policy达到的最大expected reward,应遵循optimal Bellman方程[24]:
\[Q^{*}(s_t, i_t) = E_{s_{t+1}} [r_t + \gamma max_{i'} Q^{*}(s_{t+1}, i') | s_t, i_t\]

…(3)

给定\(Q^{*}\),推荐项\(i_t\)会使用最大的\(Q^{*}(s_t, i_t)\)选中。在真实推荐系统中,由于大量的users和items,为每个state-action pairs估计action-value function \(Q^{*}(s_t, i_t)\)是可行的。因而,使用函数逼近(例如,neural networks)来估计action-value function很灵活和实际,例如:\(Q^{*}(s_t, i_t) \approx Q(s_t, i_t; \theta_q)\)。实际上,neural networks对于跟踪用户在推荐中的兴趣表现很好。在本paper中,我们提到,使用参数\(\theta_q\)的nural network function approximator作为一个Q-network。Q-network可以通过最小化mean-squared loss function进行训练,定义如下:

\[l(\theta_q) = E_{(s_t, i_t, r_t, s_{t+1}) \sim M} [(y_t - Q(s_t, i_t; \theta_q))^2] \\ y_t = r_t + \gamma max_{i_{t+1 \in I}} Q(s_{t+1, i+1; \theta_q}\]

…(4)

其中,\(M = \lbrace (s_t, i+t, r_t, s_{t+1}) \rbrace\)是一个大的replay buffer,它会存储过去的feeds,我们从中以mini-batch training的方式进行抽样。通过对loss function进行微分,我们可以达到以下的gradient:

\[\nabla_{\theta_q} l(\theta_q) = E_{(s_t, i_t, r_t, s_{t+1}) \sim M} [(r+\gamma max_{i_{t+1}} Q(s_{t+1}, i_{t+1}; \theta_q) - Q(s_t, i_t; \theta_q)) \nabla_{\theta_q} Q(s_t, i_t; \theta_q)]\]

…(5)

实例上,通过SGD来最优化loss function通常计算效果,而非计算以上gradient的full expectations。

4.1 Q-Network

Q-network的设计对于性能很重要。在long-term user engagement最优化中,用户的交互行为反复无常(例如:除了click外,还有dwell time、revisit、skip等),这使得建模变得non-trivial。为了有效对这些engagement进行最优化,我们会首先从这样的行为收到信息传给Q-Network

4.1.1 Raw Behavior Embedding Layer

该layer的目的是,采用所有raw behavior信息,它们与long term engagement有关,来distill用户的state以便进一步最优化。给定observation \(s_t= \lbrace u, (i_1, f_1, d_1) \cdots, (i_{t-1}, f_{t-1}, d_{t-1}) \rbrace\),我们让\(f_t\)是在\(i_t\)上所有用户行为的可能类型,包括:点击、购买、跳过、离开等,其中\(d_t\)是该行为的dwell time。\(\lbrace i_t \rbrace\)的整个集合首先被转成embedding vectors \(\lbrace i_t \rbrace\)。为了表示将信息feedback给item embedding,我们将\(\lbrace i_t \rbrace\)投影到一个feedback-dependent空间中,通过使用一个projection matrix来对embedding进行乘积,如下:

\[i_t^{'} = F_{f_t} i_t\]

其中,\(F_{f_t} \in R^{H \times H}\)是对于一个特定feedback \(f_t\)的投影矩阵,为了进一步建模时间信息,会使用一个time-LSTM来跟踪user state随时间的变化:

\[h_{r, t} = Time-LSTM(i_t^{'}, d_t)\]

…(6)

其中,Time-LSTM会建模dwell time,通过引入一个由\(d_t\)控制的time gate:

\[g_t = \sigma(i_t^{'}, W_{ig} + \sigma(d_t W_{gg}) + b_g) \\ c_t = p_t \odot c_{t-1} + e_t \odot g_t \odot \sigma(i_t^{'} W_{ic} + h_{t-1} W_{hc} + b_c) \\ o_t = \sigma(i_t^{'} W_{io} + h_{t-1} W_{ho} + w_{co} \odot c_t + b_o)\]

其中,\(c_t\)是memory cell。 。。。

4.1.2 Hierarchical Behavior Layer

为了捕获我变的用户行为信息,所有rough behaviors会顺序feed到raw Behavior Embedding layer中。在实际中,特定user actions的数目是极其不均的(例如:点击数要少于skips数)。因此,直接利用raw Behavior Embedding Layer的output会造成Q-Network从sparse user behaviors中丢失信息,例如:购买信息会被skips信息会淹没。另外,每种类型的用户行为具有它自己的特性:在一个item上的点击,通常能表示用户当前的偏好,在一个item上的购买会暗示着用户兴趣的转移(shifting),而skip的因果关系更复杂,可能是:随意浏览(casual browsing)、中立(neutral)、或者觉得不喜欢(annoyed)等。

图片名称

图1

为了更好表示user state,如图1所示,我们提供一种hierarchical behavior layer来加到raw beahiors embedding layers中,主要的用户行为,比如:click、skip、purchase会使用不同的LSTM pipelines进行独立跟踪:

\[h_{k,t} = LSTM-k(h_{r,t})\]

f_t是第k个行为,其中,不同的用户行为(例如:第k个行为)会通过相应的LSTM layer来进行捕获,以避免被大量行为支配(intensive behavior dominance)、并捕获指定的特性。最后,state-action embedding会通过将不同用户的behavior layer和user profile进行concate起来:

\[s_t = concat[h_{r,t}, h_{1,t}, h_{\dot, t}, h_{k,t}, u]\]

其中,u是对于一个指定用户的embedding vector。

4.1.3 Q-value layer

Q-value的逼近(approximation)通过具有dense state embedding的input的MLP来完成,item embedding如下:

\[Q(s_t, i_t; \theta_q) = MLP(s_t, i_t)\]

\(\theta_q\)的值会通过SGD进行更新,梯度计算如等式(5)所示。

4.2 off-policy learning任务

有了Q-learning based framework,在学习一个稳定的推荐policy之前,我们在模型中通过trial&error search来训练参数。然而,由于部署不满意policies的开销以及风险,对于在线训练policy几乎是不可能的。一个可选的方式是,在部署前使用logged data D训练一个合适的policy,它通过一个logging policy \(\pi_b\)收集到。不幸的是,等式(4)的Q-Learning framework会到到Deadly Trial问题,当对函数近似(function approximation)、bootstrapping以及offline training进行组合时,会出现这种不稳定和差异问题。

为了避免在offline Q-Learning中的不稳定和差异问题,我们进一步引入一个user simulator(指的是S-Network),它会对environment进行仿真,并帮助policy learning。特别的,在每轮推荐中,会使用真实user feedback进行对齐(aligning),S-Network需要生成用户的响应\(f_t\)、dwell time \(d_t\)、revisited time \(v^r\),以及一个二元变量\(L_T\),它表示用户是否会离开平台。

图片名称

图2

如图2所示,simulated user feedback的生成使用S-Network \(S(\theta_s)\),它是一个multi-head neural network。State-action embedding被设计在与Q-Network中相同的结构中,但具有独立的参数。layer \((s_t, i_t)\)会跨所有任务进行共享,其它layer (图2中的\((s_t, i_t)\))是task-specific的。因为dwell time和用户的feedback是inner-session的行为,\(\hat{f}_t\)和\(\hat{d}_t\)的计算如下:

\[\hat{f}_t = softmax(W_f x_f + b_f) \\ \hat{d}_t = W_d x_f + b_d \\ x_f = tanh(W_{xf} [s_t, i_t] + b_{xf})\]

其中:

\(X_*\)和\(b_*\)是weight项和bias项。\([s_t, i_t]\)是state action feature的核心。revisiting time的生成、以及离开平台(inter-session 行为)的完成如下:

\[\hat{l}_t = sigmoid(x_f^T w_l + b_l) \\ \hat{v}_r = W_v x_l + b_d \\ x_l = tanh(W_{xl} [s_t, i_t] + b_{xl})\]

4.3 Simulator Learning

5.Simulation研究

6.实验

介绍

4.实验

参考