天天看点

喜马广告算法优化实践(四):广告系统漏斗优化

作者:闪念基因
喜马广告算法优化实践(四):广告系统漏斗优化

(莫愁前路无知己,天下谁人不识君,祝大家劳动节快乐!)

一、业务背景

广告引擎是效果广告变现的核心。其功能是对于每一次广告检索,从百万量级的广告库中找出价值最高的一个(或多个)广告用来展示,并给出精准预估eCPM用来扣费。直接对百万级以上广告库计算排序在算力和时延性能上是不可行的。为了平衡性能和效果,广告引擎常采用级联架构形成漏斗。内容通过漏斗逐层筛选,量级逐渐下降,算法逐渐复杂,精度越来越准。

喜马广告算法优化实践(四):广告系统漏斗优化

二、各层漏斗的介绍

喜马广告引擎的漏斗结构分为五级,从上到下依次是,检索、召回、粗排、精排和重排。

第一级漏斗是检索。它以广告全库为候选集,筛选出满足定向且价值相对较高的集合。因为是第一层初筛面对百万级的候选,所以只能使用计算复杂度低、并行化高的匹配算法。算法通常为布尔运算,例如流量画像与广告定向的匹配、计划生命周期的冷热索引。

第二级漏斗是召回。其候选集为检索漏斗的输出,量级约为十万级。实践中召回的目标是提高输出广告集合与流量的相关性,常使用I2I,U2I等算法。相关性高的广告后续能有更好的点击、转化使得广告收入高,用户体验能更好。由于相关性目标较丰富,例如场景上下文相关性,历史内容消费与广告相关性等,通常在漏斗中采用多个召回通道来承载不同的相关性目标。很多先验知识和用户的非广告行为都可以通过增加召回通道的方式直接引入到广告系统中优化效果。可解释性强的策略通常放在这一层来做。

第三级漏斗是粗排。它的目标是对召回进行统一筛选,输出固定上限的广告集合以减少下一个精排漏斗的计算量。理想情况下粗排应该提供与精排一致的排序,且保留相对丰富的候选集合。从算力看,进入粗排的广告量级在万级已经可以支持模型来预估和排序。在实践中粗排模型常采用简单线性逻辑回归或双塔缓存深度模型。

第四级漏斗是精排。在给定流量请求下,精排的目标是筛选出价值最高的广告并给出预估eCPM。因为扣费依赖,对于eCPM不仅需要排序能力还要尽量保证绝对值的准确。价值最高的广告是平衡媒体与广告主双方的利益、平衡短期与长期利益的结果。这些会在eCPM预估和竞价策略上得到体现。精排首先用深度学习对点击率、转化率进行预估。这是算法优化最复杂且发力最多的地方。其次,设计竞价策略综合多方位信息给出最终的竞价排序分。竞价排序分不仅受eCPM影响,还会考虑召回相关性、人群先验信息、商业价值准入、负反馈准入、冷启动长期价值等。

第五级漏斗是重排,在信息流等多广告位场景下打散相似内容以保证多样性。

如同在一片汪洋大海中寻找一颗明珠,五级漏斗通过层层筛选得到价值最高的Chosen One。

三、横纵结合的漏斗优化实践

对于漏斗优化的实践,首先从横向角度介绍漏斗每一层独立做的优化,包括多目标统一粗排、系统优选、冷热索引等。然后从纵向角度,以冷启动为例子讲述如何贯穿漏斗多层进行业务效果优化。

喜马广告算法优化实践(四):广告系统漏斗优化

检索漏斗优化实践:简单策略也有收益

检索漏斗面对全库候选集通常较难支持稍复杂的效果策略。但只要对业务理解透彻,即使简单的策略也能取得较好的收益。冷热索引就是这样一个例子。

在喜马广告中能观察到广告的生命周期现象。冷启学习时转化率低但需要给予流量探索。随着广告学习成熟、转化率提升,持续给广告主带来线索,给媒体带来收入。再然后广告曝光次数增加,受众内容疲劳使得广告逐渐出现有曝光无转化的空耗情况。广告开始进入衰退状态。针对这一业务现象我们设计了冷热索引策略。策略上将单一索引升级为新、热、冷、零4个索引,不同索引召回概率不同,计算资源配置不同。使得学习成长计划优先占用计算资源和过漏斗,衰退计划减少计算资源和少过漏斗。策略上线后,对于自营广告整体eCPM+3.0%。检索性能端到端99线延迟降低-7.5%。

喜马广告算法优化实践(四):广告系统漏斗优化

在冷热索引中,首先我们抽取广告状态特征。其次根据特征和配置的规则计算广告的生命周期和应该放置的索引。从业务实践中我们得出计划生命周期的关键特征包括:投放类型(拉新/拉活/线索),转化数。拉新拉活广告因为目标偏浅层、专业化素材制作快,所以生命周期轮转较快。线索广告最终投放目标常是付费,需经历线索获取、私域运营等较长后链路,所以生命周期轮转会慢一些。

