OpenAI等人在《Evolution Strategies as a Scalable Alternative to Reinforcement Learning》中提出了Evolution Strategies的并行实现:

1.介绍

开发一个可以完成在复杂、不确定environments中的任务挑战的agents,是AI的一个核心目标。最近,分析该问题的大多数流行范式已经使用许多基于Markov Decision Process(MDP)公式、以及value functions的RL算法。这些方法的成功包括了:从像素中学习玩Atari的系统【Mnih. 2015】、执行直升机动作【2006】或者玩专级业的围棋【2016】。

求解RL问题的一个可选方法是:使用黑盒最优化(black-box optimization)。该方法有名的有:direct policy search [Schmidhuber, 1998]、或者neuro-evolution,当应用到neural network时。在本paper中,我们研究了Evolution Strategies (ES)【Rechenberg, 1973】,在该类别中一种特殊的最优化算法集合。我们展示了:ES可以可靠训练nueral network policies,并能很好地扩展到现代分布式计算机系统中,用来控制在MuJoCo物理模拟器中的机器人【Todorov 2012】,并能玩具有pixel输入的Atari游戏。我们的关键发现如下:

  • 1.我们发现:使用virtual batch normalization和其它关于neural network policy的再参数化(reparameterizations),可以极大改进evolution strategies的可靠性。如果没有这些方法,在我们的实验中ES会被证明非常脆弱;但有这些reparameterizations方法,我们可以在大多数environments中达到很强的结果
  • 2.我们发现:evolution strategies方法可以高度并行化:通过引入一个基于公共随机数的新通信机制,当使用上千台workers时,可以在runtime上达到线性加速。特别的,使用1440 workers,我们已经能在10分钟内求解MujoCo 3D拟人任务。
  • 3.evolution strategies的数据效率惊人的好:在大多数Atari environments上,当使用在3x和10x倍间的数据时,我们能匹配A3C的最终效果。在数据效率上的轻微减少,…

2.Evolution Strategies

Evolution Strategies (ES)是一类黑盒最优化算法,它是一种受天然进化(natural evolution)启发的启发搜索过程(heuristic search procedures):

在每次iteration (一代:“generation”),一群参数向量(基因型:“genotypes”)会被扰动(突变:“mutated”),它们的目标函数值(适应度:“fitness”)会被评估。具有最高得分的参数向量会接着重组(recombine)来形成下一代的群组(polulation),该过程会一直迭代,直到objective被完全最优化。

这类算法在关于他们表示群组、以及如何执行变异和重组上是有区别的。ES中最广为人知的是:【CMA-ES:covariance matrix adaptation evolution strategy,它表示了通过一个full-covariance multivariate Gaussian的群组。CMA-ES已经被广泛用于求解在低维、中维的最优化问题。

在本工作中,我们使用的ES版本,属于natural evolution strategies (NES)【Wierstra 2008】,并与Sehnke et al. [2010]的工作相近。假设:

  • F表示在参数\(\theta\)上的objective function

NES算法:

  • \(p_{\phi}(\theta)\)(通过\(\phi\)进行参数化):使用该参数分布来表示群组(population)

通过SGA(随机梯度上升)搜索\(\phi\)的方式,来最大化在群组上的平均目标值:

  • \(E_{\theta \sim p_{\phi}} F(\theta)\):表示在群组上的平均目标值

特别的,对于和REINFORCE[Williams 1992]相似的方式使用score function estimator来计算\(\nabla_{\phi} F(\theta)\)。NES算法会以如下estimator来更新在\(\phi\)上的gradient steps:

\[\nabla_{\phi} E_{\theta \sim p_{\phi}} F(\theta) = E_{\theta \sim p_{\phi}} \lbrace F(\theta) \nabla_{\phi} log p_{\phi}(\theta) \rbrace\]

对于特例,其中:\(p_{\phi}\)是factored Gaussian,生成的gradient estimator也被称作:simultaneous perturbation stochastic approximation [Spall, 1992], parameterexploring policy gradients [Sehnke et al., 2010], or zero-order gradient estimation [Nesterov and Spokoiny, 2011]。

在本工作中,我们关注于RL问题,因而:

  • \(F(\cdot)\):会是由一个environment提供的随机返回
  • \(\theta\):是一个deterministic 或 stochastic plicy \(\pi_\theta\)的参数,描述了在该environment(被离散或连续actions控制)中的一个agent

在RL算法中的许多创新,关注于应对environment或policy的不可导问题。这种非平滑性(non-smoothness)可以使用ES来解决。我们会:将种群分布\(p_{\phi}\)实例化成一个具有均值为\(\phi\)和固定方差\(\sigma^2 I\)的isotropic multivariate Gaussian,它允许我们以平均参数向量\(\theta\)直接写出\(E_{\theta \sim p_{\phi}} F(\theta)\):我们设置:

\[E_{\theta \sim p_{\phi}} F(\theta) = E_{\epsilon \sim N(0, I)} F(\theta + \sigma \epsilon)\]

在该setup下,我们的stochastic objective可以被看成是一个关于原始objective F的Gaussian-blurred版本,免于非平滑性可以由environment或由policy选中的潜在离散actions被引入。接着在第3节讨论,ES和policy gradient方法是如何应对non-smoothness的。

我们的objective以\(\theta\)来定义,我们会直接在\(\theta\)上对score function estimator使用SGA最优化:

\[\nabla_{\theta} E_{\epsilon \sim N(0, I)} F(\theta + \sigma \epsilon) = \frac{1}{\sigma} E_{\epsilon \sim N(0, I)} \lbrace F(\theta + \sigma \epsilon) \epsilon \rbrace\]

它可以使用样本来近似。生成的算法(1)会重复执行两个阶段:

  • 1)随机扰动关于policy的参数,并通过运行在environment中的一个episode来评估生成的参数
  • 2)组合这些episodes的结果,计算一个随机梯度估计(stochastic gradient estimate),并更新参数

图片名称

算法1

2.1 扩展(Scaling)和并行化(parallelizing)ES

ES可以很好地扩展到许多并行workers上:

  • 1)它在完整的episodes上操作,因此仅需要很少的workers间通信
  • 2)每个worker获得的信息只是一个由单个episode返回的scalar;如果在最优化前,我们在workers间同步随机种子(random seeds),每个worker会知道其它workers使用什么扰动(perturbations),因此每个worker只需要与其它worker通信一个scalar,在参数更新上达成一致。因此,对比起policy gradient方法(需要workers间通信整个gradients),ES需要极低的带宽。
  • 3)它不需要值函数近似(value function approximations)。具有value function estimation的RL是天然有顺序的:为了在一个给定policy上提升,value function的多次更新通常是需要获得足够的信号。每次该policy显著发生变化,对于value function estimator的多次迭代是必须的,以便捕获信号。

一个ES的简单的并行版本如算法2所示。主要的创新点是:该算法会利用共享的random seeds,它可以弹性地减小在workers间通信所需的带宽。

图片名称

算法2

实际上,我们通过在训练开始时,每个worker会实例化一大块Gaussian noise的方式来实现sampling;接着在每次iteration时通过添加对这些noise variables的一个随机索引subset,来对这些参数进行扰动。尽管该意味着:扰动在跨各次迭代间不是严格独立的,在实操中我们并不认为这是个问题。使用该策略,我们可以发现:算法2的第二部分(9行-12行)只会花费少部分的总时间,即使时当使用达到1440并行workers时。当使用更多workers时,或者当使用非常大的neural networks,我们可以减少算法该部分的计算开销,通过workers只用扰动参数\(\theta\)的一个子集,而非所有;在本case中,扰动分布\(p_{\phi}\)对应于一个混合高斯(a mixture of Gaussians),更新等式仍保持不变。在非常极端的情况下,每个worker只会扰动参数向量的单个坐标,这意味着我们会使用纯有限差分(pure finite differences.)

为了减小variance,我们使用对偶抽样(antithetic sampling) Geweke【1988】,也被称为 镜像抽样(mirrored sampling)【Brockhoff 2010】:也就是说,对于Gaussian noise vector \(\epsilon\), 我们总是评估扰动pairs:\(\epsilon, -\epsilon\)。我们发现,它对于执行fitness shaping很有用:在计算每个参数更新时,通过使用一个rank变换到returns中。这么做可以移除在每个种群(population)中的异类个体(outlier)的影响,为ES减少趋势,在训练时间时更早达到局部最优。另外,我们还对我们的policy network的参数使用weight decay:这可以防止参数增长到非常大(对比perturbations)。

不同于【Wierstra2014】,我们不会看到在训练期间对\(\sigma\)自适应的好处,因此我们将它看成是一个固定的超参数。我们会在参数空间直接执行最优化。。

上述提到的Evolution Strategies是在full-length episodes上工作的。在一些罕见的场景中,这会导致低CPU利用率,因此一些episodes会比另一些运行更多的steps。对于该原因,我们可以为所有workers限定长度为一个常数:m个steps,我们可以动态调节训练过程。例如,通过将m设置成每个episode的steps的均值的两倍,我们可以保证CPU利用率在最差时也会在50%之上。

2.2 网络参数的影响

像Q-learning和policy gradients的RL算法,会通过对来自一个stochastic policy的actions进行sampling来进行探索,Evolution Strategies会从policy参数的实例中进行sampling来学习信号。在ES中的探索(Exploration)是通过参数扰动( parameter perturbation)的方式驱动的。对于ES来说,在参数\(\theta\)之上进行提升,一些种群成员必须要比其它成员达到更好的return:例如,Gaussian perturbation vectors \(\epsilon\)偶尔会导致新的个体\(\theta + \sigma \epsilon\)具有更好的return。

对于Atari environments,我们发现:在DeepMind的convolutional架构上的 Gaussian parameter perturbations,不总是产生足够的探索(adequate exploration):对于一些environments,随机扰动参数会趋向于编码这样的policies:那些总是采用指定action,忽略掉state已给定作为input。然而,我们发现:对大多数游戏来说,在policy specification中使用虚拟batch归一化(virtual batch normalization),可以匹配policy gradient方法的效果。。。。

3.在parameter空间上的smoothing vs. 在action空间上的smoothing

3.1 什么时候ES要比policy gradients要好?

