1700540910
1700540911
1700540912
1700540913
样本采样 在点击率预估时,通常要对负样本进行采样,这是因为在点击率预估的二分类问题中,点击数通常要远远小于总曝光数(PC端展示广告的点击率一般在0.1%~1%之间),这将导致正负样本严重不均衡。如果点击率为0.1%,那么简单地将所有样本都预测为负样本,分类器的准确率也可以达到99.9%,这在一些分类器和训练算法中会存在问题。更重要的是,一条负样本所包含的信息相比于正样本来说较少,如果我们能够对负样本进行采样,就可以减少训练时间,或者能够在同样的训练时间中处理更多的正样本,从而在训练时间不变的条件下取得更好的效果。需要指出的是,样本在采样之后会改变数据的分布,因此在预估点击率时还需要将原始分布还原。
1700540914
1700540915
1700540916
1700540917
特征抽取与组合 抽取与用户、上下文、广告主、创意等相关的各维特征,并对这些特征进行组合。这一步听起来是一个比较简单的过程,但是实际上非常重要,里面包含着各种学问。尤其是在传统的机器学习模型中,特征工程的好坏将对模型的效果产生决定性的影响,并花了算法工程师大部分的时间。在点击率预估中,捕捉特征之间的交互非常重要,由于一些特征表达了广告的性质,另一些特征表达了用户的兴趣,因此需要学习到两类特征的交互,才能更加准确地对点击率进行估计。传统的机器学习模型无法直接捕捉到两类特征之间的交互,因此需要显式地进行特征交叉,即将任意两个特征组合起来作为一维新的特征。这样做可能会遇到维度爆炸的问题,由于我们并不知道哪些特征的交互最好捕捉,因此需要尝试所有可能的特征组合。实践中,经常采用梯度提升决策树和分解机对原始特征进行预处理。在梯度提升决策树中,每一棵决策树的每一条从根到叶子结点的路径可以作为一种显著的特征组合,然后将所有的特征组合作为逻辑回归模型的输入再进行训练(见图14.7)。这是Facebook在2014年发表的工作[48],后来被证明在很多应用场景中都取得了不错的效果。对于分解机来说,每个特征可以被分解成相同空间中的K维向量表示,它们的交互强弱可以通过向量的点积表达,因此将特征的向量表示作为逻辑回归模型的输入,可以帮助算法更好地捕捉到特征交互对点击率的影响。NTU CSIE ML Group在Criteo发起的CTR预估竞赛中,有团队同时利用梯度提升决策树和分解机进行特征工程,获得了竞赛的第一名。
1700540918
1700540919
1700540920
1700540921
1700540922
图14.7 Facebook的CTR预估模型
1700540923
1700540924
进入到深度学习时代,深度神经网络为我们提供了一种更加自动地抽取组合特征的方式,可以直接端到端地对点击率进行建模和预测。图14.8是一种端到端的深度CTR预测模型,其中原始输入为最简单的独热编码,接着通过预训练分解机将输入表示为嵌入的向量,然后通过三个全连接层,最后应用Sigmoid激活函数输出点击率的预测结果[49]。
1700540925
1700540926
1700540927
1700540928
1700540929
图14.8 深度CTR预估模型
1700540930
1700540931
在实际的产品线中,我们可能不方便推翻以前的架构,全部改为利用端到端的深度学习模型对点击率进行建模。这时,将深度学习模型输出的中间结果当作高层语义特征,输入到传统的浅层机器学习模型中,通常也能够取得不错的效果提升。
1700540932
1700540933
1700540934
1700540935
模型训练 进行完特征抽取与组合,并选择一个合适的模型后,我们就可以对模型进行训练了。模型的训练与调优过程也蕴藏着许多经验与知识。例如,在线上进行实时点击率预估的时候,我们通常希望模型被全部加载到内存中,从而保证服务的响应时间。因此,需要在模型的稀疏性和预测效果之间进行一个折中,对模型的稀疏性有一定的要求。但是,如果采用L2范式对模型进行正则化,很难得到完全稀疏的结果,更好的方案是采用L1正则。这就要求面试者了解L1和L2正则化的特点和相关理论。例如,在编写深度神经网络模型对点击率进行建模和训练时,我们需要检验程序计算出的梯度是否正确,这需要对梯度验证技术有所了解。另外,由于深度神经网络模型的假设空间是非凸的,有时在使用随机梯度下降法优化时会陷入局部最优解难以自拔,这时需要对随机梯度下降法失效的原因进行深入分析,并利用改进的方法进行训练。
1700540936
1700540937
1700540938
1700540939
模型评估 模型训练完成之后,就需要对其效果进行合理的评估了。模型评估主要分为离线评估和在线评估两个阶段。离线评估的任务是设计合理的实验和指标,使得离线评估的结果和将来上线之后的结果尽量吻合。由于单个指标通常只能评估模型的某个方面,我们通常需要采用不同的指标来对模型的效果进行综合评价。以点击率预估为例,离线阶段常用的评估指标有Log Loss和AUC。Log Loss衡量预测点击率与实际点击率的吻合程度;AUC评价模型的排序能力,即获得点击的样本应尽量排在未获得点击的样本前面。一方面,我们希望预测的点击率尽可能精准;另一方面,又希望更有可能获得点击的广告被尽可能地排列在前面。所以要求两个指标都得到比较好的结果,至于哪个指标作为主要指标要视具体的业务场景而定。如果一个模型在离线评估阶段取得了好的结果,下一个阶段就是进行线上A/B测试了。这一环节在模型正式上线之前至关重要,因为即使一个精心设计的离线实验仍然与线上的环境有所差别。如何设计一个合理的A/B测试方案也是一个优秀的广告算法工程师必须掌握的。
1700540940
1700540941
■ 广告检索
1700540942
1700540943
广告检索阶段的任务是根据查询、受众等定向条件检索出所有满足投放条件的广告。例如,根据查询的模糊匹配,要求将与该查询文本在语义上相近的广告尽可能地召回,供下一阶段广告排序和选择算法使用。这一阶段主要以召回率为评估指标,因为被漏掉的广告在后面就没有机会被展示出来了。解决模糊匹配问题的经典方法是查询扩展[50]。通俗地讲,就是为当前的查询找到一组语义相关的查询,然后至少被其中一个查询检索到的广告都可以加入备选集合。查询扩展本质上是计算两个查询之间的文本相似度,或者求出给定一个查询的条件下生成另一个查询的概率。前者可基于主题模型、Word2Vec等算法实现,后者可利用深度神经网络等方法进行建模。
1700540944
1700540945
■ 广告排序/选择
1700540946
1700540947
不同的广告业务场景在此步骤中的决策方式是不同的。对于合约广告来说,我们的目标是满足合约中规定的每日曝光数量要求(当曝光数量不足时会受到惩罚),并不涉及点击率预估,因此广告的排序和选择问题可以被建模成带约束的优化问题。图14.9是使用优化问题的建模思路,左侧的每一个节点代表一个广告,右侧的每一个节点代表一类曝光机会。我们将流量按照特征划分为若干个分段,每个分段代表了一类曝光机会,每一个合约由于其定向条件的限制,只能在某些分段的流量上进行投放。于是广告的选择可以表达成为一个二部图匹配问题,优化的目标是使得总的投放收入最大化[51]。
1700540948
1700540949
1700540950
1700540951
1700540952
图14.9 合约广告的选择问题
1700540953
1700540954
假设dj为第j个合约的总需求量,si为第i类曝光机会的供给量,vj为第j个合约的单次曝光收入(CPM),xij∈[0,1]为第i类曝光机会到来时,选择第j个合约的广告进行展示的概率。目标函数如下,即使得总的投放收入最大化。
1700540955
1700540956
1700540957
1700540958
1700540959
(14.1)
[
上一页 ]
[ :1.70054091e+09 ]
[
下一页 ]