召回漏斗优化:解释性强&拓展度高的多路召回

进入漏斗的第二层召回,开始重点关注广告与流量的相关性。通常相关性与用户点击等效果行为成正比。因此相关性越高,广告变现能力越强。同时相关性高也能增加用户体验,使得广告内容不至于与用户兴趣或场景上下文太突兀。

召回漏斗使用多路召回的框架优化相关性。多路召回是指针对不同的召回目标设计不同的通道,每个通道仅关注一个目标。这样的分散召回方式,通道与通道之间形成了查缺补漏的效应,能最大程度上把最优广告筛选出来。此外,多通道召回也具有可解释性,方便业务分析和迭代更新。最后,多路召回扩展性好,可以根据业务观察和先验知识及时添加召回通路。

如下图所示,当前多通道召回中包括:冷启动召回关注广告的探索价值、与当前播放专辑的相关性召回关注场景相关性价值、基于用户播放行为ItemCF召回关注用户历史行为与广告的相关性价值等。

喜马广告算法优化实践(四):广告系统漏斗优化

粗排漏斗优化:作为精排的影子进行统一集合排序。

粗排漏斗有承上启下的作用。经过前几层漏斗广告候选集合已筛选到万级别,但数量还是太多。直接用精排的复杂模型计算仍不太现实。算力无法应对此量级的计算请求,即便使用更多算力并行计算,也会造成算力开销远大于流量收益。因此需要通过粗排漏斗进一步将万级别的物料缩减到百级别。从定位看粗排最理想的情况就是成为精排的影子,与其保持一致的排序并提供尽可能丰富的候选集。

多合一,多业务目标广告的粗排策略

喜马效果广告还面临着特有的不同目标的广告统一排序。在一次漏斗中会存在三个目标有差异的广告业务,分别是外循环效果广告、内循环原生广告、时间约束的主播广告。外循环效果广告目标是单纯最大化eCPM。内循环原生广告由于其广告内容是内部主播的专辑需要兼顾eCPM和上下文等体验相关性。时间约束的主播广告需要考虑投放完成度目标。此外,冷启动广告的生态价值目标也需要考虑。

针对这个背景广告算法设计了多目标的统一粗排策略。策略使用“独占+优选”的思路,既保证每个通道都有广告进入精排,又能最大化整个队列的商业价值。策略上线后,从AB数据看,自营广告整体ecpm+5%

喜马广告算法优化实践(四):广告系统漏斗优化

具体上,统一粗排由4个业务目标队列和1个公共队列构成,分别是1)冷启动,2)外循环效果、3)内循环原生、4)时间约束主播广告、5)共用队列。在业务目标队列里按照独立的粗排分计算并排序。

业务引领,成长中的粗排模型

粗排策略的基础是模型预估值。对于粗排模型,在业务场景的驱动下,广告算法也做了3轮的迭代。模型从简单线性逻辑回归到LTR单一目标双塔模型、再到解释性更强和目标更聚焦的多个目标多个双塔。

喜马广告算法优化实践(四):广告系统漏斗优化

线性逻辑回归建模和推理简单适用于业务初期快速生效。随着广告业务发展,广告位增多流量复杂后,算法设计了单目标LTR的双塔模型。此时深度学习拟合能力强、双塔物料向量缓存省算力、单目标好维护的特点能很好解决业务问题。随着业务场景中进一步出现内循环原生、时间约束主播广告等新形态业务,单一目标LTR渐渐不能匹配业务需求。此时就需要更加细致的CTR、CVR独立目标双塔模型。

精排漏斗优化:效果最直接算法最复杂

精排漏斗最贴近广告曝光,因此所做的优化也最能影响广告效果。其中既包括常见的CTR/CVR预估模型,也包括喜马特色的系统优选等工作。总的说精排是围绕二个方面优化,更精准的eCPM预估,更平衡的竞价排序策略。二者相互协同,从媒体视角提高eCPM和生态健康以长期收入增长,从广告主角度保证成本并尽可能拿量。

模型优化在之前的文章已经有介绍。在此介绍竞价排序策略上的优化,包括准入、排序、最优化预算分配。首先在准入方面,由于喜马对用户体验的重视,有独立的负反馈准入实时拦截潜在高风险广告。此外,还有商业价值准入筛选,提升大盘流量价值,降低广告主无转化空耗的比例。其次对于降价排序,在核心CTR、CVR预估值的基础上,通过双出价、人群溢价等策略进行竞价排序。最后是颇具喜马特色的系统优选,其帮助广告主动态进行广告位的预算分配和投放选择。下面对系统优选稍微展开讲解下。