给定对decision问题进行smoothing的两个方法,你应该怎么使用?答案非常依赖于decision问题的结构,以及使用哪种类型的 Monte Carlo estimator来估计gradients \(\nabla_{\theta} F_{PG}(\theta)\)和\(\nabla_{\theta} F_{ES}(\theta)\)。假设:在return和单个actions间的相关性(correlation)很低(对于任何很难的RL问题来说都是true的)。假设:我们使用单个Monte Carlo (REINFORCE) 来近似这些gradients,我们有:

\[Var[\nabla_{\theta} F_{PG}(\theta)] \approx Var[R(a)] Var[\nabla_{\theta}] log p(a; \theta)] \\ Var[\nabla_{\theta} F_{ES}(\theta)] \approx Var[R(a)] Var[\nabla_{\theta} log p(\bar{\theta}; \theta)]\]

如果两种方法都执行相同数目的探索,\(Var[R(a)]\)对于两个表达式来说是相似的。因而在第二项上有会区别。这里我们有:\(\nubla_{\theta} log p(a; \theta) = \sum\limits_{t=1}^T \nabla_{\theta} log p(a_t; \theta)\)是一个关于T个不相关项的求和,因此policy gradient estimator的variance会随T接近线性增长。evolution stategies的对应项,\(\nabla_{\theta} log p(\bar{\theta}; \theta)\),与T相互独立。对于具有非常多time steps的长episodes,Evolution strategies会比policy gradients有优势。实际上,steps T的数目上通常在policy gradient方法中会通过discounting rewards而减小。如果actions的影响是短暂的,这允许我们动态减小在我们的gradient estimate中的variance,这在Atari games等应用中非常关键。然而,如果actions具有很长的影响,该discounting会造成gradient estimate有偏。减小T的有效值的另一个策略是:使用value function approximation。这也是有效的,但运行的风险仍是:对gradient estimates有偏。因而,如果没有合适的value function estimates提供,Evolution strategies是对于time steps T的数目过长、actions具有长持续效应时的一种更好选择。

3.2 问题维度

ES的梯度估计可以被解释成:在高维空间中的一个随机有限差分。确实,使用事实 \(E_{\epsilon \sim N(0,I)} \lbrace F(\theta) \epsilon / \sigma \rbrace = 0\),我们得到:

\[\nabla_{\theta} \eta(\theta) = E_{\epsilon \sim N(0,I)} \lbrace F(\theta + \sigma \epsilon) \epsilon / \sigma \rbrace = E_{\epsilon \sim N(0, I)} \lbrace F(\theta + \sigma \epsilon) - F(\theta)) \epsilon / \sigma \rbrace\]

很明显的是,ES可以被看成是:计算在一个随机选中方向上的一个有限差分导数估计,特别是\(\sigma\)会变小。ES与有限差分的相似性(resemblance),会建议该方法会与参数\(\theta\)的维度进行较差扩展。理论分析确实展示了:对于通用的非平滑最优化问题,最优化的steps数据随维度线性扩展。然而,很重要的是:这并不意味着:当使用ES最优化时,更大的neural networks会要比更小的networks效果更差:重要的是最优化问题的难度,或固有维度。为了看到:我们模型的维度可以被完全独立于最优化问题的有效维度,考虑一个回归问题:其中我们使用一个线性模型\(\hat{y} = x \cdot w\)来近似一个单变量y:如果我们质疑在该模型中的features和参数数目,通过将x与自身进行拼接,该问题不会变得更复杂。ivv应用到更高维问题时,ES算法会做完全相近的事情,只要我们将noise的标准差除以2,同时learning rate也除以2.

实际上,我们观察到:当使用ES到更大networks上时,会有稍微更好的结果。例如,我们同时尝试:使用A3C的更大网络和更小网络来学习Atari 2600游戏,使用更大network来平均获得更好结果。我们假设:这是因为相同效应,会做出关于大的neural networks标准的gradient-based最优化,比小网络更容易:大网络具有更少的局部最小值。

3.3 不计算gradients的优点

除了很方便并行化外,在长action序列和delayed reward的情形下,黑盒最优化算法(像ES)具有比计算gradients的RL技术具有其它优点。分布式实现ES的通信开销,要低于完全RL的方法(比如:policy gradients和Q-learning),因为在进程间通信的信息只有scalar return和用于生成扰动\(\epsilon\)的random seed,而非一个完整的梯度(full gradient)。同时,ES可以最大化处理sparse和delayed rewards;只要一个episode的总return被使用,而其它方法会使用独立rewards、以及准确的timing。

由于不需要backpropagation,黑盒优化器(black box optimizers)会将每个episode的计算量减少两三倍,内存则更多。另外,不需要显式计算一个分析梯度,可以避免梯度爆炸的问题(这在RNN中很常见)。通过对在parameter空间中的cost function进行smoothing,我们可以减小造成这些问题的病理骨折:将cost functions限定为足够平滑,不会有梯度爆炸。极端上,ES允许我们将非微分元素包含到我们的框架中,比如:使用hard attention的模块。

黑盒最优化方法(Black box optimization)是唯一适合低精度硬件进行深度学习的。低精度计算(Low precision arithmetic),比如在binary neural networks,要比高精度成本便宜很多。当最优化这样的低精度结构时,当使用gradient-based方法时,有偏的低精度梯度估计可能是个问题。相似的,对于neural network inference的指定硬件(比如:TPUs),当使用ES最优化时可以被直接使用,而它们有限的内容通常会让backpropagation不可能。

通过在参数空间进行扰动(而非action空间),黑盒优化器天然对于agent在environment中的动作频率是不变的。对于MDP-based的RL算法,另一方面,frameskip是一个很重要的参数,对于最优化的成功来说很重要【Braylan 2005】。而这对于游戏(只需要短期的planning和action)来说通常是一个可解问题,对于学习更长期的策略行为来说是个问题。对于这些问题,RL需要成功,当使用黑盒最优化时它不是必要的。

#

Frank S等人在《Parameter-exploring Policy Gradients》中提出了PEPG/PGPE算法:

1.介绍

Policy gradient方法,这么称呼是因为:他们可以在policy space中进行搜索,而非从一个value function上直接对policy进行派生。

2.方法

在本节中,我们源自于在Markovian environment中的关于情景强化学习(episodic reinforcement learning)的通用框架,提出PGPE算法。特别的,我们会强调下PGPE和其它policy gradient方法(比如:REINFORCE)之间的差异。在2.3节中,我们会引入symmetric sampling,并解释它会提升收敛速度。

2.1 Policy Gradients with Parameter-Based Exploration

考虑一个agent,它的action \(a_t\)是基于在time t时的state \(s_t\),产生在下一step中的state \(s_{t+1}\)。我们会对continuous state spaces和action spaces感兴趣,这对于大多数技术系统的控制来说是需要的。

我们假设:environment是Markovian,在下一states \(s_{t+1}\)上的条件概率分布,整体通过前一state-action pair来决定,即:

\[s_{t+1} \sim p(s_{t+1} \mid s_t, a_t)\]

我们也会假设这样的一个随机策略(stochastic policy),在actions上的分布依赖于当前state以及关于agent参数的real valued vector \(\theta\)

\[a_t \sim p(a_t \mid s_t, \theta)\]

最后,我们假设:每个state-action pair会生成一个Markovian reward标量

\[r_t(a_t, s_t)\]

我们将由一个agent产生的state-action pairs的长度为T的state-action pairs序列称为一个history(文献中的其它地方,这样的序列被称为 trajectories 或 roll-outs):

\[h = [s_{1:T}, a_{1:T}]\]

给定以上的公式,我们会使用每个history h与一个cumulative reward r进行关联,并对每个time step上的rewards进行求和:

\[r(h) = \sum\limits_{t=1}^T r_t\]

在这样的setting中,reinforcement learning的目标是:发现参数\(\theta\),最大化agent的expected reward:

\[J(\theta) = \int_H p(h | \theta) r(h) dh\]

…(1)

一个最大化\(J(\theta)\)的明显方法是:估计\(\nabla_{\theta} J\),并使用它来执行梯度下降最优化(gradient ascent optimization)。注意:对于一个特定的history的reward是与\(\theta\)独立的,我们可以使用标准恒等式 \(\nabla_x y(x) = y(x) \nabla_x logx\)来获取:

\[\nabla_{\theta} J(\theta) = \int_H p(h | \theta) \ \nabla_{\theta} log p(h | \theta)\ r(h)\ dh\]

…(2)

由于environment是马尔可夫过程(Markovian), 并且states是在给定agent的actions选择下给定参数下是条件独立的,我们可以写成:

\[p(h | \theta) = p(s_1) \prod\limits_{t=1}^T p(s_{t+1} | s_t, a_t) p(a_t | s_t, \theta)\]

将它代入到等式(2)生成:

\[\nabla_{\theta} J(\theta) = \int_H p(h | \theta) \sum\limits_{t=1}^T \nabla_{\theta} p(a_t | s_t, \theta) r(h) dh\]

…(3)

很明显,在histories的整个空间上进行积分是不可行的,我们因此对采样方法进行resort:

\[\nabla_{\theta} J(\theta) \approx \frac{1}{N} \sum\limits_{n=1}^N \sum\limits_{t=1}^T \nabla_{\theta} p(a_t^n | s_t^n, \theta) \ r(h^n)\]

…(4)

其中:

  • histories \(h^i\)会根据\(p(h^i \mid \theta)\)被选中。

接着该问题是:如何建模\(p(a_t \mid s_t, \theta)\)?

在policy gradient方法(比如:REINFORCE)中,参数\(\theta\)会被用于决定一个probabilistic policy:\(\pi_{\theta} (a_t \mid s_t) = p(a_t \mid s_t, \theta)\)。一个常见的policy model可以是一个参数化函数近似器,它的outputs定义了选中不同actions的概率。在本case中,通过在每个time step上根据policy分布选择一个action,来生成histories,接着,最终的gradient会通过对policy根据参数进行微分来计算。然而,在每个time step上从policy抽样,会导致在histories上的抽样具有一个高variance,因此会导致一个有噪声的gradient估计

PGPE通过使用一个在参数\(\theta\)上的概率分布来替换probibilistic policy,来解决variance问题,例如:

\[p(a_t | s_t, \rho) = \int_{\Theta} p(\theta | \rho) \sigma_{F_{\theta}(s_t), a_t} d\theta\]

…(5)

其中:

  • \(\rho\):是决定在\(\theta\)上分布的参数
  • \(F_{\theta}(s_t)\):是(deterministic) action,指在state \(s_t\)下被具有参数\(\theta\)的模型选中
  • \(\delta\):是狄拉克δ函数(Dirac delta function)

