Spotify 在全球范围内通过 Facebook、Google UAC(展示横幅广告)、TikTok 等多种数字广告平台开展付费营销活动。合理使用营销预算对于最大化广告投入的回报至关重要,这样我们才能持续推出旨在向现有用户和潜在用户展示 Spotify 价值的广告。全球范围的付费营销活动既复杂又具挑战性 — 对于营销人员来说,覆盖所有可能的情况几乎是不可能的。因此,我们思考了一个问题:如何将可扩展的策略(例如自动生成的创意广告、机器学习技术和广告互动数据)与 Spotify 独一无二的内容库相结合?这种结合能够:
- 更有效地传达 Spotify 的价值观
- 提高我们的营销绩效
- 应对我们在全球范围内所运行的成千上万则广告的挑战
在 2019 年之前,我们通过一些离线平台的内容营销实验取得了不同程度的成功。2019 年上半年的一次手动测试证实了通过内容广告吸引新用户的潜力,接下来的重点是如何实现这一策略的可扩展性。我们能否构建一个系统,自动产生基于内容的广告,将其上传到我们的数字营销渠道,并根据表现实时调整策略?当时,现成的技术手段能够帮助我们实现部分目标,但我们仍然需要解决大规模创意资产生成和可靠地估算及调整我们的关键指标 — 每个市场的用户注册成本(CPR,即平均获得一个新用户所需花费)。因此,我们开始构想解决方案。我们设计了一个基本的五阶段循环流程:
- 数据收集
- 优先排序
- 实施部署
- 学习调整
- 循环迭代
自动化营销流程的高层概 continue 览。
在这个流程中,我们首先从多个来源收集数据,然后根据某些标准对广告内容进行排序,以确定哪些最有可能成功。接下来,我们将这些广告部署到各种数字营销渠道,并密切监控其表现。基于这些数据,我们学习并调整我们的策略,以提高广告效果和用户获取成本的效率。最后,这个过程不断重复,以实现持续的优化和扩展。
通过这种方法,Spotify 不仅提高了广告活动的效率,而且通过精准和创新的方式向全球观众传达了品牌的价值,同时也探索了数字营销的新境界。
自动化内容广告生成的技术方法
在这个前提下,我们开始逐步自动化整个获取系统的每一个环节。首先,我们聚焦于内容的生成部分;以 Facebook 为例,在任何一个市场机遇中,广告位的纵横比和尺寸都有许多种可能的组合。考虑到风格和图形元素(例如封面艺术),一个单一语言或地区的单一活动可能需要数百种独特的创意广告素材,更不用说还要处理国际化等复杂问题。我们很早就意识到,如果不能扩展内容的生成,那么在平台之外的努力将难以起步。
起初,我们使用了一些基础模板,创建了一个基于 Java 的后端服务。这个服务从我们的元数据服务中获取内容元素,然后将它们结合到一个基本风格的静态图像中,从而生成静态图像:
虽然这项服务能够生成上图所示的图像,但它只能使用非常简单的静态模板。
那么动画呢?
静态广告在某些情况下很有用,比如当用户的网络带宽有限时。但在大多数情况下,我们更希望通过动态效果来吸引用户。简单的动画可以通过了解平移技术和贝塞尔曲线(Bezier curves)来生成。然而,对于需要通过 JSON 文件引用的更复杂的创意处理,我们原先为硬编码模板建立的简单系统就显得力不从心。此外,我们还面临着如阿拉伯语这样的从右到左阅读语言的问题,以及设计师在创意上的限制。我们考虑了 Spotify 正在使用的几种现成解决方案,如 Lottie 和 Blender,但它们都不完全符合我们的需求。Lottie 无法满足我们大规模的模板需求,而 Blender 对我们的创意团队来说是一个陌生的工具。
Adobe After Effects —— 一款动画图形工具 —— 似乎是一个理想的选择。它不仅为我们的设计师提供了所需的创意自由,还能生成引人注目的作品。最重要的是,continue 它提供了一种创建模板的机制,这些模板可以用来生成我们所需的各种纵横比和尺寸。但有一个问题:After Effects 是一款桌面应用程序,我们无法在 GCP 计算实例上随时启动它。
那么,我们能做到吗?
Adobe 提供了一个实用的辅助执行文件,允许用户通过命令行启动渲染流程,例如:
aerender -project c:projectsproject_1.aep -comp "Composition_1" -s 1 -e 10-RStemplate "Multi-Machine Settings" -OMtemplate "Multi-Machine Sequence"-output c:outputproject_1frames[####].psd
这让我们感觉我们快要成功了!
但不幸的是,这仍然需要一些条件,比如装有 After Effects 的主机节点,以及操作系统映像本地需要的合成资产等。因此,尽管接近了,但 After Effects 还是不完全符合我们的需求。
那么,我们的下一个选择是什么呢?我们转向了 nexrender,这是一个开源项目,它将 aerender 扩展成了一个高效的可批处理系统。通过 nexrender,我们可以编写脚本来从网络位置移动文件,一次指定多种输出格式,并管理无头 aerender 节点,以高效处理我们的批量任务。
有了 nexrender,我们终于能够结合所有我们想要的元素,自动化地创建视觉效果。
现在我们已经有了创意元素,那么我们应该包含什么内容?在哪里包含?例如,对于欧洲、中东和非洲地区的 Z 世代观众,我们应该播放什么广告?我们如何确定所有这些?
在将专业的技术方法转化为更易于理解的科普文章时,我们努力确保内容的准确性,同时也尽可能简化和阐明复杂的概念。
内容排行的奥秘
内容排行是数据和机器学习(Machine Learning, ML)发挥神奇作用的领域。我们结合了强大的机器学习技术和丰富的数据资源,每天对内容进行排名。接着,我们将这些排名过的内容输入到广告创意生成系统中,目的是吸引不同营销渠道上的特定目标群体,鼓励他们加入 Spotify,体验我们提供的精彩内容。
在业界,收集关键广告表现指标,如点击数、展示次数、应用安装、注册量和订阅等数据点是常规做法。这样做可以优化营销活动,尽可能获得最佳的投资回报。我们着手设计并实施了数据管道组件,通过从不同的广告平台 API 和移动测量合作伙伴(Mobile Measurement Partner, MMP)API 中获取这些广告表现指标和归因数据,从而构建了一个高质量的数据集。正如前面提到的,这个项目的一大特色就是利用 Spotify 广泛的内容目录数据,涵盖了我们平台上全球所有艺术家的信息。因此,结合这些内容目录中艺术家在各国的受欢迎程度和收集到的广告活动绩效数据,可以为内容排行模型提供坚实的训练数据,生成高质量的排名。
然而,这些内容排名,也就是在各国的营销活动广告中选择推广哪位艺术家,还涉及另一个方面——广告创意模板。构建一个能够将艺术家与模板相结合的系统只是挑战的一部分。另一部分则是在成千上万的艺术家中选择合适的,以及在众多设计选项中挑选一个合适的模板。
你可能会想,我们为什么不创建所有可能的组合,然后让社交媒体和搜索平台上已经相当复杂的受众定位算法,根据生成的最佳表现广告创意为我们进行优化呢?
当处理的广告数量在四到八个这样的人类可处理规模时,这些算法或许有效。但它们并不适用于处理数量级更大、可能无限的选择——这正是我们所期望的。因此,我们需要先进行一个预排名步骤,识别出最佳的广告创意进行推广,然后通过衡量其表现来优化整个营销活动的效果。
内容排序的启发式策略
我们如何实际上进行内容的预先排序呢?让我们首先简化这个问题,仅选取一组特定的艺术家进行展示(这虽然是个例子,但其中已包含了众多复杂性)。对于任何广告活动,我们希望所选艺术家能够最大限度地提高活动的覆盖面、转化效率和成本效益。在 Spotify,我们深入了解我们的艺术家,比如他们在用户中的受欢迎程度。但是,我们不清楚他们在第三方平台的覆盖、转化和成本表现如何。我们也不知道具体哪些用户看到了我们的广告,因此某一天的转化率或单次曝光成本在不同日子可能代表不同的含义。而且,由于市场力量的影响(比如需求或音乐流媒体的竞争),成本可能会日复一日地变化。
面对这些挑战,我们需要找到一种方法,来估算不同艺术家在各个活动中的覆盖、转化和成本效益的组合,即便我们没有每位艺术家的具体数据。
我们首先想到的是利用广告平台本身提供的信息,因为我们自己无法直接获取这些数据。具体来说,我们关注的是每个平台的广告投放算法,以及它们如何针对每个用户调整广告投放。我们以每位艺术家带来的注册量作为衡量其质量的标准。
基于这些信息,我们可以开始应用我们为解决预先排序问题而构建的算法。但在深入研究之前,我们需要考虑两个关键因素:
- 我们如何将所描述的质量评分与我们对艺术家的其他信息(例如,他们的受欢迎程度)结合起来?
- 如果我们还没有观测到不同艺术家的质量评分,我们如何估算他们的评分?
为回答这些问题,我们采用了我们的第一个启发式策略。
我们的第一个启发式策略结合了三种计算或数据点,以自动决定哪些艺术家应该在广告活动中被展示——受欢迎程度、注册量份额以及多样性。首先,我们使用受欢迎程度来选定八位艺术家参加某 continue### 意译(续) 个活动。接着,我们通过前述的注册份额指标来观察这些艺术家的表现。有了这些数据后,我们利用艺术家相似性知识图谱来预测类似艺术家可能的质量评分。最后,我们基于受欢迎程度和与其他广告及艺术家的区别性来评估表现,并对我们的选择进行优化。这种方法使我们能够以一种受控的方式探索多样化的广告和艺术家群体,有效地运用启发式策略。
内容排名,ML 的方法
虽然最初的启发式方法简单地将三个因素各自占三分之一进行权衡,我们开始探索更优的方法,以便让每个因素在预测广告中艺术家质量的贡献更加有效。因此,我们将这个问题转化成了一个监督式机器学习 (ML) 问题。在这个问题中,我们利用艺术家的特征来预测其对注册份额的贡献,并将受欢迎程度作为学习的一个特征。这还让我们有机会加入一些之前在启发式模型中未考虑的特征,比如活动本身的元信息(metadata),如市场、广告创意尺寸、操作系统、模板主题和变化等。
尽管启发式方法帮助我们快速起步,但 ML 解决方案通过将问题的多个变量结合成一个更强大的算法,使我们的月活跃用户 (MAUs) 数量在运行期间比启发式方法多出了 9%。
我们使用了 XGBoost 库,它是通过 Spotify 的 Kubeflow 托管服务提供的,属于平台任务范畴。XGBoost 内部使用梯度提升 (gradient boosting) 框架来实现 ML 算法。该模型的训练基于与活动级信息、艺术家元信息和广告创意模板数据相关的各种特征点。每天,模型会利用这些特征的历史数据,在一定的回顾时间窗口内进行训练,并预测两个主要的目标变量。
在 Spotify 免费层广告的预测模型中,主要目标变量包括:
- reg_percentage:排名艺术家对 Spotify 用户注册的贡献百分比。
- relative_cpr_ratio:排名艺术家在整体营销活动 CPR 中的比例或份额。
在 Spotify 高级层广告的预测模型中,主要目标变量包括:
- subcontinue_percentage:排名艺术家对 Spotify 高级用户订阅的贡献百分比。
- relative_cps_ratio:排名艺术家在整体营销活动的每订阅成本 (CPS) 中的比例或份额。
我们选择使用相对指标而非绝对指标,因为原始指标,如注册或订阅事件的数量及其单位成本,受到外部市场因素(如广告平台的供需情况)的影响,这些因素难以建模。
一旦模型准备就绪,我们便通过在两个区域进行为期三周的 A/B 测试来验证 ML 模型是否优于启发式模型。在这个测试中,我们将启发式模型设为对照组,ML 模型设为实验组。测试结果非常明确:ML 模型在两个区域的每获取用户成本 (CPR) 比启发式模型分别降低了 4% 和 14%。这主要得益于 ML 模型预测排名所产生的广告点击率 (CTR) 比启发式模型高出 11% 至 12%,因为 ML 模型训练使用了更丰富的特征数据。
考虑到这些明确的测试结果,我们自然而然地选择将 ML 模型投入生产,用于处理我们在所有活跃区域进行的营销活动中的内容排名。
下面是我们投入生产的解决方案的端到端架构:
技术挑战与启示
在这个项目的共同努力过程中,我们既遇到了成功,也面临了挑战。以下是我们遇到的一些重要挑战及其启示:
挑战 1: 管理资产生成的流程。
我们从使用 Java 模板转为使用 After Effects,这使得资产的生成从 API 调用中的即时操作变成了需要异步渲染的任务。根据所需生成的资产数量,对渲染人员进行适时增减也是一项挑战。
启示 1: 影响架构的变更随时可能发生。
系统最初的设计是基于当时可用的信息及其假设。当新信息出现时,我们需要考虑如何将这些新要求尽可能地平滑地融入现有设计,并逐步实现这一点。采用模块化组件构建的系统能够简化这一过程,尽管无法预见所有可能给设计带来压力的情况。
挑战 2: 依赖广告平台的 API 来获取广告效果指标。
为了向 ML 内容排名模型提供高质量的训练数据,我们的数据管道需要每天从各平台的 API 中获取广告效果指标。如果这些平台 API 出现问题,我们的排名流程可能会中断,甚至可能导致推荐不理想的内容。
例如,Facebook API 的故障曾几次导致我们的数据管道中断,这使得 ML 模型无法训练和更新内容排名,直到 Facebook 的营销 API 恢复正常。
启示 2: 外部依赖出现问题时,要随时准备备选方案。
面对不可预测的情况,尤其是涉及外部依赖时,备选方案至关重要。作为应对措施,我们决定在这种情况下继续使用前一天的艺术家排名,因为 ML 模型无法根据最新一天的广告效果数据做出调整。
挑战 3: 从 continueiOS 14.5 版本起,广告商标识符(IDFA)的影响。
2021 年夏天,苹果推出了 IDFA,从此改变了广告技术行业的格局,尤其是在广告商可以收集和使用的数据点方面。对我们来说,这意味着我们不能再完全依赖获取用户级别或日志级别的广告效果数据来优化活动。然而,因为我们的 ML 模型是基于过去一段时间的聚合数据进行训练,这一变化并没有对我们产生负面影响。
启示 3: 预见行业变化并相应调整系统。
当我们得知 IDFA 将从 iOS 14.5 版本起启用时,我们对 ML 模型的输出进行了离线分析,以评估是否对模型性能产生负面影响。结果证明对我们有利:模型性能并未受到负面影响。因此,建立在系统中断时评估系统的方法,并考虑其他解决方案始终是明智之举。
挑战 4: 从 Adjust 到 Branch 的移动测量合作伙伴(MMP)迁移。
Spotify 决定从 Adjust 迁移到 Branch,成为首选的深度链接和归因合作伙伴,如这篇 Spotify 工程博客所述。这意味着我们需要更新所有数据管道和 ML 模型,以适应由 Branch 提供的广告指标,并据此调整内容排名系统,以达到最佳效果。
要点 4: 设计一个能够即时更新且维持相同性能的系统。
我们专门安排时间来验证 continue 了从 Adjust 切换到 Branch 来获取广告性能归因数据是否会影响机器学习(ML)排序模型的性能。在这个过程中,我们详细制定了涉及的任务的技术规格。一旦我们确认性能营销和营销分析的相关方同意从 Adjust 切换到 Branch,并且广告数据从 Branch 正确流转,我们就对我们的数据管道和 ML 模型进行了必要的调整,以完成迁移工作。正如预期,ML 模型的性能依然强劲,与之前无异。
挑战 5: 在 ML 模型中融入艺术家多样性。
我们发现,用简单的方法在监督学习算法中编码艺术家群体的多样性并不奏效 — 这个被称为“组合推荐”的问题非常复杂。这是一个极具吸引力且应用广泛的挑战,我们始终在寻找解决这个问题的新思路!
要点 5: 在 ML 中,能够从简单到复杂迭代的能力极为重要。
在当前的世界中,编写 ML 算法的团队不可能再等待平台核心功能及其周边系统的稳定。后端、数据管道、流程,乃至整个行业的政策(例如 IDFA 政策)都在不断演变和变化。与此同时,最具影响力的系统依然需要对数据作出快速响应。因此,创建 ML 系统就像进行一场精妙的芭蕾舞,有时需要靠简洁的启发式方法,有时则需要动用跨平台技术的全套工具,比如艺术家嵌入向量。支持这种开发范围的流程至关重要。
结论与致谢
我们构建复杂自动化内容管理系统的旅程始于一个简单假设:“通过利用工程技术和内容的力量,我们能够提高 Spotify 的性能营销效率。”这个项目非常复杂,需要工程与营销团队之间跨领域的合作来解决实际问题。最终,我们开发出了一个端到端的自动化系统,能够生成并持续优化内容广告。我们非常自豪地说,全球只有少数几家科技公司能够完全自动化性能营销周期。我们感谢所有团队成员的辛勤工作,使这个产品得以面世。