JD在《Category-Specific CNN for Visual-aware CTR Prediction at JD.com》提出了CSCNN:

1.介绍

JD领先的广告系统,会服务数百万广告主(advertisers)与数十亿顾客(customers)相连。每天,顾客会访问JD,点击ads并留下数十亿的交互日志。这些数据不仅会反馈给到学到的系统,但也会增强技术演进提升用户体验。

在常见的CPC广告系统中,广告会通过eCPM进行排序,商品的竞价通过advertisers给出,广告系统则会预测CTR。精准的CTR预测对商业效果和用户体验有用。因而,该topic在机器学习界和工业界被广泛关注。

大多数广告会使用图片进行展示,因为它们具有更多的视觉展示,并对于文本描述能传达更丰富的信息。一个有意思的现象是,许多广告通过切换更吸引人的图片会获得更高的CTR。对于CTR预测,这驱使了关于提取更丰富可视化特征的许多研究。这些算法会采用现成的(off-the-shelf)的CNNs来抽取可视化特征,并将它们与非可视化的特征(non-visual features:比如:category, user)进行混合来进行最终CTR预测。有了额外的可视化特征,这些算法在离线实验上可以远胜过无可视化的模型,并可以泛化到冷门和长尾ads上。在实际在线广告系统中使用CNN仍然是non-trival的。使用CNN进行offline end-to-end训练必须足够有效遵循随时间变化(time-varying)的在线分布,online serving需要广告系统的满足低时延要求。

另外,我们注意到,在电商中的可视化特征抽取与图片分类的setting有大不同。在分类任务中,categories会被看成是要预测的target。而在电商系统中,广告的categories会被明显地进行标记,它包含了丰富的可视化先验信息,可以帮助进行可视化建模。一些学术研究通过在CNN embeddings的top之上[7]构建category-specific投影矩阵进行集成,并将可视化features显式解耦成styles和categories。这些研究会共享一个公共的架构:visual和categorical knowledge的late fusion,然而,它对于CTR预测来说是sub-optimal。也就是说,image embedding模块很少会利用categorical knowledge。如果不知道ad category,通过这些CNNs抽取的embedding会包含与该category不相关的不必要features,从而浪费CNN的有限表达能力。相反,如果该ad category被集成其中,CNN只需要关注category-specific patterns,它会减轻训练过程

为了克服工业挑战,我们会同时为有效的end-to-end CNN training和低时延在线服务构建优化的基础设施。基于该有效地基础设施,为了充分利用电商中的labeled category,我们为CTR预测任务特别提出Category-specific CNN (CSCNN)。我们的关键思想是,以一个early-fusion的方式将category知识插入到CNN中。受SE-net、以及CBAM的启发,它会使用一个light-weighted self-attention模块来建模convolutional features间的相互依赖,CSCNN会进一步吸收ad category知识,并执行一个category-specific feature recalibration,如图2所示。更明显地,我们会接着使用category-specific channel和spatial attention modules来强调重要的以及与category相关的features。这些丰富的可视化特征对于CTR预测问题来说有巨大的效果增益。

总之,我们有以下的贡献:

  • 据我们所知,我们是在visual-aware CTR预测中首个对visual和non-visual features的late fusion的负面影响进行强调的。
  • 我们提出了CSCNN,为CTR预测特别设计了一个新的visual embedding模块。关键思想是组织category-specific channel和spatial self-attention来强调重要并且与category相关的特征。
  • 我们通过大量离线实验、以及AB test验证了CSCNN的有效性。我们验证了许多self-attention机制的效果,以及network backbones通过插入CSCNN来进行一致性提升。
  • 我们构建了高度有效地基础设施在real online电商广告系统中来使用CNN。在一天内100亿规模的真实产品数据集上,引入有效加速方法来对CNN完成end-to-end training,并满足在线系统的低时延需求(在CPU上20ms)。CSCNN已经被部署在JD的搜索广告系统中。

2.相关工作

2.1 CTR预测

2.2 CNN中的attention机制

attention机制是一个重要的feature selection方法,它可以帮助CNN来强调feature maps的重要部分,并抑制不重要的部分。spatial attention会告诉你关注where,而channel-wise attention则告诉你focus在what上。

