本网站内容使用人工智能(AI)或机器翻译技术翻译,可能存在错误。

Skip to content

超越自拍:Roblox的年龄验证系统如何确保年龄核查始终有效

一种以安全为优先的模块化、多模态行为机器学习系统

Roblox的面部年龄估算系统已处理了3.38亿条年龄核查记录,以帮助Roblox用户解锁适合其年龄的聊天功能,并在平台上访问适合其年龄的游戏。初始年龄核查虽必不可少,但年龄验证并不仅限于自拍环节。账号可能被共享,或转交给年幼的兄弟姐妹。 恶意行为者可能会试图突破我们的防御机制。为了使年龄验证不再仅依赖于某个时间点的信号,我们构建了一个高吞吐量的机器学习层,用于评估账户随时间推移的持续行为是否仍与其估计年龄相符。我们的特征级模块化设计能够实现高效的模型更新,并快速适应不断变化的行为模式。 

可靠地运行我们的端到端年龄验证工作流,既是一项分布式系统挑战,也是一项机器学习挑战。 年龄估算本身是一个棘手的机器学习问题,因为年龄界限并非行为上的断崖。父母可能与子女享受相同的体验,且语言会因文化、情境、社区以及年龄的不同而有所差异。没有任何单一的行为信号能够可靠地捕捉那些随时间推移和在对抗性压力下不断变化的细微行为模式。即使是我们的最强“真实标签”,也来自选定的群体,可能存在偏见。

在 Roblox 这一规模下运行,则增加了额外的复杂性。在每天的推理周期中,我们会整合来自整个平台的行为信号,在最适合各工作负载的计算堆栈上运行子模型,并将它们的输出结果合并为一个经过校准的估计值。 我们的模型涵盖从传统机器学习分类器到拥有超过 3 亿个参数的多语言 Transformer 模型。该系统每天处理近 20 亿条账户级记录,而训练过程则依托近 3000 万条高置信度的年龄标签。

通过自主构建整个系统,我们获得了必要的透明度和控制权,能够审查所有功能和信号的隐私合规性——这是核心的设计要求。 我们还能利用Roblox特有的信号,捕捉账户随时间推移的使用情况——这种纵向上下文是独立的外部估算器无法单独获取的。这同时让我们能够掌控整个机器学习生命周期。随着新模态的可用,我们可以将其整合进来,并针对Roblox安全工作流校准输出结果;同时,随着用户行为的变化,对各个组件进行监控、限制和更新。

选择合适的信号来预测年龄

不同年龄段的用户在游戏、沟通和平台交互模式方面表现各异。为了捕捉行为的多样性,我们将输入数据分解为不同的信号类别:

  • 社交背景:汇总用户社交圈中的模式,包括其联系对象及互动频率。
  • 体验参与度:超越用户游玩内容本身的聚合模式,涵盖其游玩时间、停留时长以及参与度随时间的变化趋势。
  • 账号与平台活动:汇总平台使用情况和生命周期信号,例如账号使用时长、活动频率以及会话层面的行为。
  • 沟通模式:基于模型生成的、与年龄相关的语言使用概览,包括沟通模式在不同情境和时间维度上的变化。
  • 学习到的用户表征:能够捕捉更广泛使用模式的高层次表征。我们与“发现与个性化”机器学习团队紧密合作;那些用于预测用户接下来可能参与内容的丰富表征,经过后训练后,也能用于预测更广泛的年龄段。

每个信号类别都配有一个符合其数据特征的模型。稀疏、高维的聚合信号由梯度提升决策树(例如 XGBoost 分类器)处理;文本由微调后的多语言 Transformer 编码器(mmBERT)处理;而用户表征则输入到一些紧凑的神经网络(多层感知机)中。 

每个子模型预测的目标相同:一组年龄段的概率分布。随后,一个梯度提升元学习器将这些概率向量整合为最终的校准估计值。 

出于模块化、速度和可解释性的考虑,我们特意选择了这种决策层融合方法,而非单一的特征层模型。系统的模块化设计使我们能够在不重建整个系统的情况下,添加、重新训练或停用子模型。此外,当行为模式因自然演变或对抗性压力而发生变化时,这种设计还能让我们更快地做出响应。 融合层会读取每个子模型最新推送的输出结果,从而利用最佳可用信号,并在某项信号缺失或延迟时实现平滑降级。由于每种模态都作为独立输入进入,我们可以追踪哪些信号家族正在驱动决策变化,并在输出结果被下游系统使用之前进行校准和质量把关。

我们在融合层强制执行校准,因为在安全系统中,可预测性比纯粹的准确性更为重要。我们对模型进行校准,使其提供值得信赖的置信度评分。这样,如果下游操作将对用户产生重大影响,我们可以在采取行动之前要求更强的证据和更高的置信度。

标签中的选择偏见

