阿里妈妈:基于动态背包的多场景广告序列投放算法

2020 年 8 月 24 日

阿里妈妈:基于动态背包的多场景广告序列投放算法

导读: ROI 提升 10%!阿里妈妈定向广告技术团队首次采用基于长期价值的动态背包问题来建模和求解序列广告投放问题。本文将为大家分享具体的建模方案和细节,并通过离线和在线实验进行验证。


01 背景


在电商平台中,在预算约束下优化一段时间的 GMV 是广告主的核心诉求之一。作为电商平台,从广告主视角如何帮助其实现该诉求是非常重要的问题。


  • 对广告主:一段时间预算约束下的GMV优化帮助广告主实现更多营收和更高的投资回报率 ( ROI ),从而让广告主真正满意;

  • 对平台:消费者和广告主的满意度提升为平台带来健康的生态和长期的贸易繁荣,并能吸引更多的广告主加入以及投入更多的广告预算,从而带来平台的收入提升;

  • 对消费者:GMV的优化满足了更多的消费者购买需求,从而优化了消费者体验。


总之,在预算约束下优化一段时间的 GMV 能够带来三方共赢,其重要性不言而喻。


为了解决该问题,绝大多数出价策略将一段时间的 GMV 优化问题拆解为:对每次用户请求进行独立优化,并简单地认为这些独立优化的汇总结果可以实现一段时间整体 GMV 的最优化。事实上,这类策略得到的是次优解,因为它们以孤立的视角把消费者和广告限定在了单次交互中,而忽略了一段时间内的多次交互可能产生的其它影响。


为什么孤立的单次交互视角优化会导致次优解?我们从实际情况出发,首先,同一个消费者在一段时间内 ( 例如 3-7 天 ) 会多次访问淘宝,并且随机地在淘宝不同的场景出现 ( 例如首页猜你喜欢、支付成功等 ),这为同一个广告和同一个消费者在不同场景多次接触创造了机会;其次,大量的成交并非发生在消费者和广告的首次接触中,而是发生在第二次或之后的多次接触中。通过 AB 实验,我们发现广告和消费者的前序接触会影响消费者对该广告在后续接触中的点击率和转化率,说明多次的接触对消费者的心智有累积影响的效应。在这样的背景下,单次请求优化结果的累积很容易导致次优解。


举个常见的例子,假设消费者和广告存在两次接触,第一次接触时,其转化的期望低于其它流量转化的平均期望,而如果在接触一次后再发生第二次接触,由于消费者心智累积效应,其第二次接触后转化的期望显著升高,使得两次接触的整体转化期望高于其它流量转化的平均期望。在这种的设定下,单次贪心的优化策略在第一次接触时由于其转化期望较低,所以不会选择去竞得流量;而由于第一次的未接触导致了心智并没有产生积累效应,因此第二次接触的转化期望依然较低,也不会去竞得流量。然而,如果在第一次接触时就能预估到两次接触的整体转化期望较大,那么第一次接触就会做出竞得的决策,并顺理成章地竞得第二次高价值接触,我们称这种策略为序列投放算法,显而易见,其在整体上比单次请求优化策略 ( 下文统一称为"单次投放算法" ) 实现了更好的效果。


这个例子中,序列投放算法和单次投放算法做出不同决策的核心原因在于:第一次接触前,单次投放算法只评估了单次请求的价值,即短期价值,而序列投放算法评估了未来多次请求的整体价值,我们称为长期价值。我们定义同一个消费者和同一个广告的多次接触构成了一个广告投放序列,并定义长期价值为从此刻起剩余序列的总价值。可以看出,当序列长度为 1 时,短期价值是长期价值的一种特殊情况。因此,基于长期价值的序列投放策略能够兼容并优于基于短期价值的单次投放策略。基于这个理念,我们提出了基于长期价值的多场景序列投放算法。


然而,基于长期价值的序列投放算法在解决预算约束下 GMV 的优化问题时存在诸多挑战:


  • 优化目标是长期的累积价值,而决策的粒度是单次的;如何基于长期价值的预估获得最优的单次决策?

  • 长期价值预估模型的学习离不开策略探索生成的序列数据。长期价值预估模型和决策模型的学习如何保证收敛性?如何保证决策的最优性?如何提升策略探索的效率?

  • 如何保障预算约束的满足?