该方法的优点是:actions是deterministic,因此整个history可以从单个参数的样本来生成。这种在samples-per-history上的简化法,会减小在gradient estimate中的variance。作为一个辅加好处,参数梯度(parameter gradient)会通过直接参数扰动(perturbations)进行估计,无需对任何导数(derivatives)进行backpropagate,它会允许使用无微分的controllers。

对于一个给定\(\rho\)的期望收益(expected reward)是:

\[J(\rho) = \int_{\theta} \int_H p(h, \theta | \rho) r(h) dh d\theta\]

…(6)

对expected return根据\(\rho\)进行微分,并在之前应用log tricks,我们可以得到:

\[\nabla_{\rho} J(\rho) = \int_{\theta} \int_H p(h, \theta | \rho) \nabla_{\rho} log p(h, \theta | \rho) r(h) dh d\theta\]

…(7)

注意,h条件独立于\(\theta \mid \rho\),我们有:\(p(h, \theta \mid \rho) = p(h \mid \theta) p(\theta \mid \rho)\),因此:\(\nabla_{\rho} log p(h,\theta \mid \rho) = \nabla_{\rho} log p(\theta \mid \rho)\)。将它代入等式(7)生成:

\[\nabla_{\rho} J(\rho) = \int_{\theta} \int_H p(h, \theta) p(\theta | \rho) \nabla_{\rho} log p(\theta | \rho) r(h) dh d\theta\]

…(8)

接着再次使用抽样方法,这次首先从\(p(\theta \mid \rho)\)选择\(\theta\),接着运行agent来从\(p(h \mid \theta)\)来生成h。该过程会生成以下的gradient estimator:

\[\nabla_{\rho} J(\rho) \approx \frac{1}{N} \sum\limits_{n=1}^N \nabla_{\rho} log p(\theta | \rho) r(h^n)\]

…(9)

假设:\(\rho\)包含了一个关于均值 \(\lbrace \mu_i \rbrace\)、标准差\(\lbrace \sigma_i \rbrace\)的集合,它决定了在\(\theta\)中每个参数\(\theta_i\)的独立正态分布,对于\(log p(\theta \mid \rho)\)的导数会对\(\mu_i\)和\(\sigma_{i}\)分别求导:

\[\nabla_{\mu_i} log p(\theta | \rho) = \frac{\theta_i - \mu_i}{\sigma_i^2} \\ \nabla_{\sigma_i} log p(\theta | \rho) = \frac{(\theta_i - \mu_i)^2 - \sigma_i^2}{\sigma_i^3}\]

…(10)

它代入等式(9)中来逼近\(\mu\)和\(\sigma\)的gradients.

2.2 使用一个baseline来Sampling

给定足够的样本,等式(9)会决定reward gradient到任意accuracy。然而,每个样本需要rolling out一整个state-action history,它代价很高。根据Williams(1992),我们可以通过抽取单个样本\(\theta\)并将它的reward r与一个baseline reward b(通过在之前样本中给定的一个移动平均)进行对比,来获得一个成本更低的gradient estimate

直觉上,如果r>b,我们会调节\(\rho\),以便增加\(\theta\)的概率,当r < b时则相反。

如果我们在positive gradient的方向上使用一个step size \(\alpha_i = \alpha \sigma_i^2\)(其中:\(\alpha\)是个常数),我们会获得以下的参数更新等式

\[\Delta_{\mu_i} = \alpha (r-b)(\theta_i - \mu_i) \\ \Delta_{\sigma_i} = \alpha (r-b) \frac{(\theta_i - \mu_i)^2 - \sigma_i^2}{\sigma_i}\]

…(11)

2.3 对称采样(Symmetric sampling)

对于大多数场景,使用一个baseline采样很高效、并且是合理准确的,但它具有一些缺点。特别的,如果reward分布是非常倾斜的,那么在sample reward和baseline reward间的对比会误导向。一个更健壮的梯度近似法:可以通过测量在在当前均值两侧的两个symmetric samples间的reward差异来发现。

也就是说,我们:

  • 选择一个来自分布\(N(0, \sigma)\)的扰动(perturbation)\(\epsilon\)
  • 接着创建symmetric参数样本:\(\theta^+ = \mu + \epsilon\)和\(\theta^- = \mu - \epsilon\)
  • 定义:\(r^+\)为在给定\(\theta^+\)下的reward;\(r^-\)为给定\(\theta^-\)下的reward

我们可以将两个样本插入到等式(9)中,并利用等式(10)来获取:

\[\nabla_{\mu_i} J(\rho) \approx \frac{\epsilon_i (r^+ - r^-)}{2\sigma_i^2}\]

…(12)

它会对在有限差分法( finite difference methods)中使用的中心差分近似法(central difference approximation)进行重新组装。如同之前一样使用相同的step sizes,对于\(\mu\)项给出以下的更新公式:

\[\Delta \mu_i = \frac{\alpha \epsilon_i(r^+ - r^-)}{2}\]

…(13)

对于标准差来说,该更新会更关系密切些。由于\(\theta^+\)和\(\theta^-\)是在一个定给\(\sigma\)下通过相同概率构建得到,在它们间的difference不能被用来估计\(\sigma\) gradient。作为替代,我们会采用两个rewards的均值\(\frac{r^+ + r^-}{2}\),并将它对比baseline reward b。该方法会生成:

\[\Delta \sigma_i = \alpha (\frac{r^+ + r^-}{2} - b)(\frac{\epsilon_i^2 - \sigma_i^2}{\sigma_i})\]

…(14)

对比起第2.2节中的方法,symmetric sampling可以消除误导baseline的问题,因此,提升\(\mu\) gradient estimates。它也可以提升\(\sigma\) gradient estimates,因此,两个样本在当前概率下等概率,因此可以互相增强作为修改\(\sigma\)的受益的predictors。尽管symmetric sampling需要在每次update时有两倍的histories,我们的实验表明:它可以在收敛质量和时间上给出一个很好的提升

作为一个最终refinement,我们会通过引入一个normalization term,让step size与rewards的规模(可能未知)独立。假设:如果已知,m是agent可以接受到的最大reward;或者未知,则是至今接收到的最大reward。我们通过将它们除以在m和对称样本的平均reward间的difference归一化\(\mu\) updates;我们则通过除以在m和baseline b间的differnece来归一化\(\sigma\) updates。给定:

\[\Delta_{\mu_i} = \frac{\alpha \epsilon_i(r^+ - r^-)}{2m - r^+ - r^-} \\ \Delta_{\sigma_i} = \frac{\alpha}{m-b}(\frac{(r^+ + r^-)}{2} - b)(\frac{\epsilon^2 - \sigma_i^2}{\sigma_i})\]

…(15)

PGPE的伪代码如算法1所示。注意:出于简洁,reward normalizeation项已经被忽略。

图片名称

算法1

#

google在《Fresh Content Needs More Attention: Multi-funnel Fresh Content Recommendation》中提出了multi-funnel新内容推荐:

1.介绍

推荐系统非常依赖于:在推荐平台上将用户与合适的内容进行连接。许多推荐系统会基于从推荐内容的历史用户交互中收集到的交互日志进行训练。这些交互通常是这些系统会选择将内容曝光给用户的条件,从而创建一个很强的feedback loop,导致“马太效应”。由于缺少初始曝光和交互,新上传内容(特别是那些具有低流行的content providers提供的)想要被推荐系统选中并被展示给合适用户,面临着一个极大的障碍。这常被称为item的cold-start问题。

我们的目标是:打破feedback loop,并创建一个健康的平台,其中高质量新内容可以浮现,并能像病毒式扩散。为了达成该目标,我们需要seed这些内容的初始曝光,从而补充推荐系统的缺失知识,以便将这些内容推荐给合适的用户。尽管一些新兴的研究关注于cold-start推荐,如何在工业规模推荐平台上bootstrap海量新内容(例如:每分钟上传到Youtube超过500小时的内容;Soptify每1.4秒上传一个新的track)仍是未被充分探索的。

更具体的,我们的目标是:构建一个pipeline来展示新和长尾内容,并在推荐平台上增加discoverable corpus。存在一个窘境:当系统探索完整范围(spectrum)的corpus,会导致提升长期用户体验【8,24】;然而,由于推荐了更少特定的内容,并推荐了更多其它新内容,这通常以会对短期用户体验有影响;我们希望缓和它。

为了在新内容推荐pipeline上平衡short-term和long-term用户体验,我们会在两个维度measure它的有效性:

  • i) coverage:检查是否该pipeline可以得到更独特(unique)的新内容曝光给用户
  • ii) relevance:检查系统是否将用户感兴趣的新内容与用户相连接

图片名称

图1 新内容推荐中的coverage vs. relavance

设计新内容推荐stack仍然面临着许多未知:

i) 如何定位(position)新内容推荐stack w.r.t 已存在的推荐stack?

我们会选择构建一个专有新内容推荐stack,它与其余推荐stacks(仅关注relevance,并且更容易强化feedback loop)相独立

ii) 哪些components需要在该stack中?

我们会设计该stack来包含一个提名系统、graduation filter、一个ranking系统来对candidates进行打分和排序

iii) 如何对coverage和relevance进行平衡?

一个基于随机推荐新内容的系统,达到最大的coverage,代价是低relevance并影响用户体验。为了达到平衡,我们会构建一个multi-funnel提名系统,它会分流用户请求在一个具有高coverage的模型和高relevenace的模型(详见图1);

iv) 如何使用少量或无先验的engagement数据来建模内容?

我们会依赖一个two-tower DNN,它会使用content features来进行泛化,用于对intial分布进行bootstrap,并且一个序列模型会更新near real-time user feedback来快速寻找高质量内容的audience;

v) 如何对新内容推荐的收益进行measure?

我们会采用一个user-corpus co-diverted实验框架来measure提出的系统在增加discoverable corpus上的效果。

我们会以如下方式组织paper:

  • 第2节:专有multi-stage新内容推荐stack:有nomination, filtering, scoring和ranking组件,有效对cold-start items进行bootstrap;并在提升corpus coverage、discoverable corpus以及content creation上showcase它的价值;
  • 第3节:在专有新内容推荐stack上设计一个multi-funnel提名系统,它会组合高泛化能力的模型、以及一个near real-time更新的模型来有效对新内容推荐的coverage和relevance间进行平衡。
  • 第5节:基于request context,将系统扩展到分流用户请求到这些模型上,以进一步提升新内容推荐

