本網站內容使用人工智慧(AI)或機器翻譯技術翻譯,可能存在錯誤。

Skip to content

超越自拍:Roblox 的年齡驗證系統如何協助維持年齡核查的即時性

一套以安全為優先考量、模組化且多模態的行為機器學習系統

Roblox 的臉部年齡估算系統已處理 3.38 億筆年齡驗證紀錄,協助 Roblox 用戶在平台上解鎖適合其年齡的聊天功能,並存取適合其年齡的遊戲。初步的年齡驗證固然必要,但年齡驗證並不會因自拍照而結束。帳號可能被共享,或轉交給年幼的兄弟姊妹。 惡意行為者可能會試圖探測我們的防禦機制。為了將年齡驗證提升至超越「特定時間點」訊號的層級,我們建置了一個高吞吐量的機器學習層,用以評估帳戶的持續行為是否仍與其隨時間推移的估計年齡相符。我們在特徵層級的模組化設計,能實現高效的模型更新,並快速適應不斷變化的行為模式。 

可靠地運作我們的端到端年齡驗證工作流程,既是分散式系統的挑戰,也是機器學習的挑戰。 年齡估算本身就是一個艱鉅的機器學習問題,因為年齡界線並非行為上的斷崖。父母可能與子女享受相同的體驗,且語言會因文化、情境、社群以及年齡而異。沒有任何單一的行為訊號能夠可靠地捕捉那些隨時間推移及在對抗性壓力下而變化的細微行為模式。即使是我們最可靠的真實標籤,也來自於特定選取的人群,因此可能帶有偏見。

在 Roblox 這樣的規模下運作,更增添了複雜性。在每日的推論週期中,我們彙整來自整個平台的行為訊號,在最適合各工作負載的運算堆疊上執行子模型,並將其輸出結果整合為一個經過校準的估計值。 我們的模型範圍從傳統的機器學習分類器,到擁有超過 3 億個參數的多語言變壓器模型。該系統每天處理近 20 億筆帳戶層級的記錄,而訓練過程則運用了近 3,000 萬個高可信度的年齡標籤。

透過內部自主建構整個系統,我們得以獲得所需的透明度與控制權,以審查所有特徵與訊號是否符合隱私要求,這正是核心的設計要件。 我們還能運用 Roblox 專屬的訊號,捕捉帳號隨時間推移的使用模式——這類縱向脈絡是獨立的外部估算器無法單憑自身擁有的。這也讓我們能掌控完整的機器學習生命週期。我們可以隨著各種模態的可用性進行整合,並針對 Roblox 安全工作流程校準輸出結果,同時在行為變化時監控、控制及更新個別組件。

選擇合適的訊號來預測年齡

不同年齡層的用戶在遊戲、溝通及平台互動模式上,使用 Roblox 的方式各不相同。為了捕捉行為的多樣性,我們將輸入資料細分為不同的訊號類別:

  • 社交情境:彙整使用者社交圈中的模式,包括其連結對象及互動頻率。
  • 體驗參與度:超越單純遊戲內容的彙總模式,涵蓋玩家何時遊玩、停留時間長短,以及參與度隨時間的變化趨勢。
  • 帳號與平台活動:彙總平台使用情況與生命週期訊號,例如帳號使用年限、活動頻率,以及會話層級的行為。
  • 溝通模式:透過模型推導出的年齡相關語言使用摘要,包含溝通模式在不同情境與時間軸上的變化。
  • 學習得出的使用者表徵:能捕捉更廣泛使用模式的高階表徵。我們與「探索與個人化」機器學習團隊緊密合作;那些用於預測使用者接下來可能與哪些內容互動的豐富表徵,經過後訓練後,也能用於預測廣泛的年齡區間。

每個訊號類別皆配有符合其資料特性的模型。稀疏、高維度的聚合訊號由梯度提升決策樹(例如 XGBoost 分類器)處理;文本則由微調後的多語言變換器編碼器(mmBERT)處理;而使用者表徵則饋入某些緊湊的神經網路(多層感知器)。 

每個子模型預測的目標相同:一組年齡區間的機率分佈。隨後,梯度提升式元學習器會將這些機率向量整合為最終的校準估計值。 

基於模組化、運算速度及可解釋性等考量,我們刻意選擇了這種決策層融合方法,而非單一的特徵層模型。系統的模組化設計使我們能夠在不重建整個系統的情況下,新增、重新訓練或停用子模型。這也讓我們能夠更迅速地因應因自然演變或對抗性壓力所導致的行為模式變化。 融合層會讀取每個子模型最新提升的輸出結果,以便運用最佳可用訊號,並在某個訊號缺失或延遲時平穩降級。由於每種模態皆以獨立輸入的形式進入,我們能追蹤哪些訊號群組正驅動決策變化,並在輸出結果被下游系統使用前進行校準與品質把關。

我們在融合層強制執行校準,因為在安全系統中,可預測性比純粹的準確性更為重要。我們對模型進行校準,使其提供值得信賴的信心分數。如此一來,若下游行動將對使用者造成重大影響,我們便能在採取後續行動前,要求更強的證據及更高的信心分數。

標籤中的選擇偏誤

我們信心度最高的標籤來自已完成嚴格年齡驗證的用戶。這些標籤雖具參考價值,但並非 Roblox 用戶的隨機樣本。對於可能影響用戶存取權限的系統而言,代表性是訓練目標的核心部分。 