针对这些挑战,我们逐一给出了相应的解决方案。首先,我们将预算约束问题建模为背包问题:背包中物品的价值为<用户,ad>形成的序列价值 ( 长期成交、收藏加购等 ),物品的重量为此序列中发生的成本 ( 消耗 );我们按照性价比 ( 序列价值/成本 ) 由高到低逐个选择物品,直到选出的物品总消耗刚好不超过预算约束。这里,由于物品重量远小于背包容量,按性价比排序的贪心算法能够接近最优解。然而,每个序列的价值和成本与运营该序列的广告策略有关,因此这是一个动态背包问题。为求解此动态背包,我们采用双层优化问题的解法来迭代求解:


  • 物品的贪心挑选

  • 物品价值/成本以及对应策略的优化


在此框架下,我们提出了一种近似最优的运营策略,该策略满足强化学习中 Policy Iteration 算法的性质,能够保证其学习的收敛性。此外,为了使策略在实际场景中落地,我们提出了一种将连续出价转换为离散动作的方法,能够在不丢失出价精度的情况下,大幅度减少动作的探索空间,提高学习效率。综上,我们将整个算法称之为 MSBCB ( Multi-channel Sequential Budget Constrained Bidding ),大量的离线和在线实验验证了我们算法的有效性。下面我们详细介绍问题的定义、解决方案和实验结果。


该工作已被 ICML-2020 接收,论文原文《Dynamic Knapsack Optimization Towards Efficient Multi-Channel Sequential Advertising》地址:


02 建模方案



1. 固定∏,优化 X





2. 固定 X,优化∏





03 方案细节


1. 固定 X,优化∏ -> 强化学习求解





2. 固定∏,优化 X -> 背包求解



3. 预估模型



上面主要介绍了如何根据长期价值来做相应的决策,在本小节,我们介绍长期价值该如何预估。首先,模型的预估对象分成交和消耗两种,因此我们这是一个多任务学习,需要同时学习回归和分类。为应对多任务学习,我们将模型结构进行拆分,底层共享 embedding,顶层网络参数解耦,以降低多任务学习互相不利干扰,而且通过 validation 的方式优化各个 loss 之间的权重。其次,对于回归任务,由于其存在大量的零样本,导致模型成为一个零膨胀模型 ( Zero-inflated models ),其输出基本上全为 0,无法用 MSE loss 来正常学习网络参数。为解决此问题,我们提出两种解决办法:


  • 通过合理的负采样来保证证样本的有效学习,并通过校准技术补偿由样本分布调整造成的预估偏差;

  • 引入CTR先验,构造CTR loss来辅助回归学习。我们认为消耗的期望可以拆分成消耗发生的概率与对应的消耗值的点乘,因此我们将未来消耗发生的概率显示地单独用CTR的label来学习,并使其更新不受其他loss的影响;然后我们基于较为准确的消耗概率,再来学习其概率对应下的消耗值,能够有效避免消耗值输出全为0的情况,使MSE loss能正常更新模型参数。


另外,对于偏长期预估的模型,由于历次大促活动会对样本分布有较大影响,造成模型严重高估问题。为了解决这些问题,我们通过稳定的样本分布调整,保障训练样本与预测样本分布近似一致。此外,我们还在样本特征上也有一些尝试,在用户历史行为基础上新增了一些实时行为特征,带了来一些效果提升。


4. 整体框架



我们对整个流程进行梳理:


  • 首先,当用户请求到达广告平台之后,我们构造用户和广告特征,然后对每个<user, ad>进行四个长期价值的预估,得出每个广告所采取的策略 ( 投/不投 ) 并算出对应的最优出价。

  • 接着,对于任意广告,我们计算当前用户在两个不同决策下的最高性价比,若此性价比高于此广告的阈值CPRthr,则将当前用户装入此广告的背包中。

  • 最后,我们拿到用户的反馈,一方面,我们在PID模块中基于预算和实际消耗来更新阈值CPRthr,另一方面,我们构造训练数据来更新强化学习模型参数,使预估的长期价值更准确。


步骤一描述了我们基于长期价值对每个广告进行投放/不投放的动作决策,但无论哪个动作都会获得一个最终出价,即使是不投策略也会产生一个出价,因为此出价会保证此广告最终不会赢得竞价;步骤二描述了我们通过对比当前用户最高性价比与广告主设定的阈值,来判断此广告背包中是否还有多余的空间能装下当前用户;前两个步骤需要进行在线打分和决策,实时地与用户交互,而第三个步骤则是根据其反馈离线更新阈值 CPRthr 和模型参数,具体来说,阈值 CPRthr 的预设初始值一般较高,这样可以保证背包中都是优质的流量 ( 性价比 ),但此时消耗较少,然后逐步下调阈值导致消耗增加,直到消耗满足预算。


04 离线实验


