广告系列:召回与排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了广告系列:召回与排序相关的知识,希望对你有一定的参考价值。

参考技术A 实时竞价广告整体链路中,媒体侧发起请求,经ADX发向各DSP,DSP在对流量评估的基础上返回广告参与竞价,ADX比价后返回胜出广告,媒体展示并上报完成一次广告全流程。其中DSP在接收到广告请求后,需要在100-200ms内找出符合的广告返回给ADX,广告库中的候选数量庞大,一般在几十万-几百万之间,要在极短时间内完成对海量广告的打分评估,业界普遍的做法与推荐系统类似分为两个主要环节:召回+排序。

召回

召回的目的在于减少候选的数量(尽量控制在1000以内),方便后续排序环节使用复杂模型精准排序。因为在短时间内评估海量候选,所以召回的关键点是个快字,受限与此与排序相比,召回的算法模型相对简单,使用的特征比较少。业界普遍采用的方式是多路召回,即从多个维度出发在海量库里把相关度高的候选尽可能找出来。多路同时召回是出于多方面的考虑:

多样性,从不同维度出发去找到相关的候选;

鲁棒性,即使一路召回出现问题,其他召回通路也会正常运行不至于阻塞主流程;

可解释与灵活性,每一路从单独维度出发可以很好解释召回的逻辑,如果效果不理想调整起来复杂度低更加灵活。

在某一路召回时选好方向确定对应的打分函数,之后进行打分、排序、截断召回topN,各路召回之间彼此独立,胜出的候选之间不具有可比性。召回主要从用户(U)、上下文(C)、搜索词(Q)、广告(A)几个大方向出发,细化维度可以结合实际业务场景,可以基于上下文标题/描述/分类/标签/图片、用户基础统计信息/兴趣标签/历史行为、检索词、基于物品的协同过滤,处理的信息是多模态的包括文字、图片、视频等。具体召回匹配时有两种思路:

基于标签/关键词的文本硬匹配,如广告定向中的地域、性别,要么匹配,要么不匹配,扩展性及灵活度差一些;

基于向量的语义软匹配。选择有效的原始特征进行embedding嵌入向量空间,通过双塔模型学习获得用户、广告的向量表示,利用点积、余弦相似度或者欧氏距离等方式计算向量相关度,类似Youtube的推荐双塔和微软的DSSM。既可以改变阈值调整召回数量又能满足性能需求,是当前召回的主流形式。

召回不像排序阶段直接影响业务指标,经过粗排精排等环节作用后对最终结果的影响已经很小,对质量衡量难度相对较大,可以从两个方面出发尝试评估:

独特性,某路召回结果的不可替代或者与其他通路的重复度,重复度越高该路召回的价值越小;

转化效果,召回结果的后续表现,如精排后的排名或者被曝光后用户是否点击,效果越好价值越高。

排序

如果说召回是提供可能性,则排序是提供确定性:把最合适的候选找出来推给用户。排序细化可以分为粗排、精排、重排。粗排是召回阶段返回的候选数量还是太多,精排直接处理性能上不能满足,粗排用简单模型再做一次过滤减少数量,是个可选环节;重排则是出于业务考虑,对精排后的结果进行处理:多样性、频控、类别控制、特定结果提权等;精排是整个排序的关键,是各路模型的主战场,也是我们讨论的主角。

与召回相比,排序面对的候选在数量上急剧减少:只需要处理在召回阶段胜出的候选(如果整个创意库的量级在千级左右(如开屏广告/商店原生等)则可以全部召回直接用于排序),这为排序的发挥奠定了很好的基础:使用更多的特征与特征组合、复杂的模型对多路召回的结果统一评判打分、排序、截断topN输出。

为了更细致的刻画与拟合实际场景,排序阶段对模型的要求不断提高,伴随着技术的发展,从线性到非线性、从原始特征到低阶特征组合、高阶特征组合,到低高阶并存。如果说召回是基于表示的学习,其重点在学习用户和广告的向量表征,那么排序则是基于特征与特征组合的学习,尤其是高阶特征组合,整个排序模型发展的主方向就是对有效特征及特征组合的发现与使用。

召回与排序对整个广告有重要影响,其结果的好坏很大程度上决定了广告的质量和变现效果。它是广告链路上的一颗明珠,值得花精力精雕细琢。

上面介绍了召回与排序在整个广告链路中所属环节及各自作用,接下来主要介绍二者的异同及目标一致性问题。

相同点

召回与排序都是通过特征选取、模型构造,对候选集进行打分/排序/截断,将不符合的候选过滤,符合条件的候选进入下一环节,总体来讲召回排序环节选出了合适的候选。

差异点

1)、数据环境的差异

业界有句话,数据/特征决定了模型的上限,模型只是不断的去逼近它。因为模型学习的就是数据的内在规律和分布结构,为保证上线效果,训练数据要尽可能接近线上数据。

