目录
一. 背景
二. 概念
三. 程序化投放
四. 一次手动投放过程
五. 程序化投放--OA提升
六. 程序化投放--oCPX
七. 程序化投放--RTA
八. 程序化投放--联邦学习
九. 总结
一. 背景
互联网广告是1993年在美国诞生的,那时候与传统媒体类似,仅仅算是一个广告传播渠道。2000年,谷歌推出了针对搜素关键字进行广告售卖的AdWords系统,拉开了近二十年互联网广告发展的序幕。随着技术的不断发展,可以将互联网广告分为了四个阶段:
第一阶段是兴起阶段,主要是售卖方式的发展。第二阶段是程序化投放,主要出现了程序化广告售卖与购买的方式。第三阶段是数据化应用,流量红利的爆发,大数据技术的发展,使得媒体和广告主更加注重数据的积累和应用,开始走向数字化运营的阶段。第四阶段是精细化发展,整个技术市场出现细分,投放技术日趋成熟,广告形式不断创新,比如小程序,短视频等新的广告媒体。
国内互联网广告市场规模这些年来持续提升,2017年规模就已达到3750亿元,但近年增速将放缓。有三个趋势值得关注:一是信息流广告的份额持续增长,2017年份额18%,预计2019年将占到27.6%。二是头部营收占比,阿里广告营收超1000亿,TOP4营收占比已超过60%。三是移动广告占比,随着移动端的发展,移动广告市场规模占比也已经超过68%,并且有继续增加的趋势。
未来5-10年,网络广告将继续跟随互联产业发展进入以互联网作为连接点,以技术为驱动,打通多种渠道和资源进行精细化管理,以内容创意和基于数据分析的优化能力作为核心竞争阶段。如果没有新的技术升级,互联网流量红利衰减会造成“收入减少—>广告费用减少—>收入进一步降低—>广告费用进一步降低”的负向循环,造成互联网广告行业整体增长降速。
说点现实的拿头条系为例,2020年的广告营收在1800亿左右,21年的目标是2600亿,在头条系(例如抖音)月活、流量规模不大变的情况下,要达成这个目标除了流量主自身精细化流量运营,剩下的就得广告主自己买单了。所以作为广告主的一方如何进行精细化程序投放就成了关键。
二. 概念
一张图看下近年中国广告技术生态
讲正题之前一些广告生态的核心名词概念必须了解
Super Platforms,超级平台。目前只有百度、腾讯、阿里、头条等几家头部流量主拥有,是一套综合性的多功能平台,包含DSP、SSP、TD、DMP等各种核心功能。具体分类解释参考下文。
DSP(Demand-Side Platform 需求方平台),在互联网广告产业中,DSP是一个系统,也是一种在线广告平台。它服务于广告主,帮助广告主在互联网或者移动互联网上进行广告投放,DSP可以使广告主更简单便捷地遵循统一的竞价和反馈方式,对位于多家广告交易平台的在线广告,以合理的价格实时购买高质量的广告库存。
SSP(Sell-Side Platform 供应方平台),供应方平台能够让广告主也介入广告交易,从而使它们的库存广告可用。通过这一平台,广告主希望他们的库存广告可以获得最高的有效每千次展示费用,而不必以低价销售出去。
DMP (Data Management Platform 数据管理平台),是把分散的数据进行整合纳入统一的技术平台。数据管理平台能够帮助所有涉及广告库存购买和出售的各方管理其数据、更方便地使用第三方数据、增强他们对所有这些数据的理解、传回数据或将定制数据传入某一平台,以进行更好地定位。
Ad Exchange,广告交易平台。是一个开放的、能够将广告主和广告商联系在一起的在线广告市场(类似于证券交易所)。交易平台里的广告存货并不一定都是溢价库存,只要广告主想要提供的,都可以在里面找到。Ad Exchange在互联网展示广告的高速发展创新中扮演了极其重要角色,它可以使互联网展示广告市场更加透明,高效,和可控。
Ad Network,广告网络。是一个封闭的网络广告市场,网络业主作为中间环节先向广告主采购广告库存,然后再转售给买家,虽然有时候广告主也可以创建自己的广告网络。在广告业内,这是一个较为广泛的概念。是一种介于想出售广告空间的网站与想在网站上刊登广告的广告主之间的平台. 比较知名的大型广告网络公司如Google的AdSense。
RTB(Real-Time Bidding)即实时竞价。是一种利用第三方技术在数以百万计的网站上针对每一个用户展示行为进行评估以及出价的竞价技术。实时竞价允许广告买家根据活动目标、目标人群以及费用门槛等因素对每一个广告及每次广告展示的费用进行竞价。一旦竞价成功,广告就会立刻出现在广告主的网站中。这种允许进行动态交易的技术被业内称为 “投标人”,而且可以嵌入相关平台中。
TD(Trading Desk 程序化广告交易平台),需求方可以在TD上统一管理多个DSP平台的投放,包括分配投放预算、制定和调整投放策略,查看数据报告。比如你有一个店铺,在天猫、京东、拼多多都有开,这几个店铺都有各自的店铺管理后台,管理起来非常麻烦,此时有一个后台能让你登录后直接管理各个渠道的店铺。这个后台的性质即类似于TD。
三. 程序化投放
重点在于我们之前介绍的Trading Desk以及DMP。部分能力如图
核心功能及能力很多,总结来说分为2类。
1.提升OA效率的能力,包括一站式投放,批量操作,创意中心,报表/仪表盘,权限管理等等,这部分不是重点我们一概而过。
2.提高投放转化效果的能力,包括DMP数据中心,数据转化回传,RTA,联邦建模等。
先说投放本身
程序化投放分为以下几个元素,以腾讯为例:推广帐号、推广计划、广告组、广告以及广告创意。归纳来说,创建一条完整的广告由创建推广计划、设置广告、设置创意组成。
详细可以参考 https://developers.e.qq.com/docs/api/adsmanagement
推广计划管理:介绍推广计划属性,以及与之关联的标的物属性;广告组管理:介绍广告组属性,以及与之关联的广告版位、出价、定向属性;广告管理:介绍广告属性,以及第三方监控的使用;广告创意管理:介绍广告创意属性,以及应用直达的使用;
以手动投放的方式简介下整个流程,这些过程全部可以用程序化的方式来管理
四. 一次手动投放过程
Step1 创建推广计划 图片看不清可以点击放大来看。推广计划分为展示广告计划和搜索广告计划。展示广告计划:常规展示类广告.搜索广告计划:QQ浏览器关键词搜索广告。
step2 选择广告形式,分为常规展示广告、商品广告.常规展示广告:常规投放场景,商品广告:适合拥有海量商品投放需求的场景,围绕商品进行批量投放和动态创意生成。
其中转化归因承载了客户接收数据(点击监测)、客户上报数据(上报行为、上报方式等)、平台归因(归因方式)以及投放对应的标的物、优化目标等概念,是打通数据和投放的重要模块。全网归因表示所有数据源回传的数据都有可能匹配到你的广告;精准匹配归因表示只有通过你绑定的数据源回传的数据才能匹配到你的广告。
step3 选择广告想要投放的目标人群,提供人口学属性、用户行为、自定义人群、设备定向等多种维度的人群标签。这一块也是程序化投放的重点优化目标
step4 广告仅在投放的日期和时间段范围内向用户展示。出价和预算会影响广告获得曝光的次数,系统会根据你的广告设置提供建议出价范围,你也可自行设置一个出价。不同版位和创意形式支持的出价方式不同。
step5 选择广告在流量上的呈现样式,填写对应样式所需的内容。不同广告版位下相同创意形式需填写的信息有所差异。
其他抖音、百度、阿里的结构也是大同小异。这些手动的过程大部分都可以用程序化投放来替代,并且进行功能增强。这里先引出程序化投放第一个能力点
五. 程序化投放--OA提升
一站式整合投放(以Marketin TD为例)
传统方式平台间独立、反复对接。营销人员需要维护多个平台,各自账户在各个平台中反复登录操作并人工完成报告汇整。在程序化投放中一次性接入实现跨平台协作,营销人员可以在一个系统中实现统一账户管理多平台并且实现跨平台统一分析报告。技术面这一块内容的复杂度不高但是需要建立每个媒体平台对应的适配层来应对不同媒体平台周期性的API更新。为了保障程序化投放平台的稳定性,这一块的架构设计非常切合微服务架构。另外就是不同媒体除了API不同,各自的定向策略也不一样。我们需要搭建一个投放中间层来收口处理不同渠道上的策略配置,例如腾讯的性别有男、女、其他,抖音的性别有男、女、未知等。
智能创意
创意降维:将完整图像或视频拆解为云端元素,智能重组实现多样化,通过实时数据进行创意精细运营。
其实这种技术可以归为图片处理范围,早在很多年前阿里妈妈出的广告牌功能就能做到图片元素化自由裁剪组合。在广告领域赋予更多的含义在以后面的数据整合,在相同的背景图上结合我们的投放定向策略给予不同的分类客群展示出不同的产品内容。甚至在某些更高级的超级平台可以自动形成千人千面的广告图片。
其他的oa效率类的功能顾名思义,如果大家有兴趣再单独开篇幅来说,后来我们重点来讲解下程序化投放对于ROI的提升方法。
ROI的提升大概分为三类,1.广告主主导优化,2.流量主主导优化,3.以流量主为中心,多方广告主共同参与优化。这三类方式分别对应程序化投放的三项核心技术。
六. 程序化投放--oCPX
先看广告主优化的方法 我们称之为成本及效果可控的智能出价模式
站在流量主的角度:
上传发生在移动应用或网站中的用户行为,这些行为数据会被存储在广告主专属的第一方数据仓库中,成为广告主在数据资产的一部分。随着这些行为数据的累积,广告主可以基于这些行为数据灵活地进行人群提取,并在流量主提供的大盘中寻找相似用户。广告主可以对这些人群进行洞察分析、或者将它们实时关联广告进行投放。广告主还可以创建转化,利用这些行为数据统计广告的转化指标。 行为数据还可以用于动态创意广告投放。
ps:流量主的心态是,我也知道现在流量人口红利在下降,但是我的财报每年也得涨啊,我也只能做到精细化运营,不浪费流量资源,将用户推送给更适合他们的产品,这样我也能多收钱。
站在广告主的角度:
提升广告投放效果是广告主始终追求的目标,而更精准的寻找目标客群是提升广告投放效果最有效的手段。 这里涉及到一个概念就是oCP(A,C,M...),拿oCPM为例,表示以展示计费的智能出价广告。你可以选择特定优化目标(例如:激活),并提供期望平均转化成本,系统会根据你上报的转化数据,预估每一次展示的转化价值,自动出价,按照展示扣费。相对于传统的CPm,这里的O代表优化Optimized。o系列表示成本及效果可控的智能出价模式。我们常用的oCPA,是一种针对效果广告的智能自动出价策略,广告主可选择特定优化目标(例如激活、下单、表单预约),并提供期望的平均转化成本。系统会根据广告主上报的转化数据,通过机器学习来预估每一次展示的转化价值,自动出价,按点击扣费。
ps:广告主的心态是,现在流量这么贵,广撒网的手段不适合现在的时代了,我也得控制下成本,把广告头给愿意买我产品的那些人。
站在程序员的角度:
说了这些概念,对于程序员而言要干的事实际上特别简单,我们在投放广告链接后,采取o系列的出价模式,流量主每次曝光都可以在我们的链接后面带上他们的唯一标示。作为程序员捕捉到这些标示,然后按照业务策略将转化后的数据对应的标示上传给流量主,相当于告诉他这些用户就是我的目标用户,你们自己优化一下,后面就按照类似的用户推送给我就好。至于优化怎么做,做的效果如何都是流量主要做的事情。
ps:广告的实时竞价远比目前介绍的程度要复杂的多。针对oCPA,竞价成功后流量主的扣费策略实际上还是按照CPA来扣,如果实际转化比oCPA的成本来的高,他们会持续优化数据模型。以达到接近oCPA的目标。如果持续优化几轮还是达不到,流量主会补偿广告主部分广告费用,并下架该广告内容。
以腾讯为例 对应的数据转化反馈接口 https://developers.e.qq.com/docs/api/apilist 用户行为上传 user_actions/add
百度的 http://ocpc.baidu.com/developer/d/guide/?iurl=api%2Fapi-doc%2Fapi-interface%2F
淘宝关于oCPX的论文 https://arxiv.org/abs/1703.02091
七. 程序化投放--RTA
再看流量主优化的方法 我们称之为RTA,广告主实时API响应。
背景及定位
为不进行敏感信息回传的广告主,提升精准投放的能力。
换个角度来说:
RTA解决的是个性化定向的问题,拥有实时化以及数据安全这些特点。解决的是以下几个个场景的问题:
一、 广告主具备一方数据,但是投放的目标人群实时变动,通过平台的定向标签能力无法实现精准定向又或者通过用户包无法实现实时定向更新的这样的一种情况,需要结合双方的数据能力共同提升广告主投放效果的广告主。所以这里必须要求广告主有一定的用户甄别和筛选能力。
二、 出于数据安全或者价值的考虑,不愿意将转化数据回传给广告平台的广告主。比如金融公司投放金融广告的时候,需要将无效征信的用户去除,但是由于无效征信的属于高度敏感的数据,广告平台其实是没有这个数据的,金融广告公司出于数据安全的考虑,无法将数据传到广告平台上。所以金融公司投放广告的时候需要经过RTA进行用户的进一步的筛选。(当然,其实广告平台在RTA对接过程中是可以获取到这些数据的)
三、 个性化买量需求的广告主。针对不同的用户选择不同的投放策略和方案的广告主。比如,不同的公司的增长团队,对于纯新增用户,安装卸载,安装不活跃用户有不同的投放策略。很多精细化的数据逻辑只有广告主有,这个时候可以通过RTA进行广告的投放。
定义
基于本地投放的程序化升级,根据广告主不同的数据和技术能力,支持其逐步深入参与投放决策,最终共同优化提升广告投放效率/效果;
进场门槛 (还以腾讯为例)
消耗门槛:客户RTA日均消耗不低于5W元; 技术门槛:QPS建议支持4W;60ms内返回处理结果(包含网络传输);
退场机制
退出条件(完成RTA接入超30天 或 重启放量15天),以下任一条件符合,即进行退出。 超过15天,RTA日均消耗低于5W 超过15天,RTA流量接受率(code=0占比)低于10% 超时率大于5%,且警告后7天内仍未解决的;
站在程序员的角度
我需要做这么一件事,在支持极高性能的前提下提供一个api给流量主调用,这个api会告诉给流量主当前访问的用户投放的广告是否对其曝光。对应整体流程图如下
整个生态确实很复杂,对于程序员来说,重点是要解决性能的问题避免被清退。那么针对这种海量并发场景,有什么好的解决方案呢
这里推荐布隆过滤器
本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure),特点是高效地插入和查询,可以用来告诉你 “某样东西一定不存在或者可能存在”。相比于传统的 List、Set、Map 等数据结构,它更高效、占用空间更少,但是缺点是其返回的结果是概率性的,而不是确切的。对于其详细的解释 参考百科 https://baike.baidu.com/item/%E5%B8%83%E9%9A%86%E8%BF%87%E6%BB%A4%E5%99%A8
总结来说:
布隆过滤器其中重要的实现就是位图的实现,也就是位数组,并且在这个数组中每一个位置只占有1个bit,而每个bit只有0和1两种状态。如上图bitarray所示!bitarray也叫bitmap,大小也就是布隆过滤器的大小。
假设一种有k个哈希函数,且每个哈希函数的输出范围都大于m,接着将输出值对k取余(%m),就会得到k个[0, m-1]的值,由于每个哈希函数之间相互独立,因此这k个数也相互独立,最后将这k个数对应到bitarray上并标记为1(涂黑)。
等判断时,将输入对象经过这k个哈希函数计算得到k个值,然后判断对应bitarray的k个位置是否都为1(是否标黑),如果有一个不为黑,那么这个输入对象则不在这个集合中,也就不是黑名单了!如果都是黑,那说明在集合中,但有可能会误,由于当输入对象过多,而集合也就是bitarray过小,则会出现大部分为黑的情况,那样就容易发生误判!因此使用布隆过滤器是需要容忍错误率的,即使很低很低!
在下面联邦学习中,我们还会持续介绍布隆过滤器所涉及到的位图算法。
八. 程序化投放--联邦学习
最后再看下广告主和流量主一起优化的方法 我们称之为联邦学习。
背景及定位
在当前海量大数据时代,以及随着计算机,人工智能和深度学习的飞速发展,算法模型的准确率越来越来依靠于大数据的支持。比如各种用户的个性化推荐,以及广告的定向投放的用户群确定等等方面,剥离开数据,不可能建立出贴近实际情况的优秀模型。但是随之逐渐浮出了两个尖锐的难题——数据孤岛难题和隐私安全难题。更严重的是两者之间存在一定程度的制衡。尤其在银行,金融行业,对用户的信息的安全要求更是高上加高。
数据孤岛问题即:由于在某些专业的领域对机器学习模型学习和训练的时候,缺乏标注数据的支持,同时存在在不同行业的之间的数据源之间存在着难以打破的壁垒。由于行业竞争,用户隐私,行政手续复杂等问题,甚至在一个企业的不同部门之间的实现数据共享和整合都存在重重阻力,导致当前的海量数据变成了一个个的“数据孤岛”,数据之间的交互和通信变得困难。在项目实施过程中对不同机构的数据进行整合的成本无疑是居高的。
隐私保护问题:欧盟在2018年5月出台了《通用数据保护条列》,对于数据的收集,传输,保留或者处理过程进行了约束。重视数据隐私和安全已经成为一种世界性共识和趋势。特别是像银行金融对隐私比较敏感的行业。在隐藏安全保护要求变高的同时,数据孤岛问题似乎变得更突出。
如何在如何平衡隐私保护与技术,如何在避免用户信息泄露的前提下,建立出优秀贴近实际的算法模型,愈发重要。
核心思路
在人工智能取得长足进展的背景下,树立并且坚持严格的数据保障要求,利用消耗更多的计算机资源,来实现人工智能时代的“保护隐私前提下的数据挖掘”。多方共赢的机器学习方式,有助于打破数据孤岛、提升AI 的应用效率,在市场监管、跨部门合作、数据隐私保护等领域,有着非常广阔的应用前景。
腾讯侧的资料 https://cloud.tencent.com/developer/article/1729569
联邦学习的底层原理和实现非常复杂,这里尽量会以非学术的表达以及应用层的角度来阐述整个内容。
联邦学习的分为主要范围纵向、横向、以及迁移学习。常用的为纵向和横向学习。
纵向联邦学习主要针对拥有异构数据的机构,如银行、电商等,通过融合多个机构对相同样本的不同观察进行AI联合建模。也可以理解为两个数据集的用户 ( U1, U2, … ) 重叠部分较大,而用户特征 ( X1, X2, … ) 重叠部分较小;
横向联邦学习主要针对拥有同构数据的大量终端用户,如互联网APP 用户,通过融合终端用户对相同设备或应用的不同体验进行AI 联合建模。在经用户授权后,联合建模过程中,用户的个人隐私均不出个人终端设备(如:手机、平板),从而保证了个人隐私安全。也可以理解为两个数据集的用户特征 ( X1, X2, … ) 重叠部分较大,而用户 ( U1, U2, … ) 重叠部分较小;
整体架构,以腾讯侧为例
重点概念
模型角色:因为是两个公司之间共同训练同一个模型,因此在训练时需要双方各司其职,避免训练紊乱,模型训练角色分为 leader 和 follow 两个角色,leader 角色负责模型的调度,包括模型启动、数据调度等。还有一个需要提前约定的,就是模型训练中谁更新主梯度(谁拥有label 去更新模型顶层的 loss)。虽然 leader、follow 角色和 label 拥有者可以解耦,但是一般约定为 label 拥有者承担 leader 角色。
数据求交:因为涉及到双方联合训练同一个模型,因此在训练时需要保证双方能够识别到同一条样本,样本又不能交换,可能存在一些训练数据的 diff,因此需要有一个数据求交的逻辑,得到双方共同的训练数据,并以相同的顺序存储。
站在程序员的角度
这概念看起来有点复杂啊,那么作为客户侧的程序员需要做什么呢,首先要理解下面几个问题
1. 怎么保障各自数据的安全
联邦机器学习避免用户信息泄密的本质为:训练时将训练数据留在终端本地,不需要再收集、存储上传到云端,用户的本地数据,只有用户本地知晓,最终同步更新全局模型。在避免用户信息泄露的前提下,得到最终的模型。
还记得上文中提到的布隆过滤器吗,本质上实现的原理是相同的,都是位图算法。
位图算法的模型具体原理为:通过将数据加密之后,通过k次hash函数的散列到位图模型中。位图模型其实为长度为m的数组,数组为01数值 。
位图算法具体原理:
- 确定客户端私钥和Host侧加密的最大数。
- 确定分析数据总数n,当分析数据小于100000默认n=100000。使用默认长度。
- 错误概率定义,由于位图是存储的进过hash散列的数值,可以理解为是压缩完之后的信息,因此可能会出现位图中数据一致,但是实际的原始数据不一致的现象。
- 通过相关加密用户信息,之后客户端私钥和Host侧加密的最大数使用相关函数进行用户信息加密操作。
- 通过k个哈希函数具体模型计算得到上述经过加密的用户信息的哈希散列的序号,将位图数据中对应序号的值置为1,将n个数据计算完毕之后得到对应的位图模型。
匹配算法具体原理:
首先通过联邦技术训练得到经过加密的用户信息之后,经过计算得到的离线位图模型。之后通过客户端私钥和Host侧加密的最大数对用户信息进行加密,之后和离线的位图模型进行匹配,得到匹配结果。
总结:
抛开企业级方案所涉及的更深层次的内容,从应用层来看,基于联邦技术的位图匹配模型,通过使用联邦技术完成对用户信息的保护,通过位图模型,建立了不超过一定错误概率的位图模型,并且通过该位图模型,实现对在对用户信息匹配,确定该在线的用户信息的类型。该模型目前在广告获客平台的应用为;投放广告侧向获客平台提供某条用户信息,获客平台通过位图模型匹配,将用户二分类为到:1.有投放价值2.无投放价值,输出是否向该用户投放广告。
九. 总结