为了对比我们算法最优性质,我们在离线对比了我们方法 MSBCB 与多种强化学习 baseline 以及其他理论最优方法,具体如下:


  • Greedy + DDPG:动态背包下使用DDPG求解动作策略,没有使用动作约减。

  • Greedy + DQN:动态背包下使用DQN求解动作策略,出价被手动离散至11维。

  • Greedy + PPO:动态背包下使用PPO求解动作策略,出价被手动离散至11维。

  • MSBCB:这是我们基于RL的方法,动态背包下使用DQN求解动作策略,并使用了动作约减。

  • Myopic Greedy:静态背包下使用短视预估值 ( CVR ) 来构造动作策略。

  • Greedy with maximized CPR ( enumeration ):动态背包下使用枚举方法求解动作策略,枚举选择的是性价比CPR最大的策略。

  • MSBCB ( enumeration ):这是我们理论最优解,动态背包下使用枚举方法求解动作策略,枚举选择的是最大reward的策略 ( 不通过RL求解 )。

  • Offline Optimal ( dynamic programming ):这是离线的全局最优解,使用动态规划方法,此方法不能用于在线实验,只能应用于非常小规模的离线实验 。


离线数据中包含了 10000 个用户和 500 个广告,每个广告有 4000 元的预算,我们用真实的数据对线上的用户心智进行了分析和拟合,并将上面算法与拟合后的模拟器进行交互,画出各个算法的学习曲线在 GMV 上的表现,其结果如下:



从上面的学习曲线,我们能获得以下结论:MSBCB 优于 DDPG, DQN, PPO 说明我们提出的动作约减比直接使用 RL 更有效;MSBCB 优于 Myopic 说明基于长期价值的决策优于基于短期价值的决策;MSBCB ( 枚举 ) 约等于 Offline Optima 说明我们方法理论最优解与全局最优解完全一致;而 Greedy maxCPR ( 枚举 ) 小于 MSBCB ( 枚举 ) 说明最大化 CPR 的理论最优解并不是全局最最优,对应章节 3.2 证明部分,同时也说明我们算法的理论天花板优势;而 MSBCB 和 MSBCB ( 枚举 ) 的对比说明了我们算法在实际学习过程中能快速收敛并逼近理论天花板。


05 在线实验


为了验证算法在实际落地中的效果,我们在淘宝线上首猜、购后等 9 个场景部署了 MSBCB 算法以及 Myopic Greedy。我们考虑以下几个实验对象:


  • base桶:大盘基准桶,其调价算法为OCPC。

  • test1桶:Myopic Greedy实验桶 ( 在业务上也称整合营销 ),它的目的是在多场景中优化短期CVR,用于与优化长期价值的方法进行对比。

  • test2桶:MSBCB实验桶,它的预估决策与我们的建模方案一致

  • test3桶:这是一个MSBCB实验桶的简化版,它的实验目的是为了验证对消耗的预估是否准确,test2和test3共用着同一个长期价值预估模型,只是在出价动作上test3不考虑未来消耗情况。


我们通过用户尾号进行分桶。


长期总体效果:首先,为了验证其长期的优化效果,我们将当天展现广告的成交、消耗等指标窗口拉到 7 天,以观察广告展现后的 7 天长期效果;我们统计了 2019.12.13-2019.12.19 这七天内展现的广告的长期效果如下,从表中可以看出,我们的实验桶 test2 能够在 cost 基本持平的情况下 ( <1% ),提升+10%的 GMV,使广告主的 ROI 提升近 10%。



长期天级效果:为了更清晰展现我们的方法在天级上的表现,下图给出 2019.12.13-2019.12.19 七天内每天 ROI 和消耗的情况;其中,左坐标轴表示 cost 的增减情况,由折线表示,右坐标轴表示 ROI 的增减,由条形柱表示。从图中我们可以看出,我们实验桶在 ROI 指标每天基本上都正向,最高能达到+19.07% ( test2,20191218 ),最低在+0.58% ( test2,20191214 ),波动还是存在的;消耗大部分都控制在 5%以内。



ROI 正负向店铺占比:我们统计这段时间内各个店铺的 ROI 正负向占比如下图(a),85.1%的店铺有 ROI 的正向效果,其中,7.4%的店铺 ROI 能优化至+30%以上,51.1%的店铺 ROI 能提升至+10-30%,26.6%的店铺能提升+0-10%左右。这些结果说明了我们算法对于绝大多数店铺都有较好的正向效果。



