Fork me on GitHub

i 技术会 | 爱奇艺效果广告探索与实践

爱奇艺技术产品团队

今天分享的主要内容分为以下四块内容:爱奇艺效果广告产品介绍,主要是介绍爱奇艺效果广告的主要资源位以及对应的售卖形式;二是效果广告排序算法实践介绍,这里主要介绍在排序算法过程中使用的精排模型和粗排模型;三是效果广告业务策略实践,该模块主要介绍针对新广告的冷启动策略以及针对于出价实行的智能出价策略和双目标出价策略。最后在以上三点的基础上进行效果广告的总结和展望。

爱奇艺的效果广告主要分为两块内容,一块是框内资源,用户在观看长视频和短视频时观看到的前中后贴对应的贴片广告以及暂停广告;另外一块是框外资源广告,框外资源广告内容较多,包括准信息流、纯信息流、焦点图和开机屏、视频关联等等对应的效果广告。

如上图右边所示,首页推荐页对应的准信息流广告,在爱奇艺效果广告中分别是准信息流、纯信息流、焦点图、贴片四个位置为重要的资源位。针对于多种的资源位,接下来向大家介绍效果广告主要的售卖类型。爱奇艺效果广告主要是提供 CPX 和 oCPX 两种售卖类型和计费模式。正如大家知道的那样,效果广告主要针对中小广告主而言,中小广告主通过实时竞价的策略拿到曝光获得展示/点击和转化。

效果广告产品——oCPX

在 CPX 投放的模式下,竞价是通过 ECPM 来排序的,ECPM 在 CPX 模式下等于 bid 乘 PCTR,在 CPX 投放过程中广告主遇到右上角三个痛点;一是转化成本不稳定,效果广告的广告主大多是中小广告,中小广告主主要关注用户最终的转化,包括下载、安装和付费等等。CPX 计费模式以点击进行计费,无法保证广告主后续转化率以及对应的转化数,从而导致转化成本不稳定的情况。第二是人工优化繁重,广告主在使用 CPX 计费模式的情况下,需要筛选出最优的曝光质量,从而保证从点击到后续的转化具有较高的转化率。广告主通过设置用户的定向条件来保证曝光质量,定向条件包括用户的性别、年龄、层次和频道等等,

从而实现在 CPX 广告投放模式下具有好的转化效果。第三是拓量困难。广告主在投放 CPX 模式的情况下,只能进行点击出价的操作,点击出价提高时确实可以达到曝光和点击数增加的效果,但是通常带来的副作用是转化率的下降以及转化成本的上升。

故我们尝试引入 oCPX 模式,oCPX 模式下的计费公式是 bid 乘 PCTR 乘 PCVR 乘智能出价因子,广告主投放 oCPX 时只需要设置目标成本即可,由媒体方通过算法模型进行 Ocpx 广告的智能投放。接下来向大家主要展示为了实现广告投放的自动驾驶,我们在 PCTR、PCVR 和智能出价模块分别做的尝试和实践。

排序漏斗逻辑

在介绍具体的排序算法实践之前,先过一下排序的过程中所经历的排序漏斗逻辑。一个请求发生时分别经过以下三个环节,最终达到广告展示。第一层是召回环节,召回环节包括定向召回和智能定向两块,定向召回主要是根据广告主设置的定向条件,之前也介绍过,城市、地域、性别、年龄等等召回对应的广告。智能定向就是根据突破广告主设置的定向条件来筛选出相似度较高或者预估转化率/预估点击率较高的广告订单,参与到后续的模块,召回选出指定的订单之后进入粗排环节,粗排包括创意优选,轻量的点击率预估和转化率预估,以及对应的冷启动。创意优选模块主要是为了优选同一广告主底下最优的创意,可以实现平台的新颖度,提高平台的转化效果。

轻量的点击率和转化率预估解决召回之中大量的广告需要进入精排环节进行的轻量级的模型计算,用于广告的筛选逻辑。冷启动是为了解决在新广告投放的过程中由于模型没有拿到这部分新广告产生的数据而无法进行准确的预估。

进入粗排环节之后,筛选出少部分的广告进入精排环节,精排包括预算平滑、点击率预估和转化率预估三个模块。预算平滑主要为了解决广告主按天进行预算投放的过程中,预算可以分小时平滑的花费在每个小时内,解决部分广告主由于出价或者点击率预估效果较好导致短时爆量的问题,从而影响广告主最终的成本。点击率预估和转化率预估则使用较为复杂的预估模型进行对少量广告进行优选,按照 ECPM 进行排序后选出 TOP1 进行广告展示。智能出价模块则是涵盖到粗排和精排两个环节,智能出价主要为了保证广告在投放过程中一是成本稳定,二是能够及时进行扩量,故其会同时涵盖粗排和精排两个环节。

算法实践的整体框架

