「自撮り」を超えて:Robloxの年齢確認システムが、年齢確認の最新性を維持するのにどのように役立っているか
安全性を最優先とする、モジュール式かつマルチモーダルな行動学習システム

Robloxの顔年齢推定システムは、3億3800万件の年齢確認記録を処理し、Robloxユーザーがプラットフォーム上で年齢に適したチャット機能を利用したり、年齢に適したゲームにアクセスしたりできるよう支援してきました。初期の年齢確認は必要ですが、年齢確認は自撮り写真だけで終わるものではありません。アカウントが共有されたり、年下の兄弟姉妹に譲渡されたりする可能性があるからです。 悪意のある者が、当社の防御体制を突破しようと試みる可能性もあります。年齢確認を「その時点」のシグナルにとどまらせないため、当社は、アカウントの継続的な行動が時間の経過とともに推定年齢と依然として一致しているかどうかを評価する、高スループットの機械学習(ML)レイヤーを構築しました。当社の特徴量レベルのモジュール式設計により、効率的なモデルの更新と、変化する行動パターンへの迅速な適応が可能になります。
エンドツーエンドの年齢確認ワークフローを確実に運用することは、機械学習の課題であると同時に、分散システムの課題でもあります。 年齢推定自体は、年齢の境界が行動上の明確な区切りではないため、困難な機械学習問題です。親が子供と同じ体験を楽しむこともあり、言語は年齢だけでなく、文化、文脈、コミュニティによっても異なります。単一の行動シグナルだけでは、時間の経過や悪意のある圧力の下で変化する微妙な行動パターンを確実に捉えることはできません。最も信頼性の高いグラウンドトゥルースラベルでさえ、特定の集団から得られたものであり、バイアスを含む可能性があります。
Robloxの規模で運用することは、さらなる複雑さを伴います。毎日の推論サイクルにおいて、私たちはプラットフォーム全体から行動シグナルを収集し、各ワークロードに最適なコンピューティングスタック上でサブモデルを実行し、それらの出力を組み合わせて、1つの校正済みの推定値を算出しています。 当社のモデルは、従来の機械学習分類器から、3億以上のパラメータを持つ多言語トランスフォーマーまで多岐にわたります。このシステムは毎日20億件近くのアカウントレベルの記録を処理しており、トレーニングには3,000万件近くの高信頼度の年齢ラベルが活用されています。
システム全体を社内で構築することで、プライバシーに関するすべての機能やシグナルを検証するために必要な透明性と制御が得られます。これは設計上の中心的な要件です。 また、アカウントの経時的な利用状況を捉えたRoblox固有のシグナルを活用することも可能です。これは、独立した外部推定器だけでは得られない縦断的なコンテキストです。これにより、MLのライフサイクル全体を管理することも可能になります。利用可能なモダリティを組み合わせ、Robloxの安全対策ワークフローに合わせて出力を調整しつつ、ユーザーの行動変化に応じて個々のコンポーネントを監視、制御、更新することができます。
年齢予測に適したシグナルの選定
年齢層によって、プレイ、コミュニケーション、プラットフォームとのインタラクションパターンにおけるRobloxの利用方法は異なります。こうした行動の多様性を捉えるため、入力データを以下の明確なシグナル群に分類しています:
- 社会的コンテキスト:ユーザーが誰とつながり、どのくらいの頻度で交流しているかなど、ユーザーのソーシャルサークルにおける集約的なパターン。
- 体験への関与:ユーザーが何をプレイするかという範囲を超えた集計パターン。いつプレイするか、どのくらいの時間滞在するか、そして時間の経過とともにその関与がどのように変化するかを捉えます。
- アカウントおよびプラットフォームの活動:アカウントの保有期間、活動頻度、セッションレベルの行動など、プラットフォームの利用状況やライフサイクルに関するシグナルを統合したものです。
- コミュニケーションパターン:文脈や時間によってコミュニケーションパターンがどのように変化するかを包含し、年齢と相関する言語使用状況をモデルから導き出した要約。
- 学習されたユーザー表現:より広範な利用パターンを捉えた高次元の表現。当社はディスカバリーおよびパーソナライゼーションMLチームと緊密に連携しており、ユーザーが次に何に関与するかを予測するこれらの豊富な表現を、広範な年齢層の予測に活用できるよう再学習させることができます。
各シグナル群には、そのデータの形状に適したモデルが割り当てられます。疎で高次元の集約シグナルは、勾配ブースティングされた決定木(例:XGBoost分類器)によって処理され、テキストは微調整された多言語トランスフォーマーエンコーダー(mmBERT)によって処理され、ユーザー表現はコンパクトなニューラルネットワーク(多層パーセプトロン)に投入されます。
各サブモデルは、一連の年齢帯にわたる確率分布という同じターゲットを予測します。その後、勾配ブースティングを用いたメタラーナーが、これらの確率ベクトルを組み合わせて、最終的な校正済み推定値を算出します。