標記樣本群體並非目標群體。完成更嚴格年齡驗證的用戶,在系統層面上與更廣泛的用戶群體存在差異。若以該群體為基礎訓練模型,模型不僅會學習年齡資訊,更可能過度學習「哪些人選擇完成驗證流程」的特徵。為降低此選擇偏誤,我們會重新權重訓練與評估資料,使標記樣本更能反映我們欲進行評分的目標群體。 

我們與用戶研究團隊進行跨職能合作,利用彙總的調查結果來制定用於加權的目標人口定義。在此基礎上,我們運用逆傾向加權和迭代比例擬合(即「raking」)等技術,同時在多個維度上調整加權樣本,而非僅針對單一因素進行獨立校正。 

並非每個高可信度的來源都能產生可用的訓練範例。標籤的可靠性取決於其背後的驗證事件。某些事件可能包含使模型訓練效果不佳的訊號,例如異常的驗證模式或帳戶完整性疑慮。 

我們致力於在訓練前透過「完整性感知標籤過濾」或「自信學習(Confident Learning)」等標籤錯誤識別方法來清理標籤,以移除那些在行為建模中看似「分布外」的範例。早期實驗顯示,此類清理有助於防止模型過擬合,並能帶來穩定的效能提升。

在 Roblox 規模下的訓練、推論與避免偏差

推論需要足夠頻繁地執行以保持訊號的新鮮度,但各訊號類別的訓練頻率可能有所不同。我們根據特徵漂移、模型穩定性及模型成本來選擇重新訓練時程。變化迅速或品質快速下降的訊號可以更頻繁地重新訓練;而模型較重且性能變化較緩慢的訊號,則可以較少頻率地重新訓練,或視需求而定。 

運算堆疊會配合工作負載的特性進行調整。我們使用 Apache Spark 進行大規模結構化轉換,採用 Ray 框架處理 GPU 支援的工作負載,並運用生產環境工作程序進行即時訊號處理。 

以 Roblox 的規模而言,每天重建每個帳戶的完整歷史紀錄也並不切實際。 我們的自建資料處理框架針對高流量訊號維持有限範圍的滾動歷史紀錄,並分階段執行耗資源的轉換。這使我們每天能處理並彙總數百萬筆帳號層級的記錄,同時獨立擴展大規模的資料擴展、聯結及特徵彙總。這種混合式生產設計讓我們能直接與資料倉儲整合、在模型元件間實現可重現的執行,並在關鍵處存取加速運算資源。

為在現有規模下維持系統穩定性,我們在特徵管道中貫徹兩項嚴格的設計決策:

  • 儲存衍生特徵:我們盡可能儲存衍生特徵,而非原始活動串流。我們僅保留建模所需的訊號,而非其背後的完整歷史紀錄。
  • 統一的資料合約:訓練與推論皆採用相同的資料合約。此舉可減少機器學習系統中最常見的失敗模式之一:訓練資料與實際服務資料之間的偏差。

我們在生產生命週期的兩個環節採用閘門機制。首先,模型推廣與模型訓練是分開進行的。候選模型必須通過安全防護檢查,才有資格投入生產推論。若候選模型未能通過安全防護檢查,管道將阻斷推廣流程,並持續提供最新已推廣的合格版本。 

其次,推論輸出在傳送至下游之前會經過閘控。自動化檢查機制會偵測品質退化及預測分佈的顯著偏移。若檢查失敗,發布步驟將被阻擋。在與面向用戶的安全工作流程相關聯的機器學習系統中,「今日暫不採取行動」往往比發布無法解釋的分佈偏移更為安全。

系統評估 

對於此類系統而言,單一的準確度數值並無太大意義。我們會從排序品質、校準度、長期穩定性,以及重要年齡區間邊界附近的行为表現等面向,來評估模型品質。我們亦將評估資料的代表性視為衡量問題的一部分,因為只有當整體改善能反映系統所服務的目標群體時,該改善才具有實質意義。

在這個加權且保留的評估資料上,融合模型達到了超過 0.9 的平均精確度。其高可信度估計值在每日之間也保持一致,超過 99% 的案例在連續數天內仍維持在同一個大致的年齡區間內。 

我們還將該模型與透過「信任與安全」工作流程,由受過訓練的人工審核員產出的獨立真實標籤進行比較。在高信心水準下,該模型對成年人的年齡區間估計,有超過 80% 的時間與人工共識標籤一致。 

離線評估僅是其中一環。在實際運作中,使用者行為會因季節性變化、產品上市以及對抗性攻擊而產生變化。正因如此,在將輸出結果應用於下游流程之前,我們會將模型評估指標與對預測分佈、漂移及穩定性的持續監測相結合。我們同時也會監控後續年齡核查的結果,藉此透過實際運作回饋來評估模型的可靠性,並指出應調整閾值或審查路徑之處。

下一步

透過內部自主開發此系統,我們得以安全地運用 Roblox 專屬的訊號、以極其嚴謹的態度運作,並持續進行迭代。

展望未來,我們將專注於優化子模型、推論及衡量機制。在持續推進各層級發展的同時,我們亦將秉持模組化、校準、隱私保護及生產環境防護措施等運作原則。