序列长度变化:为了凸显我们的方法在长期价值上的优化,我们对比了用户在不同实验方法下对于一个广告接触的平均次数 ( 我们称为序列长度 ),上图(b)给出了我们的方法在用户序列长度占比上相对于整合营销提升的幅度。结果发现,我们方法能提升序列长度的占比,特别是当序列长度为 7 的 case 占比能提高 30%,这说明了我们方法能够促成更长的用户行为序列,而更长的用户行为序列意味着更多的机会去影响用户对某个广告的心智,从而优化用户对于广告的在长期上的成交。


分场景的优化情况:进一步,我们还可以分析实验算法在各个场景上的表现情况,下图画出了各个实验桶在 9 个场景的预算分布以及对应 ROI 的情况。左坐标轴为 ROI,对应条形图,给出了各个算法在这些场景上的 ROI 表现;右坐标轴为各实验桶相对于 base 在各个场景上消耗的增减,对应折线图。从图中我们能观察出一些现象:


  • MSBCB实验桶和整合营销都把更多的预算花在roi较高的购后场景,特别是支付成功

  • MSBCB实验桶相比整合营销,把更多的流量从首猜分配到了其他场景,特别是收藏夹和购物车这两个购中场景


这些现象说明了我们算法能够在场景间对流量进行合理分配,把预算尽可能画在高 ROI 的场景,另外,长期价值模型相对于短期 cvr 模型更加看好购中、购后等场景,说明了它对用户的运营偏向使用较长的交互序列去优化长期价值,间接证明了我们算法的有效性。



更多实验结果请参考论文原文:


06 总结展望


在机制策略层面,我们首次采用了基于长期价值的动态背包问题来建模和求解序列广告投放问题,整个建模不仅贴切问题本质,还具有非常漂亮和简洁的理论支持,而且建模方案易于实现和应用。在落地方面,我们进行了大量的离线和在线实验,不仅证明了我们算法的收敛性和最优性,而且在线上帮助广告主在相同的预算下提升了 10%的 ROI,表明了我们算法对长期价值/短期价值的优化能力。我们建立了一套基于长期价值的背包序列化投放理论和技术,并在机制策略层面取得了一定的成果和进展,在未来,不只针对长期成交,我们会将长期价值横向扩展到其他指标,如收藏、加购、消耗、多目标融合等,最终满足广告主在长期价值上的各种诉求优化。


今天的分享就到这里,谢谢大家。


本文来自 DataFunTalk


原文链接


阿里妈妈:基于动态背包的多场景广告序列投放算法


2020 年 8 月 24 日 10:05927

评论

发布
暂无评论
发现更多内容

第四周总结

lwy

极客大学架构师训练营

架构师训练营 -week04 学习总结

GunShotPanda

Week4: 学习总结

Geek_165f3d

架构师 0 期 | 互联网巨头不是一天练成的

刁架构

极客大学架构师训练营

典型的大型互联网应用系统的技术方案

林昱榕

极客大学架构师训练营 互联网架构

架构师训练营第四周作业

lwy

极客大学架构师训练营

架构师训练营0期第四周 - 学习总结

lei Shi

架构师训练营第四课作业

曾祥斌

【架构课作业 - 第四周】

Nelson

极客大学架构师训练营

大型互联网应用系统技术和手段

大型互联网技术架构体系

dony.zhang

Week4作业

王志祥

极客大学架构师训练营

Week4:课后作业

Geek_165f3d

架构师训练营 - Task Week 4

brave heart

极客大学架构师训练营

一个典型大型互联网应用系统:从问题到技术方案和手段

走过路过飞过

架构师训练营 第四周 总结 互联网系统架构演进

CR

极客大学架构师训练营

week4 作业

Gavin

week4 总结

Gavin

【第四周】学习总结——架构演进、模式、技术和案例分析

三尾鱼

极客大学架构师训练营

架构师训练营 -week04 作业

GunShotPanda

第四周作业与总结

JI

极客大学架构师训练营

案例讲解,设计模式定义

秤须苑

眼睛一闭一睁,2020年上半年就过去了

赵新龙

2020 年度计划

【架构师训练营 - 总结4】

Andy

大型互联网产品架构技术体系梳理

lei Shi

第四周作业一

慵秋

极客大学架构师训练营

架构师训练营第 4 周学习总结

Season

高可用 分布式系统 高性能 极客大学架构师训练营

【架构师训练营 - 作业 -4】大型互联网架构

Andy

架构师训练营第四周 - 作业

桔子

架构师训练营第四周 - 总结

桔子

架构师训练营第4期作业/学习总结

JUN

阿里妈妈:基于动态背包的多场景广告序列投放算法-InfoQ