打字猴:1.700540934e+09
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)
1700540960
1700540961 另有如下3个约束:
1700540962
1700540963 ∀j, Σisixij≥dj
1700540964
1700540965 (14.2)
1700540966
1700540967 ∀i, Σjxij≤1
1700540968
1700540969 (14.3)
1700540970
1700540971 ∀i, j, xij≥0
1700540972
1700540973 (14.4)
1700540974
1700540975 其中式(14.2)规定每个合约规定的总曝光量必须得到满足;式(14.3)表示每类曝光机会选择各个合约的总概率之和应该小于等于1;式(14.4)表达概率xij的非负性。对上述问题求解即可找到一个最优解,当然在总供给量不够的情况下,上面的问题也可能无解,这时需要在式(14.2)中添加一个变量uj,代表合约j的欠曝光量(under-delivery),且约束变更为:Σisixij+uj≥dj。与此同时,在目标函数中也需要加入欠曝光量所带来的惩罚,具体的公式参照文献[51]。
1700540976
1700540977 在竞价广告的模式下,广告投放机根据点击率预估的结果对广告进行排序和选择。对于一个新上线的广告,如果没有充分的曝光,是无法对其点击率做出准确预测的。这时如果我们仅采用利用的方案,会倾向于选择其他点击率更高的广告,或给出一个较低的出价。长此以往,该广告很可能丧失足够的曝光机会,我们也永远无法对其点击率进行合理的估计。因此,我们需要对曝光量不足的广告进行探索,但仅仅采用探索的方案显然也是不行的。对于已有足够曝光量的广告,还是应该遵循点击率预估的结果进行排序、选择和出价。探索与利用是一对矛盾的主体,需要在其间找到平衡,才能达到最佳的投放效果,这也是强化学习所重点关注与解决的问题。在强化学习的场景下,一开始我们并没有足够多的带标注样本,需要与环境进行交互(投放广告),通过获得反馈的方式来改进模型,最终获得一个最优的投放策略。在程序化交易的场景中,需求方平台还需要对选定的广告进行出价,如何优化出价也是一个独立的研究课题,在这里就不展开了,有兴趣的读者可以参考文献[52]。
1700540978
1700540979 综上所述,计算广告的相关算法几乎包含了本书介绍内容的方方面面。要想成为一个优秀的广告算法工程师,除了熟练掌握业务流程之外,还要为各类算法、理论和方法打好坚实的基础,并在实践中不断掌握算法优化的经验。在面试中,关于理论、方法、实践经验等相关的问题都会涉及,所以也请各位读者能够认真阅读前面的面试题和解答,为以后的工作打下坚实的基础。
1700540980
1700540981
1700540982
1700540983
[ 上一页 ]  [ :1.700540934e+09 ]  [ 下一页 ]