モジュール性、処理速度、説明可能性の観点から、単一のモノリシックな特徴量レベルモデルではなく、この決定レベルでの融合アプローチを意図的に選択しました。システムをモジュール化することで、システム全体を再構築することなく、サブモデルの追加、再学習、または廃止が可能になります。また、自然な進化や敵対的圧力によって行動パターンが変化した場合にも、より迅速に対応できるようになります。 融合層は、各サブモデルの最新のプロモートされた出力を読み取ることで、利用可能な最良のシグナルを活用し、いずれかが欠落または遅延した場合でも円滑に性能を低下させることができます。各モダリティが個別の入力として取り込まれるため、どのシグナル群が意思決定の変化を牽引しているかを追跡でき、出力が下流で消費される前にキャリブレーションや品質ゲートを適用することが可能です。
安全システムにおいては、予測可能性が純粋な精度よりも重要であるため、融合層でキャリブレーションを徹底しています。モデルをキャリブレーションすることで、信頼できる信頼度スコアが得られるようにしています。そうすることで、下流のアクションがユーザーに重大な影響を与える可能性がある場合、結果を実行する前に、より強力な証拠とより高い信頼度を要求できるようになります。
ラベルにおける選択バイアス
最も信頼性の高いラベルは、厳格な年齢確認を完了したユーザーから得られます。これらのラベルは有用ですが、Robloxユーザーの無作為抽出サンプルではありません。ユーザーのアクセスに影響を与える可能性のあるシステムにおいて、代表性は学習目標の中核をなす要素です。
ラベル付けされた母集団は、対象母集団そのものではありません。より厳格な年齢確認を完了したユーザーは、より広範な母集団とは体系的に異なります。そのグループで学習させた単純なモデルでは、年齢を学習するのと同じくらい、そのプロセスを完了することを選択したユーザーの特徴を学習してしまうリスクがあります。この選択バイアスを軽減するため、ラベル付けされたサンプルが評価対象とする母集団をよりよく反映するよう、学習データと評価データの重み付けを調整しています。
私たちはユーザーリサーチ部門と部門横断的に連携し、集計されたアンケート結果を活用して、重み付けに用いる対象集団を特定しています。そこから、逆傾向重み付けや反復比例フィッティング(レーキング)といった手法を用い、単一の要因だけを個別に補正するのではなく、重み付けされたサンプルを複数の次元で同時に整合させます。
信頼性の高い情報源であっても、必ずしも有用な学習例が得られるとは限りません。ラベルの信頼性は、その背後にある検証イベントの信頼性に左右されます。一部のイベントには、異常な検証パターンやアカウントの整合性に関する懸念など、モデル学習には不適切なシグナルが含まれている場合があります。
私たちは、行動モデリングにおいて分布外と見なされる例を除去するため、トレーニング前に「完全性を考慮したラベルフィルタリング」や「Confident Learning」のようなラベルエラー識別アプローチを用いてラベルのクリーニングに努めています。初期の実験では、この種のクリーニングがモデルの過学習を防ぎ、一貫したパフォーマンスの向上をもたらすことが示されています。

