美团在《AutoFAS: Automatic Feature and Architecture Selection for Pre-Ranking System》中提出了AutoFAS的做法:

1.摘要

工业界搜索和推荐系统大多数遵循经典的multi-stage IR范式:matching、preranking、ranking和reranking stages。为了对系统效率负责,简单的vector-product based模型常被部署到preranking stage中。大多数工作会考虑将大的ranking模型的知识蒸馏到小的preranking模型中以便得到更好的效果。然而,在preranking系统中存在两个主要挑战:

  • i) 无法显式建模效果增益 vs. 计算开销,预定义的延迟限制会导致次优解
  • ii) ,将ranking teacher的知识转移一个预先手工制作的结构到的preranking student中,仍会有模型效果的损失

在本工作中,提出了一个新的框架AutoFAS,它会联合优化preranking模型的效率和效果:

  • i) AutoFAS首先同步选择大多数有价值的features,网络结构使用NAS技术(Neural Architecture Search)
  • ii) 在NAS过程中使用ranking model进行指导收益,对于一个给定的ranking teacher,AutoFAS可以选择最好的preranking架构,无需任何计算开销

在真实世界搜索系统中的实验结果,展示了AutoFAS的效果要比SOTA的方法更好,并且开销更低。注意,我们的模型已经在美团的搜索系统的preranking模块上使用,取得了巨大提升。

1.介绍

2.相关工作

3.方法

我们的工作构建在NAS(neural architecture search)之上,因而我们首先介绍下该主题。接着给出preranking的介绍以及详细介绍我们的方法。

Neural network设计通常需要人工专家们的大量经验。在最近几年,在研究算法NAS解决方案来将结构设计过程由人工转向自动化上取得了大量关注【1,15,37】。一些工作【1,22】尝试通过共享跨模型权重来提升搜索空间,它会进一步划分成两类:

  • continuous relaxation方法【3,17】
  • One-Shot方法 【2,8】

基本上,我们遵循weight sharing方法,它包含了三个steps:

  • (1) 设计一个过参数化网络(overparameterized network),因为搜索空间包含了每个候选结构
  • (2) 在training set或held-out validation set上直接作出结构决策
  • (3) 对大多数有希望的结构从头到尾进行retrain,并在test set上验证它们的效果;

注意,在我们的场景和之前的结果间有一个大的不同之处是:我们需要同时联合搜索特征和结构

3.2 搜索和推荐系统介绍

搜索和推荐系统的整体结构如图1所示。基本上,matching stage会从用户的动作历史、以及当前query中取出事件(如果存在)作为input,并从一个大的corpus(上百万)检索出一个小的items子集(上千)。这些与用户相关的候选通常具有适度准确性。接着,preranking stage会提供更大的个性化,过滤出具有高precision和高recall的近千个top items。一些公司会选择组合matching和preranking stages,比如Youtube【6】。接着,复杂的ranking network会根据期望的objective function,使用丰富的特征,为每个item分配一个score。在没有reranking的情况下,具有最高得分的items会根据得分排序展示给用户。通常,preranking会共享相似的ranking功能。最大不同点依赖于问题的scale。直接在preranking系统中使用ranking模型会面临计算开销问题。如何对模型效果和计算开销进行权衡是设计preranking的核心问题。

图片名称

图1

3.3 美团Preranking的历史

之前提到,preranking模块可以被看成是一个在matching和ranking间的transition stage。在Meituan的主搜索上,它会接受来自matching阶段的上万个候选,并过滤出数百个结果给到ranking阶段。我们的底层preranking架构的演进:双塔模型、GBDT、当前的DNN模型。随着效果提升,大量的计算复杂度和大量存储使得它面临着更大的挑战。我们的online inference engine的瓶颈主要面临两部分:

  • 从database的特征检索(feature retrieve)
  • DNN inference

特征选择和神经网络结构选择对于成功部署高效且有效的preranking模型来说非常重要。

3.4 在Preranking中的特征选择和结构选择

我们的方法背后的一个关键动机是:我们应该联合构建preranking model以及ranking model,以便ranking model的知识可以自动指导我们为preranking model去发现最有价值的features和architechtures。因而,我们不会采用独立训练preranking models,而是会联合构建preranking model和常规的ranking model。我们首先描述了search space的构建,接着介绍:如何利用feature和architecture参数来搜索最有价值的features和architectures。

最终,我们会展示我们的技术来处理延迟以及KD-guided reward。

搜索空间

如图2所示,图的左半边是我们的ranking网络,而右半边是过参数化网络,它包含了所有的候选preranking models。这两部分会共享相同的input features \(F = \lbrace f_1, f_2, \cdots, f_M \rbrace\)。在我们的setup中,F主要包含了user features、item features以及interactive features。我们会使用所有的M个feature inputs来训练ranking model,接着将ranking model的大部分features进行归零(zero out)来评估它们的重要性,从而选出最好的特征组合

图片名称

图2 AutoFAS框架的网络结构。AutoFAS由两部分组成。左边子网络是:我们的具有feature mask module的常规ranking network。由于Meituan的搜索引擎会服务多个业务,它们具有重合的user groups和items,我们的ranking model具有multi-partition结构。右边子网络包含了L个Mixops,它包含了所有候选preranking结构。在每个Mixop中的最强operator会以黑色标注,构成了preranking model的最终结构。

与feature selection并行的是,我们需要搜索最优结构。假设O是一个building block,它包含了N个不同的候选操作符:\(O= \lbrace O_1, O_2, \cdots, O_N \rbrace\)。在所有case中,\(O\)包含了零操作符(zero operator)或具有多个hidden units的MLP。零操作符(zero operator)会保持input与output相同。一些参考里也将它称为等同操作符(identity operator)。注意,零操作符允许layers数目的减少。其它操作符比如外积、点乘可以被相似抽象并集成到框架中,这留给后续探讨。为了构建over-parameterzied network(它包含了每个候选结构),而非设置每个edge(网络连接)是一个明确的原始操作(definite primitive operation),我们设置每个edge(网络连接)是一个具有N个并行路径(paralled paths)的mixed operation(Mixop),表示为\(m_O\)。接着,我们的over-parameterzied network可以被表示为\(N(e_1 = m_O^1, \cdots, e_L = m_O^L)\),其中L是Mixops的总数。

Feature和Architecture参数

为了选择大部分有效的features,我们会引入M个real-valued mask参数\(\lbrace \theta_i \rbrace_{i=1}^M\),其中M是涉及的features数目。不像[5]中会对每个weights进行二值化(binairzes),我们会将整个feature embedding进行二值化。这里,每个feature \(f_i\)的独立的mask \(g_i\)会被定义成以下的Bernoulli分布:

\[g_i = \begin{cases} [1, \cdots, 1], & \text{with probability $\theta_i$} \\ [0, \cdots, 0], & \text{with probability $1-\theta_i$} \end{cases}\]

…(1)

其中:1s和0s的维度通过\(f_i\)的embedding维度来决定。会为样本的每个batch抽样M个独立Bernoulli分布结果。由于binary masks \(\lbrace g_i \rbrace_{i=1}^M\)会涉及计算图,feature参数\(\lbrace \theta_i \rbrace_{i=1}^M\)可以通过BP进行更新。

根据结构参数,我们会展示:在给定Mixop i的N个路径的outputs下,如何获得Mixop \(i+1\)的N个outputs?

图片名称

图3 一个示例:通过递归方式计算每个Mixop的期望延迟。以上式中的\(T_{1024 \times 1024}\)为例。它意味着,一个multi-layer perceptron的延迟,具有输入维度1024和输出维度1024。它通过对我们的搜索引擎的真实请求进行回放(replay)到该特定网络结构中进行统计。图中的每个p是由等式(2)的operator strength

如图3所示,Mixop i的路径表示为\(m_O^i = \lbrace O_1^i, O_2^i, \cdots, O_N^i\rbrace\),我们会介绍N个real-valued结构参数\(\lbrace \alpha_j^{i+1} \rbrace_{j=1}^N\)。接着,Mixop \(i+1\)的第k个output计算如下:

