实时竞价广告整体链路中,媒体侧发起请求,经ADX发向各DSP,DSP在对流量评估的基础上返回广告参与竞价,ADX比价后返回胜出广告,媒体展示并上报完成一次广告全流程。其中DSP在接收到广告请求后,需要在100-200ms内找出符合的广告返回给ADX,广告库中的候选数量庞大,一般在几十万-几百万之间,要在极短时间内完成对海量广告的打分评估,业界普遍的做法与推荐系统类似分为两个主要环节:召回+排序。
召回
召回的目的在于减少候选的数量(尽量控制在1000以内),方便后续排序环节使用复杂模型精准排序。因为在短时间内评估海量候选,所以召回的关键点是个快字,受限与此与排序相比,召回的算法模型相对简单,使用的特征比较少。业界普遍采用的方式是多路召回,即从多个维度出发在海量库里把相关度高的候选尽可能找出来。多路同时召回是出于多方面的考虑:
多样性,从不同维度出发去找到相关的候选;
鲁棒性,即使一路召回出现问题,其他召回通路也会正常运行不至于阻塞主流程;
可解释与灵活性,每一路从单独维度出发可以很好解释召回的逻辑,如果效果不理想调整起来复杂度低更加灵活。
在某一路召回时选好方向确定对应的打分函数,之后进行打分、排序、截断召回topN,各路召回之间彼此独立,胜出的候选之间不具有可比性。召回主要从用户(U)、上下文(C)、搜索词(Q)、广告(A)几个大方向出发,细化维度可以结合实际业务场景,可以基于上下文标题/描述/分类/标签/图片、用户基础统计信息/兴趣标签/历史行为、检索词、基于物品的协同过滤,处理的信息是多模态的包括文字、图片、视频等。具体召回匹配时有两种思路:
基于标签/关键词的文本硬匹配,如广告定向中的地域、性别,要么匹配,要么不匹配,扩展性及灵活度差一些;
基于向量的语义软匹配。选择有效的原始特征进行embedding嵌入向量空间,通过双塔模型学习获得用户、广告的向量表示,利用点积、余弦相似度或者欧氏距离等方式计算向量相关度,类似Youtube的推荐双塔和微软的DSSM。既可以改变阈值调整召回数量又能满足性能需求,是当前召回的主流形式。
召回不像排序阶段直接影响业务指标,经过粗排精排等环节作用后对最终结果的影响已经很小,对质量衡量难度相对较大,可以从两个方面出发尝试评估:
独特性,某路召回结果的不可替代或者与其他通路的重复度,重复度越高该路召回的价值越小;
转化效果,召回结果的后续表现,如精排后的排名或者被曝光后用户是否点击,效果越好价值越高。
排序
如果说召回是提供可能性,则排序是提供确定性:把最合适的候选找出来推给用户。排序细化可以分为粗排、精排、重排。粗排是召回阶段返回的候选数量还是太多,精排直接处理性能上不能满足,粗排用简单模型再做一次过滤减少数量,是个可选环节;重排则是出于业务考虑,对精排后的结果进行处理:多样性、频控、类别控制、特定结果提权等;精排是整个排序的关键,是各路模型的主战场,也是我们讨论的主角。
与召回相比,排序面对的候选在数量上急剧减少:只需要处理在召回阶段胜出的候选(如果整个创意库的量级在千级左右(如开屏广告/商店原生等)则可以全部召回直接用于排序),这为排序的发挥奠定了很好的基础:使用更多的特征与特征组合、复杂的模型对多路召回的结果统一评判打分、排序、截断topN输出。
为了更细致的刻画与拟合实际场景,排序阶段对模型的要求不断提高,伴随着技术的发展,从线性到非线性、从原始特征到低阶特征组合、高阶特征组合,到低高阶并存。如果说召回是基于表示的学习,其重点在学习用户和广告的向量表征,那么排序则是基于特征与特征组合的学习,尤其是高阶特征组合,整个排序模型发展的主方向就是对有效特征及特征组合的发现与使用。
召回与排序对整个广告有重要影响,其结果的好坏很大程度上决定了广告的质量和变现效果。它是广告链路上的一颗明珠,值得花精力精雕细琢。
上面介绍了召回与排序在整个广告链路中所属环节及各自作用,接下来主要介绍二者的异同及目标一致性问题。
相同点
召回与排序都是通过特征选取、模型构造,对候选集进行打分/排序/截断,将不符合的候选过滤,符合条件的候选进入下一环节,总体来讲召回排序环节选出了合适的候选。
差异点
1)、数据环境的差异
业界有句话,数据/特征决定了模型的上限,模型只是不断的去逼近它。因为模型学习的就是数据的内在规律和分布结构,为保证上线效果,训练数据要尽可能接近线上数据。
召回阶段处理的是全量候选,鱼龙混杂,其中绝大多数都与当前请求不相关;排序阶段面对的是已经通过了一次筛选,相关度已经有了很好的保障。基于二者环境的差异,在训练数据/样本的选择上需要注意,正样本的选择相对明确,重点在于负样本的选取,对于排序而言,曝光未点击的数据与线上环境基本接近(完全一致需要选取召回胜出的候选集,但此时的数据没有标记);对于召回而言,一种有效的做法是通过全局随机抽样来产生不相关的负样本。
2)、模型处理的差异
针对新的影响因素/特征,召回出于多样性和可解释等多方面考虑,一般会新增一路召回,导致了各路之间彼此独立,结果不可比;
排序是将新因素作为特征融入现有模型进行相关的特这组合交互,所有候选按照统一的标准打分评估。
召回与排序目标一致性
推荐和广告在很多方面有相似性,包括召回和排序面对的场景、处理思路、技术和实现,前面文章中提到广告对召回排序的处理借鉴推荐系统的做法,在一定程度上包含在目标的处理上,其实二者之间是有本质区别的。
推荐:推荐系统产生的背景是因为商品/内容量级太大,用户想找到感兴趣的内容需要花费一定成本/时间,基于此提出推荐系统帮助用户快速找到感兴趣的内容,在相关性的基础上需要同时考虑内容的多样性、新颖和时效性,不能只根据用户行为历史生成推荐内容,否则容易造成用户审美疲劳,所以既要利用已知又要探索新的内容。从根本上讲属于用户体验问题,服务于用户满意度,最终提升用户活跃和留存,所以推荐的整体目标是:把用户喜欢的东西推荐给用户。
广告:广告是从商业化角度出发,为了变现获取收益,与推荐相比广告的目标/诉求更加纯粹:收益最大化。在实时竞价广告中拍卖的商品是曝光,所以具化为曝光收益最大化。实际场景中考虑了收益最大化以外的因素一般都是广告和其他业务/场景在折中妥协后的结果(搜索场景的相关性/展示场景的类别/次数限制等),换个角度看也是为了广告走的更长远。
基于上述差异二者在召回与排序的目标和具体指标上会有所不同。
推荐在两阶段的总体目标基本一致:找出来用户喜欢的/相关的,具体操作上会有细微差别,召回一般用双塔衡量相关度,排序根据实际场景指标有所调整如点击率/观看时长/分享等。
广告两阶段的目标是基本分开的:
召回:在全部候选中召回相关的候选集;
排序:排序对最终结果直接产生影响,因此从商业化角度出发将收益最大的候选推出去。
召回与排序是前后相连的两个环节,如果二者目标不一致会影响商业化效率:召回的优质候选在排序阶段的排名可能比较靠后,排序阶段的优质候选在召回环节被过滤掉掉,百度在莫比乌斯的论文中也提到:召回阶段胜出相关性高的候选因为cpm不够高最终推出不去无法曝光。从广告的根本目标出发,为有效解决上述耗损问题,百度提出把排序的目标前移至召回阶段:召回就需要考虑商业化目标(ECPM),这对召回模型的复杂度提出了很高的要求,因为召回场景的特殊性需要同时兼顾性能和效果两个方面,关于这个点,阿里在深度树(TDM)的论文中提供了一种解决性能问题的方向:利用树结构进行高效的全局检索,这为解放召回阶段使用复杂模型点燃了星星之火,与百度提出的排序目标前移堪称广告的两大福音。
下一篇主要介绍召回排序在具体处理时采用的思路和方法。