首先从最上方的数据流开始,投放引擎在进行广告投放之后产出对应的现场特征 Tracking 数据,现场特征主要是为了实时记录精排在排序过程中使用的具体特征而落的日志。现场特征和 Tracking 由广告数据团队产出 Kafka 流和 Hive 表进行落地。其中一部分数据用来生成 HTTP 接口实时数据,用于智能出价参数的计算,最终智能出价模块通过数据库的方式传递到投放引擎进行使用。特征监控是为了对现场特征的覆盖率和波动的情况进行监控,从而保证线上服务的稳定性。特征生产主要为了产出用户画像特征,此处的用户画像包括用户的基础属性,用户的商业兴趣画像和用户的广告兴趣画像,该部分会通过历史加实时的方式传递到投放引擎中,而特征解析模块主要将现场特征与 Tracking 日志进行关联后产出模型训练中需要使用的数据,以上则是数据流模块。

离线训练包括粗排模型训练和精排模型训练。粗排模型训练则使用特征解析产出的数据进行模型的训练,训练完成之后再进行离线推理产出广告向量和用户向量。其中广告向量直接通过中间媒介传递到粗排 ranking,而用户向量传递到投放引擎,由投放引擎统一进行处理。精排模型训练主要是包括利用特征解析产出的训练数据进行 FM 模型训练和深度模型训练,在模型训练完成之后生成偏差校准参数,最后进行模型发布,模型发布中针对于 FM 模型直接发布到精排 ranking 进行推理,而深度模型则是发布到 TF serving 进行线上推理。

最后介绍线上推理模块,投放引擎在请求到来时,会分别获取用户画像、用户向量、上下文特征和智能出价因子,将这些信息以及召回需要排序的广告放入到粗排模块,粗排请求粗排 ranking 使用用户向量和广告向量的乘积进行广告的粗筛,筛选出少量广告之后进入精排模块,精排将投放引擎中获取用户特征数据和一些额外信息传递到精排 ranking,通过广告业务数据获取广告业务数据的同时进行 FM 模型的推理,或者调用 TF serving 请求得到预估转化率。得到对应的结果之后返还给投放引擎中的精排模块筛选出最优的广告进行广告展示。

模型训练模块

包括粗排和精排的模型训练。粗排主要的衍生原因是由于精排模型较为繁重,线上推理性能较差,对于无法处理召回传递过来的大量广告,从而衍生出粗排模块,粗排主要的目标即是推理效率问题。我们在刚开始落地粗排时尝试采用 FM 模型,但是随着广告业务的发展,FM 模型远远满足不了线上推理效率的需求,故我们引入下图所示的双塔模型。

双塔模型分别产出用户向量和创意向量,通过两个向量的乘积实现线上推理的高效。在解决推理完之后,我们需要保证粗排模块能够预估的更加精准,主要通过三种方式进行提高模型的预估能力。

一是多维度特征,尽可能多的增加在模型训练过程中使用的用户特征以及创意特征。二是特征 Embedding 方式,我们尝试对于多值用户画像特征以及连续性特征和广告侧特征进行 Embedding 操作,提高特征的表征能力。最后对于用户向量和创意向量使用不同结构的 MLP 逻辑,提高模型的泛化能力,使得产出的用户向量和创意向量的乘积能够很好的代表最终预估得到的点击率和转化率。

解决预估精准度问题之后,我们需要考虑针对于新广告进行处理,就要求模型更新及时,我们通过天级别全量训练加上小时级别创意推理的逻辑,实现支持新广告业务,这里面主要是指每小时定期用右侧逻辑推理得到创意的向量,换入到投放引擎中进行使用,从而使得粗排能够更好的支持新广告。

精排模块中使用到的点击率预估

在爱奇艺效果广告开始投放的过程中直到现在我们共进行了四个主要版本的迭代。分别如下,第一个版本为逻辑回归模型,利用用户商业画像特征、上下文特征、广告业务特征进行拟合预估点击率,但是逻辑回估过程中由于模型较为简单,我们想提高预估的准确率,只能通过特征工程的方式,特征工程相对比较烦琐,为了解决这个问题我们尝试引入 FM 模型,FM 模型的好处是可以构造低维的向量得到特征交叉的组合效果。另外在 FM 的基础上,我们构建了用户广告画像的特征。

在完成 FM 迭代之后,我们遇到了数据和模型时效性的问题,故我们尝试引入 FM with online learning,实现实时的进行模型更新和训练,同时在 FM 基础上构建实时用户广告画像特征,从而提高模型的预估准确度。

FM 模型通过低维向量进行两两交叉组合,后续我们发现模型和特征的表达能力存在不足的问题,故尝试引入深度学习,使用深度学习中的 Embedding 来进行提高特征的表征能力。使用 MLP 逻辑提高模型泛化能力。