Roblox規模におけるトレーニング、推論、およびスキューの回避
推論はシグナルを最新の状態に保つために十分な頻度で実行する必要がありますが、トレーニングの頻度はシグナルの種類によって異なります。私たちは、特徴量のドリフト、モデルの安定性、およびモデルコストに基づいて再トレーニングのスケジュールを決定します。急速に変化したり劣化したりするシグナルは、より頻繁に再トレーニングを行うことができます。一方、処理負荷が高く、パフォーマンスの変化が緩やかなモデルについては、再トレーニングの頻度を低くするか、必要に応じて実行します。
コンピューティングスタックはワークロードの特性に合わせて構成されています。大規模な構造化データ変換にはApache Sparkを、GPUを活用したワークロードにはRayフレームワークを、リアルタイムのシグナル処理にはプロダクションワーカーを使用しています。
Robloxの規模では、毎日すべてのアカウントの完全な履歴を再構築することも現実的ではありません。 当社の独自データ処理フレームワークは、大容量のシグナルに対して範囲を限定したローリング履歴を維持し、計算負荷の高い変換処理を段階的に実行します。これにより、毎日数百万件のアカウントレベルのレコードを処理・集計しつつ、大規模な拡張、結合、特徴量集計を個別にスケーリングすることが可能になります。このハイブリッドな本番環境設計により、データウェアハウスとの直接統合、モデルコンポーネント全体での再現可能な実行、そして重要な箇所での高速化された計算リソースへのアクセスが実現されています。
この規模での安定性を維持するため、特徴量パイプライン全体で以下の2つの厳格な設計方針を徹底しています:
- 派生特徴量の保存:可能な限り、生のアクティビティストリームではなく、派生特徴量を保存します。モデリングに必要なシグナルのみを保持し、その背後にある完全な履歴は保持しません。
- 統一されたデータ契約:トレーニングと推論の両方に、同一のデータ契約が適用されます。これにより、MLシステムで最も一般的な障害モードの一つである、「トレーニングデータと実稼働データ間の不一致」を低減できます。
本番環境のライフサイクルにおいて、2つのポイントでゲート処理を実施しています。まず、モデルの本番展開はモデル学習とは分離されています。候補モデルは、ガードレールチェックに合格して初めて、本番環境での推論に使用できるようになります。候補モデルがガードレールチェックに失敗した場合、パイプラインは本番展開をブロックし、直近で展開された正常なバージョンの提供を継続します。
次に、推論出力は下流に公開される前にゲート処理されます。自動化されたチェックにより、品質の低下や予測分布の大幅な変化が検出されます。チェックに失敗した場合、公開ステップはブロックされます。ユーザーに直接関わる安全ワークフローに組み込まれたMLシステムにおいて、原因不明の分布の変化をリリースしてしまうよりも、「今日は何もしない」という対応の方が、多くの場合、より安全なフェイルセーフ策となります。
システムの評価
このようなシステムの場合、単一の精度数値だけではあまり意味がありません。私たちは、ランキングの品質、キャリブレーション、経時的な安定性、および重要な年齢帯の境界付近での挙動といった観点から、モデルの品質を評価しています。また、評価データの代表性も測定課題の一部として扱っています。なぜなら、総合的な改善は、それがシステムがサービスを提供すべき対象集団を反映している場合にのみ有用だからです。
この融合モデルは、重み付けされたテストデータにおいて、平均精度0.9以上を達成しています。また、高信頼度の推定値は日ごとに一貫しています。99%以上が、連続する日において同じ大まかな年齢帯に留まっています。
さらに、当社の「信頼と安全(Trust and Safety)」ワークフローを通じて訓練を受けた人間によるレビューアが作成した独立したグラウンドトゥルースと、本モデルを比較しました。高信頼度において、本モデルの年齢帯推定値は、成人の場合、80%以上の確率で人間のコンセンサスラベルと一致しています。
オフライン評価はあくまで一側面です。本番環境では、ユーザーの行動は季節性、新製品のリリース、悪意のある攻撃の圧力によって変化します。そのため、出力結果が下流で使用される前に、モデル評価指標に加え、予測分布、ドリフト、安定性の継続的なモニタリングを併用しています。また、事後的な年齢確認の結果も監視し、本番環境からのフィードバックをモデル信頼性の向上に活かし、閾値や審査プロセスの調整が必要な箇所を特定しています。
今後の展望
このシステムを社内で運用することで、Roblox特有のシグナルを安全に活用し、極めて厳格な運用を行い、継続的に改善を重ねることができます。
今後は、サブモデル、推論、および測定の最適化に注力していきます。モジュール性、キャリブレーション、プライバシー、本番環境のガードレールという運用原則に焦点を当てつつ、各レイヤーのさらなる進化を推進していきます。