在文献中,许多工作尝试从feature map中学习attention weights,称为“self-attention”。SOTA的算法称为CBAM, SE。除了self attention外,attention weights可以有额外的信息为条件,例如自然语言。成功应用的领域包括:language、image captioning以及可视化问答。

我们的工作受attention机制的启发。而非vision & language,我们设计了新的架构来使用attention机制来解决一个重要但长期忽略的问题:对于vision和non-vision feature的sub-optimal late fusion。我们同时将self-attention和attention conditioned on external information(称为:ad category)两者的优点相结合。作为结果,我们的图片embedding能够强调important和category相关的features。

3. JD中的CTR预测

我们首先review了3.1节中的CTR预测的背景。接着,我们描述了CTR预测系统的架构。我们会进一步挖掘新的visual modeling模块的细节。最终,我们会引入必要的加速策略来进行在线部署。表1中总结了相关概念。

3.1 先决条件

在在线广告工业界,一个ad会在一些contexts下被展示给一个user,该情景被记成一次曝光(impression)。CTR预测的目标是:在发生一次impression(ad, user, contexts)时,预测一次positive feedback(例如:click)的概率。准确的CTR预测直接有益于用户体验和商业效果,这使得该任务对于整个广告工业来说很重要。

CTR预测通常被公式化成二分类问题。特别的,它会从一个training set \(D = \lbrace (x_1, y_1), \cdots, (x_{\mid D \mid}, y_{\mid D \mid} )\rbrace\)中学习一个预测函数f: \(R^d \rightarrow R\),,其中\(x_i \in R^d\)是第i次impression的feature vector,\(y_i \in \lbrace 0,1 \rbrace\)是class label表示一个click是否发生。

目标函数被定义成负的log-likelihood:

\[l(D) = - \frac{1}{|D|} \sum\limits_{i=1}^{|D|} y_i log(\hat{y}_i) + (1-y_i)log(1-\hat{y}_i)\]

…(1)

其中,\(\hat{y}_i\)是predicted CTR,通过sigmoid \(\sigma\)归一化到(0, 1)中:

\[\hat{y}_i = \sigma(f(x_i))\]

…(2)

3.2 CTR预测系统的架构

我们现在描述了我们的CTR预测系统的架构,如图1所示。

图片名称

图1. CTR预测系统的架构。左下角:CSCNN,它会将一个ad image与它的category一起嵌入到一个visual feature vector \(x_v \in R^{150}\)中。注意,CSCNN只在offline下运行。而在online serving系统中,为了满足低时延需求,我们会使用一个高效的lookup table进行替代。右下角:non-visual feature embedding,从(ad, user, contexts)到一个non-visual feature vector \(x_{nv} \in R^{380}\)。TOP:主要架构,一个修改版的DCN,它会采用visual feature \(x_v\)和non-visual feature \(x_nv\)作为inputs。

3.2.1 DCN

DCN网络可以得到可靠的效果,它可以学到有效的特征交叉。这里,我们将DCN修改成两个inputs:

  • 一个non-visual feature vector \(x_{nv} \in R^{380}\)
  • 一个visual feature vector \(x_v \in R^{150}\)

visual feature被包含在deep net中。在layer 1中,我们将non-visual feature转换成1024维,并将它们与visual feature进行concatenate起来:

\[h_1 = [x_v, ReLU-MLP(x_{nv})] \in R^{150 + 1024}\]

…(3)

接着跟两个deep layers:

\[h_{l+1} = ReLU-MLP(h_l), l \in \lbrace 1, 2\rbrace, h_2 \in R^{512}, h_3 \in R^{256}\]

…(4)

cross net用于处理non-visual feature:

\[z_{l+1} = z_0 z_l^T w_l + b_l + z_l\]

…(5)

其中,对于layer \(l \in \lbrace 0, 1, 2\rbrace\),input \(z_0 = x_{nv}\)。

最终,我们会为predicted CTR组合outputs:

\[\hat{y} = \sigma(ReLU-MLP[h_3, z_3])\]

…(6)