引入深度模型首先面临的是模型的选择,这里我们对比了 wide deep 模型、DNN 模型和 DCN 模型。相较于 DNN 模型来说,wide deep 模型可以通过左侧 wide 部分提高模型的记忆能力,同时左侧部分也可以进行快速的迭代。相较于 DCN 模型来说,wide deep 可以与 DCN 达到离线评估一致的 AUC,其实现的复杂度以及线上推理的效率远远低于 DCN,故最终我们选择了 wide deep 模型。在模型选择以后进行 wide deep 模型的优化,主要针对学习率、优化器以及隐层的陈述和隐层每层的神经单元的个数进行优化和尝试等等。如右图所示为详细模型结构,这里不再赘述。

最后我们为了保证 Widedeep 顺利进行线上落地,对推理效率进行优化,结合计算云的同学一起对 Hash OP 以及重复计算进行优化操作,最终实现线上的落地。重复计算逻辑主要是指对于相同的请求来说,不同的广告都需要预估对应的点击率,但是这些广告的用户侧和上下文侧的特征是一致的,所以将这一部分重复的计算来进行剔除,从而实现线上高效的推理。

转化率预估

首先考虑能否直接复用点击率预估中使用到的 wide deep 模型,答案肯定是不可能的。在转化率预估遇到的主要难点一是转化目标多,当前爱奇艺整个效果广告投放平台支持包括下载、安装、关注微信号、激活、注册等等,二是转化数据少,转化数共十万级别每天,且主要集中在注册和关注微信号,其余转化目标数据更少,三是采用点击和转化作为正负样本,但是对所有曝光请求都会预估转化率,从而导致训练和推理样本分布存在偏差,四是不同资源位、不同转化类型对应的转化率差异都比较大,类似于其中一个例子,下载关注微信号能达到 5%-10% 的转化率,付费和提交表单达到千分之一甚至更低的转化率,针对转化率预估过程中遇到的这四个问题采用如下方式进行解决。

一是多目标学习任务的模型,多目标学习任务的模型主要是分为主任务和辅助任务,主任务过程中是通过构建 PCVR 为主的神经网络和 PCTR 为辅的神经网络,两者相乘得到 PCTCVR,最终在离线进行训练的时候是将 PCTCVR 中得到的损失和 PCTR 得到的损失相加起来共同进行联合训练。

通过辅助学习任务,我们可以学习 PCVR,解决转化数据,转化数据样本不均衡的问题。在 loss 进行相加过程中进行加权的探索和训练,解决两个 loss 之间不一致的问题。通过共享特征进行表示,PCVR 在能够学习到非点击样本对应的信息解决样本稀疏的问题,这部分也可以解决前面问题提到的样本有偏的问题。最后在线上推理过程中只需使用 PCVR 侧,可以大大提高线上推理效率。

额外的模块校准

校准之所以存在的原因,因为在 ECPM 进行排序的过程中,使用到 bid 乘 PCTR 和 PCVR,PCTR 和 PCVR 需要保证和点击率、转化率一致,才能使得 ECPM 相对比较稳定。但是在模型预估的过程中真能够保证预估点击率或者预估转化率与点击率或者转化率一致吗?答案通常是否定的,主要是由左边所示的三个原因。一是新广告预估偏差大的问题,之前我们也说到在新广告投放的过程中,由于没有历史数据的积累,通常预估会偏差比较大,表现出来的是部分广告无法曝光以及部分广告预估值偏大的情况。第二个正负样本归因问题,以转化率为例,转化率在生成训练样本的时候,由于转化延迟的问题,训练数据集通常没有办法完全涵盖所有的转化样本,会导致最终我们预估出来的转化率会比真实的转化率相较来说低很多。准确性与稳定性不一致的问题,我们在实践的过程中发现模型在预估的过程中,通常情况下 PCTR 或者 PCVR 预估值越高的流量,其对应的方差越大,这里将 PCTR 或者 PCVR 与稳定性相挂钩,从而导致整体来说模型预估并不准确,最终引入校准逻辑。

在 PCTR 和 PCVR 校准中,我们分别使用了不同的校准方法。PCTR 模块使用保序回归分段校准逻辑,既对 PCTR 数据进行分桶形成原始的 PCTR 与最终的 PCTR 一一映射的关系进行线上最终 PCTR 的生成,PCVR 逻辑则与 PCTR 不同,主要原因是由于 PCVR 的正样本数量较少,模型可能不具有很好的区分度或者具有统计偏差进行排序,故我们尝试使用加法分段校准,主要是通过原始的 PCVR 值加上 bias 方式进行线上排序预估。以上则是排序算法主要的模块。

效果广告进行业务策略的实践

冷启动模块主要是为了解决 Exploit 和 Explore 问题,同时也尽量解决模型预估不准确的问题,模型预估不准确主要是由于在竞价后真实的点击率分布和预估点击率之间的分布存在差别,模型训练则是使用模型筛选出来的样本进行训练,从而形成马太效应。