2.新内容推荐

Pipeline setup

我们首先介绍专有新内容推荐stack,它被用来在大规模商业推荐系统平台上的让相对新和长尾的内容露出(surface)。

生产环境的推荐系统具有多个stages,其中:

  • 第一个stage包含了多个检索模型来推荐来自整个corpus的candidates
  • 第二个stage会对candidates进行打分和排序
  • 最后一个stage会根据多样性(diversity)和不同商业目标对选中的candidates进行打包(pack)

由于closed feedback loop,新和长尾items很难被系统发现。为了让这些内容露出,我们会将一个槽位或可浮动槽位(floating slot)给到新内容(<=X天的内容)和长尾内容(小于Y个positive用户交互的内容)。其余slots还是会使用生产系统进行填满。该专用的新推荐系统的pipeline如图2所示:

图片名称

图2 一个专有新内容推荐stack

每个组件的描述如下:

新内容提名器(Fresh content nominator)

在提名相对新和长尾内容中的一个关键挑战是:用户对这些数据缺少用户交互。为了克服冷启item推荐问题,我们采用一个双塔的content-based推荐模型:

  • 1)一个query tower被用于基于消费历史来学习user representation;
  • 2)一个candidate tower被用于基于item features来学习item representation。

该模型被训练来预估历史数据中的postive user interactions,幸运地,通过item features,它能泛化到那些具有零或非常少用户交互的items。在serving时,我们依赖于一个多尺度量化(multiscale quantization)方法,用于快速近似最大内积搜索(MIPS),并有效检索top-50的fresh candidates

毕业过滤器(Graduation filter)

一旦新内容累积了初始交互,他们可以通过主推荐系统被轻易选到,并在其它slots上展示给合适用户。在专有slot中继续探索这些items,相应的收益会递减,并且这些曝光资源可以被节省下来重新分配给其它潜在的新和长尾内容。我们会采用一个graduation filter ,它会实时移除那些已经被用户消费(consume)超过n次的内容

Ranking组件

一旦被提名的candidates通过了filter,我们会通过两个组件来对它们进行排序:

  • 一个实时pre-scorer
  • 与主系统共享的ranker

pre-scorer是轻量的(lightweight),可以实时反映用户的early feedback;top-10的candidates被pre-scorer选中,接着通过ranker(它是一个high-capacity DNN,具有更好的accuracy但会有更长latency)来评估candidates的相关性并返回top-1。特别的,轻量级pre-scorer实现了一个实时Bernoulli multi-arm bandit:每个arm对应于一个内容,每个arm的reward估计了一个新内容的good CTR(例如:在一次点击后基于用户消费至少10s的点击率),并遵循一个Beta后验分布:

\[r_i \sim Beta(\alpha_0 + x_i, \beta_0 + n_i - x_i)\]

…(1)

其中:

  • \(r_i\):是对于arm i的reward,具有一个先验Beta分布\(Beta(\alpha_0, \beta_0)\),其中:参数\(\alpha_0, \beta_0 \in R_{>0}\),
  • \(x_i\)和\(n_i\):分别表示arm i实时的交互数和曝光数

实际上,我们会通过对至少100次以上曝光的新items使用极大似然估计来估计全局先验(global prior)\(\alpha_0\)和\(\beta_0\)。在serving时,我们会采用Thompson Sampling根据等式(1)为每个candidate来生成一个sampled reward,并返回具有最高rewards的top10内容,由ranker来决定最终candidate。

该“专用slot(dedicated slot)”能让我们measure多种新内容推荐treatments,它具有更多可控性和灵活性。对比起“full-system”的新内容推荐(例如:允许在当前推荐stacks中进行更多探索(exploration),并潜在影响每个slot),对“dedicated slot”进行setup具有许多优点:

  • i) 可触达(Deliverable)。对于新内容,通过在一个dedicated slot上设置,一旦被上传,它们可以更轻易达到它们的目标受众。否则,在主推荐系统中,由于存在popularity bias,这些内容将面临与许多头部内容和更流行的内容之间的竞争
  • ii) 可测量(Measurable)。有了一个“ dedicated slot”和一个更简单的pipeline,你可以更轻易地setup不同的treatments,并通过下面提出的user-corpus diverted实验来精准测量corpus影响
  • iii) 可扩展(Extensible)。新内容推荐stack可以很容易地进行扩充:通过将单个slot treatment扩展到多个上,并允许忍受未发现的corpus增长

user-corpus co-diverted实验

在传统的A/B testing中,我们通常会采用一个 user-diverted setup,如图3(左)所示,其中,用户会被随机分配给control和treatment groups,并接受来自整个corpus中的相应推荐。你可以对比两个arms间的用户指标(比如CTR和停留时长),并从用户视角来测量treatment的效果。然而,两个arms会共享相同的corpus,由于treatment组泄漏(treatment leakage),user-diverted setup不能measure在corpus上的任何treatment效果。例如,在该实验中通过新内容推荐stack曝光的一个新item,它也会出现在control arm上。

为了克服这样的泄漏,我们会采用一个user-corpus-dieverted A/B testing setup(如图3(右)),其中:我们会首先挑出x% corpus给control arm;以及挑出另外的非重合x% corpus的给treatment arm。接着用户按比例被分配给不同的arms,这意味着在control arm中的用户只能接受来自control arm corpus中的内容,在treatment arm中的users只能接受来自treatment arm的内容。由于user size与corpus size成比例,例如:在实验期间,x%的corpus只会曝光给x%的users,在实验阶段中treatment的效果评估,与推全部署是一致的(当100%的用户被曝光给100% corpus上)。

图片名称

图3 User diverted vs. User corpus co-diverted实验图

效果评估指标

我们使用以下的corpus metrics来评估在推荐个性化新内容方面的效果评估,从覆盖率(coverage)和相关性(relevance)维度:

  • 每日去重曝光内容数@K(DUIC@K: Daily Unique Impressed Contents):是一个corpus metric,它会统计每天接收到K次曝光的去重独立内容数。我们集中关注在低界上:例如:相对小的K值,来验证覆盖率(coverage)变化。
  • 新内容停留时长(Fresh Content DwellTime):用于measure用户在曝光的新内容上花费的时间。更长的停留时间表示系统能承受用户在新内容上的偏好越精准,从而达到更高的相关性(relevance)。
  • 在Y天内接收具有X(post bootstrapping)次正向交互的内容数(Discoverable Corpus@X,Ydays):用于measure新内容推荐的长期收益。通过post bootstrapping,我们不会统计从专有新内容推荐stack中接收到的items的交互数。一个更大的discoverable corpus表示:系统可以发现(uncover)和扶持(seed)更多有价值的内容:例如:在存在于专有slot之后,那些可以吸引到正向交互的内容,并通过自身能达到病毒式传播。

同时,为了确保新引入的新内容推荐不会牺牲更多短期用户engagement,我们也会考虑user metric:它会衡量在该平台上整体用户停留时间。

2.1 新内容的价值

图片名称

图4 有了新内容推荐的dedicated slot,我们会展示:a) 不同曝光阈值下DUIC的提升 b) 在延后毕业Y天内,收到X次延后毕业点击数的提升 c) dedicated新内容推荐系统会从content providers上鼓励更多上传,随实验开展会有一个上升趋势

我们首先会在服务数十亿用户的商业推荐平台上开展user corpus co-diverted线上实验,并在超过一个月周期上measure建立新内容推荐stack的收益。在这些实验中,control arm的users只会被展示主推荐系统生成的推荐。在treatment arm,会保留一个delicated slot来展示来自新内容推荐stack的推荐,而其它slots则被与control arm相同的主推荐系统推出的内容填充。我们会做出以下观察:

  • Corpus coverage会提升。图4(a)会绘制corpus coverage metric——DUIC@K。你可以观察到:不同的K值,会有4%~7.2%间的corpus coverage的一致增长。例如,在treatment arm中,由于delicated新内容推荐stack,存在超过7.2%的独特内容每天会接受到超过1000次曝光(对比起control arm)。正如预期,在更低的K值上更能更证明增长。

  • 用户会探索更大的corpus。在图(b)中,我们会制了discoverable corpus指标,它会measures在Y天内接到X post bootstraping正向交互的内容数的提升。另外,你可以在X的范围(从100到10k)、Y(从3到28天)天观察到一致提升。换句话说,有了在delicated新内容stacks中扶持的initial exposure与交互,更多数目的独特内容会被主推荐系统推出来,并因此被用户发现。该提升也消除了新内容推荐stack不仅能增加corpus coverage,也能bootstrap更有价值内容。有了更大的discoverable corpus,更多用户会发现围绕他们特定兴趣偏好中心的内容,从而带来最好的用户体验和一个更健康的平台。尽管一个新内容从上传到被主推荐系统选中并获得探索需要一定的时间,我们发现该数目趋向于在7天之后,即使对于那些高端X值。因而,在我们的真实实验中,我们使用discoverable corpus@X,7days作为main discoverable corpus metric。

  • content providers也会被鼓励从而上传更多内容。图4(c)绘制了在使用dedicated新内容推荐stack上treatment arm上传的内容的增长,对比起control arm。通过一个月的实验周期,可以观察到一个一致的提升。另外,我们注意到随着实验继续有一个上升趋势。通过在dedicated slot关于新内容推荐,content providers会被鼓励上传更多内容作为他们的新上传items,获得更多曝光和收益。

  • 用户会消费更多新内容,并在短期用户engagement上具有一个最小影响。图5(a)演示了一个新内容数在7天正向交互上获得了+2.52%的极大增长。在图5(b)上,我们发现,平台上的整体用户停留时间会发生-0.12%的下降。然而,如图5(c)所示,对于小的content providers(少于多少订阅),用户停留时间会获得5.5%的增长。该trade-off会考虑上关于一个更大discoverable corpus、以及更多活跃content providers的long-term收益,如上所示。

图片名称

图5 a) 新内容7天的正向交互数变化(% change) b) 平台上整体用户停留时长(% change) c) 小content provider的用户停留时长(% change)

对于treatment的dedicated slot和user corpus co-diverted实验框架的建立,我们会进一步解决新内容推荐stack的效率增长。

3.多通道(Multi-funnel)新内容推荐

