在《Hulu/Disney Streaming流媒体广告平台中的核心技术(上)》广告流程章节中,我们提到了Disney的主要流量是通过每年定期举行的Upfront大会来进行售卖。Upfront会占据我们大部分的流量。除了Upfront售卖的方式以外,剩余的流量在Disney流媒体广告系统中则是以程序化交易方式进行售卖。
在这篇博文中,我们将着重介绍整个程序化交易的生态系统及其基本广告类型,在后续博文中我们再介绍其中的竞价机制和所面临有关算法方面的问题与挑战。
在前面章节中我们提及到在线广告的三个参与者分别是广告主(Advertiser)、媒体方(Publisher)与受众(Audience)。在在线广告早期时刻,广告主(需求侧)直接与媒体平台(供给侧)进行签约来购买流量。但是对于广告主和媒体方存在如下几个问题:
媒体方:
1) 对于大媒体平台来说存在大量的长尾流量,难以以大订单的方式来进行售卖。
2) 同时也存在很多小媒体平台,拥有优质的流量,无法找到对应的广告主进行售卖。
3)合约广告提前对某一类流量进行了价格锁定,无法利用数据来精准售卖每一个流量。
广告主:
1) 大广告主对长尾流量也有一定的需求,但向多个媒体平台进行采买耗时耗力。
2) 小广告主因为预算问题对长尾流量需求更为迫切,但因为预算等问题没办法与大的媒体平台进行签约。
此时,作为供给侧和需求侧两端的中间平台Ad Network (ADN) 便应运而生。ADN整合了中小媒体的流量或者是大媒体的长尾流量来进行售卖。同时对于广告主来说,它不必单独去与每一家媒体进行对接进行,当有对应的广告需要进行流量投放的时候,直接在ADN平台上进行采买。ADN作为中间平台商,掌握着两方的定价权。对于广告主来说,ADN会提高流量的报价,而对于媒体方来说,ADN会降低流量的报价。通过这种“差价”的方式,ADN来赚取属于它自己平台的收益。
图1:广告主、媒体向ADN购买、售卖流量
但随着在线广告的发展,越来越多的ADN出现在了市场上。不同的ADN拥有不同的流量,供需侧难以达到一个平衡,ADN之间也经常需要相互购买流量。以及ADN牢牢地掌握着广告主和媒体方的定价权。在这种情况下,Ad Exchange (ADX) 进一步集成了多个ADN的流量,来达到流量之间的供需平衡,以及采用一种更为透明的采买方式:实时竞价拍卖(Real-Time Bidding, RTB)的方式来进行流量的购买。
对于媒体方而言,单独与每一家ADN或者ADX进行集成可能十分的麻烦,不同的ADN或者ADX有不同的协议与接口,同样的,在广告主的一侧也有类似的问题。因此代表媒体方的供给侧平台Supply Side Platform (SSP)与代表广告主的需求侧平台Demand Side Platform (DSP)便出现了。对媒体方而言,它不需要单独与每一个ADX进行对接,而只需要与一个SSP进行对接,SSP会对接其余厂商的ADX。对广告主而言,他也不需要单独再与各个ADX进行对接。广告主只需要设置好自己的预算,需要投放的人群以及KPI等指标,则有DSP会代表广告主参与实时竞价。除了前面所提及的ADX,SSP,DSP等之外,为了DSP、SSP、ADX等平台更好的去识别用户,精准定位受众,它们开始求助于一类特定平台:数据管理平台Data Management Platform (DMP) 。DMP负责收集用户侧的数据,为用户打上各个类型的标签。当其他平台需要精准识别用户的时候,便可以向DMP购买服务。当然除了DSP之外,SSP和媒体也有类似需求。综上,对于程序化交易,总共有如下几类角色的参与:广告主 advertiser、媒体方 publisher、用户 user、需求方平台 DSP、供给侧平台 SSP、广告交易平台 ADX/ADN。图2展示了整个程序化交易中所参与的各个角色。
图2:程序化交易市场参与角色
在这一套整个实时竞价系统中,广告主便可以根据用户之前的行为、用户潜在的行为以及可能的属性来进行竞价。整个竞价过程通常发生在200ms以内。图3则展示了当一个用户访问一个网页时,实时竞价发生的过程。
图3:RTB竞价流程
1. 当用户访问一个网页时,媒体端获得一次广告展示的机会。
2. 对应的媒体平台将这次广告展示机会发送给SSP。
3. SSP作为代理,将这次广告展示机会转发给某个ADX。
4. ADX向下游多个DSP询问该流量的报价。
5. 当DSP收到一个竞价请求之后,从DMP中获取对应请求的相关信息,如用户标签、行为等等。
6. DSP内部也会存在多个广告主的订单,它们之间也会有一轮竞争。
7. DSP将内部选择出来的广告返回给ADX。
8. ADX在接受到多个下游DSP的广告及其报价之后,会进行一轮竞价,选择出价最高的广告作为获胜的广告。
9. ADX会通知下游获胜的DSP(即出价最高的DSP),当该广告向用户进行展示的时候,ADX会向对应的DSP收取一定的费用。具体的费用如何收取,则涉及到我们下一章节介绍的竞价机制。
10. ADX将获胜的广告返回SSP。
11. SSP将广告返回对应的媒体广告平台。
12. 媒体将获胜的广告展现给用户。
13. 如果用户有点击、转化等行为,则会将对应的行为数据发送到对应展示广告的DSP中。
上述描述了一次实时竞价所发生的步骤。在上面步骤中的,有很多算法与数据发力的点,比如在DSP端:
(1)DSP如何在预算有限的情况对某一个展示机会进行竞价来达到广告主所要求的KPI。
(2)DSP如何去估计用户的标签属性,点击率,转化率。
(3)如何估计市场中对某类流量的竞价情况。
亦或在媒体端,通常会对流量设置一定的底价来保护自己的利益,那么如何设置底价才能够使得自己的收益最大,也是实时竞价中一个核心的问题。
在前面我们讨论了实时竞价是如何进行的。但RTB是一个公开的市场,公开竞价(Open Auction,OA),也就是对于任何一个接入ADX的DSP来说,都可以对SSP发送过来的流量进行竞价。而对Hulu/Disney来说,用户的广告体验一直是我们第一位的要求。对所有在Hulu/Disney上投放的广告都会有专门的人员进行审核来避免一些暴力、质量体验极差的广告出现在用户的视野中。对于我们的程序化广告交易而言,我们参与的并不是一个公开的市场,而是一个私有市场(Private Marketplace,PMP)。为了保证对应广告的质量,只有经过我们邀请进来的广告主才有资格对我们的流量进行竞价。根据广告主的需求不同,在PMP市场中,媒体方可能与广告主签订如下三类程序化交易订单:
1. Programmatic Guaranteed(PG):这种订单的形式是保价保量。即广告主会以固定价格来购买媒体方的流量,并且媒体会保留一部分的流量给该订单。
2. Unreserved Fixed Rate (UFR):在有的地方也叫Prefered Deal,这种订单的形式是保价不保量,即广告主以固定价格来购买媒体方的流量,但是媒体对该种类型的广告的投放不做任何的保证。
3. Invite Only Auction (IOA):这种订单的形式是既不保价,也不保量。广告主会对流量按价格进行竞拍。媒体对该种类型的广告的投放不做任何保证。
图4:程序化交易广告类型
在上述不同种类型的订单中,对于媒体投放的广告流量,不同类型的订单有不同的优先级。一般而言,媒体方会把最优质的流量分配给直接售卖(Direct Sales)的订单与PG类型的订单。接下来如果有剩余流量,则可能给UFR以及IOA类型的订单。最终如果还可能有剩余流量的话才会分配给Open Auction参与公开竞价。在上述不同种类型的订单中,对于媒体投放的广告流量,不同类型的订单有不同的优先级。一般而言,媒体方会把最优质的流量分配给直接售卖(Direct Sales)的订单与PG类型的订单,接下来如果有剩余流量,则可能给UFR以及IOA类型的订单,最终如果还可能有剩余流量的话才会分配给Open Auction参与公开竞价。
图5:不同类型订单优先级
但是在Hulu/Disney的程序化广告中,因为前面说需要保证广告质量以及用户体验,所以只有PG,UFR与IOA三种程序化订单参与。当我们的广告流量无法投放直接售卖的广告或者这三类程序化订单的时候,我们也不会将流量发送给公开市场去进行竞价。
Hulu/Disney流媒体的广告系统是一个大而全的广告系统。包含我们通过一方直接签约售卖的广告与程序化广告。对于我们一方售卖的广告,以保量广告为主,计费模式为CPM(Cosp Per Mille)计费,其中的核心需求是广告投放一要满足保量,二是要满足投放均匀。具体可以参看《Hulu/Disney Streaming流媒体广告平台核心技术》中的介绍。
在满足了一方广告投放需求之后,我们会将剩余的优质流量发送给PMP市场来最大化Hulu的广告收益。因此,如何平衡一方广告和三方广告之间投放来最大化我们的整体收益是一个十分有挑战的问题。为了解决该问题,在我们的广告系统内部,有一个专用的引擎:统一决策引擎,来平衡一方广告与三方广告的投放,从而最大化Hulu的广告收益。对于该引擎而言,它主要解决以下几个问题:
1. 哪些流量已经满足了当前的一方广告投放需求,可以发送给PMP市场来进行竞价从而替换掉当前一方广告。它的目标是尽可能将多的机会发送给PMP市场,但同时又满足自己一方广告的投放。
2. 在决定给PMP市场发送当前流量的时候,我们的底价如何设置?它的目标是尽可能的抬高PMP市场的竞价,同时避免设置过高导致拒绝过多的来自程序化交易市场的竞价请求,从而最大化我们程序化广告的收益。
3. 在PMP广告返回之后,替换掉一方广告的时候,怎么进行比价从而决定当前的程序化广告可以替换掉内部已经选出来的一方广告来最大化收益。
在我们的实际广告系统内,广告的投放逻辑如下,对于每个用户,我们会一次性的选择多个广告进行展示。
图6:Hulu广告系统投放逻辑
在我们广告系统内,对于内部广告投放引擎,只选择出合适的一方广告进行投放。在统一投放引擎内,负责上述的三件事情。
1. 首先衡量一方广告有没有任何的投放风险。比如对于广告1,如果在模型的预测下有一定的投放风险,则会将广告保留。因为Hulu的首要目标还是要满足一方广告的投放需求。但是对于广告2,3,4,当前投放情况良好,则可以将对应的流量发送给PMP市场,来探索是否有更高的出价。
2. 根据下面三个因素来计算出一个合适的底价:1)流量的本身价值,2)一方广告的投放情况,3)对PMP市场竞价的建模,将流量和对应的底价发送给PMP市场。PMP市场在进行竞价之后,会返回相应的广告,包含我们上述提及到的三类广告以及对应的获胜价格。
3. 将一方广告与三方广告进行综合选择。在这里,我们会对内部的每一个无投放风险广告进行一个损失的衡量,损失主要考虑投放风险大小和该广告本身的CPM。最后做一个统一的收益优化。
4. 最后则将最终决策所产生的广告返回给客户端,呈现给用户。
这三个问题具体的解决方案我们会在后面的博客中进行介绍。通过我们引入了该统一决策引擎,Hulu能够将满足一方广告投放要求后剩余流量进行最大程度的变现。
在本篇博客中,我们介绍了程序化交易的基本流程,以及不同的程序化交易广告类型,包含了PG、UFR、IOA、OA,以及当前Hulu是如何进行程序化和非程序化广告投放的。在下一篇博文中,我们将会介绍程序化广告中一个核心的问题:竞价机制(拍卖的组织者是如何进行收费)。
✦
作者与团队介绍
✦
Changsheng Xiang,广告智能团队资深算法工程师。
观众至上的广告业务是Hulu和迪士尼的重要战略。北京广告智能团队的使命是通过使用数据和AI技术,在电视和流媒体上优化广告业务并革新迪士尼的广告平台。我们构建各种解决方案以衡量和优化广告生命周期的各个环节。我们是一支强大的跨职能团队,致力于提供端到端解决方案,涵盖了从机器学习,大数据,微服务到数据应用等各方面技术领域。