阿里在《SDM: Sequential Deep Matching Model for Online Large-scale Recommender System》提出了SDM,我们来看下。

摘要

捕获用户的精准偏好是大规模推荐系统中一个基础问题。当前,item-based CF方法通常会在工业界广泛使用。希而,它们不能有效建模用户的动态演进的偏好。在本paper中,我们提出了一个新的序列深度匹配模型(SDM: sequential Deep Matching)来捕获用户的动态偏好,它通过将short-term sessions和long-term behaviors相结合进行建模。我们对比了已经存在的sequence-aware推荐方法,我们会解决在实验应用中的两个天然问题:

  • 1) 他们可以在一个session内存在多个兴趣趋势
  • 2)长期偏好(long-term)可能会与当前session兴趣的融合得不够有效

长期行为是多样且复杂的,因而,与short-term session高度相关的行为应该在融合(fusion)时被保留。我们提出,使用两个相应的组件来编码行为序列:

  • multi-head self-attention模块:来捕获多种类型的兴趣
  • long-short term gated fusion模块:来吸收long-term偏好

在与序列用户行为向量(sequential user behavior vector)与item embedding vectors相匹配后,会推荐连续的items。在真实世界数据集中的离线实验表明,SDM的优点。另外,SDM已经在taobao的在线大规模推荐系统中成功部署,并达到了巨大提升。

1.介绍

。。。

2.相关工作

。。。

3.提出的方法

3.1 问题公式化

我们首先将序列匹配问题(sequential matching problem)和我们的解决方法进行公式化。假设:

  • U:表示users集合
  • I:表示items集合

我们的模型认为:用户\(u \in U\)会与与一个item \(i \in I\)在t时刻进行交互。对于user u,我们可以通过以时间序降序对交互items进行排序来获得他/她的最新sessions。受session-based推荐的启发,我们可以将new session的生成规则进行公式化:

  • 由后台系统记录,相同的session ID进行交互属于相同session
  • 时间差异少于10分钟内(或者更长时间,具体依赖于场景)的近邻交互也可以合到一个session
  • 一个session的最大长度设置为50,它意味着:当session长度超过50时,会新开启一个new session

用户u的每个最近session会看成是短期行为(short-term behavior),命名为\(S^u = [i_1^u, \cdots, i_t^u, \cdots, i_m^u]\),其中:m是sequence的长度。u在过去7天内在\(S^u\)前发生的长期行为(long-term)被标记为\(L^u\)。基于这样的前提条件,我们会定义我们的推荐任务。给定用户u的短期行为 \(S^u\)以及长期行为 \(L^u\),我们希望为他/她推荐items。

总的网络结构如图1所示。我们的模型会将当前session \(S^u\)和\(L^u\)作为input。\(S^u\)和\(L^u\)会分别被编码成short-term session表示为时间t的\(s_t^u\),长期行为表示\(p^u\)。这两种representations会通过一个gated neural network进行组合。我们将该模块命名为user prediction network,它会从\(S^u\)和\(L^u\)中预测用户行为向量\(o_t^u \in R^{d \times 1}\)。假设:\(V \in R^{d \times \mid I \mid}\)表示I的item embedding vectors,其中:\(\mid I \mid\)是所有items的数目,d是每个vector的embedding size。我们的目标是:基于在\(o_t^u\)与V中每个列向量\(v_i\)间的内积得分,预测在time t+1时top N个item candidates:

\[z_i = score(o_t^u, v_i) = {o_t^u}^T v_i\]

其中,\(v_i \in R^{d \times 1}\)是第i个item embedding vector。

3.2 训练和在线serving

在训练期间,在time t的postive label是next interacted item \(i_{t+1}^u\)。negative labels是从排除了\(i_{t+1}^u\)的I中通过log-uniform sampler抽样得到的。接着预测的class probabitities会通过一个softmax layer做出。称为sampled-softmax,我们会使用cross entropy作为loss function:

