作者 | 郑奕嘉
1. 背景
什么是素材优选?
近年来,基于 feed 流推荐的短视频业务带来了巨大的广告商业价值,例如,抖音推出的「游戏发行人计划」就是一个鼓励达人发布游戏相关短视频,从而为游戏推广带量并实现流量变现的有效工具。相比于专业的广告素材(PGC),这些由达人自主创作的原生广告素材(UGC)往往具有显著的成本优势,而且风格多样、素材量大。但是,在发行人计划产生的大量 UGC 短视频中,有许多优质素材由于作者热度等原因无法得到足够的曝光,导致这些素材的价值无法得到充分利用。因此,我们通过挑选「游戏发行人计划」中有广告价值的素材进行素材加热(dou+投放),并借助智能投放、人群定向等其他技术,更精准有效地为游戏获量,最大限度挖掘游戏达人素材的潜在价值,更好地实现内容营销。所谓素材优选,即是从海量的短视频素材中,寻找出广告投放效果最好的素材。
为什么需要素材优选?
传统的素材筛选,往往依赖于运营同学依据人工经验进行筛选,一般会基于简单规则过滤(如按视频 vv 数过滤等),再人工从中挑选。这种人工的方式面临着许多困难:
- 过滤规则依赖人工经验,往往比较简单效果不好,容易导致大量优质素材的遗漏;
- 筛选素材的人力成本高,往往需要人工观看大量视频才能筛出少部分优质素材;
- 缺乏客观的筛选依据,容易受主观因素影响,而且无法定量评估素材可能带来的转化效果。
所以,如何利用算法来进行自动化的素材优选,是一个非常具有应用价值的研究方向。
2. 业务场景
在正式介绍建模方法之前,有必要先对背后的业务场景进行说明,一方面是对齐一些相关术语,另一方面也使读者对这些方法实际要解决的问题有一个更清楚的认识。在其他业务场景下,读者需要灵活结合自身业务的特点,对这些方法加以改进。
- 业务场景 一句话概括
我们的业务场景:筛选出抖音「游戏发行人计划」下的优质游戏素材,用于 dou+素材加热,从而更好地为游戏带量。
「游戏发行人计划」是一个连接了游戏广告主和抖音视频达人的平台,广告主会在该平台发布任务,达人接任务并投稿对应游戏相关视频素材,从而根据素材带量效果获得一定的现金收益,而广告主也完成了游戏获量的目标。这些通过发行人计划投放的素材,会被带上锚点链接(如图 1 所示),能够链接到对应的游戏推广落地页,从而为游戏带来预约、转化。由于素材在自然流量下受到作者热度等因素影响,可能导致一些好素材难以起量,所以我们会在发行人计划基础之上,挑选具有带量潜力的原生素材进行 dou+加热,从而为游戏获量。
图 1 发行人素材及锚点链接展示示例
在这篇文章中,我们定义的优质素材为:相同消耗规模下,为该游戏带量效果好的素材(其他目标如付费等在本文中暂不讨论)。那么什么叫带量效果好呢?在我们的业务场景中,主要考虑两个指标CTR(点击率)和CVR(转化率)。CTR是指视频所带锚点展示后,用户点击该锚点进入落地页的概率,该指标可以近似衡量视频的吸引程度。CVR是指用户进入落地页后,下载安装并激活该游戏的概率,该指标可以近似衡量该视频带来的用户质量(是否对该游戏感兴趣)。我们定义的激活效果好,即是广告投放后的CTR*CVR要高。(在素材筛选准则中,这两个指标需要同时考虑,缺少其中一个都可能导致最终效果不好。比如只考虑CTR很可能会找到一些能够吸引用户,但是跟该游戏相关性不大的素材,如一些影视剧片段等,这类素材点击率高,但往往转化效果很差。)
图 2 简化的发行人素材广告转化链路示意图 (真实场景更复杂一些,但不影响我们这里的技术方案讨论)
CTR、CVR 的具体计算方式如下:
其中,anchor_vv 即视频锚点 vv,anchor_click_vv 即锚点点击 vv,active_cnt 即激活数。
素材优选与常见的个性化广告业务有什么区别?
另外,虽然我们的任务是为了建模点击率和转化率,这听起来似乎与典型的个性化广告/推荐业务比较类似,但还是有必要强调一下两者的区别。个性化广告目的是建模用户在某个时间(上下文)下点击广告素材的概率,是一种实时的个性化建模方式,可以获取到用户信息和上下文信息,其建模目标往往是单次曝光的点击率(训练时样本标签被点击的为 1,未被点击的为 0,是二分类目标);而素材优选目的是在海量视频中挑出适合广告投放的素材,是一种前置的筛选过程,无法决定某个素材在具体投放过程中会展示给哪些用户,也无法做实时的干预,所以一般建模目标也是预估素材的整体效果,比如在某次投放过程中总体的点击率(点击次数/展示次数,是连续的数值型目标)。
3. 建模方法
3.1 整体建模方案
本文的建模方案,主要站在业务的角度,关注样本、特征及 Label 的构建,模型结构可以尝试使用传统的机器学习或者深度学习进行建模,我们在前期尝试过程中主要利用 boost 系列模型进行实验,没有进行过多模型结构上的探索(当然模型结构设计也很重要,后期会尝试更多结构上的改进)。
如图 3 所示,整体的建模思路是输入素材相关特征(见 3.2 小节),建立机器学习/深度学习模型回归素材投放的表现效果即 CTR 和 CVR(见 3.3 小节)。
图 3 建模架构示意图
根据预测的 CTR、CVR 计算综合打分值 score:
最终利用打分值对素材进行排序从而得到头部的优质素材。
3.2 特征抽取
如第 2 小节所述,素材优选是一种前置的筛选过程,无法决定素材会展示给哪些用户,也无法做实时干预,所以无法使用实时的上下文特征和用户特征。因此,我们只能尽可能挖掘出对投放效果可能有较大影响的素材相关特征。另外,相比个性化广告,素材优选的建模数据量比较少,个性化广告的数据量大概是 N_I×N_U(素材数 × 用户数),而素材优选只能使用素材侧的聚合信息,数据量级大概为 N_I(素材数),这导致可供训练的样本量比较少,所以在进行特征构建时要考虑特征维度避免过拟合。
我们最终抽取的特征可以划分为 4 大类:素材侧特征、作者侧特征、游戏侧特征、素材的历史表现效果。
- 素材侧特征:为了避免过拟合,我们没有直接使用视频的画面等高维信息作为输入,而是基于内容理解识别、预训练等方式提取到更高阶的特征。最终使用的特征包括:视频类型(类别、画风等)、视频 embedding(如推荐模型产生的 embedding 等)、视频基础信息(时长、地理信息等)。
- 作者侧特征:作者的热度和活跃度信息(投稿量、粉丝数等)、作者个人属性(地域、教育水平等)、作者风格(如万粉标签)等。
- 游戏侧特征:因为投放等目标是为游戏带量,不同游戏的用户群体不一样,导致不同游戏用户可能喜欢的素材也不一样,所以我们引入了游戏相关特征,包括游戏的品类、题材、玩法等。
- 素材的历史表现效果:包括抖音自然推荐流量下的表现、历史用于广告投放的表现(仅限于投放过的素材)。这类特征对模型效果帮助非常大,不过在构建过程要特别小心避免出现特征穿越的问题。
3.3 样本构建
3.3.1 样本构建存在的难点
既然预测目标是素材投放的表现,那么一种简单的思路就是建模每个素材的历史整体投放表现,即历史投放过程中的总体 CTR 和 CVR,以此作为回归模型的预测目标构建样本。但在实践的过程中,我们发现这种方式存在一些问题:
- 时间因素的干扰:同一款手游在不同阶段投放效果差异巨大:比如在 OB 初期投放的素材,往往投放量大,转化效果也比较好;而在 OB 末期由于大量用户已经转化,游戏的素材投放金额会大幅减少,而且转化效果也会大打折扣,表现为 CTR、CVR 都会降低。但这不代表 OB 末期投放的素材就会比较差,而是受到不同投放周期的影响。类似的时间干扰因素还体现在节假日、活动节点等特殊时间。
- CTR/CVR 波动大:由于不同素材投放过程展示的用户存在随机性,比如有的素材正好展示给了对该游戏感兴趣的用户,就会导致该素材表现较好,从而导致统计的 CTR、CVR 存在波动。举个极端的例子,某个素材只展示了 10 次,但正好有 1 个用户点击了,就会导致这个素材的点击率很高(10%),但这是随机性引起的波动,不代表这个素材在跑量规模上去后依然能保持这么高的点击率。这种现象在素材展示量少时尤其明显,随着展示量增加可以减少这种随机波动,但不能完全消除。
3.3.2 小节会介绍针对时间干扰因素的改进建模方式,3.3.3 小节会介绍针对 CTR/CVR 波动大大改进方式。
3.3.2 引入时间因素进行建模
我们一开始考虑建模素材整个投放周期下的 CTR/CVR,相当于对不同投放时间的表现做了聚合,这种方式能够得到比较稳定的 CTR/CVR 统计,但是会抹去时间信息。而在素材优选的业务场景下,时间因素的影响是非常大的。为了解决这个问题,我们引入了时间因素进行建模,主要包括两个改进:
- 基于天级别预测每个素材每天的投放效果,而不是整个投放周期的投放效果;
- 建模过程加入投放时间作为特征。
具体而言,我们以天级别抽取每天投放的素材表现效果作为训练目标,比如一个素材投放过 n 天,则在我们的训练样本中对应 n 条样本,每一条样本的 label(即 CTR/CVR)为当天的表现,这样就能将不同日期下的表现区分开来。同时,为了让模型能够区分不同投放日期对表现的影响,我们还需要在建模特征中引入时间信息。考虑到时间不是孤立的类别变量,相近的时间往往对投放表现的影响会更接近。所以我们实际输入的是投放日期与某个固定时间的差值,从而能够将时间类别变量转化成具有连续意义的整数变量。调整后的建模架构如图 4 所示。
图 4 引入时间因素的建模方式示意图
另外,由于素材在一天内的投放量较少,使用天级别的 CTR/CVR 统计,可能导致统计的 CTR/CVR 波动较大,不过相比之下样本量变多了,模型抗噪声的能力也更强,从实践来看影响不大。另外,3.3.3 小节也会介绍应对 CTR/CVR 波动大的改进方案。
3.3.3 样本损失加权策略
我们的建模方案是回归素材的投放表现效果比如 CTR 等,但在实践过程中我们发现统计的CTR 之类的比率信息存在波动,而且这种波动在视频展示量较少时表现会更明显(因为 CTR=点击数/展示数,当展示数比较小时少量的点击数变化也能引起较大的数值波动,CVR 同理)。
我们一开始的解决方案是卡视频(锚点)vv 阈值,比如只利用 vv>5000 的视频做训练,这样训练样本的 CTR 值相对稳定。但这种方式并不能解决问题:
- 在 vv>5000 的视频中,虽然统计的 CTR 相对稳定,但仍然存在 vv 偏小的视频 CTR 波动偏大的现象(表现为 CTR 头部的视频基本都是 vv 数偏小的);
- 这种方式造成训练样本有偏,因为训练样本中的视频都是 vv 数偏高的,模型在训练过程没有见过 vv 数较低的样本(这部分视频一般来说相对会比较差,与高 vv 视频存在比较大分布差异),导致模型无法很好预测这些低 vv 视频的表现,而且这部分视频虽然投放量少但视频数量会多很多(存在长尾效应)。
我们最终使用了一个简单但有效的解决方案:在训练时对样本损失进行加权。对于 CTR 预估,我们假设视频每一次曝光是否点击,都是一次独立的随机事件(暂不考虑曝光数对素材表现的影响,比如素材曝光量太多带来点击率衰减等情况),只要曝光数无限多的情况下,大数定律能够保证最终的点击率能够收敛到一个稳定值,所以视频(锚点)vv 本质上可以衡量统计得到的 CTR 的置信程度。于是,我们在训练过程中根据 vv 数对样本的损失进行加权:视频 vv 越大,统计的 CTR 越置信,对应的样本权重越高;视频 vv 越小,统计的 CTR 越不置信,对应的样本权重越低。通过引入样本权重,模型能够更加关注视频 vv 数较大的样本,同时避免了构造数据集时人工卡 vv 阈值带来的样本偏差问题。
具体地,我们对原始 RMSE 目标进行改进,增加 vv 数的加权项。针对 CTR 预测和 CVR 预测的损失函数分别计算方式如下:
(1)采用加权策略的 CTR 预测损失函数
其中各符号的含义如下:
(2)采用加权策略的 CVR 预测损失函数
其中各符号的含义如下:
4. 效果评估
4.1 离线评估
一般对于回归模型,可以使用 RMSE 或者相关性度量等方式进行评估,这些评估指标的假设是,所有样本标签的置信度是一致的。但是,在我们的应用场景中,预测目标值(CTR)存在不同的置信度,比如视频锚点 vv 数高的视频,统计得到的 CTR 越接近真实值;而视频锚点 vv 数低的视频,比如只展示了 1 次,那得到的 CTR 值波动非常大,很不置信。
基于这种考虑,类似于 3.3.3 节的方案,我们设计了加权的 RMSE 作为评估指标,这种指标相对普通的 RMSE 更符合实际业务场景,可以用来离线对比不同模型的精度。具体计算公式与 3.3.3 节的损失函数相同,除了数据集换成测试集。
实验数据集
我们利用「游戏发行人计划」视频在 dou+上的投放数据进行离线实验。采用 Replay 的方式进行实验,分别预测 20220128~20220216(共 20 天)期间每天的素材投放表现,即用 20220128 之前的数据训练然后预测 20220128 的效果,再用 20220129 之前的数据训练预测 20220129 的投放效果,以此类推(关于 Replay 评估方式可以参考王喆老师编著的《深度学习推荐系统》第 7 章)。我们的建模目标分别为预测每天的 CTR 和 CVR,目前的方案将 CTR 和 CVR 分开建模,后续会考虑引入多任务学习架构进行建模。
样本量
由于我们使用 Replay 方式测试 20 天的表现(相对于有 20 轮训练预测),预测不同日期时使用的训练样本和测试样本均会发生变化(只使用预测日期之前 90 天的数据用于训练验证)。
总体上:
CTR 预测只采样有 dou+锚点展示数据(即 anchor vv>0)的样本进行训练(否则得不到 CTR),每轮预测的训练样本量约为 200000 条,验证集约为 50000 条,测试集约为 2000 条。
最终总的测试样本量为 39411 条(共 20 天)。
CVR 预测只采样有 dou+锚点点击数据(即 anchor click vv>0)的样本进行训练(否则得不到 CVR),每轮预测的训练样本量约为 40000 条,验证集约为 10000 条,测试集约为 500 条。
最终总的测试样本量为 9882 条(共 20 天)。
实验结果
我们在测试过程中,针对两个主要的改进 trick:时间因素建模、样本损失加权,分别进行了消融实验,从而验证这两个改进能够有效改善模型预测效果。最终的 CTR 预测和 CVR 预测的实验结果如下:
从实验结果可以看到,在 CTR 预测和 CVR 预测的实验中,在同时使用两个改进 trick的情况下,加权 RMSE 有比较明显的下降。同时,也发现在单独只使用其中一个 trick 时加权 RMSE 值反而会上升,说明两个 trick 需要同时使用。只加入时间因素建模、不使用样本损失加权的情况最差(加权 RMSE 最高),在这种情况下,由于模型预测目标为天级目标,投放量较少导致样本 CTR、CVR 波动很大,此时如果不加入样本损失权重的话,效果会变得非常差,效果不如去除时间因素的方式(直接预测整体效果,相对更稳定)。
另外,以上离线评估都是基于加权 RMSE 指标给出的结果,不代表在真实情况下我们的加权方案一定是最优的。由于我们的训练方式是加权的,所以在加权 RMSE 指标上的表现更好是符合预期的,这里我们只给出结果。关于加权 RMSE 指标是否更加 match 线上的表现,是否有其他更合理的离线评估指标,值得进一步考虑和验证。为了比较不同建模方式的效果,进行线上的实验验证才是最直接有效的方式,不过考虑到实验的时间金钱代价,目前我们尚未进行这方面的实验,后期有机会可以做进一步验证。
4.2 线上评估
线上评估相比离线评估的优势在于:
- 可以对许多干扰因素进行控制,如投放设置、时间等
- 可以打平不同素材的消耗,从而用统一的指标如 CPA(成本)来评估素材的优劣
- 能得到模型打分头部素材的表现效果
- 相比于模型的整体排序效果,我们往往更关注打分头部素材的表现(能否找到优质素材)
- 但打分头部的素材可能之前没有投放过,这时线上实验就能验证头部素材的效果
当然,线上评估也存在一些劣势:
- 耗费时间、金钱
- 导致无法快速、频繁验证模型效果
- 线上 AB 实验相比离线数据,一般测试量会比较少,导致结果可能存在较大波动
为了验证模型相比现有运营同学的筛选方式的优劣,我们在内部一款游戏上进行了 AB 实验。我们每期实验分别从模型打分素材与人工挑选素材中选择相同数量的素材用于投放,控制预算、时间等变量相同,比较两组素材的表现效果。由于素材优选的目的在于发现效果好的新素材,而投放过的素材效果已经得到验证了,所以我们只使用未在 dou+投放过的素材进行实验。
我们的建模方案在最近几次的 AB 实验中,模型打分素材在 CPA、优质素材占比等方面表现都比较好。最近一次两组素材的表现对比如下(实验组为模型挑选素材,对照组为运营同学人工挑选素材):
按预测 CTR 排序下的真实 CTR 表现折线图
按预测 CVR 排序下的真实 CVR 表现折线图
按预测 CTCVR 排序下的真实 CTCVR 表现折线图(CTCVR=CTR*CVR)
*图中对模型素材和人工挑选素材分别用不同颜色表示,并标注了重合素材(模型挑选素材与人工挑选素材重合的部分),以及漏召素材(人工挑选素材中表现较好,但没有被模型挑出来的素材)。
从图中可以看出尽管存在波动,但整体真实表现依然随预测值降低呈现下降的趋势,说明预测值与真实表现的相关性。另外,可以看出,CTR 模型的相关性较强,而 CVR 预测值排序下的真实表现波动大,说明 CTR 预测效果较好,CVR 预测效果可能较差。
针对 CVR 表现较差的情况,我们查看了这些 CVR 表现差异较大的素材,发现存在一些历史自然流量 CVR 较低、但实验 CVR 较高的素材,即出现历史表现与实验表现差异较大的情况。我们认为这与素材的激活量少有关(大部分的激活数是个位数),可能微小的变化(如多一两个激活)也会导致 CVR 发生很大的变化,即 CVR 波动可能较大。而模型以这些波动大的历史 CVR 作为重要特征,容易受到不置信的历史 CVR 的影响,导致模型预测值有偏差。后续可能需要针对这些历史 CVR 特征不置信的情况,考虑如何提升模型的鲁棒性(比如在训练样本中对特征做随机扰动?)。
5. 总结与未来方向
本文主要介绍了我们在素材优选方向的一些思考及实践经验,包括整体的建模方案及特征抽取、样本构建过程,同时针对样本存在的两个问题详细介绍了我们的解决方式,并给出了模型效果评估,说明了目前方案的有效性。虽然我们的方案主要适用于抖音「游戏发行人计划」下原生游戏广告素材的智能筛选,但读者可以在其基础上进行改进,设计出更适合自己业务业务领域下的素材筛选方案,希望本文的内容能够带给读者一定的启发。
另外,除了本文提出的技术方案外,还有一些可能的改进思路,可以在未来做进一步的探索:
1.建模目标: 我们的方案是使用回归模型预测单个投放指标。但是回归模型在样本量少时学习难度大,MSE 容易受到噪声点影响,而且不利于在建模时对多个指标进行权衡。所以这里提出另外两种构造建模目标的想法:1)建立素材分类目标,比如根据业务经验对素材划分为优质/低质素材,得到二分类目标;2)建立 pairwise 的预测目标,即预测两个素材中哪个素材更优。
2.模型结构: 本文更侧重业务上的特征、样本构建过程,没有对模型结构做太多讨论。但在确定了特征样本之后,尝试更多不同的模型结构是有必要的。比如,可以尝试使用基于 FM 思想的深度推荐模型架构如 DIFM、DeepFEFM 等对特征交叉进行探索,或者在素材、作者、用户、游戏构成的异质图结构上利用GTN、LightGCN等图网络模型更好地利用高阶邻居结构抽取特征。同时,训练好的深度模型可以在 base 模型基础上针对不同游戏或者品类进行finetune,可能可以达到更好的效果。另外,我们在实践中发现靠后端的指标如 CVR 等预测会比较差,这可能与数据较稀疏有关,可以尝试引入像PLE之类的多任务学习架构进行改进。
3.特征: 我们的方案中使用的特征比较多,而素材优选业务本身样本量相对较少,高维的特征容易导致模型的过拟合(特别是后期引入复杂模型后),有些特征可能帮助不大,可以通过模型得到的特征重要性以及消融实验确定各部分特征的重要程度,去除无效的特征。
4.业务角度: 目前的素材优选目标是找到投放效果较好的素材。但可能存在一些素材本身具有抖音自然推荐带来的流量,即使不用 dou+加热,也能产生很好的带量效果,即投放对这些素材的效果增益可能并不大,所以可以尝试因果建模的方式,预测投放对素材带量效果的 uplift 值,从而找到最能带来增益的素材。