系统优选是面向B端广告主的功能。由于喜马有几十个广告位,个体间差异大(点击率、触达人群等),广告主手动选择广告位难度大、成本高。在保成本的条件下,系统优选将代替广告主自动选择广告位。功能上线后,帮助广告主消耗提高了+33%。同时提高了媒体竞价填充进而带动eCPM增长,单次竞价中账户数+133.3%。

喜马广告算法优化实践(四):广告系统漏斗优化

策略如上图所示,最大投放集合由广告素材决定。日常通过运营策略激励广告主补齐。ROI是核心反馈信号,定义为:ROI = (计划转化出价*广告位转化数)/(实际扣费)。ROI越高超成本风险越低。先将广告位按ROI拆分为2个子集合:主投S,ROI大于1,探索A,ROI小于1。并计算对应周期消耗上限,使得S和A能够相互匀成本达成整体计划ROI>1。

纵向贯穿多层漏斗的协同优化--冷启动

漏斗优化的实践中除以上层内横向迭代外,我们也在冷启动中进行了多层漏斗协同优化。冷启动是指广告引擎通过一定的扶持手段帮助新的广告内容进行流量探索E&E。对于媒体带来新的广告收入增量,丰富广告多样性从而提高eCPM。对广告主,新广告投放起量得加速,减少了探索资金成本和时间成本。

在喜马媒体流量的特点下,冷启动的功能定位使得其面临着以下挑战。首先由于新广告曝光不充分,基于后验曝光数据的模型和统计策略都不太准确,容易造成其更难通过层层漏斗得到曝光机会。其次是E&E效率问题,冷启动探索时不可避免的有流量价值的短期损失。探索有成本但需要保证可控。最后由于喜马广告体量相对较小,广告主对流量质量要求更高,冷启动期间广告的深度效果(如付费、授信等)影响着广告主后续的预算增加。可以看出冷启动问题是系统性的,并非单独一层漏斗能够解决。在实践中我们根据梳理的问题,进行了多层漏斗联合优化。

喜马广告算法优化实践(四):广告系统漏斗优化

首先,在第一层检索漏斗中设计了“新索引”,图标1,满足规则的冷启动广告放置于此。从该索引检索的广告会进入一条串联多层的单独通道,不与其他广告相互竞争, 图标2,从而保证有一定数量的冷启动广告进入精排漏斗。

然后,为了控制探索的成本,我们为广告主预分配计划和曝光两级额度,图标3。单账户内有多个新计划时,则会计算计划的先验质量分优选出TopN标记为冷启动计划。单个冷启计划有曝光额度,只有当曝光数小于分配的额度时,广告才会放置到新索引里。引入额度控制后,流量利用率得到提升,自营广告整体ecpm+6%。

接下来在召回漏斗,我们利用平台投放数据和收集的外部合作数据,根据广告的SKU从离线挖掘好的优质人群中优先召回,图标4。这使得冷启动广告曝光中目标人群浓度提升,深度效果优化。离线人群在持续挖掘和迭代中。优质人群召回使得冷启动计划CTCVR+16.7%。

最后,在精排漏斗会进行预排序并对top1的广告进行扶持加权,图标5。在预排序中算法会执行pCVR的准入确保冷启动流量的质量。同时预排序排序分会将配额的使用速度以流量紧缺因子引入,使得曝光过慢的计划排序靠前、曝光过快的冷启计划排序靠后,保持冷启动的匀速。最后加权系数综合广告的投放类型、预估CTR、CVR和召回情况计算得来,图标6。保证与流量更匹配的广告优先探索,实现E&E平衡。

后记

回顾以上的漏斗优化,可以看出在广告请求的高QPS、低时延的场景下,面对百万量级的广告库,层级漏斗的架构是平衡算力使用和业务效果的最优方案。从复杂系统优化的角度来看,漏斗优化将广告引擎进行了合理的拆分,提供了更多的优化抓手。这样使得算法能有更多的切入点进行优化。

虽然在精排漏斗的优化对于广告效果提升最直接有效,但广告算法的优化工作并不止于此。从精排想要什么出发,合理进行业务梳理,优化前几级漏斗也能带来业务效果的提升。

漏斗优化实践中也观察到局部最优与全局最优不一致的情况。每一层漏斗在优化时都是按照其设定的局部目标去迭代。但由于信息的局部性,算力限制,单个模型的误差等因素,如果完全以局部最优为目标,整体的eCPM效果出现持平甚至负向的例子。一般保持一定多样性是解决方法之一。例如,在粗排漏斗始终选择粗排分最高的广告就造成了同一个广告主占据了大半精排竞价队列。通过增加多样性后,这个问题得到解决,eCPM有了提升。

作者:bei.liu

来源-微信公众号:喜马拉雅技术团队

出处:https://mp.weixin.qq.com/s/txQZj1crDigg3d9Jlf_wQw

继续阅读