简介:电商广告是广告主接触其目标用户的重要手段。普遍的广告目标是在预算约束下,在一定时间范围内最大化广告主累计收入。实际应用中,广告的转化通常需要对同一用户进行多次曝光,直到该用户最终购买为止。但是,现有的广告系统主要关注单次广告曝光的直接收益,而忽略了每次曝光对最终转化的贡献,因此通常属于次优解决方案。在本文中,我们将广告序列投放策略优化转化为一个动态背包问题。为求解此背包问题,我们提出了一个具有理论保证的双层优化框架,该框架在不影响求解精度同时,显着减少了原始优化问题的求解空间。在下层框架的优化中,我们引入强化学习并设计了一种有效的动作空间约减方法,提高了强化学习在实际广告应用中的探索效率。

1.背景

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

  1. 对广告主:一段时间预算约束下的GMV优化帮助广告主实现更多营收和更高的投资回报率(ROI),从而让广告主真正满意;
  2. 对平台:消费者和广告主的满意度提升为平台带来健康的生态和长期的贸易繁荣,并能吸引更多的广告主加入以及投入更多的广告预算,从而带来平台的收入提升;
  3. 对消费者:GMV的优化满足了更多的消费者购买需求,从而优化了消费者体验;

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

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

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

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

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

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

  1. 优化目标是长期的累积价值,而决策的粒度是单次的;如何基于长期价值的预估获得最优的单次决策?
  2. 长期价值预估模型的学习离不开策略探索生成的序列数据。长期价值预估模型和决策模型的学习如何保证收敛性?如何保证决策的最优性?如何提升策略探索的效率?
  3. 如何保障预算约束的满足?

针对这些挑战,我们逐一给出了相应的解决方案。首先,我们将预算约束问题建模为背包问题:背包中物品的价值为<用户,ad>形成的序列价值(长期成交、收藏加购等),物品的重量为此序列中发生的成本(消耗);我们按照性价比(序列价值/成本)由高到低逐个选择物品,直到选出的物品总消耗刚好不超过预算约束。这里,由于物品重量远小于背包容量,按性价比排序的贪心算法能够接近最优解。然而,每个序列的价值和成本与运营该序列的广告策略有关,因此这是一个动态背包问题。为求解此动态背包,我们采用双层优化问题的解法来迭代求解:1)物品的贪心挑选,2)物品价值/成本以及对应策略的优化。在此框架下,我们提出了一种近似最优的运营策略,该策略满足强化学习中Policy Iteration算法的性质,能够保证其学习的收敛性。此外,为了使策略在实际场景中落地,我们提出了一种将连续出价转换为离散动作的方法,能够在不丢失出价精度的情况下,大幅度减少动作的探索空间,提高学习效率。综上,我们将整个算法称之为MSBCB(Multi-channel Sequential Budget Constrained Bidding),大量的离线和在线实验验证了我们算法的有效性。下面我们详细介绍问题的定义、解决方案和实验结果。

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

2.建模方案










3.3 预估模型


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

  1. 通过合理的负采样来保证证样本的有效学习,并通过校准技术补偿由样本分布调整造成的预估偏差;
  2. 引入CTR先验,构造CTR loss来辅助回归学习。我们认为消耗的期望可以拆分成消耗发生的概率与对应的消耗值的点乘,因此我们将未来消耗发生的概率显示地单独用CTR的label来学习,并使其更新不受其他loss的影响;然后我们基于较为准确的消耗概率,再来学习其概率对应下的消耗值,能够有效避免消耗值输出全为0的情况,使MSE loss能正常更新模型参数。

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

3.4 整体框架

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

  1. 首先,当用户请求到达广告平台之后,我们构造用户和广告特征,然后对每个进行四个长期价值的预估,得出每个广告所采取的策略(投/不投)并算出对应的最优出价。
  2. 接着,对于任意广告,我们计算当前用户在两个不同决策下的最高性价比,若此性价比高于此广告的阈值CPRthr,则将当前用户装入此广告的背包中。
  3. 最后,我们拿到用户的反馈,一方面,我们在PID模块中基于预算和实际消耗来更新阈值CPRthr,另一方面,我们构造训练数据来更新强化学习模型参数,使预估的长期价值更准确。

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

4.离线实验

为了对比我们算法最优性质,我们在离线对比了我们方法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(枚举)的对比说明了我们算法在实际学习过程中能快速收敛并逼近理论天花板。

5.在线实验

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

  1. base桶:大盘基准桶,其调价算法为OCPC。
  2. test1桶:Myopic Greedy实验桶(在业务上也称整合营销),它的目的是在多场景中优化短期CVR,用于与优化长期价值的方法进行对比。
  3. test2桶:MSBCB实验桶,它的预估决策与我们的建模方案一致
  4. 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在各个场景上消耗的增减,对应折线图。从图中我们能观察出一些现象:

  1. MSBCB实验桶和整合营销都把更多的预算花在roi较高的购后场景,特别是支付成功
  2. MSBCB实验桶相比整合营销,把更多的流量从首猜分配到了其他场景,特别是收藏夹和购物车这两个购中场景

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