召回阶段处理的是全量候选,鱼龙混杂,其中绝大多数都与当前请求不相关;排序阶段面对的是已经通过了一次筛选,相关度已经有了很好的保障。基于二者环境的差异,在训练数据/样本的选择上需要注意,正样本的选择相对明确,重点在于负样本的选取,对于排序而言,曝光未点击的数据与线上环境基本接近(完全一致需要选取召回胜出的候选集,但此时的数据没有标记);对于召回而言,一种有效的做法是通过全局随机抽样来产生不相关的负样本。

2)、模型处理的差异

针对新的影响因素/特征,召回出于多样性和可解释等多方面考虑,一般会新增一路召回,导致了各路之间彼此独立,结果不可比;

排序是将新因素作为特征融入现有模型进行相关的特这组合交互,所有候选按照统一的标准打分评估。

召回与排序目标一致性

推荐和广告在很多方面有相似性,包括召回和排序面对的场景、处理思路、技术和实现,前面文章中提到广告对召回排序的处理借鉴推荐系统的做法,在一定程度上包含在目标的处理上,其实二者之间是有本质区别的。

推荐 :推荐系统产生的背景是因为商品/内容量级太大,用户想找到感兴趣的内容需要花费一定成本/时间,基于此提出推荐系统帮助用户快速找到感兴趣的内容,在相关性的基础上需要同时考虑内容的多样性、新颖和时效性,不能只根据用户行为历史生成推荐内容,否则容易造成用户审美疲劳,所以既要利用已知又要探索新的内容。从根本上讲属于用户体验问题,服务于用户满意度,最终提升用户活跃和留存,所以推荐的整体目标是:把用户喜欢的东西推荐给用户。

广告 :广告是从商业化角度出发,为了变现获取收益,与推荐相比广告的目标/诉求更加纯粹:收益最大化。在实时竞价广告中拍卖的商品是曝光,所以具化为曝光收益最大化。实际场景中考虑了收益最大化以外的因素一般都是广告和其他业务/场景在折中妥协后的结果(搜索场景的相关性/展示场景的类别/次数限制等),换个角度看也是为了广告走的更长远。

基于上述差异二者在召回与排序的目标和具体指标上会有所不同。

推荐在两阶段的总体目标基本一致:找出来用户喜欢的/相关的,具体操作上会有细微差别,召回一般用双塔衡量相关度,排序根据实际场景指标有所调整如点击率/观看时长/分享等。

广告两阶段的目标是基本分开的:

召回 :在全部候选中召回相关的候选集;

排序 :排序对最终结果直接产生影响,因此从商业化角度出发将收益最大的候选推出去。

召回与排序是前后相连的两个环节,如果二者目标不一致会影响商业化效率:召回的优质候选在排序阶段的排名可能比较靠后,排序阶段的优质候选在召回环节被过滤掉掉,百度在莫比乌斯的论文中也提到:召回阶段胜出相关性高的候选因为cpm不够高最终推出不去无法曝光。从广告的根本目标出发,为有效解决上述耗损问题,百度提出把排序的目标前移至召回阶段:召回就需要考虑商业化目标(ECPM),这对召回模型的复杂度提出了很高的要求,因为召回场景的特殊性需要同时兼顾性能和效果两个方面,关于这个点,阿里在深度树(TDM)的论文中提供了一种解决性能问题的方向:利用树结构进行高效的全局检索,这为解放召回阶段使用复杂模型点燃了星星之火,与百度提出的排序目标前移堪称广告的两大福音。

下一篇主要介绍召回排序在具体处理时采用的思路和方法。

爱奇艺广告技术沙龙---广告召回

爱奇艺技术沙龙——广告算法与架构设计-爱奇艺直播-爱奇艺

一、AI在视频广告中的应用:

1、广告的目的:

在一定周期,让尽可能多的人产生消费。

长周期:品牌广告(比如阿迪、nike等品牌),短周期:效果广告(比如平时打开网页出现在眼帘的广告)。

消费行为:购买、激活、安装、下载、点击。

2、如何传达消费价值:

匹配需求:用户行为(搜索、浏览、点击等)、统计特征(性别、年龄、地区等)

  能够将用户想要看的广告适时地推到面前,让广告主的广告得到合理的投放。

展示价值:场景(点位)+效果(索引)

   场景化投放:如用户台风天在大街上伞被吹走(这种场景),如果当场有个广告关于能够抵抗12级台风的伞,是很合适的。

3、AI(视频理解方面)的主要工作:

生成/推荐点位:场景

辅助创作素材:效果

4、点位

 (1)场景化示意

