Hulu:视频广告系统中的算法实践
出品社区:DataFunTalk
导读:Hulu 是一家美国领先的互联网专业视频服务平台,商业广告是 Hulu 的重要变现手段之一。视频网站中的广告以担保合约式品牌广告为主,本次演讲分享了机器学习、人工智能技术如何在 Hulu 的广告系统中实践落地,如何帮助广告业务更加高效的运转,介绍了包括精准广告定向、广告流量匹配、广告库存预估等项目中机器学习算法的应用实践。
▌概述
首先介绍一下 Hulu 以及 Hulu 的广告产品形态。
Hulu 是一家美国的提供专业视频点播与直播的服务平台,成立于2006年,目前由迪士尼控股,拥有近3000万付费订阅用户,是全美用户数量增长最快的流媒体平台。
① 产品形态:点播,直播,回看等;
② 广告形态:以视频流中的15秒、30秒的视频广告短片为主;
③ 广告特点:
以品牌类广告为主,品牌类广告看重长期效果,品牌的曝光度,用户认知等等;
采用 CPM ( Cost Per Mille,千次展示 ) 方式计费,即无论用户是否点击,按照展示次数计价;
以担保式广告订单为主,广告主希望其品牌曝光有一定量的保障,例如,某品牌希望在指定地区给指定用户群投放指定的次数;
质量要求非常高,包括清晰度、创意、制作的精良程度等等。
上面简单介绍了 Hulu 和 Hulu 的广告产品形态,接下来介绍下广告系统中我们主要面对的核心算法问题有哪些,以及算法发挥的主要作用。
广告生态系统有三个核心要素:广告主,用户,媒体方 ( Hulu ) 。每个要素都有自己的优化目标。
广告主:
广告主的核心优化目标是广告的投放效率、有效性,以及 ROAS ( Return-On-Ad-Spend,广告支出回报率 ),算法的主要应用为:
① 广告定向:使用机器学习算法进行受众定向、基于上下文的定向、lookalike 定向等;
② 订单及价格优化:给广告主一些订单定向条件及价格的建议,使其在 Hulu 上更好的进行订单的购买和投放;
③ 转化率优化:越来越多的品牌类的广告主也开始在意短期或者长期的转化率,使用机器学习方法提高转化率,把正确的广告投给正确的用户;
用户:
对于用户的核心优化目标是优化用户体验,尽可能减少广告对用户的干扰,给用户更有连贯性的观看体验,算法的主要应用为:
① 个性化广告:给用户推荐更感兴趣,更相关的广告
② 情景式广告:使用 AI 技术进行图像音频的识别、广告创意的生成,为用户带来浸入式广告体验
③ 个性化频次控制:为用户提供个性化频次控制,避免重复及过量广告为用户带来的反感
媒体方(Hulu):
最终的优化目标:广告收入最大化,吸引更多的广告商和用户;与此同时我们也会进行生产环境的工作效率优化,算法的主要应用为:
① 库存预估:这是在担保式广告里面是一个必不可少的环节,在售卖广告以及做广告预算时发挥重要作用
② 广告流量匹配:对广告订单与用户流量进行匹配,保证担保式广告能够按时按量且均匀的进行投放
③ 定价策略优化:根据流量的热门程度及售卖压力,进行动态的定价,让整个系统得到一个收入的最大化。
下图总结了在 Hulu 的视频广告系统中的核心算法问题,也是我们研究员每天在做的事情:
① 广告定向,涉及到:
预估模型:例如用户标签的补全,构建 lookalike 模型等等
主题模型:使用无监督方式挖掘用户属性
图像识别技术:识别视频内容中物体、场景、氛围等等,投放上下文相关视频广告
② 库存预估,涉及到:
时序预测算法:库存预估一般被建模成时序预测问题
③ 流量匹配,涉及到:
凸优化:使用凸优化进行离线流量匹配
自动化控制理论 ( PID Controller ):使用自动化控制理论进行线上动态调整
④ 转化率优化,涉及到:
CVR 预估模型
Casual Inference ( 因果推断 ):使用因果推断,得到一个更加公正、有效的指标来评估转化是否有效。
Bandit/增强学习:使用 Bandit 以及增强学习的方式来解决广告冷启动的问题
⑤ 程序化交易广告,涉及到:
RTB ( Real time bidding ) 策略研究
流量预估/CVR 预估/投放节奏控制
⑥ 用户/广告体验分析,涉及到:
统计理论
Casual Inference ( 因果推断 )
⑦ 价格机制设计,涉及到:
博弈问题
增强学习
▌核心业务场景中的算法实践
由于篇幅有限,这里着重讲一下在三个比较核心的业务场景下,算法在 Hulu 广告系统中的实践与落地。
1. Ad Targeting 广告定向
广告定向在品牌类广告中,是最最重要的一个环节。
在 Hulu 的场景下,主要有三种类型的广告定向:
① 上下文相关:例如用户用的设备,在什么位置,在哪个频道,看什么样的视频内容,插播广告点前后的视频内容是什么情景等等。
② 用户相关:例如用户年龄性别、用户基本属性以及根据用户历史行为挖掘出来的属性等。
③ 用户广告交互相关:
Remarketing ( 再营销 ):例如投放广告给最近访问过广告商网站的用户,为他加深品牌印象;
Look-alike Targeting ( 相似访客定向 ):投放广告给与种子用户相似的受众,扩大受众人数,以及挖掘具有潜能的用户。
下面分别介绍一下针对这三种类型的广告定向使用到的核心算法:
a. 用户相关定向:
我们构建了用户画像系统作为用户定向的基础。底层是一个核心用户平台,负责用户数据的管理,版本控制,每天的 ETL 等等。注入的数据来自三种数据源:
① 来自第三方数据平台的用户标签、属性,
② Hulu 自己本身的一些标签,这里有两类工作:
第一类是工作是标签的补全,我们会用一些例如 XGBoost、DNN 的预测模型来对这些缺失标签的用户进行一个预估,得到用户具有哪些标签,以及概率是多少。
第二类是无监督模式,我们从用户的历史行为以及其他属性中进行挖掘,挖掘出一些新的属性出来,会涉及聚类、主题模型、user2vec 的方式来生成用户的标签。
③ 广告商提供的用户标签,针对这种标签最常用的就是进行 Lookalike 定向,我们会用机器学习的方式来进行预测,找到与种子用户相似的用户群体。
b. 上下文相关定向:
这里主要介绍一下 AI 在视频内容上下文情景广告中的应用。视频广告会插播在视频内容播放前以及播放中, 投放与视频上下文情节比较相关的广告,会减少广告对用户的干扰,举个例子:用户当前所看的是婚礼视频,如果此时投放的广告是珠宝广告,那就毫无违和感,甚至会激起用户的购买欲望。另外,我们需要探测视频中的的一些暴力血腥画面,在这些地方不适合投放广告。
这个问题的核心是使用图像识别技术检测出视频每帧都出现了什么样的实体、情景以及氛围等。Hulu 结合业界的标准构建了自己的 Taxonomy 体系,分为情绪、物体、场景、位置以及声音几个大的分类。
简要介绍一下图像检测大致流程:考虑到获取大量数据样本的人力物力成本较大,我们最开始会借助于公开数据集 ( 比如 Open Iamge、Places 365等 ),使用 Inception V3、VGG 等模型去生成一些标签,接下来会根据 Hulu 的场景进行少量的人工标注,对模型进行 Finetune 以及使用多模型融合决定最终的标签。
c. 转化率优化:
虽然品牌类的广告点击率没有那么重要,但是越来越多的广告商开始和 Hulu 谈,我把我的转化数据给你,你帮我计算下我这次投放的转化率是多少。这就带来了另外一个问题,广告商最终还是希望优化自己广告的转化率,所以我们最近开始了这方面的研究。目前开展的研究是基于 Hulu 自己的广告的转化率优化,Hulu 在自己的视频里面也会放一些推广新剧的广告内容,例如一个15秒的预告,希望这些广告能投放给正确的用户,得到比较高的转化率。这个问题被建模成为 CVR 预估的问题,根据投放数据以及转化数据,通过机器学习来建模用户看到广告后的7天内、30天内的转化率,再投放的时候把正确的广告投放给正确的用户。
转化率优化中的特征 & 模型
特征主要分为三块:
User related:基本的用户属性,如位置,活跃度,留存时间等,以及一些重要的历史行为,比如曾经看过哪些内容,搜索过哪些内容,收藏过哪些内容。
Ad related:广告本身的属性,如行业、剧目本身的信息等等。
User-Ad:用户这个广告看过多少次了,通过多次投放使用户加深印象。
模型方面我们目前使用了 DIN + FM 模型进行建模,同时也在探索更好的模型优化。
d. 广告定向中不可忽视的问题:因果推断和共享账号
因果推断
我们在评估广告转化率的时候,会考虑评估是否正确,广告是否有效,举个例子:假如有一群用户,不论你对不对他投放广告,他都会去买这辆车,如果把广告投放给这样的用户,最后评估广告的转化率的时候会评估的非常高,其实广告效果一般,因为你投不投他都会去买,其实是白白消耗了这次投放。这就需要引入 Casual Inference 作为评估指标,其核心思想是:评估这个用户看这个广告和不看这个广告的收益分别是怎么样,最后将两者之间的差作为评估指标,使用 Doubly Robust Estimator 进行建模。除此,更加重要的问题是怎么根据 Casual Inference 作为目标去进行转化率的优化,怎么找到这些广告增益最大的用户,然后把广告投放给这些用户。
共享账号
接下来是用户共享账号的问题,例如:一个账号,孩子晚上8点左右看动画片,妈妈晚上10点左右看综艺节目,爸爸周末看体育视频,妈妈使用该账号的时候,发现推荐的都是动画片,找不到自己喜欢看的内容。这个在推荐以及广告定向中都是非常重要的问题,例如有的广告商,希望这个体育类广告只推荐给家庭中的爸爸,如果是小孩和妈妈看是没有效果的。
这个问题规划到三个方面来解决:
① 探测这个账号背后有多少个虚拟用户
② 给每个虚拟用户打上标签,预测他的行为模式
③ 用户来到 app 的时候预估是哪个虚拟用户,推荐对应的广告和内容
这个问题核心是一些聚类的算法和预估模型的问题,这也是我们目前正在解决的问题。
2. Inventory Prediction 流量预估
流量预估在担保式广告中是非常重要的环节,广告在售卖之前都要检查是否有足够多的库存余量卖给广告主,以保证售出的广告都能够保量完成投放。
问题简单描述为:给定未来的一段时间,一些定向条件的组合,预估有多少广告流量库存。
这个问题可以建模成时序预估的问题,通常有以下两个步骤:
第一步:用时序预估模型来预估总的流量是多少;
第二步:根据历史分布把流量分配到不同的排列组合,不同的维度上。
Time Series Model
我们目前尝试过以下三类模型:
第一个是ARIMA ( Autoregressive Integrated Moving Average model ),稳定时序预估中最常用的模型,第二个是来自 Facebook 的 Prophet 模型,第三个是 LSTM。
ARIMA 作为最为直接简单的稳定时序预估模型,在我们的实验中,在短期时序的预估准确率很不错,但是对长期的预估相对来说就不那么稳定了。原因在于,以下一些因素都会影响到长期的广告流量时序数据:
用户增长的因素
季节性的因素
每周的波动
节假日和特殊事件
Prophe 模型是专门为具有这几种特性的时序数据而设计的时序预估模型。
Prophet 把时序数据拆成了三部分:趋势部分,周期性和季节性部分,节假日部分,每一部分会单独做预测模型,最后合到一起得到最终的预测结果。
例如,上图为 Prophet 模型产生的几种因素的分解:左上角为趋势,左下角为节假日,右边为季度性,分别为每个月和每周的变化,可以观察到淡季和旺季的变化。目前,我们采用的是 Prophet 模型,在 Hulu 的广告流量预估问题上表现稳健。
3. Inventory Allocation 流量匹配
流量匹配在担保式广告的投放环节发挥着重要的作用,保证所有广告订单都可以按时按量并且节奏均匀的投放完成。
流量匹配算法会分为以下几个步骤:
第一步,把广告订单的投放目标拆分到每个小时,这个拆分会根据我们预估的流量和紧俏程度来进行分配;
第二步,进行 Offline Solving,把问题建模成一个二步图匹配算法,然后使用优化算法进行压缩解的求解;
第三步,进行线上调控,采用 PID ( Proportion Integration Differentiation ) 控制,根据真实的流量实时进行调控。
第一个步骤比较简单,下面简单介绍一下第二、三步中具体用到的算法。
在离线匹配中,我们把问题建模成一个二部图匹配问题。
在广告中最主要有 SUPPLY 与 DEMAND 端的两个限制条件:上图中左边 SUPPLY 表示用户带来的流量,流量上会有一些标签,表示用户及广告位的属性,右边 DEMAND 表示广告商的订单,订单上也会有些属性,比如投给男性,或者某个地区的;SUPPLY 与 DEMAND 之间的连线表示这个广告位可以投放的广告。SUPPLY 端的限制条件为最多只有这么多的库存可以使用,DEMAND 端的限制条件为需要将每个广告订单都保量投放完成。
之后可以根据二部图建模优化问题,求解目标是每个边的权重,表示该流量以多大的比例分配给某个广告订单。
首先会将原始优化问题转化为拉格朗日对偶问题,求解得到对偶变量 αj 和 βj,表示的分别是广告的对偶变量和流量的对偶变量。根据最优解满足 KKT 条件,我们可以只将相对数量级较低的广告对偶变量 αj 记下来,提高存储效率,线上再根据 KKT 条件计算 βj 和 xij。αj 可以被看做各个订单重要程度影响因子,作为线上选择订单的权重。
但是这里还是存在一个问题,这里全部都是用的预估的流量和订单来进行匹配,但实际上会发生一些变化。所以需要第三步,线上实时调控。第一可以保证适应真实的线上流量, 第二也可以进一步保证投放节奏的稳定性。一般使用 PID ( Proportion Integration Differentiation ) 控制技术,这是常用于机械、电气系统中的一种应用非常广泛的自动控制技术,分为比例调节、积分调节、微分调节这3项的调节,根据线上广告真实投放的快慢来调控接下来应该投放的速度。