\[O_k^{i+1} = \sum_{j=1}^N p_j^{i+1} MLP_j^k(O_j^i) \\ = \sum\limits_{j=1}^N \frac{exp(\alpha_j^{i+1})}{\sum_{m=1}^N exp(\alpha_m^{i+1})} MLP_j^k(O_j^i)\]

…(2)

其中:

  • multi-layer perceptron \(MLP^k\)具有相同的units数目\(O_k^{i+1}\)
  • \(p_j^{i+1} := \frac{exp(\alpha_j^{k+1})}{\sum_{m=1}^N exp(\alpha_m^{i+1})}\)可以被看成是在Mixop i+1中的第j个operator

在这种continuous relaxation后,我们的目标是:在所有mixed op中联合学习结构参数以及weight参数。

Latencey Constraint

除accuracy外,当设计preranking系统时,latency(not FLOPs或embedding维度)是另一个非常重要的目标。为了让latency不同,我们会将一个网络的latency建模为一个关于neural network结构的continous function。在我们的场景中,存在两个因子:feature相关的latency和结构相关的latency。features可以被进一步从latency的角度划分成两个类别:从matching stage传来过的、以及从in-memory dataset中检索过来的,分别表示成 \(F_1\)和\(F_2\)。如上,我们有关于一个指定特征\(f_i\)的期望latency

\[E[latency_i] = \theta_i \times L_i\]

…(3)

其中:

  • \(L_i\)是返回时间(return time),它可以被服务器记录。

接着,\(E[latency_i]\)的随结构参数的梯度可以给定:\(\frac{\partial E[latency_i]}{ \partial \theta_i} = L_i\)。接着,期望的feature相关latencey可以以如下方式计算:

\[E[latency] = max_{f_i \in F_1, f_j \in F_2} (E[latency_i] + \beta \cdot |F_1|, E[latency_j] + \gamma \cdot |F_2|)\]

…(4)

其中:

  • \(F_k\)表示了在\(F_k, k=1, 2\)的features数目
  • \(\beta, \gamma\)影响着底层系统的不同并发数,可以由经验决定

我们将这种expected feature latency包含到常规loss function中,乘以一个scaling因子\(\lambda\),它会控制着在accuracy和latency间的tradeoff。对于feature selection的最终的loss function为:

\[Loss_1 = Loss_{Ranking} (y, f(X; \theta, W_{Ranking})) + \lambda E[latency]\]

…(5)

其中,f表示ranking network。