不同于主推荐系统,专有新内容推荐stack会聚焦于新items,它们没有累积足够多的交互信息。在本节中,我们会描述:如何在该stack中扩展新内容提名,以便达到在提名新内容时的高覆盖和高相关。该技术可以轻易地泛化到pipeline的其它组件上。我们会围绕以下问题讨论:

  • 1) RQ1: 那些没有交互或少交互的新内容,如何有效infer它们与用户间的相关度,并将这些内容进行bootstrap?
  • 2) RQ2: 在累积了一些初始交互feedback后,如何快速利用有限的实时用户反馈来放大有价值内容?
  • 3) RQ3: 如何在内容泛化和实时学习间进行平衡,并减小新内容的用户开销,以便我们在推荐新内容时,可以达到高coverage和高releance?

3.1 内容泛化

大多数CF-based推荐模型依赖于一个因子分解的backbone,来通过历史用户交互或ratings行为获得user embeddings和content/item ID embeddings。学到的embeddings接着会被用于infer用户在任意内容上的偏好。由于items存在长尾分布,对于那些新上传的内容来说缺少足够的用户消费labels(engagement labels)来学习一个有信息的ID embedding。实际上,没有合适的treatment,来自新和长尾内容的少量labels通常会被模型忽略,变为训练噪声。这些内容因此很少能曝光给合适的用户。

主要挑战是:在用户与这些新上传内容间的交互labels缺失。一种解法是:使用一个content provider-aware推荐系统,它可以bootstrap由用户熟悉并且订阅的provider生产的新上传内容。为了克服交互labels缺少的问题,我们依赖content-based features来描述新上传内容如【28等】。这些content features允许模型去泛化:将来自流行内容的充足engagement labels泛化到与这些内容相似的新上传内容上。

该模型结构会遵循双塔结构(如【51】),它会使用一个user和一个item/content tower,为了分别编码来自users和items的信息。在这些双塔间的dot product被学习用来预估在一个user和一个item间的历史偏好。模型本身仍会遵循popularity bias。为了模型适应新内容推荐,我们做出以下变化

  • 1)我们会在item tower上完全丢掉item ID,以阻止模型记住在单独items上的历史偏好
  • 2)我们会排除关于一个item的历史流行度的任意features(例如:曝光数、正向engagements),以减少在item tower上的流行度bias

换句话说,在popular和新上传内容间,在item tower中只有meta features可以泛化。

我们会开展一个在线A/B testing来measure上述变化对于提升新内容推荐的coverage和relevance上的影响

  • control arm会运行一个双塔结构的提名模型,如第2节所解释,包括在item tower中与一个item相关的所有的meta features。
  • treatment arm会运行完全相同的模型,但会在item tower上排除item ID和popularity features。

我们发现,通过移除item ID embeddings和item popularity features,corpus coverage指标:例如:DUIC@1000上涨3.3%,95%置信区间为[3.0%, 3.7%]。新内容停留时长也会增加2.6%。

  • control model可以依赖item/content ID embeddings,以便从流行和确定的内容中记住交互labels,但它对新上传内容效果较差。
  • treatment model则依赖于content features作为刻画用户在其它流行和确定内容上的偏好,从而学习到具有相似features的新内容,从而提升对于新内容推荐的相关性。

在使用的Content Features

在control和treatment arm中使用的content features,包含了多个从内容本身得到的具有不同粒度的categorical features,描述了语义topic、类目topic和内容语言。我们也包括了平均评分(rating)来过滤低质量内容。

3.2 Real-Time learning

提名器非常依赖于泛化的content features,它对于具有很少用户交互的新内容的启动来说是很有用的。由于缺少记忆能力,因而它可以快速反馈用户的intial feedback。这样快速的响应确实是必要的,因为:

  • i) 我们通常没有能完整刻画该新内容、并能影响一个新内容的质量的所有features;
  • ii) 对intial user feedback做出快速反映,可以帮助在早期分布中纠正低质量或低相关新内容,减小分发代价,同时快速重新分发并进一步放大高质量和相关新内容给其它具有相似兴趣的受众,以便进一步放大discoverable corpus的增长,并让content provider获得奖励上传更多内容。

这就需要近实时提名(near real-time nominator),它可以挖掘数据,因为新交互数据会以流式方式进来。为了构建这样的一个近实时提名(near real-time nominator),这里提出:

  • i) 使用near real-time user交互数据来训练
  • ii) 带来一个低延迟的个性化检索模型

我们尝试让组成该nominator中的不同组件runtime(例如:数据生成、模型训练、模型pushing)进行最小化,以便从一个用户交互发生时,到该交互更新被用于serving模型之间的端到端延迟是数小时内。注意,对比起在主推荐stack中的已存在推荐模型(它的端到端延迟通常会是18-24小时或数天),这是个巨大的时延提升。数据生成job会收集在新和长尾内容上最近15分钟的用户交互,它会被当成是labels用来训练retrieval模型。

图片名称

图6 用于推荐的Real-Time Sequence Model

retrieval模型被训练的目标是:在给定用户在该平台上的历史交互后,预估用户会交互的下一个item。该架构会再次使用一个双塔结构,其中:user/query tower会编码用户的交互序列,item tower会使用简单的ID embeddings以及categorical features,如图6所示。为了减少训练时间,我们会设计一个简单架构的模型。user state会被表示成用户最近交互的content IDs的embeddings的weighted sum,它会与user query features进行concatenated。特别的,我们会使用attention[41]来提升user state representation。对于一个具有最近n个消费内容\([V_1, V_2, V_i, \cdots, V_n]\)的给定用户,我们会采用对最近n次交互进行weighted sum形式来获得user representation U:

\[U = \sum\limits_{i=1}^n w_i * Embedding(V_i)\]

其中:

对于每个内容\(V_i\)的weight \(w_i\),是在[0,1]内的normalized softmax weight,从item features得到:

\[w_i = softmax(f(dwelltime(V_i), timegap(V_i), position(V_i)))\]

其中:

  • dwelltime会捕捉用户在item \(V_i\)上的用户消费时间
  • timegap会捕捉在交互发生以及当前请求时间之间的time gap。

这些features会被量化,并被编码成离线embeddings。对于在item \(V_i\)上的历史交互,f接着学习将这些embeddings进行mapping到一个scalar上,得到最终weight \(w_i\)。当聚合历史交互时,这样的一个weighted score \(w_i\)会强调内容更接近于具有更长dwelltime的当前request。在我们的实验中,我们发现,变更前面的简单attention设计,使用更复杂的序列模型(比如:RNNs)不会提升效果,出于最小模型复杂度,我们接着保持简单的weighted embedding。模型会从前一checkpoint进行warm-start,并在最近的15分钟日志上进行训练,每个训练round大概一小时。之后在发布到服务器的不同数据中心上提供真实服务。在serving time时,我们再次依赖一个多尺度量化方法,用于快速近似MIPS,并有效检索top-50的新候选内容。

Category-centric Reweighting

为了确保快速记住在这些新内容上的早期用户反馈(early user feedback),我们会在realtime nominator的item tower中包含item ID embeddings。在新内容上传时,交互数据在模式上区别很大:

  • 一些会在几分钟内累积上千次交互数据
  • 其它一些则只会在15分钟log上看到少量交互

由于不均衡的交互数据,只依赖于ID embeddings的模型在新上传内容的”头部(head)”内容上会有over-indexing的风险。为了克服该问题,我们也会包括一些第3.1节提到的content features来刻画这些items。然而:

  • 许多categorical features会落入长尾分布
  • 而另一些categorical features则会很普遍,被应用到大量items上,比如:“music”,
  • 其它一些更专业和有信息量的,比如:“Lady Gaga Enigma+Jazz&Piano”

我们会通过在整个item corpus上的流行度进行inverse,我们会引入IDF-weighting来调权一个feature,为了泛化同时忽略那些普通存在的features,因此模型会更关注于学习这些更专业的content features。

3.3 低通道(Low-funnel) vs. 中通道(Middle-funnel)内容

在我们的目标中:在推荐新内容时要达到高coverage和高relevance存在trade-off。专有新内容推荐stack的corpus,确实可以被进一步归类成两部分:

  • i) low-funnel内容:具有非常有限或者零交互
  • ii) middle-funnel内容:会通过内容泛化收集到少量初始交互反馈

对于low-funnel内容,实时学习框架会丢掉它的预测能力,泛化这些内容是急需。另一方面,对于middle-funnel内容,更快的feedback可以控制real-time nomination系统的训练,允许更好的个性化和相关性。作为使用单个nominator来同时达到好的泛化和实时学习的尝试替代,我们会为不同通道(funnels)部署不同的nominators来解耦任务(如图7所示):

  • 一个具有好的泛化效果的nominator,目标针对low-mid funnel;
  • 另一个nominator则关注于快速适应用户反馈,目标针对mid-funnel(具有合理量级的用户反馈来启动)

我们采用serving两或多个推荐系统的思想来同时获得更好的效果,并具有更少的缺点。另外,我们也会讨论在这样的混合系统中如何决定何时来将一个low-funnel content转移到middle-funel中

图片名称

图7 一个多通道提名系统

Multi-funnel Nomination的query division

一个naive策略,将两个nominators进行组合,并分别询问提名候选,接着依赖于graduaiton filter、prescorer、ranker来为dedicated slot来选择最终内容。但我们观察到,由于在ranker中的popularity bias,最终middle-funnel contents会以主宰slot。对于单个用户请求共同激活两个nominators也会有更高的serving开销。

为了缓和该问题,我们提出了query division multiplexing:用来随机选择two-tower DNN:具有概率p%来检索每个query的low-funnel candidates,或者具有(100-p)%的概率来检索来自middle-funnel的real-time nominator的candidates。我们在第4.2节中在corpus和user metrics间的tradeoff值开展不同的p值实验。

4.实验

在本节中,我们通过线上真实流量实验研究了在专有新内容推荐stack上的multi-funnel设计的效果提升。

4.1 Setup

我们测试了在第2节中介绍的专有新内容推荐stack的multi-funnel设计。特别的,我们对比了dedicated新内容推荐的以下方法:

  • i) single-funnel提名器:使用单个推荐模型来提名新内容candidates。我们将single-funnel提名系统表示成S-two-tower,另一个使用real-time sequence model的称为S-real-time;
  • ii) Multi-funnel提名器:会采用two-tower DNN来推荐那些低于\(n_{low}\)次正向用户交互的low-funnel content,real-time model则推荐那些在graduation threshold阈值下的middle-funnel content。这两个nominators会通过qeruy multiplexing进行组合,其中:two-tower DNN被用于p%随机用户请求,而real-time model则被用于剩余的(100-p)%.