更多实验结果请参考论文原文:https://arxiv.org/abs/2006.16312

6.总结展望

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

原文链接:https://developer.aliyun.com/article/770135?

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

基于动态背包的多场景广告序列投放算法相关推荐

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

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

  2. 基于动态全局搜索和柯西变异的花授粉算法

    文章目录 一.理论基础 1.基本花授粉算法 2.基于动态全局搜索和柯西变异的花授粉算法 (1)混沌映射 (2)动态全局搜索方法 (3)基于柯西变异的优化方法 (4)DCFPA的实现流程图 二.实验仿真 ...

  3. 基于WGS和CBC测序策略的DNA序列拼接算法研究(六)

    4.3.1  程序的结构 Atlas-prep-read 1.create index file atlas-createindex</perl/bin >(perl程序) 2.split ...

  4. 基于动态邻域的切换粒子群优化算法

    英文: A Dynamic Neighborhood-Based Switching Particle Swarm Optimization Algorithm 摘要: 本文提出了一种基于动态邻域的切 ...

  5. 强化学习算法在京东广告序列推荐场景的应用实践

    猜你喜欢 0.淘宝首页猜你喜欢推荐建模实践 1.[免费下载]2022年3月份热门报告 2.[实践]小红书推荐中台实践 3.微信视频号实时推荐技术架构分享 4.对比学习在宽狩推荐系统中的应用实践 5.微 ...

  6. 【推荐实践】强化学习算法在京东广告序列推荐场景的应用

    猜你喜欢 0.搜狗信息流推荐系统架构及推荐算法实践1.如何搭建一套个性化推荐系统?2.京东推荐算法精排技术实践3.[万字长文]某视频APP推荐算法及策略详解4.微博推荐算法实践与机器学习平台演进5.腾 ...

  7. 强化学习算法在京东广告序列推荐场景的应用

    今天给大家带来京东零售商业提升事业部-广告质量部-推荐组赵鑫博士所做的分享<强化学习算法在京东广告序列推荐场景的应用.pdf>,关注强化学习.广告.推荐系统/算法等的伙伴们别错过啦!(到小 ...

  8. WSDM 2022 | 基于元学习的多场景多任务商家建模

    丨目录: · 前言 · 背景 · 问题定义 · 算法建模 · 实验 · 总结展望 · 参考文献 · 关于我们 ▐ 前言 面向淘系商家或广告主的商家理解与建模,是阿里妈妈客户生态建设的关键一环.有别于C ...

  9. AAAI 2021 | 基于动态混合关系网络的对话式语义解析方法

    作者|惠彬原,耿瑞莹,黎槟华,李永彬,孙健 单位|阿里巴巴达摩院Conversational AI团队 引言 机器可以自己写 SQL 语句吗?当然可以~只需要用自然语言描述你的想法即可,甚至还能进行多 ...

最新文章

  1. 全球首届APMCon,带你给“应用性能”把把脉
  2. c# 获取ajax数据,c# asp.net jQuery AJAX 从 MySQL 中获取数据
  3. 这个“老婆生成器”说我有5个前妻...
  4. 指针||指针和数组||指针和函数||指针、数组、函数 案例描述:封装一个函数,利用冒泡排序,实现对整型数组的升序排序
  5. asp.net webapi 自托管插件式服务(转)
  6. openresty测试lua脚本配置示例
  7. js设置和清除cookie
  8. 工作154:代码之解析position 解决
  9. C语言学习之插入排序
  10. 首次使用物联网设备进行的 Wi-Fi 6 试用测试宣布成功
  11. 8.1 异常(Exceptions)
  12. 生产系统建模仿真软件FactorySimulation
  13. Flutter Image图片显示
  14. 如何正确设置同时使用内外网
  15. 如何在线批量将PDF转换成JPG格式
  16. 编程数学读书笔记 -- 第二章逻辑
  17. 基于pandas实现K折交叉验证数据集划分
  18. 360 android系统 流量,360流量卫士 for Android
  19. 如何实现gerrit的垃圾回收功能
  20. LCD工作原理及结构

热门文章

  1. 5个酷毙的Python神器工具
  2. 从 6 万用户评论中,选出这 23 门全世界最好的 CS 免费课
  3. 几款好用超赞的Google Chrome插件
  4. eclipse和idea代码通用吗_python能在苹果手机上运行吗
  5. 全国计算机一级考试理论,全国计算机等级考试一级理论汇总(最新版).pptx
  6. java中批次号_在一个批次中插入多笔记录的几种方法
  7. 怎么像编辑提供wb原图_PLoS One:7月1日起,投稿必须提供原始WB图片!
  8. java工程师考试题目_成功拿到Offer,Java工程师笔试题及答案!
  9. [PHP] 存储改造中的逻辑和清理遗留的问题
  10. 用set和shopt设置bash选项