3.2.2 Non-visual Feature Embedding

我们现在描述embedding layer会将一次impression(ad, user, contexts)的raw non-visual features转成vector \(x_{nv}\).

我们假设:所有features以categorical的形式进来(例如:binning,预处理后)。通常,一个categorical feature会以one-hot / multi-hot vector \(x_hot \in \lbrace 0,1 \rbrace^v\)的方式编码,其中v是该feature的vocab size。我们以如下方式展示两条样本:

1
2
WeekDay=Web  ==>  [0,0,0,1,0,0,0]
TitleWords=[Summer,Dress] ==> [..., 0,1,0, ..., 0,1,0...]

不幸的是,该one/multi-hot coding不能应用于工业界系统,因为高维稀疏性。我们在我们的系统上采用一个低维的embedding策略:

\[x_{emb} = E_{x_{hot}}\]

…(7)

其中:

  • \(E \in R^{d_e \times v}\)是对于该specific feature的embedding字典
  • \(d_e\)是embedding size

我们接着将\(x_{emb}\)的所有features进行concatenate来构建\(x_{nv}\).

实际上,我们的系统会使用来自用户的95个non-visual features(历史点击/购买,location),ads(category, title, #reviews等)以及rich contexts(query words, visit time等),总共有70亿vocab。设置\(d_e = 4\),总的维度是95 x 4 = 380. 我们将进一步引入features和其它statistics。

3.3 Category-Specific CNN

converntional预测系统大多数使用off-the-shelf CNN来嵌入ad图片。我们将它称为“off-the-shelf”,是因为它原始是用来分类设计的,而不是CTR预测。他们将image category看成是要预测的target,而非inputs。这实际上在电商平台上是一个巨大的浪费,因为:categories会被精准标记,并包含丰富的可视化先验知识,可以用于visual modeling。

我们针对CTR预测通过提出一种新的CNN(Category-Specific CNN)来解决该问题,它会嵌入一个ad图片m,并与ad category \(k \in K\)一起concat到visual feature \(x_v\)上。特别的,category prior knowledge被编码成category embeddings(与CTR模型联合训练),并使用一个conditional attention机制来包含CNN。

理论上,CSCNN可以被用来在任意网络中当做任意的convoluation layer。在我们的系统中,我们插入CSCNN到ResNet18.

3.3.1 单个convolutional layer上的框架

对于每个category k以及每个convolutional layer l,CSCNN会学习一个 tensor \(A_c^k \in R^{1 \times 1 \times C'}\),它会为该layer编码category prior knowledge在channel-wise attention上的影响。我们会出于简洁性,忽略subscript l。框架如图2所示。

图片名称

图2 我们提出的Category-Specific CNN框架。注意CSCNN可以被添加到任意单个convolutional layer上,但出于简单演示,我们只展示了单个layer的细节。TOP:一个将category映射到category prior knowledge的map,它会影响channel-wise & spatial attentions。Bottom:F是当前convolutional layer上的output feature map。通过顺序使用channel-wise和spatial attention进行refined,新的feature map F’‘被当成下一layer的input使用

给定一个intermediate feature map \(F \in R^{H \times W \times C}\),convolutional layer l的output,CSCNN会首先学习一个channel attention map \(M_c \in R^{1 \times 1 \times C}\),它基于当前feature map和category为条件。接着,channel-wise attention会被乘上feature map来获得一个Refined feature map \(F' \in R^{H \times W \times C}\),

\[F' = M_c (F, A_c^k) \odot F\]

…(8)

其中,\(\odot\)表示与\(M_c\)的element-wise product,它沿着spatial维度\(H \times W\)进行广播。

相似的,CSCNN也会学到另一个tensor \(A_s^k \in R^{H \times W \times 1}\),它会为spatial attention \(M_S \in R^{H \times W \times 1}\)对category prior knowledge进行编码。这两个attention模块被顺序用来获得一个3D的refined feature map \(F'' \in R^{H \times W \times C}\):

\[F'' = M_s(F', A_s^k) \odot F'\]

…(9)

其中,spatial attention会在element-wise product之前沿着channel维度进行广播。一个实际的关注点是,在\(A_s^k\)中存在大量参数,尤其是在前几层。为了解决该问题,我们提出只学习一个更小的tensor \(A_s^{'k} \in R^{H' \times W' \times 1}\),其中\(H' << H\)以及\(W' << W\),接着通过线性插件(linear interpolation)将它进行resize到\(A_s^k\)。\(H'\)和\(W'\)的作用会在后面实验结果进行讨论。注意,\(A_s^k\)和\(A_c^k\)会随机初始化并在训练期间学习,除category id外不需要额外的category prior knowledge。

channel-wise和spatial attention两者都被重新定义后,\(F''\)会被fed给下一layer。注意,CSCNN会被添加到任意CNNs上,通过只将input的F替代成next layer的\(F''\)。

3.3.2 category-specific channel-wise Attention

channel-wise attention会告诉要关注”what”。除了之前的inter-channel关系外,我们也会利用category prior knowledge和features间的关系(图3)。

图片名称

图3

为了收集spatial信息,我们首先将F的spatial dimension通过max和average pooling进行挤压(squeeze)。采用两者的优点由CBAM的实验所支持验证。两个squeezed feature maps接着与category prior knowledge \(A_c^k\)进行concatenated一起,并通过一个共享的two layer MLP进行forward传递,将维度从\(1 \times 1 \times (C + C')\)减小到\(1 \times 1 \times C\)上。最终,我们通过element-wise summation进行合并。

\[M_c(F, A_c^k) = \sigma(MLP[Avg P(F), A_c^k] + MLP[MaxP(F), A_c^k])\]

…(10)

3.3.3 Category-specific Spatial Attention

我们的spatial attention module如图3(bottom)。Spaital attention会通过利用features的inter-spatial关系,告诉需要关注哪里。受CBAM的影响,我们首先通过average pooling和max pooling沿着channel的维度聚合feature map \(F'\)的channel-wise信息。为了包含category prior knowledge,这两者接着与\(A_s^k\)进行concatenate一起来形成一个\(H \times W \times 3\)维度的feature map。最终,该feature map通过一个\(7 \times 7\)的convolutional filter进行传递来获得attention weights。

\[M_s(F', A_s^k) = \sigma(Conv_{7 \times 7}(Max P(F'), Avg P(F'), A_s^k))\]

…(11)

3.3.4 复杂度分析

注意,CSCNN实际上是一个轻量级module。特别的,我们在表2中展示了Baseline、CBAM以及我们的算法在参数数目和giga floating-point operations(GFLOPs)上的对比。

我们设轩\(C \in \lbrace 64, 128, 256, 512 \rbrace, C'=20\),瓶颈下降至4, #categories \(\mid K \mid =3310\)(表7中的real production dataset)。在CBAM中的每个convolutional yer中的“shared FC”中,参数数目是\(2 * C * C / 4\)。对于CSCNN,FC中的参数数目和channel category embedding是\(C * C / 4 + (C + C')*C/ 4 + C' * \mid K \mid\)。在channel attention中,参数数目的增加对比CBAM是1个conv layer为67-69k。另外,\(W' = H' = 6\),在spatial attention中的额外参数数目是\(W' * H' * \mid K \mid + 6 * 6 \approx 120k\)。因此,总参数的增加为(120k + 68k) * 16 layers = 3.0M。额外的参数引入是可接受的,对比CBAM,额外计算只有0.03%。

3.4 系统部署

我们在搜索广告系统部署了CSCNN。图4描述了我们在线模型系统的架构。

图片名称

图4

3.4.1 offline training

CSCNN会与整个CTR prediction系统进行jointly train,最近32天收集的100亿规模的直实数据集。在我们之前的调查中,CNN是训练期间的关键计算瓶颈。采用ResNet18 network,它的input pic size为224 x 224,单机4个P40 GPUs只能每天训练1.77亿图片。这意味着在分布式训练中加速CSCNN,我们需要226 P40 GPUs来计算1天内的100亿曝光,这很昂贵。为了加速,我们采用[2]中的sampling strategy。具有相同的ad的大约25个曝光(impressions)会收集成一个batch。一张图片的image embedding只需要管理一次,并在该batch中传播给多次曝光。有了28张P40 GPUs后,训练可以在1天内完成。

3.4.2 Offline inferring

images和categories会被feed到一个well trained CSCNN中来infer那些visual features。Fearures会传到一个lookup table中,接着在predictor memory中加载来替换CSCNN。在维度减小和频控后,一个20GB的lookup table可以覆盖超过下一天曝光的90%。

3.4.3 Online serving

一旦收到请求,visual features会直接从lookup table根据ad id进行发现。predictor会返回一个estimated CTR。在流量高峰中,每秒有超过3亿的items的吞吐量,我们的CPU online serving系统的tp99 latency会在20ms以下。

4.实验结果

参考

google(google play)《Mixed Negative Sampling for Learning Two-tower Neural Networks in Recommendations》中提出了Mixed Negative Sampling。

3.模型框架

在本节中,我们首先提出:对于retrieval任务的large-corpus推荐系统中的一个数学表示。我们接着提出一个two-tower DNN的建模方法,并描述了如何使用in-batch negative sampling来训练模型。最后,我们介绍了Mixed Negative Sampling (MNS) 技术来解决batch negatives的选择偏差(selection bias)。

3.1 问题公式

在推荐系统中的检索任务,目标是:给定一个query,从整个item corpus中,快速选择数百到上千的候选内容。特别的,一个query可以是一个文本、一个item(比如:一个app)、一个user,或者它们的一个混合形式。这里,queries和items可以被表示成feature vectors,用于捕获多样的信息。我们将检索问题看成是一个多分类问题,从一个large corpus(classes) C中选择一个item的likelihood可以被公式化成一个softmax probability:

\[P(y | x) = \frac{e^{\epsilon(x,y)}}{\sum_{j \in C} e^{\epsilon (x, y_i)}}\]

…(1)

其中:

  • \(\epsilon(x,y)\)表示由retrieval model提供的logits,feature vectors x和y分别表示query和item。

3.2 建模方法

我们采用一个two-tower DNN模型结构来计算logits \(\epsilon(x,y)\)。

图片名称

图1 双塔结构

如图1所示,left tower和right tower会分别学习query和item的latent representations。正式的,我们通过函数\(u(x; \theta)\)和\(v(y; \theta)\)来分别表示两个towers,它们会将query features x和item features y映射到一个共享的embedding space上。这里\(\theta\)表示所有的模型参数。该模型会输出query和item embeddings的内积作为等式(1)中的logits:

\[\epsilon(x, y) = <u(x;\theta), v(y;\theta)>\]

出于简单,我们会:

  • u表示成一个给定query x的的embedding
  • \(v_j\)表示从corpus C中的item j的embedding

对于一个\(\lbrace query(x), item(y_l, postive \ label) \rbrace\)pair的cross-entropy loss变为:

\[L = - log(P(y_l | x)) = - log(\frac{e^{<u, v_l>}}{\sum_{j \in C} e^{<u, v_j>}})\]

…(3)

对等式(2)根据参数\(\theta\)做梯度,给出:

\[\nabla_{\theta} (- log P(y_l | x)) \\ = - \Delta_{\theta}(<u, v_l>) + \sum\limits \frac{e^{<u,v_j>}}{\sum_{j \in C} e^{<u, v_j>}} \nabla_{\theta}(<u, v_j>) \\ = - \nabla_{\theta}(<u, v_l>) + \sum\limits_{j \in C} P(y_j | x) \Delta_{\theta}(<u, v_j>)\]

第二项表示:\(\nabla_{\theta}(<u, v_j>)\)是对于\(P(\cdot \mid x)\)(指的是target分布)的期望(expectation)。通常在大的corpus上对所有items计算第二项是不实际的。因此,我们会通过使用importance sampling的方式抽样少量items来逼近该期望(expectation)。

特别的,我们会从corpus中使用一个预定义分布Q来抽样一个items子集\(C'\),其中\(Q_j\)是item j的抽样概率(sampling probability),并用来估计等式(3)中的第二项:

\[E_P [\nabla_{\theta}(<u, v_j>)] \approx_{j \in C'} \frac{w_j}{\sum_{j' \in C'} w_{j'}} \nabla_{\theta}(<u, v_j>)\]

…(4)

其中,\(w_j = e^{<u, v_j> - log(Q_j)}\)会包含用于sampled softmax中的logQ correction。

双塔DNN模型的一个常用sampling策略是:batch negative sampling。特别的,batch negative sampling会将在相同training batch中的其它items看成是抽样负样本(sampled negatives),因此sampling分布Q会遵循基于item频次的unigram分布。它可以避免feed额外的负样本到右塔,从而节约计算成本。图2展示了在一个training batch上的计算过程。给定在一个batch中有B个{query, iitem} pair,B个queries和B个items的features会分别经过该模型的左塔和右塔。产生\(B X K\)(K是embedding维度)的embedding matrix U和V。接着,logits matrix可以被计算为\(L = U V^T\)。由于batch negative sampling会极大提升训练速度,我们会在下节中讨论它的问题,并提出一个可选的sampling策略。

图片名称

图2

3.3 Mixed Negative Sampling

控制梯度估计的bias和variance对于模型质量来说很重要。有两种方式来减小bias和variance:

  • (1) 增加sample size
  • (2) 减少在Q分布和target分布P间的差异

在训练两塔DNN模型的情况下,batch negative sampling会隐式设置采样分布Q为unigram item frequency分布。它在推荐场景下有两个问题:

  • (1) 选择偏差:例如,一个没有任何用户反馈的item不会包含在训练数据中作为一个candidate app。因而,它不会被batch negative sampling抽样成一个负样本。因此,该模型不能有效区分具有稀疏反馈的items 与 其它items。
  • (2) 缺乏调整抽样分布的灵活性:隐式采样分布Q由训练样本决定,不能被进一步调整。Q与target分布P偏离,会导致巨大bias。

我们提出了Mixed Negative Sampling (MNS) 来解决该问题。它会从另一个数据流中均匀抽样\(B'\)个items。我们将这额外数据流称为index data,它是一个由来自整个corpus的items组成的集合。这些items对于每个batch来说会当成额外负样本使用。图3展示了一个training batch的计算过程。

图片名称

图3

除了\(B \times K\)的query embedding matrix \(U_B\)外,\(B \times K\) candidate item embedding matrix \(V_B\),均匀从index data中抽样的\(B'\)个candidate items会被feed到右塔来生成一个\(B' \times K\)个candidate item embedding matrix \(V_B'\)。我们将\(V_B\)和\(V_B'\)进行拼接来获得一个\((B + B') \times K\)个candidate item embedding matrix V。事实上,我们具有\(B \times (B + B')\)个logits matrix \(L = U V^T\)。label matrix因此变成\(B \times (B + B')\),具有一个所有都为0的\(B \times B'\)的matrix会append到原始的\(B \times B\)的对角矩阵上。相应的,一个training batch的loss function:

\[L_B \approx - \frac{1}{B} \sum\limits_{i \in [B]} log(\frac{e^{<u_i, v_i>}}{e^{<u_i, v_i>} + \sum\limits_{j \in [B+B'], j \neq i} w_{ij}})\]

…(5)

其中:

\(w_{ij} = e^{<u_i, v_j> - log(Q_j^*)}\),\(u_i\)是U的第i行,\(v_j\)表示V的第j行。这里的抽样分布\(Q^*\)变成是一个关于基于unigram sampling的item frequency和uniform sampling的混合形式,有一个关于batch size B和\(B'\)间的ratio。

MNS会解决以上与batch softmax有关的两个问题:

  • (1) 减少选择偏差(selection bias):在corpus中的所有items具有一个机会作为负样本,以便retrieval model可以更好分辩新鲜和长尾的items
  • (2) 在控制sampling分布时使得更灵活:有效采样分布Q是一个来自training data基于unigram分布的item freqeuncy和来自index data的uniform分布的mixture。对于一个固定的batch size B,我们可以通过调节\(B'\)来实验不同的Q。这里的\(B'\)可以作为一个超参数进行调节。

参考

阿里在《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.在线部署与测试

参考