我们设置:p为80,\(n_{low}\)为200,如第4.2节。我们会跑1%的在线user diverted实验来measure用户指标,5%的user corpus co-diverted实验来measure相应的corpus影响。

4.2 效果与分析

multi-funnel nomination的影响

对比multi-funnel nomination vs. single-funnel nomination在corpus以及user metrics,我们会做出以下观测:

  • DUIC. 在图8(左)中,我们发现:对比起S-two-tower,S-real-time在low end上具有更低的DUIC。它在1000次曝光阈值上展示了1.79%的降级,这意味着:real-time nominator在推荐较少交互数据的low-funnel contents上要比two-tower DNN模型效率低。通过组合two-tower DNN、real-time nominaor,如图8(右)所示,我们观察到,low end上的DUIC会在multi-funnel nomination setup中得到极大提升,在DUIC@1000上有0.65%的提升。这意味着,对比起single-funnel setup,multi-funnel推荐可以提升新内容覆盖。

  • Discoverable Corpus。

  • user metrics。

funnel transition cap的影响

为了决定当一个新内容从low-funnel转移到middle-funnel时,我们要评估在不同的interaciton caps下two-tower DNN的泛化性的corpus效果。注意,当我们设置interaction cap为100时,它意味着,我们会限制该模型能index的corpus只会是那些具有最大100次交互的新内容。由于low-funnel推荐的主要目的是:提升corpus voerage,我们会主要关注不同caps的DUIC, 如表2所示。当cap设置为200时,DUIC@1000会达到它的最大值。设置该cap为100会达到相似的效果,但进一步降低cap会导致更差的指标。我们分析得到:当cap太低时,更多低质量内容会被强制提名,并在之后的ranking stage中由于更低的relevance而被过滤。事实上,我们会观察到,当cap从400降到100时,接收到非零曝光的unique contents的数目会有2.9%的下降。同时,需要满足来自low-funnel nominator的初始交互的特定量级之后,才能给real-time model提供学习信号。这意味着一个未来方向是:在middle funnel nominator和主推荐系统(比如:ranker)两者均需要提升泛化性,以便multi-funnel transition可以朝着low-funnel的方向移去。

不同mix概率p%的影响

我们测试了不同的multi-plexing概率:p%

5.contextual流量分配

新内容推荐对于长期用户体验是有益的,它会造成短期用户engagement变得不那么popular或推荐不熟悉的内容。来到在线平台的用户通常在活跃级别上是不同的,会随着消费消息兴趣上的不同而非常不同。通常存在着一批核心用户(core users),它们会定期有规律的访问平台,其它则是临时用户(casual user),或新用户(emerging users),或者倾向于偶尔访问平台的用户。活跃级别的不同可能导致在用户分组上不同的内容消费模型。并且将用户进行grouping的方式可以在【9】中找到。

在初始探索(initial exploraition)中,我们会采用good CTR,基于用户在该点击后至少花费了10s钟,作为直接用户指标来评估推荐系统的短期效果。在图11中,我们发现,不同用户group的good CTR在由不同模型推荐出的候选上非常不同。例如,对比起real-time nominator,low-funnel模型(two-tower DNN)对于casual users来说会达到相似CTR,而对于core user则具有很大的gap。这意味着这些模型不仅在item corpus上具有不同的strength,(例如:low-funnel vs. middle-funnel),他们在处理不同user groups上也具有不同的strength。

该分析会激发一个潜在方法,可以进一步提升对于multi-funnel的query multiplexing的效果。对于core users来说,在泛化模型上的relevance loss对比起更低活跃级别的用户要更大。我们不会在相同概率下使用不同活跃级别来multiplexing用户,我们会进一步基于users/queries来将contextualize流量分配。我们会随机选择q%的核心用户,并使用来自real-time nominator、并利用它的短期用户engagement增益产生的nominations进行服务。其它用户则总是使用two-tower DNN来最大化corpus覆盖的nominations进行服务。如表3所示,通过使用real-time nominator以及使用不同的概率来服务核心用户,我们可以使用context-aware hybrid来进一步提升推荐效率。例如,当我们使用real-time nominator来服务40%的核心用户时,我们可以获得极大的dwell time以及good CTR提升,并在corpus coverage上有中立变更。更多综合的multiplexing策略在以后会再研究。

#

介绍

在preranking阶段除了SSB问题外,我们也假设:ranking和preranking的目标是不同的。ranking的专业是选择top items,会对preranking outputs内的顺序进行reranking,并决定最终的输出。而preranking阶段的主要目标是:返回一个最优的无序集合(unordered set),而非一个关于items的有序列表。基于以上分析,在taobao search上做了在线和离线实验,重新思考了preranking的角色,并重新定义了preranking的两个目标:

  • 高质量集合(High quality set):通过解决在preranking candidates上的SSB问题,来提升output set的质量
  • 高质量排序(High quality rank):为了获得ranking在output set上的一致性,确保高质量items可以在ranking中获得更高得分,并被曝光给用户。

然而,同时最大化两个目标是不可能的。第一个目标最重要,是一个preranking模型必须要追求的目标。第二个目标,只要确保output set集合的质量不会下降就能满足它。换句话说,当模型达到帕累托边界(Pareto frontier),通常在整个output set的质量和它的内部排序(inside rank)间存在一个“跷跷板效应(Seesaw Effect)”:在不涉及更多在线计算的情况下,当prerank更关注于整个set时,它的output set内的排序会变差。相似的,当拟合ranking并提升它的内部AUC时,整个output set的质量会变差。这也是为什么AUC与在线业务指标不一致的原因。我们会在第4节中详述。

已经存在的离线评估指标(比如:AUC)可以对preranking能力(第二个目标)进行measure。然而,AUC会衡量一个有序item list的质量,不适合于评估输出的无序集合的质量。没有一个metric可以有效评估第一个目标。尽管在工业界存在一些研究者,尝试提升output set的质量,他们没有提供一个可靠的离线评估metric来衡量该提升。实际上,大多数公共策略是通过在线A/B testing进行衡量效果提升。然而,在线评估开销巨大,并且时间成本高,因为它通常要花费许多周来获得一个可信的结果。在本文中,我们提出了一个新的evaluation metric,称为:全场景Hitrate(ASH:All-Scenario Hitrate),用来评估preranking模型的outputs的质量。通过对在ASH与在线业务指标间的关系进行系统分析,我们会验证该新离线指标的效果。为了达到我们的目标,我们进一步提出一个基于全场景的多目标学习框架(ASMOL:all-scenario-based multiobjective learning framework),它会显著提升ASH。令人吃惊的是,当输出上千items时,新的preranking模型效果要好于ranking model。该现象进一步验证了preranking阶段应关注于:输出更高质量集合,而不是盲目拟合ranking。在ASH上有提升,会与在线提升相一致,它会进一步验证:ASH是一个更有效的离线指标,并在taobao search上获得一个1.2%的GMV提升。

总结有三:

  • preranking的两个目标的rethinking。
  • 提出了一个ASMOL
  • 展示了ASH与在线业务指标间的相关性

2.相关工作

。。。

3.preranking的评估指标

考虑到第1节中提的两个目标,我们首先分析已存在的AUC指标,以及第第3.2/3.3节中的hitrate@k。再者,我们会引入一个新的离线指标,称为ASH@k。在第3.4节中,我们会分析在taobao search中每个stage的当前能力,并使用我们的新指标来演示:如何使用新metric来分析一个multi-stage的电商搜索系统。

3.1 问题公式

在本节中,我们首先将preranking问题和数学概念进行公式化。假设:

  • \(U = \lbrace u_1, \cdots, u_{\mid U \mid}\rbrace\):表示user与它的features一起的集合。User features主要包含了用户行为信息(比如:它的点击items、收藏items、购买items、或者加购物车的items)
  • \(Q = \lbrace q_1, \cdots, q_{\mid Q \mid} \rbrace\):表示搜索queries以及它的相应分段(segmentation)的集合。
  • \(P=\lbrace p_1, \cdots, p_{\mid P \mid}\rbrace\):表示products(items)以及它的features的集合。Item features主要包含了item ID,item统计信息,items卖家等。

\(\mid U \mid, \mid Q \mid, \mid P \mid\)分别是users、queries、items的去重数。

当一个user u提交一个query q时,我们将在matching output set中的每个item \(p_t\)与user u和query q组合成一个三元组\((u, q, p_t)\)。preranking models会输出在每个三元组上的scores,通常会从matching的output set上根据scores选择topk个items。正式的,给定一个三元组\((u, q, p_t)\),ranking model会预估以下的score z:

\[z = F(\phi(u, q), \psi(p))\]

…(1)

其中:

  • \(F(\cdot)\)是score funciton
  • \(\phi(\cdot)\):user embedding function
  • \(\psi(\cdot)\):item embedding function

在本文中,我们会遵循vector-product-based的模型框架,并采用cosine相似度操作\(F(\cdot)\)。

3.2 ranking stage的一致性

考虑ranking系统在工业界的离线指标,AUC是最流行的。以taobao search为例,AUC会通过曝光进行计算。由于taobao search的目标是有效提升交易,ranking stage主要考虑购买作为曝光上的正向行为,并关注一个被购买item的likelihood要高于其它items的序。因此,taobao search中的items的最大数目被设置为:每次请求10个,我们使用购买AUC(Purchase AUC)at 10(PAUC@10)来衡量排序模型的能力。作为结果,PAUC@10通常也会被用在preranking中(与ranking中的相似),可以衡量在线排序系统的一致性。

3.3 output set的质量

最近的preranking工作很少使用任意metric来评估整个output set的质量。评估output set的一个评估指标是:hitrate@k(或:recall@k),它会被广泛用于matching stage中。hitrate@k表示:模型对target items(点击或购买)是否在candidate set的top k中。正式的,一个\((u, q)\) pair,它的hitrate@k被定义如下:

\[hitrate@k = \frac{\sum\limits_{i=1}^k 1(p_i \in T)}{|T|}\]

…(2)

其中:

  • \(\lbrace p_1, \cdots, p_k \rbrace\):表示了由preranking model返回的top k items,
  • T:表示包含了\(\mid T \mid\)个items的target-item set
  • \(1(p_i \in T)\):当\(p_i\)是target set T时为1,否则为0