\[\hat{y} = softmax(z) \\ L(\hat{y}) = - \sum\limits_{i \in K} y_i log(\hat{y}_i)\]

…(2)

其中,K是I的抽样子集,它包含了positive labels和negative labels,\(z = [z_1, \cdots, z_{\mid K \md}]\)是在\(o_t^u\)与每个\(v_i (i \in K), \hat{y} = [\hat{y}_1, \cdots, \hat{y}_{\mid K \mid}\)是在每个抽样样本(sampled item)上的预测概率分布,其中\(y_i\)是item i的truly probability分布。

我们会在我们的在线推荐系统中部署该模型。item embedding vectors V对于ANN来说很重要。同时,user prediction network会部署在一个高性能的实时inference系统上。这种架构遵循Youtube视频推荐[4]。当顾客使用我们的在线服务时,他们会与多个items交互,他们关于items的feedback会被处理,接着在数据库中作为用户行为日志进行排序。从大量日志中的有用悠会被抽取出来构建成模型所需的结构化数据。在time t时,顾客的历史行为\(S^u\)和\(L^u\)会被feed到inference系统中。接着,用户行为向量\(o_t^u\)会被预测。KNN搜索系统会使用\(o_t^u\)根据它们的内积进行检索。接着推荐top-N items。现在,我们会详述\(S^u\)和\(L^u\)会被编码到network中,并且两个representations会在图2中进行融合。

3.3 使用side information的input embedding

在taobao推荐场景中,顾客不只关注于特定item本身,也会关注品牌、商店和价格,等。例如,一些用户趋向于购买指定品牌的items,其它用户可能会从他们信任的商店进行购买。再者,由于工业界存在大规模items造成的稀疏性(sparsity),只对item ID feature级别来编码items不够令人满意。因此,我们会从不同的feature尺度来描述一个item,例如:item ID、leaf category、first level category、brand和shop,它们可以被表示成side information set F。每个input item \(i_t^u \in S^u\)被表示为一个dense vector \(e_{i_t^u} \in R^{d \times 1}\),它通过embedding layer进行转换,因此,他们可以直接feed到DNN中:

\[e_{i_t^u} = concat( \lbrace e_i^f | f \in F \rbrace )\]

…(3)

其中,\(e_i^f = W^f x_i^f \in R^{d_f \times 1}\)是item i关于feature f的input embedding,它具有embedding size \(d_f\)。\(W^f\)是feature。f是转移矩阵,\(x_i^f\)是one-hot vector。

相似的,user profile可以从不同的feature scales来描述user u,比如:age、gender、life stage。用户u的profile信息输入可以被表示成一个dense vector \(e_u \in R^{d \times 1}\):

\[e_u = concat( \lbrace e_u^p | p \in P \rbrace)\]

…(4)

其中,P是这profile features set,\(e_u^p\)是feature p的embedding。

3.4 Recurrent Layer

给定用户u的embedded short-term sequence \([e_{i_1^u}, \cdots, e_{i_t^u}]\),为了捕获和特征化在short-term序列数据中的全局时序依赖,我们会使用Long Short Term Memory(LSTM) network作为recurrent cell,它遵循session-based recommendation【7,14,15】,LSTM可以描述为:

\[\]

3.5 Attention机制

在电商场景下,顾客通常会浏览一些不相关的items,这被称为是“因果点击(causal clicks)”。不相关的行为(unrelated actions)一定程度上会影响在序列中\(h_t^u\)的表示(representation)。我们使用一个self-attention network来减小一些不相关actions的影响。Attention network可以聚合多个vectors到一个总体表示上,通过分配不同的权重分到每个组件上。

3.5.1 Multi-head self-attention

self

3.5.2 User Attention

对于不同的用户,他们通常会对相似的item sets具有不同的偏好。因此,在 self-attention network的顶部,我们会添加一个user attention module来描述一些细粒度的个性化信息,其中\(e_u\)会被用于query vector,对\(\hat{X}^u = [\hat{h}_1^u, \cdots, \hat{h}_t^u]\)进行attend。time t时的short-term行为表示\(s_t^u \in R^{d \times 1}\)可以被计算:

\[a_k = \frac{exp(\hat{h}_k^{uT} e_u}{\sum_{k=1}^t exp(\hat{h}_k^{uT} e_u} \\ s_t^u = \sum\limits_{k=1}^t a_k \hat{h}_k^u\]

3.6 长期行为混合

从long-term视角看,用户通常会在不同维度积累不同程度的兴趣。一个用户可能经常浏览一群相似商店,并且重复购买相同品类的items。因此,我们也会从不同的feature scales将long-term行为\(L^u\)进行encode,\(L^u = \lbrace L_f^u \mid f \in F \rbrace\)包含了多个子集:\(L_{id}^u\)(item ID),\(L_{leaf}^u\)(leaf category),\(L_{cate}^u\)(first level category),\(L_{shop}^u\)(shop)以及\(L_{brand}^u\)(brand),如图2所示。例如:\(L_{shop}^u\)包含了用户u在过往一周内交互的shops。考虑在在线环境下的快速响应,在每个subset中的entries,通过一个attention-based pooling会被嵌入并聚合到一整个vector中。

每个\(f_k^u \in L_f^u\)会通过在第3.3节中的\(W^f\)被转换成一个dense vector \(g_k^u \in R^{d \times 1}\)。接着我们使用user profile embedding \(e_u\)作为query vector来计算attention scores并获得\(L_f^u\)的表示:

\[a_k = \frac{exp(g_k^{uT} e_u}{\sum_{k=1}^`{| L_f^u |}`exp(g_k^{uT} e_u)} \\ z_f^u = \sum_{k=1}^{| L_f^u |} a_k g_k^u\]

…(11)

\(\lbrace z_f^u \mid f \in F\rbrace\)会被concatented并feed到一个FC network上:

\[z^u = concat(\lbrace z_f^u | f \in F \rbrace) \\ p^u = tanh(W^p z^u + b)\]

…(12)

其中,\(p^u \in R^{d \times 1}\)是long-term行为的表示。

为了与short-term行为进行组合,我们精妙地设计了一个gated neural network,它会将\(e_u, s_t^u, p^u\)作为input进行组合,如图2所示。一个gate vector \(G_t^u \in R^{d \times 1}\)会被用来决定在time t时short-term和long-term的贡献百分比(contribution percentages)

\[G_t^u = sigmoid(W^1 e_u + W^2 s_t^u + W^3 p^u + b)\]

…(13)

最终的output,例如:用户行为向量\(o_t^u \in R^{d \times 1}\),会通过如下计算:

\[o_t^u = (1 - G_t^u) \odot p^u + G_t^u \odot s_t^u\]

…(14)

其中:\(\odot\)是一个element-wise乘法。

4.实验

4.1 数据集

我们会构建一个offline-online train/validation/test framework来开发我们的模型。模型会在两个离线真实电商数据集。一个是移动taobao APP的在线天级日志。另一个来自JD。我们的代码和离线数据集提供在:https://github.com/alicogintel/SDM.

  • 离线taobao数据集。随机选取了在连续8天内交互超过40个items的活跃用户(2018年12月)。另外,我们会过滤交互超过100个items的用户,它们会被认为是spam users。接着我们收集他们的历史交互数据,首个7天做为训练,第8天作为测试。我们会过滤出该数据集中少于5次的items。session segmentation会遵循3.1节的规则,并限定每个\(L_f^u\)的最大size为20个。在训练过程期间,我们会移除长度少于2的sessions。在test环节,我们会选择近10000个活跃用户作为快速评估。他们在第8天的的前25%的short-term sessions会被feed到模型中,剩除的交互作为ground truth。除此外,顾客一天内浏览一些items超过一次,并重复推荐不应被鼓励,因此,我们会在test data上对某个user来说对其它items只保留一次。

离线JD数据集。由于该数据集相当稀疏和更小,我们选择3周的用户-item交互日志进行训练,一周进行测试。其它data构建和清理过程与taobao相同。在表1中的两个离线数据集的统计详情如下。

在线数据集。我们会选择大多数有效离线模型来部署在淘宝的生产环境中。来自taobao APP的user-item交互日志的训练数据来自过往7天,没有进行sampling。相同的数据清理过程会应用在离线训练数据集上。在线用户和items的scales会扩展到亿级别,它可以cover住大多数taobao的活跃商品,更多的long-term行为可以被使用。详情如表1所示。在线model、相应的item和user features会天级更新。

4.2 评估指标

4.1 离线评估

4.2 在线评估

在线指标:pCTR、pGMV和discovery。

pCTR是每个page view的Click-Through-Rate ,其中每个page可以为用户推荐20个items:

\[pCTR = \frac{#clicks}{#pages}\]

pGMV是每个1000 PV的Gross Merchandise Volume。它的计算如下:

\[pGMV = 1000 \times \frac{#pay amount}{#pages}\]

除了在线流量和收入外,我们也考虑用户的shopping体验。定义了有多少新items推荐系统提供给一个用户:

\[discovery = \frac{#new \ categories}{#all \ categories}\]

其中,分母是一个用户在每天点击的所有categories的数目,分子是用户在过往15天内新category的数目。我们会对所有用户求平均。

4.3 对比方法

  • Item-based CF
  • DNN: youtube DNN
  • GRU4REC
  • NARM: GRU4REC的改进版本
  • SHAN
  • BINN
  • SDMMA: Sequential Deep Matching with Multi-head Attention,我们的增强模型
  • PSDMMA:Personalized SDMMA,增加了user attention module来挖掘细粒度的个性化信息
  • PSDMMAL:PSDMMA组合了short-term sessions和long-term 行为。
  • PSDMMAL-N:基于PSDMMAL,在训练期间,我们会采用以下的N个items作为target classes作为Tang&Wang[24]。本实验中N=4

4.4 实现详情

分布式tensorflow。在离线实验上,训练使用5个PSs和6个GPU worksers,平均30 steps/s,在online实验上我们使用20 PSs和100 GPU workers。Adam optimizer具有learning rate 0.001.。。。

5.经验分析

5.1 离线结果

表2展示了不同模型在离线数据集上的结果。我们会从这些模型的训练epochs中选择最好的结果。总之,除YoutubeDNN外,基于deep learning的方法要胜过传统的item-based CF一大截。在item序列上的average pooling会忽略items间的内在的相关性,造成推荐质量(recall、precision)的损伤。GRU4Rec和NARM会考虑short-term行为的演进。他们的效果要好于原始的DNN模型。为什么SHAN和BINN能比GRU4Rec好是因为:他们包含了更多的个性化信息,包括long-term行为和user profile表示。

我们提出的SDMMA会利用multi-head attention结构,并全面好于NARM。我们会在5.3节看一个具体的case来解决multi-head attention是如何捕获多种兴趣的。通过引入user profile表示,PSDMMA会增强该模型,因为不同类型的users会关注不同的items。short-term表示会更准,越多的顾客可以在候选列表中发现他们感兴趣的items。但很难为一个新用户推荐潜在的新items。通过考虑上long-term行为,会infer得到越精准的偏好。

PSDMMAL可以打败所有模型,它会考虑long-term偏好。不同于SHAN和BINN,它会应用一个fusion gate来组合short-term和long-term行为表示。该gate比hierarchical attention结构具有更强的表示能力。SHAN会简单使用user profile表示作为query vector来决定long-term和short-term偏好表示的attention weights。我们提出的PSDMMAL会建模它们间的相关关系。在5.4节会通过一个有意思的case来解释fusion gate的设计。PSDMMAL-N是最好的变种,它在训练期间采用next 5 items作为target classes。它可以召回更多样的items,会满足更广用户的需求,对于推荐系统的matching task更合适。PSDMMAL-NoS的结果表明,我们的模型在没有side information下效果会急剧下降。

5.2 在线A/B

当前,taobao的在线匹配算法是一个two-staged方法。我们会将trigger items定义为一个用户最近交互过的items。Item-based CF首先会生成item-item相似矩阵。trigger items会通过相似矩阵去召回相似的items。接着这些recalled items会通过GBDT进行rerank作为matching chandidates。这样的方法是我们的online baseline,我们替换它作为一个标准的A/B test。

我们会部署最好的的SDM模型PSDMMAL-N,同时也会部署没有long-term behaviors的版本。对比baseline模型,从顾客的序列行为infer出来的推荐items的质量,会比由item-based CF生成的相似items的要好些。特别是对于那些经常在线浏览的顾客,我们的模型会推荐新items给他们,并吸引更多眼球来提升潜在的订单率。图3展示了7天的在线结果。两个SDM模型会胜过baseline一大截,其中PSDMMAL-N具有一个整体pCTR :7.04%的提升,pGMV:4.5%,cover: 24.37%。合并long-term行为会带来更多的提升。long-term行为总是表示个性化偏好,它可以影响顾客的当时购物决策。注意,我们的sequential matching model在2018 12月后表现稳定。

5.3 Multi-head Attention的效果

我们在matching模型中探索了多种heads的影响。直觉上,short-term session会获得heads增加数目带来的准确率。表3上报了在离线taobao dataset上的结果。在该实验中,在PSDMMAL中,只有heads数目是不同的,并且模型的维度 hidden units d设置为64。

我们可以观察到,由head number引起的变化在4个指标上保持一致。当heads的数目少于4时,该效果呈现了heads量间的postive关系。当heads数目大于4时,结果会急剧变差。我们可以下结论:更多head并不必要正向,因为\(d_{head_i} = \frac{64}{#head}\)会变得更小,并造成更差的表示。在我们的settings中,4个heads可以获得最好的结果,我们会将在short-term session上不同heads的attention weights进行可视化,如图4所示。我们会选择LSTM的hidden output \(h_t^u\)作为在multi-head attention中的query vector,来获得到\([h_1^u, \cdots, h_t^u]\)的attention weights。weight vector也是等式8中\(A_i^u\)的第t个row vetor。\(head_1\)和\(head_2\)主要关注在session中的前几个items,它们是白色羽绒衣(white down jackets)。\(head_3\)会捕获连衣裙(dress)的兴趣,\(head_4\)则会给出对牛仔裤(jeans)更多的attention。

5.4 Fusion Gate

element-wise乘法,concatenation和加法操作,会直接在未过滤的long-term偏好表示上进行,并忽略:在long-term上少量偏好会与当前short-term session具有强相关性。这些简单的组合方法会获得来自long-term偏好的所有信息,会天然地伤害fusion的效果,如图4所示,在taobao离线数据集上的效果。作为对比,我们提出的gated fusion network会准确捕获multi-layer user偏好,并达到最好的结果。在long-term偏好中与当前session高度相关的信息会与当前的short-term vector进行融合。

为了更好解释gated fusion,我们使用一个taobao的抽样用户的真实案例来解释gate的功能。如图5所示,\(R^u\)包含了我们模型推荐的items,它会被用户同时点击。我们可以看到,用户会浏览多种类型的玻璃,包括:红酒杯(red wine glass)和冠军杯(champion glass)。我们的模型可以直接推荐champion glasses,因为他们与用户的short-term session \(S^u\)中的最近点击有关。这意味着他更可能在此时对champion glasses感兴趣,该gate会允许保留该信息。同时,我们的gated fusion可以在它大量long-term行为\(L^u\)间捕获最相关的items (red wine),它也包含了许多不相关的点击:比如啤酒(beer)、削皮刀(paring knife)、小板块(small plate),并与short-term session的items( red wine glasses)组合来生成推荐项:红酒瓶(red wine decanter)。该case表明:我们的gate module是有效的,并具有精准融合的能力。

图5

参考

北大在《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: 效率

参考