我们信心度最高的标签来自已完成严格年龄验证的用户。这些标签虽然有用,但并非 Roblox 用户的随机样本。对于可能影响用户访问权限的系统而言,代表性是训练目标的核心部分。 

标注样本群体并非目标群体。完成更严格年龄验证的用户与更广泛的用户群体存在系统性差异。若仅基于该群体训练模型,模型不仅会学习用户的年龄特征,还可能过度关注“哪些用户选择完成验证流程”这一特征。为减少这种选择偏见,我们对训练和评估数据进行重新加权,使标注样本更好地反映我们计划进行评分的目标群体。 

我们与用户研究团队开展跨职能协作,利用汇总调查结果来确定用于加权的总体目标。在此基础上,我们采用倾向性加权法和迭代比例拟合(即“拉格法”)等技术,一次性在多个维度上对加权样本进行对齐,而非孤立地针对单一因素进行校正。 

并非所有高可信度来源都能产生可用的训练样本。标签的可靠性取决于其背后的验证事件。某些事件可能包含使其不适合模型训练的信号,例如异常的验证模式或账户完整性问题。 

我们在训练前致力于通过“注重完整性的标签过滤”或“Confident Learning”等标签错误识别方法对标签进行清理,以剔除那些在行为建模中看似“分布外”的样本。早期实验表明,此类清理有助于防止模型过拟合,并能持续提升性能。

在 Roblox 规模下的训练、推理及避免偏差

推理需要足够频繁地运行以保持信号的时效性,但不同信号类别的训练频率可能有所不同。我们根据特征漂移、模型稳定性和模型成本来选择重新训练计划。变化迅速或性能快速下降的信号可以更频繁地重新训练;而性能变化较慢且计算成本较高的模型,则可以减少重新训练频率,或按需进行。 

计算架构遵循工作负载的特性。我们使用 Apache Spark 进行大规模结构化数据转换,使用 Ray 框架处理基于 GPU 的工作负载,并使用生产环境工作进程进行实时信号处理。 

以 Roblox 的规模而言,每天重建每个账户的完整历史数据也并不现实。 我们的自研数据处理框架为高吞吐量信号维护有限范围的滚动历史数据,并将计算成本较高的转换分阶段实现。这使我们每天能够处理和聚合数百万条账户级记录,同时独立扩展大规模的扩展、连接和特征聚合操作。这种混合生产设计使我们能够与数据仓库直接集成,在模型组件间实现可重现的执行,并在关键环节访问加速计算资源。

为了在当前规模下维持系统稳定性,我们在特征管道中贯彻了两项严格的设计决策:

  • 存储衍生特征:在可能的情况下,我们存储衍生特征而非原始活动流。我们仅保留建模所需的信号,而非其背后的完整历史数据。
  • 统一的数据契约:训练和推理均采用相同的数据契约。这有效减少了机器学习系统中最常见的故障模式之一:训练数据与实际服务数据之间的偏差。

我们在生产生命周期的两个环节采用了门控机制。首先,模型推广与模型训练是分离的。候选模型必须通过安全防护检查,才有资格用于生产推理。如果候选模型未能通过安全防护检查,管道将阻止其推广,并继续提供最新推广的合格版本。 

其次,推理输出在发布到下游之前会经过门控检查。自动化检查会检测质量退化以及预测分布的显著偏移。如果检查失败,发布步骤将被阻止。在与面向用户的安全工作流相关联的机器学习系统中,“今天不采取任何行动”通常比发布无法解释的分布偏移更安全。

系统评估 

对于此类系统,仅凭单一的准确率数值并无太大意义。我们通过排序质量、校准度、长期稳定性以及在重要年龄段边界附近的行为表现等多维度来评估模型质量。此外,我们将评估数据的代表性也视为评估问题的一部分,因为只有当整体改进能够反映系统所服务的人群时,这种改进才具有实际意义。

在该加权、保留的评估数据集上,融合模型的平均精确率超过0.9。其高置信度估计值在每日之间也保持一致。超过99%的估计值在连续几天内仍处于同一大年龄段内。 

我们还将该模型与通过“信任与安全”工作流由经过培训的人工审核员生成的独立真实标签进行了对比。在高置信度下,该模型对成年人的年龄段估计与人工共识标签的一致率超过 80%。 

离线评估仅是其中一层。在生产环境中,用户行为会随季节性变化、产品发布以及对抗性压力而变化。因此,在将预测结果应用于下游处理之前,我们会将模型评估指标与对预测分布、漂移及稳定性的持续监控相结合。我们还会监控后续年龄核查的结果,以便利用生产反馈来评估模型的可靠性,并指出应调整阈值或审核路径的具体位置。

下一步

通过自主开发该系统,我们能够安全地利用 Roblox 特有的信号,以极高的严谨性进行运营,并持续迭代优化。

展望未来,我们将专注于优化子模型、推理和评估机制。在推动各层功能进一步发展的同时,我们将始终遵循模块化、校准、隐私保护及生产环境防护机制等运营原则。