为了实现新广告投放,我们主要采用了四种方法。一是粗排到精排通道逻辑之中增加了额外的新广告的数量,从而保证新广告能够稳定进入精排模块。同时增加了曝光扶持、转化扶持以及多广告维度扶持,扶持主要是通过修改竞价 ECPM 实现。当新广告的曝光或者转化数少于指定阈值时,在实际计费的时候使用原始的 ECPM,这样保证新广告在投放的过程中通过少量的花费能够得到快速的积累和曝光数据以及转化数据。

策略实践中最主要的模块——智能出价

由 ECPM 计算公式可知,ECPM 等于 PCTR 乘 PCVR 乘转化出价乘智能出价因子。智能出价因子主要目标是控制成本增加消耗。当广告主设置目标转化成本时,广告在投放的过程中出现目标成本高于转化成本时,我们通过调高出价增加广告消耗,当目标转化成本低于实际转化成本时,我们调低智能出价因子实现控制成本。接下来向大家介绍我们为了实现智能出价的精细化操作来尝试的各种处理。

一是成本动态调整策略,成本动态之中智能出价因子计算与广告当天剩余预算以及期望的转化数以及出价来综合决定最终产出智能出价因子用于控制广告的投放逻辑,在成本动态调整的基础上,我们尝试增加右边所示的四个策略实现广告顺利的投放。

一是试探金策略,广告在投放的过程中如果出现短暂的爆量问题可能会导致偏差比较大,智能出价严重控制其放量逻辑,形成一个恶性的循环。我们天级别的增加试探金策略逻辑使得广告在每一天可以进行试探投放,从而尽量缓解在投放过程中遇到的恶性循环。

二和三分别是节假日拓量和晚高峰拓量,由于节假日和晚高峰过程中流量较多且对应的转化效果较好,广告主为了能够及时拿到更多的曝光量和转化数,需要激进调整智能出价因子。四是平滑拓量,广告在投放的过程中存在延迟转化以及集中回传等问题,会导致成本动态调整中产出的智能出价因子出现迅速增大的情况,导致广告主出现短时间曝量问题。我们通过平滑拓量的逻辑可以实现广告的平滑投放。

考虑成本动态调整策略基础上,我们思考了如下的问题,广告主在拓量的过程中能否对优质的流量进行激进放量,对于劣质的流量尽量减少其拿到量的机会。我们引入了流量优选策略,流量优选策略主要通过精排模块预估的 PCTCVR 值与历史 PCTCVR 均值进行对比,当 PCTCVR 大于历史的均值时我们认为该流量是优质的流量,在上一步的基础上继续提高智能出价因子。当 PCTCVR 低于历次的均值时,我们认为这是劣质的流量降低智能出价因子。

分资源位控制策略,在爱奇艺广告投放的过程中具有多个不同的广告资源位,不同的广告资源位对应的转化成本和转化率也不一致,为了实现智能出价引资的精细投放,我们对资源位进行拆分,分别计算不同的资源位的智能出价因子,从而实现智能出价因子能够对广告进行精细化的调解,如右图所示在广告投放过程中当目标转化成本大于实际转化成本时,智能出价因子提高导致智能出价价格提升,可以获得更多的曝光量,从而实现广告的顺利拓量问题。

最后则是介绍在业务策略实践过程中使用的双目标出价逻辑,广告主在投放的过程中,通常会关注前端成本和后端成本,前端通常包括下载和激活等等,相对来说转化数较多的转化目标,后端成本则是包括付费、次留、下单等等,转化数据较少无法直接进行模型训练,为了保证广告主后端分差大的问题,根据广告主设置的前端转化成本和后端转化成本,我们分别设置计算其对应的智能出价因子和后端智能出价因子,后端智能出价因子处于放量状态选择两者之间最大的值进行放量,后端成本不满足/出现偏差大的时候我们对两者进行加全操作,权重由后端转化成本进行决定,后端转化数越多,在最终的智能出价因子中占比越高,最终实现广告主后端成本偏差小的问题。

以上内容分别介绍了爱奇艺效果广告的广告形式,以及对应的排序算法实践和广告策略实践,在后续的广告投放的整体趋势是平台的智能化和投放的自动化以及用户的个性化,同时广告主会逐渐更加专注于后端成本,给媒体方提供了更加高的要求。在后续的效果广告提升主要的关键路径有业务场景深入理解,收集、拓展足够且有效的数据,同时在有数据的基础上进行排序模型的持续迭代和优化,最后是针对于不同的转化目标使用多目标迁移学习以及解决转化延迟等问题。从而实现效果广告更持久的变现能力。


本文地址:https://www.6aiq.com/article/1586708957622
本文版权归作者和AIQ共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出