图1 广告排序两阶段架构 简介 样本优化包括样本增强和样本提纯,是现代广告投放平台中一个重要但经常被忽视的组成部分。由于大量的候选广告,工业广告服务通常利用多层漏斗形结构(如图1所示),至少涉及两个阶段:候选样本生成和重新排序。在候选样本生成步骤中,通常根据过去的点击/转换数据训练离线神经网络匹配模型,得到用户特征向量和广告特征向量。然而,在用户观察到的广告和所有可能的广告之间存在一个协变量转移问题。因此,从点击/转换历史中训练出来的候选生成模型不能完全捕捉用户的潜在意图,也不能很好地推广到用户未看到的广告中。针对传统召回阶段负样本采样的缺点,百度团队提出几点改进策略,并在其广告投放平台中进行了实际的实验,表明改进的方法能够带来离线指标(如召回率)和业务指标(如CPM)的提升。 广告系统中的一些挑战 对于广告排序业务而言,排序阶段的负样本选择比较简单,可以直接选择曝光给用户但用户没有点击的广告作为负样本,但为什么召回阶段就不能选择“曝光而未点击”的广告作为负样本呢?主要有以下几点原因: 1、一些模型(如Youtobe的召回网络)采用ANN(近似K近邻)来快速选择一部分相关性较大的样本,然后再与其他特征一起送入到排序模型中。因此,只有少数广告幸存下来并展示给用户。按照上述步骤,最终用户观察到的数据(即点击或未点击)与完整的广告集有很大的不同。因此,排序模型不能完全捕捉用户的潜在意图,并不能很好地推广到不可见的样本。这个问题也被称为样本选择偏差或协变量转移。 2、真实场景下的广告曝光数据通常是有长尾分布的。虽然高频广告只占一小部分,但它们比其他广告更重要或出价更高。由于大多数曝光的广告没有被点击,许多高频广告被认为是负样本。在训练期间,这些广告可能会被抑制,导致商业收入下降。 3、曝光但未被点击的广告并不一定是真正的负样本。在广告投放服务系统中,大多数被曝光的广告由于各种原因没有被点击。因此,我们不能认为它们不符合用户的利益。这种不确定性对模型训练提出了挑战,因为很难区分哪些样本是真正的负样本。 4、由于大多数广告没有被点击,所以训练数据非常稀疏。特别是正样本严重不足。 负样本采样优化方法 Weighted Random Negative Sampling 在百度广告投放平台中,整体CTR只有0.03%左右。由于曝光频率的长尾分布,一些头部广告占据主导地位,它们可能出现在正样本集中(曝光且点击)和真实的负样本集(曝光但未点击)中。我们不希望出现在负样本集的头部广告被过度抑制,因为它们通常有很高的商业价值。我们没有使用所有的负样本进行训练,而是执行类似于处理word2vec中频繁单词的子采样。具体地说,在训练集中每个具有高曝光频率的负样本,以一定的概率(p(i))丢弃,(p(i)=1-(\beta / \hat f(a_{i}))^{t}) Sample refinement with PU Learning 一般而言,曝光但没有被用户点击的广告会被视为负样本。然而,未被点击的广告并不一定与用户无关。因此,百度将历史数据视为正样本(点击)和未标记(可靠的负样本+潜在正样本)的组合,并将负样本集细化为只包括那些可靠的负样本。使用的方法是“spy technique”。 从正样本集(P)中随机选取一个“spy set” (S),然后把(S)添加到未标记的样本集合(U)中; 在处理数据稀缺问题时,百度采用了一种创新的方法来增加正样本。这种方法通过引入模糊逻辑来缓解数据稀缺问题,并有效地增加了正样本的数量。 首先,百度在广告列表中仅展示前几个广告,而隐藏了其余的广告。这些隐藏的广告虽然不能直接用作训练样本,但它们已经通过了候选集生成和排序阶段,更有可能满足用户的兴趣。为了增加正样本,百度解析未显示的事件日志,收集所有三元组(用户,广告,CPM),并将CPM高于预定义阈值的三元组称为“模糊的正样本”,并将其添加到正样本的训练集中。值得注意的是,由于模糊正样本的标签不是单击记录,其标签小于1。 接下来,百度使用Noise Contrastive Estimation (NCE) 方法来扩大负样本集。NCE是一种生成模型,能够生成负样本。这种方法特别适用于大规模数据集,因为它可以在不计算梯度的情况下进行训练,从而节省资源并提高效率。 通过结合这两种方法,百度成功地缓解了数据稀缺问题,并提高了模型的性能。