当在matching stage中使用该metric时,通常用于衡量一个matching模型的output set的质量(例如:在图1中的Matching 1,非在线的所有matching models的整个output set)。作为对比,当我们通过hitrate@k来评估pre-ranking实验时,离线metrics的结论会与在线业务指标的结论相矛盾。在进一步分析后,我们发现,在hitrate中选择k是一个non-trivial问题。为了准确评估在preranking stage的output item set的质量,k被假设:等于preranking output set的size \(\mid R \mid\)。然而,由于在preranking output set中的items在在线serving期间可以被曝光和被购买,所有正样本(target items)都会在preranking的在线output set中。这会造成当\(k=\mid R \mid\)时,在线preranking model的\(hitrate@k \equiv 1\)。作为结果,离线hitrate@k可以只会衡量在离线模型输出集合与在线输出集合间的不同之处,而非quality。常规的preranking方法,使用\(k << \mid R \mid\)来避免以上问题。\(k << \mid R \mid\)的缺点是很明显的,因为它不能表示整个preranking output set的质量

图片名称

图1 在taobao search中的multi-stage ranking系统

在本工作中,我们一个新的有效评估指标,称为ASH@k。为了创建一个真正表示preranking output set的质量的metric,我们引入来自taobao其它场景(比如:推荐、购物车、广告等)的更多正样本(例如:购买样本)。由于来自其它场景的一些正样本不会存在于preranking在线输出中,他们可以表示与场景无关的用户偏好。在本case中,即使\(k = \mid R \mid\),hitrate@k也不会等于1。由于我们更关心taobao search的交易,我们只会使用来自非搜索场景的购买正样本。为了区分在不同正样本hitrate间的不同,我们称:

  • ISPH@k:In-Scenario Purchase Hitrate@k,只在搜索场景出现的购买样本的hitrate@k
  • ASPH@k:All-Scenario Purchase Hitrate@k,即在其它场景的购买正样本hitrate@k

接着,我们详述了如何引入来自其它场景的正样本。在评估中的一个正样本是一个关于user, query, item的triple:\((u_i, q_j, p_t)\)。然而,在大多数非搜索场景(比如:推荐)不存在相应的query。为了构建搜索的评估样本,我们需要绑定一个非搜索购买\((u_i, p_t)\)到一个相应user发起的请求query \((u_i, q_j)\)上。假设:

  • \(A_u^i\):表示user \(u_i\)在taobao场景上的购买的target-item set
  • \(Q_u\):表示在taobao搜索中的所有queries user搜索

一个直觉方法是:相同的user在queries和购买items间构建一个Cartesian Product,并使用所有三元组\((u_i, q_j, p_t)\)作为正样本,其中:\(q_j \in Q_u\)以及\(p_t \in A_u^i\)。然而,它会引入一些不相关的query-item pairs。例如,一个用户可能在taobao search中搜索“iPhone”,并在其它推荐场景购买了一些水果。生成的该样本中:将“iPhone”作为一个query,同时将”apple(fruit)”作为一个item,我们将它作为在taobao search中的一条正样本是不合适的。为了过滤不相关的样本,我们只能保证相关样本:它的相关分\((q_j, p_t)\)在边界以上。我们称:

  • \(q_k\)为对于全场景pair\((u_i, p_t)\)的一个“相关query”;
  • \(p_t\)是一个全场景”相关item”,可以被绑定到in-scenario pair \((u_i, q_j)\)

再者,我们也会移除重复样本。在该triple中的每个\((u, p)\) pair是唯一的,因此,即使\(u_i\)购买了一个\(p_t\)超过一次,我们只会对使用\((u_i, p_t)\)的triple仅评估一次。

同时,如果我们可以发现:在用户购买行为之前,超过一个相关query,则构建不同的triples,比如:\((u_i, q_1, p_t), (u_i, q_2, p_t), (u_i, q_j, p_t)\),我们只会保留用于评估的最新q的triple。正式的,与等式2相似,对于每个\((u_i, q_k)\) pair,ASPH@k被定义成:

\[ASPH@k = \frac{\sum_{i=1}^k 1(p_i \in A_u^i)}{| A_u^i |}\]

…(3)

其中:\(A_u^i\):表示包含了\(u_i\)在其它场景购买的\(\mid A_u^i \mid\)个items的target-item set,被绑定到query。

3.4 在taobao search中的ASPH

我们展示了在pre-ranking model的pre-generation、提出的pre-ranking model、以及ranking model的离线指标,如图2所示。为了公平对比在pre-ranking stage中的模型能力,所有其它模型都会在该pre-ranking candidates上进行评估。对于pre-generation pre-ranking model,它会使用与ranking model的相同样本,从图中的\(10^5\)到\(10^1\)可以看出,它的模型能力会弱于ranking model。通过对比,当k变大时,提出的preranking model在ASPH@k和ISPH@k上会极大优于ranking。该现象表明:当输出成千上万个items时,提出的preranking模型能力可以胜过ranking。

同时,在图2中,在ASPH@k的结果和ISPH@k的结果间存在一个巨大差异

  • 从ISPH@k metric的视角看:当k小于3000时,ranking model均要胜过preranking model
  • 从ASPH@k指标的视角看:只有当k小于2000时,ranking才会胜过pre-ranking model

在第3.3节所述,我们会argue:ISPH@k得分会表示在offline和online sets间的差异,但不能表示offline集合的质量。由于ranking model的得分决定了最终曝光的items,当使用ISPH@k作为评估指标时,ranking model会具有一个巨大优势

图片名称

图2 在taobao search中的hitrate@k。下图是对上图的放大

为了进一步验证ASPH@k的效果,我们执行一个在线A/B test,它的pre-ranking output分别为2500和3000个items。如果ISPH@k的评估是有效的,那么输出3000个items的preranking的在线业务指标会更高。如果ASPH@k是有效的,那么该结论是相反的。在线结果表明,对比起3000个items的模型,输出2500的preranking具有0.3%的在线30天A/B的交易GMV提升。该实验验证了:ASPH@k是要比ISPH@k在离线评估上是一个更可靠的指标。再者,该实验也表明了preranking可以处理ranking所不能处理的能力,因为reranking output set的size并不是越大越好。相应的,一个preranking应发展它在更高质量outputs上的优点,而不是盲目拟合ranking

4.preranking的优化

尽管拟合ranking会使得一个preranking与ranking更一致,但它对整体preranking的output set的质量贡献很少。本节将讨论我们的用来达到preranking目标的最优化技术,包括训练数据构建、全场景labels、loss functions和distillation。我们首先引入ASMOL preranking,接着分析每个部分,最后通过表明它的效果。

4.1 多目标学习的整体框架

为了同时提升pre-ranking output set的质量以及与ranking的一致性,我们设计了一个新的All-Scenario-based Multi-Objective框架:

  • 一方面,我们将训练样本从曝光扩展到具有全场景label的整个空间训练样本集上,它的目标是提升pre-ranking output set的质量
  • 另一方面,我们设计了一个distillation loss来提升在ranking stage上的一致性

图4和图3分别展示了已有存在的pre-ranking models和我们的模型。

图3

图4

图4展示了一个传统preranking的常见架构。在传统preranking model【8】中的训练样本,包含了一个user、一个query、以及在曝光中的一个item。CTR任务和CVR任务的labels是场景内点击(in-scenario click)和场景内购买(in-scenario purchase)。该preranking系统包含了预估CTR和CVR的两个不同模型,并且最终效果分是CTR*CVR。由于在taobao搜索中前面的generation pre-ranking model会遵循该框架,分别输出CTR score和CVR score,我们称图4中的框架为basline。

作为对比,如图3所示,我们的ASMOL会在query-level训练样本上使用多个目标和多个postive items进行训练。特别的,在每个训练样本中,存在user features、query features和三种类型的items。所有的items会使用相同的可训练参数共享相同的DNN。用于处理每个user、query和item的input features和models结构如附录A所示,它与已存在的preranking models很不同。每个样本包含了在一个query请求中的所有items,以及从在线log系统中抽样得到的ranking和preranking candidates。三种训练样本间的关系如图5所示,定义如下:

  • 曝光(Exposures, EX, 也称为impressions):在一次query请求中曝光的N个items,包括由用户点击或购买的items。这些曝光的items会进行排序,并在所有候选的top,最具最大的概率来满足用户。
  • Ranking候选(RC:Ranking Candidates):由online preranking模型输出的Items,并作为ranking的候选集,它还没有被曝光给用户。我们会通过一个在线日志系统为每个query从上千个RC中抽样M个items。
  • Pre-Ranking候选(PRC:Pre-Ranking Candidates):由preranking系统产生但没有输出的items。我们会通过一个在线日志系统从成千上万个items中抽样L条items。

由于Ranking Candidates和Preranking Candidates在所有目标中都是负例(negatives)。这两种类型的负样本的目标是:在当前preranking系统中解决SSB问题。再者,受【7】的启发,preranking候选会被训练成easy样本,并且Ranking Candidates是相对hard的样本。我们在第4.2节展示了不同样本的必要性。

再者,对于在一条样本中的所有items,我们也会采用三种binary labels,分别对应于三种最优化目标:

  • 全场景购买label(All-Scenario Purchase Label (ASPL)):该label表示:用户是否在任意场景购买了该item。如果用户在当前query(taobao search)购买了该item,或者在其它场景购买了该item,可以被标记成与当前query的一个相关item,purchase label为1。否则,该purchase label为0。
  • 全场景点击label(All-Scenario Click Label (ASCL)): 与ASPL相似,该label表示用户是否在任意场景点击了该item。如果用户在购买它前点击了它,但是点击和购买行为又发生在不同场景导致了冲突的labels,当ASPL为1时,我们会将item的click label设置为1。
  • Adaptive Exposure Label (AEL):该label表示item是否在该taobao search请求中被曝光,它由ranking系统决定。对于曝光来说,该labels为1;其它items为0。另外,当ASCL为1时,我们会将item的曝光label置为1.

为了达到preranking的两个目标,我们会创建一个loss function,它会组合一个ranking loss和一个distillation loss:

\[L = L_{rank} + L_{distill}\]

…(4)

ranking loss \(L_{rank}\)会同时使用三种不同的labels。我们会创建一个具有三个任务的多目标loss function:Purchase、Click、Exposure。我们会为每个任务采用一个新的list-wise loss,并使得正样本的logit要大于负样本。我们的多目标学习框架,目标是通过最大化下面不同类型的正样本得分,来学习下面的importance序:购买items > 点击但未购买items > 未点击曝光 > ranking candidates (RC) 和 pre-ranking candidates (PRC)。我们在4.3节会演示了多目标最优化的必要性。该list-wise loss会在第4.4节讨论。

再者,我们会添加一个auxiliary distillation loss \(L_{distill}\)从来自ranking model(它具有更多features和可训练参数)来学习模型。令人吃惊的是,我们发现:简单将所有训练样本进行distilling并不是最好的方案。ranking model不总是个好teacher,特别是在还没被曝光的样本上。我们会在第4.5节分析该现象。

4.2 整个空间的训练样本

如表1所示,当训练样本包含了曝光、ranking candidates、preranking candidates时,ASPH@3000和在线GMV会被提升。如果preranking模型只使用曝光作为输入,通过从在线log系统中抽样的case分析,我们会发现:它的output set的质量很糟糕。由于仅抽样曝光的(exposure-sample-only)preranking model在训练期间不会看到非曝光样本,在评估时当在preranking candidates中给出样本时它会感到困惑。在该方式下,大多数候选的得分并不令人信服,会导致在output set中出现许多低质量items。

我们进一步探索了不同样本的比例的影响。一些研究者指出,通常一个不同类型负样本【7】的最优比例和一个关于负样本和正样本的最优比例【29】。在我们的多目标框架下,以click目标为例,ASCL等于1的items是正样本,其它是负样本。来自曝光的负样本、ranking candidates到preranking candidates,会变得easy。与click目标相近,购买目标只包含了三种类型的负样本。然而,对于exposure目标,所有的exposure样本是正样本,ranking candidates和pre-ranking candidates是负样本。作为结果,我们发现:即使我们移除了一定比例的非点击曝光,它也会伤害exposure目标,使得ASPH@3000极具下降。同时,从在线log系统中抽样的RC的数目和PRC的数目并不会更大更好。图6详述了:y轴表示,基于在表1中展示的实验“ASMOL w/o RC&PRC”,添加不同candidates数目的离线指标gaps。为最最大化ASPH@3000,我们设置RC的数目和PRC的数目分别为10和40。除此之外,我们可以看到,当RC和PRC小于10和40时,可以看到很明显的“Seesaw Effect”,因为该模型已经达到的Pareto frontier。

另外,由于preranking会使用RC,而ranking则不会使用PRC,这使得preranking不同于ranking。如图2所示,当输出数千items,它天然使得preranking的效果要好于ranking。online A/B test结果也会展示,当ASPH@3000和PAUC@10结论冲突时,ASPH@3000更可信,它与preranking的主要目标和在线业务指标更一致

4.3 在多目标学习中的全场景labels

我们会进行一个消融实验,通过在多目标中移除每个label的相关loss来进行。实验结果如表2所示。当我们移移adaptive exposure label(AEL)时,全场景点击label(ASCL)和全场景购买label(ASPL)会通过分别移除它们相应的loss,评估指标的结论表明:模型效果会急剧下降。exposure label会帮助preranking model学习下流ranking系统的ranking模式,并且我们的结果验证了它的效果。同时,ASCL和ASPL要比AEL具有更少的in-scenario bias,可以给preranking model更精准关于用户偏好的信息。实验结果表明:我们三个losses的组合是合理并且有效的,对于提升preranking models的在线和离线指标有用。

我们也做了许多实验来证验ASL与ISL的对比效果,如表2所示。”->”表示label的变更。例如:”ASL->ISL”表明:ASPL和ASCL同时变更为ISPL和ISCL。我们使用表2中的最后三行来对比在ASMOL间的结果,可以天然下结论:使用ASL会在ASH@k和在线业务指标上更一致。同时,AUC可能会因为“Seesaw Effect”下降。

4.4 multi-positive label的List-wise loss

我们设计了一个多目标loss来同步将exposure、click和purchase在一个模型内进行组合。这三个最优化目标可以进行jointly训练:

\[L_{rank} = \alpha_{ex} L_{exposure} + \alpha_{cl} L_{click} + \alpha_{pur} L_{purchase}\]

…(5)

对于每个任务,我们使用list-wise ranking loss。例如,对于购买任务,ranking loss可以被公式化为:

\[L_{purchase} = \sum\limits_{i \in D} - log \frac{exp z_i}{\sum_{j \in S} exp_{z_j}}\]

…(6)

其中:

  • z是logit
  • S是full training样本集合
  • D是购买任务的正样本集合,包含了exposures、RC和PRC。

等式(6)对于购买任务工作良好,因为通常至多一次query只有一个购买。然而,multi-postive label在点击和曝光任务中是很常见的。等式6对于具有multiple postive样本的任务不再合适。对于一个multi-postive任务,等式(7)的 vanilla Softmax会导致最优化陷入到在多个正样本间的对比,而非正负样本间的对比。受CircleLoss的启发,对于多个postive labels的任务我们会轻微修改等式(6):

\[L_{exposure} = \sum\limits_{i \in \epsilon} - log \frac{exp z_i}{\sum_{j \in \lbrace S \\epsilon,i} \rbrace exp_z_j}\]

…(7)

其中,\(\epsilon\)表示exposure任务的训练样本集合。当存在只有一个正样本时,等式(7)会退化成等式(6)。我们会在附录B详述等式(7)。为了验证在等式(7)中修改的有效性,我们会开展实验对比这两个loss functions,并在table 3中展示该结果。该实验令人吃惊的表明:在所有指标上,multi-label Softmax的效果要好于vanilla Softmax。我们会根据Zheng[29]来调整为每个任务\(\alpha_{ex}, \alpha_{cl}, \alpha_{pur}\)的weights。

表3

4.5 ranking stage的distillation

使用一个已ready的具有更多features和参数的大型ranking模型来蒸馏训练pre-ranking model是很天然的。在taobao search ranking stage中,存在两个独立模型:对应于CTR和CVR预估。在preranking stage,我们使用calibrated CTR和CVR predictions作为teachers来蒸馏我们的preranking model。为了充分利用CTR和CVR模型,preranking distillation loss会是CTR distill、CTCVR distill的组合:

\[L_{distill} = \alpha_{cl} L_{CTR} + \alpha_{pur} L_{CTCVR}\]

…(8)

CTR distillation任务可以进行如下公式化:

\[L_{CTR} = \sum\limits_{i \in D} - p_{CTR} log \frac{exp z_i}{\sum_{j \in D} exp z_j}\]

…(9)

其中:

  • z是preranking model的logit
  • D是要distilled 样本集合
  • teacher \(p_{CTR}\)是ranking CTR model的prediction

相似的,CTCVR distillation的teacher是\(p_{CTR} * p_{CVR}\)。\(p_{CTR} = p(click \mid expose)\)和\(p_{CTCVR} = p(click & purchase \mid expose)\)是在给定相同条件p(expose)=1下的条件概率。由于\(p_{CVR}=p(purchase \mid click)\)不同于\(p_{CTR}\),我们会使用\(p_{CTCVR}\)作为soft label来与\(p_{CTR}\)相一致。CTR distillation的loss weight和CTCVR distillation会分别遵循click task和purchase task的weights。

再者,我们观察到,定义

kuaishou在《Real-time Short Video Recommendation on Mobile Devices》中介绍了它们的beam search方式:

5.实时triggered context-aware reranking

一旦用户观看完一个视频,并生成新的实时ranking信号,我们可以相应更新我们的client-side model predictions,并触发一个新的re-ranking process。给定更新后的model predictions,存在许多方式来决定展示给用户的视频列表。最广泛使用的是point-wise ranking,它会贪婪地通过得分递减方式来对视频排序,然而,point-wise ranking会忽略在候选间的相互影响,因而它不是最优的。

理想的,我们希望:发现候选集合C的最优排列P,它会导致最大化ListReward(LR),定义成:

\[LR(P) = \sum\limits_{i=1}^{|P|} s_i \cdot (\alpha \cdot p(effective\_view_i | c(i)) + \beta \cdot p(like_i | c(i)))\]

…(4)

其中:

\[s_i = \begin{cases} \prod\limits_{j=1}^{i-1} p(has\_next_j | c(j)), && i >= 2 \\ 1, && i = 1 \end{cases}\]

…(5)

其中:

  • \(s_i\):是累积has_next概率直到位置i,它会作为一个discounting factor来合并future reward
  • \(p(has\_next_i \mid c(i)), p(effective\_view_i \mid c(i)), p(like_i \mid c(i))\):分别是在\(v_i\)上has_next、effective_view、like上的predictions
  • \(c(i)\):在等式(1)中定义的ranking context
  • \(\alpha\)和\(\beta\)是不同rewards的weights

然而,直接搜索最优的排列,需要评估每个可能list的reward,它是代价非常高的,由于它是阶乘复杂度\(O(m!)\)(m是candidate set的size)。Beam search是对该问题的常用近似解,它会将时间复杂度减少到\(O(km^2)\),其中k是beam size。然而,二次时间复杂度对于部署在生产环境上仍然过高。幸运的是,不同于server-side reranking的case,我们只需要延迟决定用户在该设备上可能同时看到的下n个视频(图1(a)中所示在我们的沉浸式场景n=1)。在我们的离线实验中(表5),我们观察到,在不同beams间的ListReward的相对不同之处是,在每个search step会随着搜索step的增长而同步递减。因而,我们提出一个新的beam search策略,来选择一个adaptive search step \(n \leq 1 \ll m\),并进一步减小搜索时间复杂度到\(O(klm)\)。

图片名称

图4: adaptive beam search过程演示,其中:候选数n=4,beam size k=2, stability阈值t=0.95,在每个candidate、或candidate list上的数目表示相应的reward

为了实现adaptive beam search,我们定义了一个 stability:在当前的beam search step上将最小的ListReward除以最大的ListReward:

\[stability(score\_list) = \frac{min(score\_list)}{max(score\_list)}\]

…(6)

一旦stability超出了一个给定threshold t,beam search过程会终止,以便节省不必要的计算,由于我们可能期望:在剩余search steps中不会存在大的区别。adaptive beam search过程如图4所示。

算法如算法1所示,它会在导出的TFLite的执行图中被实现。

图片名称

算法1