技术图片

  创可贴:广告内容和视频内容十分贴切,比如图一中吃饭场景付费是采用支付宝,则视频中会出现支付宝支付界面的广告。

  前情提要:图二可以看到人物下方会有饮料的广告,这广告可能和前情提要有相关的,比如这里哭得稀里哗啦的要来点饮料解渴。

  video in:视频中后期加入广告,在视频中剪辑进入一个雪碧广告等。

 (2)视频广告如何实现场景化

  商业价值点=有消费需求的点位【找到这些点位,然后打上标签】

  聚餐--想喝饮料、地铁---听点音乐、海滩----希望防晒、亲吻---来束玫瑰

  ---视频分析(如果要找到有商业价值的点位)

  对象【人脸识别、姿态识别、服饰分类、目标检测、表情识别】

  事件【行为识别、语音识别、意图理解、事件分类、文本挖掘】

  场景【场景识别、地标识别、调性分析、音频分类、音乐识别】

  从各个维度来对视频分析,给视频打上标签,这些标签可以在之后被采用做推荐、匹配广告等。

  但如果从这些识别中获得的标签可能不能很全面地给视频打上正确的标签,如在视频中用户常希望两个男女主角有浪漫的场景,而不是男二女二,这就涉及到人物和场景的交叉关联性。所以希望能更好的去训练更好的标签。

  ----视频图谱(怎么计算标签的重要性和相关性)

  技术图片

规则&算法----业务标签、语义标签

节点属性&当前视频内容识别---标签排序

利用图中的标签与标签的距离---提升精度

  ---VideoIn选点流程

  技术图片

二、360广告召回模块

1、展示广告业务介绍:

    (1)媒体方在曝光之前将流量发给ADX(相当于将流量交给ADX进行广告拍卖),360自身也有一个AD Exchange(360 Max)。

    (2)ADX发流量给DSP来对这次曝光进行竞价(360自身也有一个360点睛DSP)

    (3)广告主对自身的需求设置一些广告投放返回给DSP

    (4)DSP会根据这些广告投放来匹配相关的候选集,将候选集返回给ADX,DSP响应时间很短,在100ms左右

    (5)最后ADX选择出价最高的DSP投放

  技术图片

  2、常见的展示广告:

    (1)广告侧边栏:具体投放广告的详情页

    (2)整体的开屏广告:品牌广告

    (3)信息流:嵌入新闻上下文中的广告,和文章内容形式保持一致

    技术图片

  3、展示广告架构

    (1)流量是从ADX中发给DSP端,

    (2)DSP拿到流量之后进行Ad search Root和Ad Search Leaf两个模块,

      Ad search Root是对流量进行识别,判断其为哪种类型流量,比如是属于kidword?信息流?banerge流量?,

      然后将判定的流量类型交给Ad search Leaf【对广告进行召回】,这个模块选出相匹配的广告候选集,

      之后再交给Ad Selector模块【精排】,即对广告的CTR或者CVR进行预估,选出top K个广告返回给DSP server。

    (3)将一些广告点击、曝光、后序的日志写入kafka,用来做日志落地模块和反作弊。

      一部分的日志用来做日志落地模块,分为线上和线下。

        离线:将日志进入ETL以及训练样本模型。

      一部分的日志用来做反作弊,比如实时的曝光反馈。

 技术图片

  4、检索召回模块:

    (1)DSP提供的一个流量请求Request包含(用户、context)。

    (2)广告主设置的广告投放存在Ad meta db中,然后建成相关的广告索引(ad index),投放更新之后才会实时更新这个索引

    (3)RTDB是根据用户和context上下文进行用户标签的实时更新和线下处理

    (4)召回模块:结合Ad index和RTDB选出候选集

    (5)过滤模块:根据规则、黑白名单、广告主的预算、pacing进行过滤等

    (6)粗排模块:

    (7)精排:LR、FFM……

    技术图片

  5、召回通路(多链路召回):

    基于上下文: 

      图片(内容页:一个明星穿了哪件衣服,根据这件衣服投放哪件商品广告),做法:将图片向量化,计算广告商品和图片向量的相似度。

      标题(文本NLP操作),基于文本召回

      lbs(广告主自身设定某个区域,希望在该区域【标签】内进行投放)布尔召回

    基于用户行为:

      兴趣(根据一些profile打上一些用户兴趣标签):布尔召回

      query(360搜索中的查询行为,NLP)基于文本召回

      访问行为(哪些用户看了哪些商品,主要针对商品特征),item based CF、ALS、Neural MF

    基于深度召回:

      结合user profile、媒体特性、上下文特性等进入深度模型中进行召回

 

    技术图片

   基于文本召回(标题、query)

  技术图片

  6、召回模块演进

      技术图片

     (1)布尔召回:

      技术图片

 

以上是关于广告系列:召回与排序的主要内容,如果未能解决你的问题,请参考以下文章

召回和排序模型中的用户行为序列的建模

召回和排序模型中的用户行为序列的建模

爱奇艺广告技术沙龙---广告召回

工作生活家丨Microsoft 365系列广告

GNN在轻应用内容推荐中的召回实践

Laravel 5.2 orderBy与ofCount的关系导致SQL错误,因为尝试获取列而不是计数失败