相似的,对于Mixop i+1的结构latency,我们可以通过递归来计算它的expected latency \(E[latency^{'i+1}]\),如图3的右图所示。由于这些ops可以在inference期间按顺序执行,preranking network的expected latency可以被表示为last Mixop的expected latency:

\[E[latency'] = E[latency'^{L}]\]

Ranking系统的监督

知识蒸馏(KD),会将teacher model的泛化能力转移给student model,受广泛关注。而在监督学习中的常规的one-hot label被限定在0/1 label内,从teacher model的soft probability output会对student model的知识有贡献。记住,在preranking系统中当前KD方法的一个缺点是:如果它只能将teacher的知识转移给具有确定网络结构的student。受AKD的启发,我们提出添加一个distillation loss给结构搜索过程(architecture search)。特别的,我们会采用由ranking models产生的soft targets作为监督信号来指导每个Mixop的选择。因此对结构选择的final loss function:

\[Loss2 = (1-\lambda_1) Loss_{pre-Ranking}(y, g(X; \theta, \alpha, W_{pre\-Ranking})) + \lambda_1 || r(x) - p(x)||_2^2 + \lambda_2 E[latency']\]

…(7)

其中,g是preranking network,\(Loss_{pre\-Ranking}\)表示使用已知hard labels y的pre-ranking pure loss。r(x)和p(x)分别是关于ranking和preranking network的final softmax activation outputs。

我们会进一步讨论\(\lambda_1\)的效果和第4.5节中的distilation loss。\(\lambda_2\)是scaling factor,它控制着在accuracy和latency间的tradeoff。Loss1和Loss2会一起优化,产生最终的multi-task loss function:

\[Loss = Loss1 + Loss2\]

…(8)

在Loss1和Loss2间的超参数的权衡的缺失来自于:Loss1只会最优化feature mask参数,而Loss2会最优化preranking model中的结构参数和weights。我们选择该策略是因为,它在经验上要好于没有gradient block的模型,如表5所示。Loss1和Loss2相互相关,Loss2的输入是masked embedding,其中:mask参数会通过Loss1在训练期间持续优化。为了获得最终的preranking结构,我们会保留在每个Mixop中的最强的features和operators,从头到尾都保留它。AutoFAS的整个训练过程如算法1所示。

图片名称

算法1

4.实验

对focal loss又有一些loss方法,在《Gradient Harmonized Single-stage Detector》提出了GHM loss。

3.梯度协调机制(Gradient Harmonizing Mechanism)

3.1 问题描述

与(Lin et 2017b)相似,这里主要关注one-stage object detection分类:它的样本(forgeground/background)的分类是相当不均衡的(imbalanced)。对于一个候选方框(candidate box), 假设:

  • \(p \in [0, 1]\)是由模型预估的概率
  • \(p^* \in \lbrace 0, 1 \rbrace\)是对于一个指定class的ground truth label

考虑二元cross entropy loss:

\[L_{CE}(p, p^*) = \begin{cases} -log(p), & \text{if $p^*=1$} \\ -log(p-1), & \text{if $p^*=0$} \end{cases}\]

假设x是模型的直接输出,比如:sigmoid(x),我们有随x的梯度:

\[\frac{\partial{L_{CE}}}{\partial{x}} = \begin{cases} p - 1, & \text{if $p^*=1$} \\ p, & \text{if $p^*=0$} \end{cases} \\ = p - p^*\]

…(2)

我们如下定义g:

\[g = | p - p^* | = \begin{cases} 1 - p, & \text{if $p^*=1$} \\ p, & \text{if $p^*=0$} \end{cases}\]

…(3)

g等于梯度w.r.t x的范数(norm)。g的值表示一个样本的属性(例如:easy或hard),并隐含表示了样本在全局梯度上的影响。尽管梯度的严格定义是在整个参数空间上的,它意味着g是一个关于样本梯度的相对范数,出于便利,我们称g为gradient norm.

图2展示了来自一个收敛的one-stage detection model的g分布。由于easy negatives占据绝大多数,我们使用log axis来展示样本比例,来演示具有不同属性的样本变种的详情。它可以被看成是:very easy examples的数目是相当大的,对全局梯度具有一个很大影响。再者,我们可以看到,一个收敛模型仍不能处理一些very hard examples:它们的数目要比中等困难的样本还要更大。这些very hard examples可以被看成是异类(outliers),因为它们的梯度方向趋势与大量其它样本的梯度方向非常不同。也就是说,如果收敛模型会被强制学习对这些异类更好的分类,大量其它样本的分类趋向于更少的精准度(accurate)。

图片名称

图2 来自一个收敛的one-stage detection模型的gradient norm g分布。注意,y轴使用log scale,因为具有不同gradient norm的样本数,可以通过幅值的阶数进行区分

梯度密度(Gradient Density)

为了处理梯度范数分布的不一致问题,我们介绍了一种会考虑Gradient Density的协调方案。训练样本的Gradient Density function被公式化成等式(4):

\[GD(g) = \frac{1}{l_{epsilon}(g)} \sum\limits_{k=1}^N \delta_{epsilon} (g_k, g)\]

…(4)

其中,\(g_k\)是第k个样本的gradient norm。并且:

\(\delta_{\epsilon}(x, y) = \begin{cases} 1, & \text{if $y - \frac{\epsilon}{2} <= x < y + \frac{\epsilon}{2} $} \\ p, & \text{otherwise} \end{cases}\) …(5)

\[l_{epsilon}(g) = min(g + \frac{\epsilon}{2}, 1) - max(g - \frac{\epsilon}{2}, 0)\]

…(6)

g的gradient density表示了位于以g区域中心、长度为\(\epsilon\)、通过区域合法长度进行归一化的样本数目。

现在,我们定义了梯度密度协调参数(gradient density harmonizing parameter)为:

\[\beta_i = \frac{N}{GD(g_i)}\]

…(7)

其中,N是样本总数。为了更好理解梯度密度协调参数,我们可以将它重写成:\(\beta_i = \frac{1}{GD(g_i)/N}\)。其中:

  • \({GD(g_i)/N}\):是一个normalizer,它表示与第i个样本有邻近梯度的样本比例。如果样本随梯度被均匀分布,则对于任意\(g_i\),有\(GD(g_i) = N\),每个样本具有相同的\(\beta_i = 1\),它意味着无需任何改变。否则,具有大密度的样本会通过normalizer被相对地进行down-weighted。

GHM-C Loss

通过将\(\beta_i\)看成是第i个样本的loss weight,我们将GHM嵌入到分类loss,loss function的gradient density harmonized形式如下:

\[L_{GHM\-C}=\frac{1}{N} \sum\limits_{i=1}^N \beta_i L_{CE} (p_i, p_i^*) \\ = \sum\limits_{i=1}^N \frac{L_{CE}(p_i, p_i^*)}{GD(g_i)}\]

…(8)

图3展示了不同loss的重新公式化后的gradient norm。这里我们采用CE的原始gradient norm(例如:\(g = \| p - p^* \|\))作为convenient view的x轴,因为该density会根据g进行计算。我们可以看到,Focal Loss和GHM-C loss的曲线具有相似的趋势,它暗示着具有最好参数的Focal Loss与均匀梯度协调(uniform gradient harmonizing)是相似的。更进一步,GHM-C具有Focal loss所没有的多个优点:对异常点的梯度贡献做down-weighting。

图片名称

图3 不同loss function的 reformulated gradient norm w.r.t 原始gradient norm g。y轴使用log scale来更好展示FL与GHM-C的细节

有了GHM-C loss,大量very easy examples可以被down-weighted,异常点也会被轻微down-weighted,这可以同时解决属性不平衡(attribute imbalance)问题以及异常点问题(outliers problem)。从图1的右图所示,我们可以更好看到:GHM-C可以使得不同group的examples的总梯度贡献很好协调。由于gradient density会在每轮迭代被计算,examples的weights会像focal loss那边随g(或x)不固定,但会适配模型的当前状态和mini-batch。GHM-C loss的动态特性会让训练更高效和健壮。

图片名称

图1

#

facebook在《Focal Loss for Dense Object Detection》提出了focal loss。

3.Focal loss

focal loss被设计用来解决one-stage object detection场景,该场景在训练期间在foreground和backgroud classes间是极不平衡的(extreme imbalance)(例如:1:1000)。我们会从二分类的cross entropy(CE)开始来介绍focal loss:

\[CE(p, y) = \begin{cases} -log(p), & \text{if $y=1$} \\ -log(p-1), & \text{otherwise.} \end{cases}\]

…(1)

其中:

  • \(y \in \lbrace \pm \rbrace\):表示ground-truth class
  • \(p \in [0, 1]\):是对于label y=1的class的模型估计概率

对于简洁性,我们定义了\(p_t\):

\[p_t = \begin{cases} p, & \text{if $y=1$} \\ 1-p, & \text{otherwise.} \end{cases}\]

并重写为:\(CE(p, y) = CE(p_t) = - log(p_t)\)。

CE loss可以被看成是图1中的蓝色曲线(top)。在该图中可以发现,该loss的一个重要属性是,即便是易分类样本(easy classified examples)(\(p_t \gg 0.5\)),也会带来一个具有non-trivial规模的loss。当我们在大量easy样本(easy examples)之上进行求和时,这些小的loss values会淹没掉稀有类(rare class)

图片名称

图1 我们提出了一种新的loss:Focal Loss,它会添加一个因子\((1 - p_t)^{\gamma}\)到标准的cross entropy criterion中。设置\(\gamma > 0\)可以减小对于well-classified样本(\(p_t > 0.5\))的相对loss,从而更多关注hard、misclassified样本。如实验所示,提出的focal loss可以使训练:在出现许多easy background examples下的高度精准的dense object detector.

3.1 Balanced Cross Entropy

解决class imbalance的一个常用方法是:为class为1引入一个weighting因子\(\alpha \in [0, 1]\),为class为-1引入\((1 - \alpha)\)。惯例上,\(\alpha\)可以通过逆分类频次(inverse class frequency)来设置,或者被看成是通过cross validation设置的一个超参数。对于简洁性,我们定义了:

\[CE(p_t) = -\alpha_t log(p_t)\]

…(3)

该loss是对CE的一个简单扩展,我们会作为一个实验baseline进行对比。

3.2 Focal Loss定义

如实验所示,在dense detectors的训练期间遇到大类不均衡(large class imbalance)会淹没掉cross entropy loss。易分类负样本(Easily classified negatives)构成了loss的绝大多数,会主宰gradient。而\(\alpha\)会平衡正样本/负样本的importance,它不会区分easy/hard样本。作为替代,我们提出:将loss function变形为:对easy examples进行down-weight,从而使得在训练时更关注hard negatives

更正式的,我们提出了增加一个modulating factor \((1 - p_t)^{\gamma}\)到cross entropy loss中,可调参数为\(\gamma \geq 0\),我们定义focal loss为:

\[FL(p_t) = -(1-p_t)^{\gamma} log(p_t)\]

…(4)

该focal loss在图1中根据\(\gamma \in [0, 5]\)的多个值进行可视化。我们注意到focal loss的两个特性

  • (1) 当一个样本被误分类时,\(p_t\)会很小,调节因子(modulating factor)接近1,loss不受影响。随着\(p_t \rightarrow 1\),该因子会趋向为0,对于well-classified的样本的loss会down-weighted。
  • (2) focusing参数\(\gamma\)会平滑地调节easy样本被down-weighted的rate。当\(\gamma=0\)时,FL接近于CE,随着\(\gamma\)的增加,调节因子的影响也可能增加(我们发现\(\gamma=2\)在实验中表现最好)

直觉上,调节因子会减小来自easy examples的loss贡献,并拓宽一个样本接收到low loss的范围。例如:

  • 在\(\gamma=2\),使用\(p_t=0.9\)分类的easy样本会比CE低100倍loss,而使用\(p_t \approx 0.968\)则具有1000倍的更低loss。
  • 对于\(p_t \leq 0.5\)和\(\gamma=2\),它的loss会被缩放到至多4倍,这会增加纠正误分类样本(mis-classified examples)的importance。

惯例上,我们使用一个focal loss的\(\alpha\)-balanced变种:

\[FL(p_t) = -\alpha_t (1 - p_t)^{\gamma} log(p_t)\]

…(5)

我们在实验中采用该格式,因为它对比non-\(\alpha\)-balanced形式在accuracy上有微小提升。最终,我们注意到,该loss layer的实现在计算loss时会组合上sigmoid操作来计算p,产生更好的数值稳定性

而在我们的实验结果中,我们使用focal loss定义。在附录中,我们考虑focal loss的其它实例,并演示相同的效果。

3.3 类不平衡和模型初始化

二分类模型缺省被初始化为:对于y=1或-1具有相等的输出概率。在这样的初始化下,出现了Class Imbalance,loss会由于高频分类(frequent class)主导了total loss,造成在early training中的不稳定。为了消除它,对于rare class(foreground)在训练早期由模型估计的p值,我们引入一个“先验(prior)”概念。我们将prior通过\(\pi\)表示,并将它设置成:对于rare class的样本,以便模型的估计p很低,例如:0.01。我们注意到,在模型初始化时,这是个变化,而在loss function上并不是。我们发现,这对于cross entropy和focal loss来说,对于heavy class imbalance的case,可以提升训练稳定性。

#

weibo在《MaskNet: Introducing Feature-Wise Multiplication to CTR Ranking Models by Instance-Guided Mask》中抽出了MaskNet。

摘要

点击率(CTR)预估已成为许多现实世界应用中最基本的任务之一,对于排序模型来说,有效捕捉复杂的高阶特征非常重要。浅层前馈网络在许多最先进的深度神经网络(DNN)模型中被广泛使用,例如FNN、DeepFM和xDeepFM,以隐式捕捉高阶特征交互。然而,一些研究已经证明,成瘾性特征交互(addictive feature interaction),特别是前馈神经网络,在捕捉常见特征交互方面是低效的。

为了解决这个问题,我们通过提出实例引导掩码(instance-guided mask),它引入了特定的乘法操作到DNN排序系统中,该掩码在特征嵌入和前馈层上执行逐元素乘积(element-wise product),由输入实例引导。

我们还通过在本文中提出MaskBlock,将DNN模型中的前馈层转变为成瘾性(addictive)和乘法特征交互的混合体。MaskBlock结合了层归一化(layer normalization)、实例引导掩码(instance-guided mask)和前馈层,并且是设计新排序模型的基本构建块,可在不同配置下使用。本文中由MaskBlock组成的模型称为MaskNet,提出了两种新的MaskNet模型,以展示MaskBlock作为组成高性能排序系统的基本构建块的有效性。

在三个真实世界数据集上的实验结果表明,我们提出的MaskNet模型显著优于DeepFM和xDeepFM等最先进的模型,这意味着MaskBlock是组成新的高性能排序系统的有效基本构建单元。

1 引言

点击率(CTR)预测是预测用户点击推荐item的概率。它在个性化广告和推荐系统中扮演着重要角色。许多模型已被提出来解决这个问题,例如逻辑回归(LR)[16]、多项式-2(Poly2)[17]、基于树的模型[7]、基于张量的模型[12]、贝叶斯模型[5]和领域感知分解机(FFMs)[11]。近年来,使用深度神经网络(DNN)进行CTR估计也成为该领域的研究趋势,一些基于深度学习的模型被引入,如分解机支持的神经网络(FNN)[24]、注意力分解机(AFM)[3]、宽与深(W&D)[22]、DeepFM[6]、xDeepFM[13]等。

特征交叉对于CTR任务至关重要,对于排序模型来说,有效捕捉这些复杂特征非常重要。大多数DNN排序模型,如FNN、W&D、DeepFM和xDeepFM,使用浅层MLP层以隐式方式建模高阶交互,并且它是当前最先进的排序系统的重要组成部分。

然而,Alex Beutel等人[2]已经证明,成瘾性特征交互,特别是前馈神经网络,在捕捉常见特征交叉方面是低效的。他们提出了一种简单但有效的方法,称为”隐式交叉(latent cross)“,这是RNN模型中上下文嵌入和神经网络隐藏状态之间的一种乘法交叉。最近,Rendle等人的工作[18]也表明,一个精心配置的点积基线在协同过滤中大大优于MLP层。虽然MLP理论上可以近似任何函数,但他们表明,使用MLP学习点积并非易事,并且对于一个相当大的嵌入维度,以高准确度学习点积需要大量的模型容量和许多训练数据。他们的工作还证明了MLP层在建模复杂特征交互方面的低效性

受到”隐式交叉”[2]和Rendle的工作[18]的启发,我们关注以下问题:我们能否通过引入特定的乘法操作来改进DNN排序系统,使其有效地捕捉复杂的特征交互?

为了克服前馈层捕捉复杂特征交叉的低效性问题,我们在本文中引入了一种特殊的乘法操作到DNN排序系统中。首先,我们提出了一个实例引导掩码,在特征嵌入和前馈层上执行逐元素乘(element-wise product)。实例引导掩码利用从输入实例收集的全局信息,以统一的方式动态突出特征嵌入和隐藏层中的信息元素。

采用实例引导掩码有两个主要优点:

  • 首先,掩码和隐藏层或特征嵌入层之间的逐元素乘积以统一的方式将乘法操作引入DNN排序系统,更有效地捕捉复杂特征交叉。
  • 其次,这是一种由输入实例引导的细粒度位级注意力(finegained b bitwise attention),既可以减弱特征嵌入和MLP层中的噪声影响,同时突出DNN排序系统中的信息信号。

通过结合实例引导掩码、前馈层和层归一化(layer norm),我们提出了MaskBlock,将通常使用的前馈层转变为成瘾性和乘法特征交互的混合体。

  • 实例引导掩码(instance-guided mask)引入了乘法交叉,
  • 前馈层(feed-forward layers)聚合了掩蔽信息,以更好地捕捉重要的特征交互
  • 层归一化(layer normalization)可以简化网络的优化

MaskBlock可以被视为在某些配置下设计新排序模型的基本构建块。本文中由MaskBlock组成的模型称为MaskNet,提出了两种新的MaskNet模型,以展示MaskBlock作为组成高性能排序系统的基本构建块的有效性。

我们工作的成果总结如下:

  • (1) 在这项工作中,我们提出了一个实例引导掩码,在DNN模型的特征嵌入和前馈层上执行逐元素乘积。实例引导掩码中包含的全局上下文信息被动态地整合到特征嵌入和前馈层中,以突出重要元素。
  • (2) 我们提出了一个名为MaskBlock的基本构建块,它由三个关键组件组成:实例引导掩码、前馈层和层归一化模块。通过这种方式,我们将标准DNN模型中广泛使用的前馈层转变为成瘾性和乘法特征交互的混合体。
  • (3) 我们还提出了一个新的排序框架,名为MaskNet,利用MaskBlock作为基本构建单元来组成新的排序系统。更具体地说,本文设计了基于MaskBlock的串行MaskNet模型和并行MaskNet模型。串行排序模型逐块堆叠MaskBlock,而并行排序模型在共享特征嵌入层上并行放置多个MaskBlocks。
  • (4) 在三个真实世界数据集上进行了广泛的实验,实验结果表明我们提出的两个MaskNet模型显著优于现有最先进模型。结果暗示MaskBlock确实通过实例引导掩码将乘法操作引入DNN模型,从而增强了DNN模型捕捉复杂特征交互的能力。

本文的其余部分组织如下。第2节介绍了与我们提出的模型相关的一些相关工作。第3节详细介绍了我们提出的模型。第4节展示了三个真实世界数据集上的实验结果并进行了讨论。第5节总结了本文的工作。

2.相关工作

3 我们提出的模型

在本节中,我们首先描述特征嵌入层。然后,将介绍我们提出的实例引导掩码、MaskBlock和MaskNet结构的细节。最后,将介绍作为损失函数的对数损失函数(log loss)。

3.1 嵌入层

CTR任务的输入数据通常包括稀疏和密集特征,其中稀疏特征大多是分类类型。这些特征被编码为one-hot向量,这通常会导致对于大词汇量来说特征空间维度过高。解决这个问题的常见方法是引入嵌入层。通常,稀疏输入可以表述为:

\[x = [x_1, x_2, ..., x_f] \quad (1)\]

其中:

  • f表示fields的数量
  • $ x_i \in \mathbb{R}^n $ 表示一个具有n个特征的categorical field的one-hot向量;对于一个numerical field,它是只有一个值的向量

我们可以通过以下方式为one-hot向量$x_i$获得特征嵌入$e_i$:

\[e_i = W_e x_i \quad (2)\]

其中:

  • $W_e \in \mathbb{R}^{k \times n} $ 是n个特征的嵌入矩阵,k是字段嵌入的维度。

数值特征 $x_j$ 也可以通过以下方式转换到相同的低维空间:

\[e_j = V_j x_j \quad (3)\]

其中:

  • $ V_j \in \mathbb{R}^k $是对应字段嵌入,大小为k。

通过上述方法,嵌入层应用于原始特征输入,将其压缩到低维、dense的实值向量。嵌入层的结果是宽连接向量:

\[V_{emb} = \text{concat}(e_1, e_2, ..., e_i, ..., e_f) \quad (4)\]

其中:

  • f 表示fields数量
  • $ e_i \in \mathbb{R}^k $表示一个字段的嵌入。

尽管输入实例的特征长度可能不同,但它们的嵌入长度相同,为$ f \times k $,其中k是字段嵌入的维度。

我们使用实例引导掩码将乘法操作引入DNN排序系统,这里的所谓”实例”在本文的后续部分指的是当前输入实例的特征嵌入层。

3.2 实例引导掩码

我们通过实例引导掩码从输入实例中收集全局信息,以动态突出特征嵌入(feature embedding)和前馈层(feed-forward layer)中的有信息的元素。对于特征嵌入,掩码强调具有更多信息的关键元素,以有效表示这一特征。对于隐藏层中的神经元,掩码通过考虑输入实例中的上下文信息,帮助重要的特征交互脱颖而出。除了这一优势外,实例引导掩码还将乘法操作引入DNN排序系统,以更高效地捕获复杂的特征交叉。

如图1所示,实例引导掩码中使用了两个具有恒等函数的全连接(FC)层。请注意,实例引导掩码的输入始终来自输入实例,也就是说,来自特征嵌入层。

图片名称

图1 Instance-Guided Mask的网络结构

第一层FC层称为“聚合层”,与第二层FC层相比,它是一个相对更宽的层,以便更好地收集输入实例中的全局上下文信息。聚合层有参数 $W_{d1}$,这里d表示第d个掩码。对于特征嵌入和不同的MLP层,我们采用具有其参数的不同实例引导掩码,以从输入实例中学习捕获每层的各种信息。

第二层FC层称为“投影层”,它将维度降低到与特征嵌入层$ V_{emb}$ 或隐藏层$V_{hid}$相同的大小,参数为$W_{d2}$。形式上,

\[V_{mask} = W_{d2}(\text{ReLU}(W_{d1} V_{emb} + \beta_{d1})) + \beta_{d2} \quad (5)\]

其中:

  • $ V_{emb} \in \mathbb{R}^{m=f \times k} $:指的是输入实例的嵌入层
  • $ W_{d1} \in \mathbb{R}^{t \times m}$ 和 $ W_{d2} \in \mathbb{R}^{z \times t}$ 是实例引导掩码的参数,
  • t和 z分别表示聚合层和投影层的神经元数量,
  • f表示字段数量,
  • k是字段嵌入的维度。
  • $ \beta_{d1} \in \mathbb{R}^{t \times m} $ 和 $ \beta_{d2} \in \mathbb{R}^{z \times t} $是两个FC层的学习偏置。

请注意,聚合层通常比投影层宽,因为投影层的大小需要与特征嵌入层或MLP层的大小相等。因此,我们定义了大小 $ r = t/z $ 作为缩减比率,这是一个超参数,用于控制两层神经元数量的比率。

逐元素乘积在此工作中被用来将实例引导掩码聚合的全局上下文信息整合到特征嵌入或隐藏层,如下所示:

\(V_{mask_{emb}} = V_{mask} \odot V_{emb} \\ V_{mask_{hid}} = V_{mask} \odot V_{hid}\) …(6)

其中:

  • $ V_{emb} $ 表示嵌入层
  • $ V_{hid} $ 表示DNN模型中的前馈层
  • $ \odot $ 表示两个向量之间的逐元素乘积,

如下所示:

\[V_i \odot V_j = [V_{i1} \cdot V_{j1}, V_{i2} \cdot V_{j2}, ..., V_{iu} \cdot V_{ju}] (7)\]

这里:

  • u 是向量 $V_i$ 和 $ V_j$的大小。

实例引导掩码可以被看作是一种特殊类型的位级注意力或门控机制,它使用输入实例中包含的全局上下文信息来指导训练期间的参数优化。$ V_{mask}$ 中的较大值意味着模型动态识别特征嵌入或隐藏层中的一个重要元素。它被用来增强向量 $ V_{emb}$ 或 $ V_{hid} $ 中的元素。相反,$ V_{mask} $中的较小值将通过减少对应向量 $ V_{emb} $或 $ V_{hid}$中的值来抑制信息较少的元素甚至噪声。

采用实例引导掩码的两个主要优点是:

  • 首先,掩码和隐藏层或特征嵌入层之间的逐元素乘积以统一的方式将乘法操作引入DNN排序系统,更有效地捕捉复杂特征交互。
  • 其次,这种由输入实例引导的细粒度位级注意力可以同时减弱特征嵌入和MLP层中的噪声影响,同时突出DNN排序系统中的信息信号。

3.3 掩码块

为了解决前馈层在深度神经网络(DNN)模型中捕捉复杂特征交互的效率问题,我们在这项工作中提出了一个名为掩码块(MaskBlock)的基本构建模块,用于DNN排序系统,如图2和图3所示。所提出的掩码块由三个关键组件组成:层归一化模块、实例引导掩码和前馈隐藏层。层归一化可以简化网络的优化。实例引导掩码为标准DNN模型的前馈层引入了乘法交互,并使前馈隐藏层聚合掩码信息,以更好地捕捉重要的特征交互。通过这种方式,我们将标准DNN模型中广泛使用的前馈层转变为一种成瘾性和乘法特征交互的混合体。

图片名称

图2

首先,我们简要回顾一下层归一化(LayerNorm)的公式。

层归一化

通常,归一化的目的是确保信号在通过网络传播时具有零均值和单位方差,以减少“协变量偏移”[10]。例如,层归一化(Layer Norm或LN)[1]被提出以简化循环神经网络的优化。具体来说,设 $ \mathbf{x} = (x_1, x_2, …, x_H) $ 表示大小为 H 的输入向量到归一化层。层归一化将输入 $ \mathbf{x} $ 重新中心化和重新缩放,公式如下: \(h = g \odot \mathcal{N}(x) + b, \quad \mathcal{N}(x) = \frac{x - \mu}{\delta}, \\ \mu = \frac{1}{H} \sum_{i=1}^{H} x_i, \quad \delta = \sqrt{\frac{1}{H} \sum_{i=1}^{H} (x_i - \mu)^2}\)

其中:

  • h是层归一化层的输出。
  • $\odot$是逐元素乘法操作。
  • $\mu$ 和 $\delta$ 分别是输入的均值和标准差。
  • 偏置b和增益g是具有相同维度H的参数。

作为掩码块(MaskBlock)的关键组件之一,层归一化可以应用于特征嵌入和前馈层。对于特征嵌入层,我们将每个特征的嵌入视为一个层,以如下方式计算LN的均值、标准差、偏置和增益:

\(\text{LN}_{\text{EMB}}(V_{\text{emb}}) = \text{concat} \left( \text{LN}(e_1), \text{LN}(e_2), ..., \text{LN}(e_i), ..., \text{LN}(e_f) \right)\) …(9)

对于DNN模型中的前馈层,LN的统计数据是在相应隐藏层中包含的神经元之间估计的,如下所示:

\[\text{LN}_{\text{HID}}(V_{\text{hidden}}) = \text{ReLU}(\text{LN}(W_i X))\]

其中:

  • $X \in \mathbb{R}^t$ 指的是前馈层的输入
  • $W_i \in \mathbb{R}^{m \times t}$ 是层的参数,
  • t和m分别表示输入层的大小和前馈层的神经元数量。

请注意,我们在多层感知器(MLP)上有两处可以放置归一化操作:一处是在非线性操作之前,另一处是在非线性操作之后。我们发现,在非线性之前进行归一化的性能始终优于在非线性之后进行归一化的性能。因此,在我们的论文中,MLP部分使用的所有归一化都放在非线性操作之前,如公式(4)所示。

特征嵌入上的掩码块

我们通过结合三个关键元素:层归一化、实例引导掩码和随后的前馈层,提出了掩码块。掩码块可以堆叠形成更深的网络。根据每个掩码块的不同输入,我们有两种掩码块:特征嵌入上的掩码块和掩码块上的掩码块。我们将首先介绍本小节中图2所示的特征嵌入上的掩码块。

特征嵌入 $ V_{\text{emb}} $ 是特征嵌入上掩码块的唯一输入。在对嵌入 $ V_{\text{emb}} $ 进行层归一化操作后,掩码块利用实例引导掩码通过逐元素乘法突出显示 $ V_{\text{emb}} $ 中的信息元素,形式上表示为:

\[V_{\text{maskedEmb}} = V_{\text{mask}} \odot \text{LN}_{\text{EMB}}(V_{\text{emb}})\]

其中:

  • $\odot$ 表示实例引导掩码和归一化向量 $ \text{LN}{\text{EMB}}(V{\text{emb}}) $ 之间的逐元素乘法,
  • $ V_{\text{maskedEmb}} $表示掩码特征嵌入。

请注意,实例引导掩码 $ V_{\text{mask}} $ 的输入也是特征嵌入 $ V_{\text{emb}} $。

我们引入了一个前馈隐藏层以及随后的层归一化操作到掩码块中,通过归一化的非线性变换更好地聚合掩码信息。掩码块的输出可以按以下方式计算:

\[V_{\text{out}} = \text{LN}_{\text{HID}}(W_i V_{\text{maskedEmb}}) = \text{ReLU}(\text{LN}(W_i (V_{\text{mask}} \odot \text{LN}_{\text{EMB}}(V_{\text{emb}})))))\]

其中:

  • $ W_i \in \mathbb{R}^{q \times n} $ 是第 i 个掩码块中前馈层的参数,
  • n表示 $ V_{\text{maskedEmb}} $ 的大小,
  • q表示前馈层的神经元数量。

实例引导掩码将逐元素乘法引入特征嵌入中,作为一种细粒度的注意力机制,而特征嵌入和隐藏层上的归一化都简化了网络优化。掩码块中的这些关键组件帮助前馈层更有效地捕获复杂的特征交叉。

掩码块上的掩码块

图片名称

图3

在这一部分,我们将介绍如图3所示的掩码块上的掩码块。这种掩码块有两种不同的输入:

  • 特征嵌入 $ V_{\text{emb}} $
  • 前一个掩码块的输出 $ V_{\text{out}}^{(p)} $

这种掩码块的实例引导掩码的输入始终是特征嵌入 $V_{\text{emb}}$。掩码块利用实例引导掩码通过逐元素乘法突出前一个掩码块输出 $ V_{\text{out}}^{(p)} $中的重要特征交互,形式上表示为:

\[V_{\text{maskedHid}} = V_{\text{mask}} \odot V_{\text{out}}^{(p)}\]

其中:

  • $ \odot $ 表示实例引导掩码 $ V_{\text{mask}} $ 和前一个掩码块的输出 $ V_{\text{out}}^{(p)} $ 之间的逐元素乘法
  • $ V_{\text{maskedHid}} $ 表示掩码隐藏层。

为了更好地捕获重要的特征交互,掩码块中又引入了另一个前馈隐藏层以及随后的层归一化。通过这种方式,我们将标准DNN模型中广泛使用的前馈层转变为一种成瘾性和乘法特征交互的混合体,以避免那些成瘾性特征交叉模型的无效性。掩码块的输出可以按以下方式计算:

\(V_{\text{out}} = \text{LN}_{\text{HID}}(W_i V_{\text{maskedHid}}) = \text{ReLU}(\text{LN}(W_i (V_{\text{mask}} \odot V_{\text{out}}^{(p)}))))\) …(14)

3.4 掩码网络(MaskNet)

基于掩码块(MaskBlock),根据不同的配置,可以设计出各种新的排序模型。由掩码块组成的排序模型在这项工作中被称为掩码网络(MaskNet)。我们还提出了两种使用掩码块作为基本构建模块的掩码网络模型。

序列掩码网络(Serial MaskNet)

我们可以将一个掩码块堆叠在另一个掩码块之后来构建排序系统,如图4左侧模型所示。第一个块是特征嵌入上的掩码块,所有其他块都是掩码块上的掩码块,形成更深的网络。预测层放置在最终掩码块的输出向量上。我们在论文中将这种序列配置下的掩码网络称为序列掩码网络(SerMaskNet)。每个掩码块中实例引导掩码的所有输入都来自特征嵌入层 $ V_{\text{emb}} $,这使得序列掩码网络模型看起来像是一个在每个时间步共享输入的RNN模型。

并行掩码网络(Parallel MaskNet)

我们提出另一种掩码网络,通过在共享的特征嵌入层上并行放置几个掩码块,如图4右侧模型所示。在这种配置下,每个块的输入仅是共享的特征嵌入 $ V_{\text{emb}} $。我们可以将这种排序模型视为像MMoE[15]那样由多个专家混合而成。每个掩码块关注特定类型的重要特征或特征交互。我们通过连接每个掩码块的输出来收集每个专家的信息,如下所示:

\(V_{\text{merge}} = \text{concatenate}(V_{\text{out},1}, V_{\text{out},2}, ..., V_{\text{out},i}, ..., V_{\text{out},u})\) …(14)

其中:

  • $ V_{\text{out},i} \in \mathbb{R}^q $ 是第i个掩码块的输出
  • q表示掩码块中前馈层的神经元数量
  • u是掩码块的数量。

为了进一步合并每个专家捕获的特征交互,多个前馈层堆叠在连接信息 $ V_{\text{merge}} $上。设 $ H_0 = V_{\text{merge}} $ 表示连接层的输出,然后 $H_0$ 被送入深度神经网络,前馈过程为:

\(H_l = \text{ReLU}(W_l H_{l-1} + \beta_l)\) …(16)

其中:

  • l是深度,
  • ReLU是激活函数。
  • $ W_l$,$ \beta_l $,$ H_l $ 分别是第l层的模型权重、偏置和输出。预测层放置在多个前馈网络的最后一层。

在本文的后续部分,我们称这个版本的掩码网络为“并行掩码网络”(ParaMaskNet)。

3.5 预测层

总结来说,我们给出了我们提出的模型输出的总体公式如下:

\(\hat{y} = \delta(w_0 + \sum_{i=1}^{n} w_i x_i)\) …(17)

其中:

  • $ \hat{y} \in (0, 1) $ 是预测的点击率(CTR)值,
  • $ \delta $ 是Sigmoid函数,
  • $ n $ 是最后一个掩码块的输出大小(序列掩码网络SerMaskNet)或前馈层(并行掩码网络ParaMaskNet),
  • $ x_i $ 是前馈层的位值,
  • $ w_i $ 是每个位值学习到的权重。

对于二元分类,损失函数是日志损失:

\(L = -\frac{1}{N} \sum_{i=1}^{N} y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i)\) …(18)

其中:

  • $ N $ 是训练实例的总数,
  • $y_i$ 是第i个实例的真实标签,
  • $\hat{y}_i $是预测的CTR。

优化过程是最小化以下目标函数:

\[\mathcal{E} = L + \lambda \| \Theta \|\]

其中:

  • $ \lambda $ 表示正则化项,
  • $ \Theta $ 表示参数集,包括特征嵌入矩阵中的参数、实例引导掩码矩阵中的参数、掩码块中的前馈层参数,以及预测部分的参数。

  • 1.https://arxiv.org/pdf/2102.07619

蚂蚁在《A Multi-Task Learning Approach for Delayed Feedback Modeling》提出MTDFM的方法使用多任务来解决延迟反馈建模问题。

摘要

转化率(CVR)预测是数字展示广告中最为关键的任务之一。在工业推荐系统中,在线学习因其能够捕捉数据分布的动态变化而备受青睐,这通常能显著提高转化率。然而,点击行为与相应转化之间的时间间隔可能从几分钟到几天不等;因此,新鲜数据在被训练算法摄入时可能没有准确的标签信息,这被称为CVR预测的延迟反馈问题。为解决这一问题,先前的工作将延迟的正样本标记为负样本,并在其转化时间进行校正,然后通过重要性采样(importance sampling)在观察分布下优化实际转化分布的期望。然而,这些方法将实际特征分布近似为观察到的特征分布,这可能会为延迟反馈建模引入额外的偏差。在本文中,我们证明了观察到的转化率(observed conversion rate)是实际转化率(actual conversion rate)与观察到的非延迟正样本率(observed non-delayed positive rate)的乘积。然后,我们提出了多任务延迟反馈模型(MTDFM),该模型由两个子网络组成:实际CVR网络和非延迟正样本率(NDPR)网络。我们通过同时优化观察到的转化率和非延迟正样本率来训练实际CVR网络。所提出的方法不要求观察到的特征分布与实际分布保持一致。最后,在公共和工业数据集上的实验结果表明,所提出的方法一致优于先前的最先进方法。

1 引言

转化率(CVR)预测是推荐系统中最为关键的任务之一,其目标是:预测用户在点击某个商品后是否会下单的概率。在数字展示广告中,一个稳健的CVR预测算法对于构建具有竞争力的广告系统至关重要。例如,为了实现平台和广告主的双赢,CVR预测被用于调整每次点击的出价。近年来,CVR预测在学术界和工业界都得到了广泛研究。

在展示广告中,由于特殊事件、新广告活动等因素,数据分布会动态变化,因此在线学习常被用于捕捉这些变化。然而,用户点击后通常不会立即发生转化,转化可能会延迟几分钟到几天不等。这种延迟反馈问题给在线学习模型带来了挑战:我们需要新数据来更新CVR模型以保持模型的新鲜度,但这些数据往往缺乏用户反馈。

最近,一些流式训练方法通过重新设计数据管道和损失函数来解决延迟反馈问题。Ktena等人[4]首先将每个到达的实例标记为负样本,并在其转化时进行校正,然后提出了伪负样本加权损失函数(FNW),通过重要性采样(importance sampling)[6]来优化真实转化分布的期望。Yang等人[7]研究了在流式CVR预测中,等待更准确的标签与利用更新鲜的训练数据之间的权衡。在他们的工作中,训练管道设计为一个短时间窗口,当转化发生在这个窗口内时,这些实例被标记为正样本,而其他实例则被标记为负样本,直到它们发生转化。随后,他们提出了基于流逝时间采样的延迟反馈模型(ES-DFM),这也是一种基于重要性采样的方法,用于在观察分布下学习实际的CVR模型。尽管这些工作取得了令人振奋的性能,但这些方法仍存在一些问题。首先,这些基于重要性采样的方法将实际特征分布近似为观察到的特征分布,我们在第2.2节中证明这一假设并不成立。其次,这些方法只能用于它们设计的数据管道。为了区分,我们将FNW使用的数据管道称为实时管道(real-time pipeline),而将ES-DFM使用的数据管道称为流逝时间管道(elapsed-time pipeline)

在本工作中,我们解决了这些问题,并提出了一种用于延迟反馈建模的多任务学习方法(MTDFM)。该方法不要求观察到的特征分布与实际分布保持一致,并且可以同时用于实时管道和流逝时间管道。与直接训练实际CVR模型不同,所提出的方法将实际CVR率 $ p_{cvr} $ 视为一个中间变量,其与观察到的延迟正样本率 $ p_{dp} $ 的乘积等于观察到的CVR率 $ p_{ocvr} $。具体来说,我们的模型由两个子网络组成:实际CVR网络非延迟正样本率(NDPR)网络。通过充分利用观察分布与实际分布之间的关系,我们在两个辅助任务 $ p_{dp} $ 和 $ p_{ocvr} $ 的帮助下训练实际CVR模型。我们的主要贡献可以总结如下:

  • 我们提出了一种用于延迟反馈建模的多任务学习方法,该方法不要求观察到的特征分布与实际分布保持一致。此外,我们给出了该方法的收敛性证明。
  • 我们给出了在流逝时间管道和实时管道下,实际CVR分布与观察CVR分布关系的统一形式。因此,我们的方法可以同时适用于这两种管道。
  • 我们在公开数据集和工业数据集上进行了实验,结果表明我们的方法优于之前的最先进方法。

2 方法

2.1 背景

我们专注于CVR预测任务,该任务可以形式化为:对数据集 $ D = \lbrace (x_i, y_i) \rbrace_{i=1}^N $ 的二分类概率预测,其中:

  • $ x $ 是由用户字段和商品字段组成的特征
  • $ y \in \lbrace 0, 1\rbrace $ 表示转化label

在实际应用中,由于转化行为可能会延迟很长时间,真实标签通常是不可用的。为了解决CVR预测中的延迟反馈问题,常见的方法是等待一定时间间隔内的真实转化[7, 8]。伪负样本加权(FNW)方法[4]可以看作是等待时间窗口大小为0的特殊情况。尽管等待时间方法可以部分校正样本,但在等待时间窗口之外的样本仍会被错误地标记为负样本。

图片名称

图1 在训练pipeline中不同类型样本的图示

总结来说,如图1所示,存在三种类型的样本:

  • 负样本(Negatives):在等待时间窗口内未发生转化的样本。
  • 延迟正样本(Delayed Positives):在等待时间窗口外发生转化,但在用户点击后立即被摄入训练管道的样本。
  • 正样本(Positives):在等待时间窗口内发生转化的样本。

我们用:

  • $p$ 表示真实数据分布
  • $q$ 表示由上述三种样本组成的偏置观察数据分布。
  • $p(y=1 \mid x)$ 是真实转化概率
  • $q(y=1 \mid x)$ 是在偏置分布中观察到转化的概率
  • $q(dp=1 \mid x)$ 表示在偏置分布中观察到延迟正样本行为的概率,其中 $ dp \in \lbrace 0, 1\rbrace $ 是延迟正样本的标签,1表示延迟正样本, 0表示非延迟正样本。

2.2 真实转化分布与观察转化分布之间的关系

随着延迟正样本的摄入,我们知道:

\[q(dp=0) = \frac{1}{1 + p(dp=1)} \\ q(dp=1) = \frac{p(dp=1)}{1 + p(dp=1)}\]

由于摄入过程不会影响等待时间窗口内的样本,因此可以得到:

\[q(x \mid dp=0) = p(x)\]

此外,由于重复样本和转化样本的特征分布在真实分布和观察分布中是相同的,因此:

\[q(x \mid dp=1) = p(x \mid dp=1) \\ q(x \mid y=1) = p(x \mid y=1)\]

最后,由于添加的延迟正样本和真实正样本最终在观察数据中都会被标记为正样本,因此可以得到:

\[q(y=1) = \frac{p(y=1)}{1 + p(dp=1)}\]

基于上述概率方程和全概率公式,观察数据中的特征概率可以计算为:

\[\begin{aligned} q(x) &= q(dp=0)q(x|dp=0) + q(dp=1)q(x|dp=1) \\ &= \frac{p(x)}{1 + p(dp=1)} + \frac{p(x|dp=1)p(dp=1)}{1 + p(dp=1)} \\ &= \frac{p(x) + p(x, dp=1)}{1 + p(dp=1)} \end{aligned}\]

…(1)

基于上述概率方程和条件概率公式,观察数据的联合分布可以计算为:

\[\begin{aligned} q(x, y=1) &= q(x|y=1)q(y=1) \\ &= \frac{p(x, y=1)}{1 + p(dp=1)} \end{aligned}\]

…(2)

将公式(1)和公式(2)代入条件概率公式 $ q(y=1 \mid x) = \frac{q(x, y=1)}{q(x)} $,我们可以得到:

\[\begin{aligned} q(y=1|x) = \frac{p(x, y=1)}{1 + p(dp=1)} \cdot \frac{1 + p(dp=1)}{p(x) + p(x, dp=1)} \\ = \frac{p(x, y=1)}{p(x) + p(x, y=1, dp=1)} \\ = \frac{p(y=1|x)}{1 + p(y=1|x)p(dp=1|y=1, x)} \\ = \frac{p(y=1|x)}{1 + p(y=1|x)q(dp=1|y=1, x)} \end{aligned}\]

…(3)

其中,公式(3)中的最后一个等式成立,因为在给定转化的条件下,延迟正样本分布在真实数据和观察数据中都是无偏的。

最后,整理公式(3),我们可以得到真实转化分布(true conversion distributions)与观察转化分布(observed conversion distributions)之间的关系

\[p(y=1|x) = \frac{q(y=1|x)}{q(dp=0|x)}\]

…(4)

其中,当数据管道为实时管道时,$ q(dp=0 \mid x) = q(y=0 \mid x) $

2.3 多任务延迟反馈建模

在本节中,我们详细介绍了所提出的方法——MTDFM(多任务延迟反馈建模)。图2展示了MTDFM的整体架构,它由两个子网络组成:

  • 左侧的CVR(点击后转化率:post-click conversion rate)网络
  • 右侧的NDPR(非延迟正样本率:Non-Delayed Positive Rate)网络

我们采用多任务学习方法,同时预测:

  • 观察到的转化概率 $ q(y=1 \mid x) $
  • 非延迟正样本概率 $ q(dp=0 \mid x) $

此外,我们建模 $ p_{NDPR} $ 而不是 $ p_{OCVR} $(观察到的点击后转化率:Observed post-click Conversion Rate),是因为除以 $ p_{CVR} $(通常是一个较小的值)会导致数值不稳定性。受ESMM[5](由相同结构的CVR和CTR网络组成)的启发,我们在CVR和NDPR模块中采用全连接神经网络,并在它们之间共享嵌入查找表。

图片名称

图2 MTDFM的总体架构,由预测观察到的转化行为(Observed Conversion)和非转换行为(Observed Non-conversion)两个任务组成

MTDFM的损失函数定义为:

\[\begin{aligned} L(\theta_{cvr}, \theta_{ndpr}) &= \sum\limits_{i=1}^N l(y_i, f_{\theta_{cvr}}(x_i)[f_{\theta_{ndpr}}(x_i)]) \\ &+ \sum\limits_{i=1}^N l(1 - dp_i, f_{\theta_{ndpr}}(x_i)) \end{aligned}\]

…(5)

其中:

  • $ \theta_{cvr} $ 和 $ \theta_{ndpr} $ 分别是CVR和NDPR网络的参数,
  • $ l(\cdot) $ 是交叉熵损失函数,方括号内的项在计算损失对输入的梯度时不考虑。

需要注意的是,MTDFM中的子网络采用全连接神经网络,但可以替换为其他更复杂的模型[2, 3, 10, 11],这可能会获得更好的性能。由于篇幅限制,我们省略了这些内容,专注于解决实际应用中处理转化延迟反馈的挑战。

2.4 收敛性证明

在本节中,我们给出了理论证明,表明MTDFM中的 $ p_{CVR} $ 将通过在线梯度下降收敛到真实转化率。需要注意的是,$ \theta_{ndpr} $ 的梯度仅由公式(5)中损失函数的第二部分贡献,且标签 $ 1 - dp_i $ 是无偏的,因此 $ f_{\theta_{ndpr}}(x) $ 最终会收敛到真实的观察非延迟正样本概率。最后,$ L(\theta_{cvr}) $ 对 $ f_{\theta_{cvr}} $ 的梯度可以表示为:

\[\begin{aligned} \frac{\partial L}{\partial f_{\theta_{cvr}}} &= \frac{\partial \lbrace q(y=1|x) \log(f_{\theta_{cvr}}(x)[f_{\theta_{ndpr}}(x)]) \rbrace}{\partial f_{\theta_{cvr}}} + \frac{\partial \lbrace (1 - q(y=1|x)) \log(1 - f_{\theta_{cvr}}(x)[f_{\theta_{ndpr}}(x)]) \rbrace}{\partial f_{\theta_{cvr}}} \\ &= \frac{p(y=1|x)q(dp=0|x)}{f_{\theta_{cvr}}(x)} - \frac{(1 - p(y=1|x)q(dp=0|x))[f_{\theta_{ndpr}}(x)]}{1 - f_{\theta_{cvr}}(x)[f_{\theta_{ndpr}}(x)]} \\ &\approx \frac{q(dp=0|x) \left( p(y=1|x) - f_{\theta_{cvr}}(x) \right)}{f_{\theta_{cvr}}(x) \left( 1 - f_{\theta_{cvr}}(x)q(dp=0|x) \right)} \end{aligned}\]

…(6)

  • 当 $ f_{\theta_{ndpr}}(x) $ 在训练足够步数后收敛到 $ q(dp=0 \mid x) $ 时,公式(6)成立。
  • 当 $ f_{\theta_{cvr}}(x) > p(y=1 \mid x) $ 时,$ \partial L / \partial f_{\theta_{cvr}} < 0 $;
  • 当 $ f_{\theta_{cvr}}(x) < p(y=1 \mid x) $ 时,$ \partial L / \partial f_{\theta_{cvr}} > 0 $。

这表明CVR子网络的输出 $ f_{\theta_{cvr}}(x) $ 会收敛到真实转化分布 $ p(y=1 \mid x) $,且梯度始终指向正确的方向。

3 实验

3.1 数据集

为了评估不同方法的有效性,我们在公开数据集Criteo[1]和来自支付宝应用在线环境的工业数据集上进行了实验。Criteo数据集广泛用于延迟反馈问题,包含超过1500万条样本,时间跨度为60天,我们使用其中7天的数据进行实验。支付宝数据集来自营销活动,我们对用户进行了2%的抽样,抽样后的数据集包含约200万条样本。

3.2 实验设置

我们选择了最先进的延迟反馈模型作为基线进行效率比较。基线方法包括:

  • Fake Negative Weighted (FNW)[4]
  • Fake Negative Calibration (FNC)[4]
  • Elapsed-Time Sampling Delayed Feedback Model (ES-DFM)[7]

所有方法(包括基线和MTDFM)使用相同的模型架构。学习率设置为0.01,L2正则化强度设置为 $ 10^{-6} $。我们使用AUC(曲线下面积)PR-AUC(精确率-召回率曲线下面积)作为评估指标。

3.3 流式实验协议

我们遵循[7]中的流式实验设置,并使用观察到的标签构建流式数据。然后,在转化时间添加假负样本数据。流式数据根据训练时间划分为多个子集,每个子集仅包含一小时的数据。这些子集将按顺序输入模型。当使用第 $ t $ 小时的数据完成训练后,第 $ t+1 $ 小时的数据将用于评估。AUC指标通过所有子集的平均值计算。由于营销活动通常持续时间较短且不超过一个月,为了更好地评估不同模型在真实营销场景中的表现,我们省略了预训练阶段,仅使用流式训练数据训练所有模型。

为了验证流逝时间的影响,我们在不同设置下训练MTDFM。MTDFM采用与FNW和FNC相同的实时流式训练设置。MTDFM-win采用15分钟的流逝时间窗口,与论文[7]中的ES-DFM设置相同。

3.4 实验比较

实验结果如表1和表2所示,最佳结果以粗体标记。除了基线方法外,我们还展示了ORACLE∗模型的性能。ORACLE∗模型使用带有真实标签的训练数据集,而不是观察到的标签。ORACLE∗模型的CVR预测不存在延迟反馈问题,其性能是其他方法的上限。

图片名称

表1

可以发现,MTDFM-win在Criteo数据集的AUC和PR-AUC指标上取得了最佳性能。在支付宝数据集上,MTDFM-win在AUC指标上表现最佳,而MTDFM在PR-AUC指标上优于MTDFM-win。实验结果表明,使用流逝时间窗口并不一定能获得最佳结果,这是对流逝时间窗口大小的权衡。

图片名称

表2

4 相关工作

Chapelle [1] 首次提出了延迟反馈模型(DFM),在延迟分布服从指数分布的假设下应用生存时间分析。Yoshikawa 和 Imai [9] 改进了 Chapelle 提出的模型,无需假设任何参数分布,并提出了一种非参数延迟反馈模型(NoDeF)来捕捉时间延迟。Yasui 等人 [8] 将延迟反馈形式化为数据偏移问题,其中训练和测试的条件标签分布不同,并提出了一种重要性加权方法(FSIW)来处理这一问题。这些方法的一个显著缺点是难以应用于连续训练场景。

Ktena 等人 [4] 提出了伪负样本加权(FNW)和伪负样本校准(FNC)的损失函数,这些方法首次通过在线梯度下降应用于延迟反馈问题的在线训练。Yang 等人 [7] 提出了基于流逝时间采样的延迟反馈模型(ES-DFM),该模型建模了观察到的转化分布与真实转化分布之间的关系。

附录: