多目标广告混排机制在超级APP中的技术

背景

近年大家会发现一个现象,行业中新的爆发性发展的创业公司在不断变少,最直接的原因应该是移动互联网的红利增长已经放缓,同时各个巨头也在使用不同的方式,将流量收口到自己的超级APP中,例如淘系的电商,社交的微信, 内容则为头条,线下服务则是美团。其他创业公司想通过某个领域切入,进行弯道超车,在技术缺少重大变革的情况下变得更加困难;另一方面,各个超级APP,无论是何种属性,解决用户的何种需求,也都在尝试着商业化,以便让自己的业务生态形成可造血的良性闭环。

当然各家超级APP在商业化的过程中,也都遵循着商业化一直的准则在构建良性生态,尽量避免使用吃药打兴奋剂的模式,伤害到生态中的任何一个环节。 总体上,在健康的商业生态中,都需要考虑C(Customer)端用户,B(Bussiness)端商家,以及P(Platform)端平台三方的利益平衡。其中C端重点要满足用户体验,解决用户痛点需求;B端主要是广告主的ROI,需要给他带来收益;P端在中间进行调整平衡,需要考虑生态的良性发展同时需要考虑收入。

同时目前的一个大趋势是超级APP中提供给用户的内容和服务已经多种多样,已经是多模态的内容提供,同时穿插着内容,服务和广告。 如何对这些内容进行最高效的多目标混合分发,就是需要重点解决的课题。
例如此处单独看自然结果和原生广告的混拍, 如何在保证体验不受影响(或者大的影响)的情况下提升广告收入,就是一个非常值得研究的课题。

本文会以作者在多个平台的广告经验,向大家进行目前的主流方案。

混排问题分类

以出行超级APP高德为例,在高德中用户搜索后,会给用户展示匹配的POI list,该过程中,广告投放的POI会和自然结果的POI进行混排。此时就会面临自然结果和广告如何进行混排的问题。此时混排一般有两大类模式:定坑和非定坑。

  • 定坑,简单来说定坑就是具体展示广告的位置,以及数量是固定的。该方式的优点是广告的数量,收入可控,而且自然结果和广告结果可以相对独立地进行优化; 缺点是广告质量和自然结果质量不能同一拉起,可能出现自然结果质量较好但出的广告质量很差,或者反过来的情况,导致用户体验或者广告收入受损
  • 非定坑 ,非定坑则相反,逻辑会相对复杂,广告和自然结果需要统一优化,不管是工程架构上,还是算法上,要求都更高。但能够同时考虑广告和自然结果的质量,理论上收入上限会更高。 同时非顶坑也可以有多种方法,各种方法的复杂度也不尽相同。

    图:(1)为定坑3和6,(2)为动态定坑,隔2插1,(3)为加权混排广告A和B

具体方法

定坑

即广告坑位出现的位置,数量,都是事先根据业务需要,或者实验方式确定下来的。 属于计划经济类型。 类似百度凤巢说前3个坑位可以出广告, 或者某些超级APP上说放回结果list结果中第3,5,8位置上可以出广告。 当然这些位置上, 如果广告系统自己判定觉得在某些流量上广告总体放回结果较差,也可以不出,但这个判定也是广告系统自己进行的判定,主要会影响最终的PVR(出广告流量占总体流量占比)

动态定坑

动态坑位方式比定坑模式进了一部,相当于在出广告的时候,加入了一定的个性化因素,可以将问题定义为对于每次流量三个参数的优化[N,S,I],其中N:出广告的条数,S:广告开始的坑位位置,I:广告之间的间隔。 根据每个请求的个性化信息,以及召回后的广告质量,来动态确定参数三元组的具体值。该方式能够在广告质量较高的时候,多出广告,且能够将广告排的更靠前

加权混排

该方式需要对自然结果和广告结果进行综合考虑,拉通排序的标准进行混排。本质上相当于需要将自然结果和广告结果的价值进行统一度量。简单来说的建模方式如下:
$v=\beta \cdot rankscore+ecpm$
其中$v$为同一价值度量,$rankscore$为作为自然结果的质量分,$ecpm$为预期的广告收入。其中$rankscore$由LTR模型进行预估。$\beta$为自然结果rankscore的权重
所以:

  • 自然结果:相当于$ecpm=0$,仅考虑rankscore自然结果的质量分。
  • 广告结果:广告结果rankscore一般偏低,但$ecmp=Q\cdot Bid$,相当于对广告的商业价值进行加权,一般情况下按照$Q=pctr$进行计算
    使用该方式就可以将自然结果和广告的价值度量进行拉起,之后进行统一排序。

    具体操作

    加权混排,在具体操作的时候,会面临以下几个问题:

    1. rankscore和ecpm一般都不是相同分布的,具体的值不能直接线性加权计算
    2. $\beta$ 值如何确定
    3. 如何计费

调整具体分布
因为rankscore和ecpm是两套相对独立系统的打分,所以理论上二者分布肯定不一样


【图:rankscore&ecpm为不同分布】

所以在排序前,需要将二者的分布拉齐,否则仅简单调整$\beta$值并不能解决问题。所以我们需要找到一个函数$f$,使得$ecpm=f(randscore)$,具体对两个分布进行插值可以求解。

$\beta$求解
这个就比较考验超参数调整的经验了,当然目前超参数的调整有较多的方法和开箱即用的框架。 一般现在较为常用的方法是贝叶斯优化(Bayesian Optimization)。 一般具体应用场景中,广告的实效性较强(受广告供给,预算等的限定,甚至很多APP分发的场景,每天的广告变化可能超过20%),所以该超参数调整很多时候需要做到准实时化。

计费方式
业界目前最常使用的方式,还是GSP方式的二价计费。其原理是扣费并不是直接按照胜出的广告的报价进行扣费,而是按照下一位广告的报价进行扣费,该方式的好处主要是简单,以及能够让竞价者能够按照自己内心的真实性进行报价(相对来说VCG会更加复杂)
经典的$cpc=\frac{ecpm_{i+1}}{pctr_i}$ 但在自然结果和广告混排的场景中,下一位可能是自然结果, 那如何进行计费?

思路是看下一个广告, 例如下一个当前广告假设为$A$,下一个广告为$B$,则:
$v_A=\beta rankscore_A+ecpm_A$ $v_B=\beta rankscore_B+ecmp_B$,则我们设计 :
$cpc=\frac{v_B-\beta \cdot rankscore_A}{pctr_A}$
其物理含义为:大思路仍然是GSP,但在进行扣费的时候, 广告主按照下一位广告的出价进行扣费,但会扣除掉自身因为自然结果体验值带来的位置前移。 相当于当前广告为了保持当前的位置,仅需要付出将结果从下一位值,提升到当前位置的钱。

端到端多目标模型混排

理论上来说端到端的结果是最好的方式,但该方式会导致自然结果排序和广告结果完全耦合黑盒化,提升了系统不可控的风险。 所以很多商业系统中都还不是这种方式。
而且自然结果体验和商业化变现目标的平衡,最后还是一个商业上的决策,并不是一个一尘不变的优化问题,例如如果一个上市公司有财报的压力,则可能会加大商业化的粒度,提升广告占比,或者在某段时间反过来更加注重用户的体验。

总结

总结下几种模式的优缺点:

模式 效果天花板 自然&广告结果耦合 系统风险
定坑 解偶
动态定坑 解偶
加权混排 耦合
端到端混拍 较耦合

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注