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

Skip to content

運用機器學習提升語音安全

我們的使命是讓十億人透過樂觀與文明相互連結,這需要我們協助人們真正感受到彼此的團結。對於 3D 沉浸式世界而言,正如現實世界一樣,在建立持久的友誼與連結方面,鮮少有事物比人聲更具真實感與影響力。但我們該如何在確保社群安全與文明的同時,擴展 Roblox 上語音通訊的沉浸感與豐富性?

在本篇部落格中,我們將分享如何打造「即時安全系統」——這是一個端到端的機器學習(ML)模型,每日處理數百萬分鐘的語音活動,其偵測語音通訊中政策違規行為的準確度,甚至超越人工審查。該系統的輸出結果會饋入另一個模型,用以決定相應的處置措施。 處置模型會對違反政策的使用者觸發通知,初期會發出警告,若行為持續則採取更嚴厲的措施。

這套端到端的「即時安全」系統曾是項大膽的目標,因為我們是業界首批向用戶提供多語言、近乎即時的語音安全功能的公司之一。語音分類既取決於音頻風格(包括音量與語調),也取決於內容(包括所說的詞語)。 我們很興奮能分享,我們是如何從幾乎沒有任何自動化基礎——實際上沒有標記資料且沒有模型——開始,將即時語音安全從零提升至六零的。

最後,我們很榮幸能分享我們的首個開源模型,這也是我們語音安全模型之一。透過開源此模型並開放其商業使用,我們希望為政策違規檢測提供產業基準,從而加速開發更先進的語音安全機器學習模型。此開源模型是我們的首個版本,此後我們已進行了重大改進,目前正在進行測試。

克服數據匱乏的挑戰

我們與許多企業一樣,最初的機器學習工作始於評估可用數據的品質,藉此訓練並驗證模型。 理想的資料集組合應包含語音發言內容,以及針對該發言的高品質標註安全分類。然而,在我們起步時,幾乎沒有大規模的人工標註真實世界資料。若要透過監督式學習方法訓練高品質的語音安全檢測模型,我們需要為每個支援的語言準備數千小時的標註音訊資料,這不僅需要耗費數年時間收集,更會造成難以承受的資源與時間負擔。

與其依賴數千小時的人工標註資料,我們開發了幾種更有效率的方法:

  • 運用機器標註數據進行訓練。我們沒有執著於追求完美的手動標註訓練數據,而是選擇透過機器標註語音語句來獲取大量訓練數據。利用大量弱監督的機器標註數據所訓練出的模型,能夠對標籤中的某些雜訊展現出強大的抗干擾能力。 使此方法奏效的關鍵在於:我們能運用優秀的開源語音轉文字函式庫,以及多年運用機器學習偵測使用者文字通訊中違反《社群規範》行為的經驗。透過這種機器標註方法,我們僅需數週而非數年,便能為模型標註所需的大量訓練資料。
  • 用於評估的人工標註資料。儘管品質優良但仍不完美的機器標註資料已足以訓練出高效能的模型,但我們並不信任機器標籤能用於對最終模型進行驗證。因此,接下來的問題是:我們該從何處取得足夠的人工標註資料來進行評估? 幸運的是,雖然無法及時收集足夠的人工標註訓練資料,但我們可以利用內部審核員來收集足夠的模型評估資料——這些審核員原本就在分類 Roblox 用戶提交的濫用報告,並據此手動採取處置措施。 這讓我們得以兼顧兩者優勢:既有品質優良且數量充足的機器標註訓練資料,足以訓練出高表現模型;同時也有體量雖小但綽綽有餘的人工標註評估資料,讓我們確信模型確實有效。

我們面臨數據匱乏的另一個領域,是那些發生率極低的政策違規類別,例如涉及毒品、酒精或自殘的內容。為解決此問題,我們將數個低發生率類別合併為「其他」類別。因此,我們最終建構的模型能夠識別粗俗語言、霸凌、歧視、約會以及「其他」這五個類別。 為了深入理解這些「其他」類別,以便更好地保護我們的社群並確保 Roblox 上能進行安全且文明的對話,我們將持續監測這些類別以收集更多範例。隨著時間推移,當「其他」類別中的子類別累積到足夠多的訓練範例時,這些子類別也將成為獨立的名稱類別。

訓練資料的機器標註流程

我們設計了一套全自動機器標註流程,用於從語音聊天串流中提取高品質標籤。此流程包含三個階段:

  1. 音訊片段分割。流程的第一階段是將音訊分割成片段(或較短的區段),具體位置取決於我們偵測到的句子間靜默時段。此步驟能讓我們更有效率地識別並標記違反政策的内容。
  2. 語音轉錄。流程的第二階段是利用自動語音辨識(ASR)模型,將這些音訊片段轉錄為文字。我們採用公開可用的開源 ASR 模型。
  3. 文字分類。流程的最後階段是透過我們自建的文字過濾器,對轉錄的文字進行分類。此過濾器專為偵測並阻擋文字通訊中的不當內容而設計。 我們已將該過濾器調整為適用於轉錄的音訊資料,從而能為音訊片段標記違規類別與關鍵字。此文字過濾器為一種基於人工標記的違規文字資料所訓練的集合模型,包含擴展版 DistilBERT 模型及正規表達式規則。

必須特別說明的是,這條處理流程僅用於為我們最終的生產模型生成訓練資料。然而,您可能會疑惑:既然這裡已經有一條能產生我們所需標籤的處理流程,為何還要訓練模型呢?答案在於效率——我們需要在更短的時間內達到極高的準確度。 在 Roblox 的規模下,若要調用 ASR 來轉錄所有語音通訊,速度將慢得令人難以接受,且會消耗大量資源。然而,一個基於這些資料訓練而成的精簡 ML 模型,專門設計用於在不進行完整轉錄的情況下偵測語音通訊中的政策違規,其準確度同樣高,卻顯著更快,且能應用於 Roblox 的規模。

擴展機器標註流程

在大多數大型 AI 專案中,獲取優質訓練資料的機制本身就是一個生產級 ML 系統這需要從頭開始建立。 針對此專案,我們需要將機器標註管道開發成一級生產系統,具備 24/7 不間斷運行能力,並能擴展至數千個並行 CPU 或等效數量的 GPU。我們建置了一個擁有數千個 CPU 核心的訓練資料叢集,能自動並行處理傳入的音訊串流以產生機器標籤。此系統必須無縫運行以實現最大吞吐量,任何錯誤或停機都可能導致訓練資料生成過程損失數天甚至數週的時間。

以下是該架構的高階概覽,它支撐了我們所需的擴展能力,使我們能在短短數週內完成數萬小時音訊的機器標註。此處的關鍵啟示在於:在處理流程的關鍵節點投資排程系統,讓我們得以透過在多台機器上水平擴展工作執行緒來消除瓶頸。這些工作執行緒負責執行前一節提到的音訊區塊分割、音訊轉錄及文字分類等步驟。

機器學習架構

我們在模型搜尋過程中的一項核心需求是低延遲,也就是說模型推論必須達到近乎即時的速度,這促使我們採用能直接處理原始音訊並返回評分結果的架構。我們採用基於 Transformer 的架構,這種架構在序列摘要方面表現優異,且在自然語言處理(NLP)與音訊建模領域中已取得顯著成功。 我們的挑戰在於尋找一個能平衡複雜度與低延遲推論的「最佳平衡點」——也就是在處理多種語言及口音、對背景噪音的抗干擾能力,以及音質表現的同時,仍能滿足產品對延遲的限制。

模型選擇

一個亟待解決的設計問題,是確定訓練 Transformer 模型所需的上下文視窗大小。我們分析了數日語音聊天數據中語句長度的直方圖,並確定 15 秒的視窗能在延遲與分類所需的充足上下文之間取得最佳平衡。 我們將「無違規」設為一類,用以偵測是否存在政策違規。鑑於單一音訊片段可能包含多種類型的違規行為,此任務本質上屬於多標籤分類,而非傳統的多類別分類問題。我們針對此任務,使用二元交叉熵(BCE)損失對整個網路(包含頭層)進行微調。 

圖說:來自聊天資料的語音發言直方圖,顯示 75% 的發言長度少於 15 秒。

我們評估了音訊研究社群中幾種流行的開源編碼器模型,並將選擇範圍縮小至 WavLMWhisper。我們的首次實驗是利用 2,300 小時的 Roblox 機器標註語音資料對預訓練的 WavLM base+ 進行微調,並在兩個真實世界的評估資料集上評估分類結果。 我們獲得了非常令人鼓舞的分類結果(詳見下文的「模型評估」),但發現其延遲時間超過了我們對生產部署的閾值。作為後續工作,我們實現了一個自訂版本的 WavLM 架構,減少了 Transformer 層的數量,並利用 7,000 小時的 Roblox 機器標記語音資料從頭開始訓練了一個端到端模型。 此模型在對話情境中能產生穩健的分類結果,且相較於微調模型更為精簡。我們的最終候選模型採用師生蒸餾架構,以 Whisper 編碼器作為師網絡,並以 WavLM 端到端架構作為生網絡。 當我們使用 4,000 小時的音訊進行訓練時,發現其分類準確度與微調模型相當,但延遲大幅改善且模型體積更小。下圖總結了上述三項實驗的模型參數。隨著我們將模型擴展至多語言語音安全分類,我們將持續迭代資料採樣策略、評估策略及模型超參數。

資料集大小

模型大小

推論延遲/每秒輸入量

即時性係數 

微調版 WavLM

2300 小時

9600萬參數

102 毫秒

9.80

端到端訓練

7071 小時

5200萬個參數

83 毫秒

12.08

精簡版

4080h 

4800萬個參數

50 毫秒

19.95

模型優化 

我們採用了業界標準方法,包括對選定的 Transformer 層進行量化,在不影響品質的前提下實現了超過 25% 的加速。將特徵提取階段改為結合中頻耙頻(MFCC)輸入與卷積神經網路(CNN),而非僅使用 CNN,亦使推論過程加速超過 40%。 此外,將語音活動檢測(VAD)模型引入作為預處理步驟,顯著提升了整體流程的穩健性,特別是對於麥克風有雜訊的用戶而言。VAD 使我們能夠過濾雜訊,並僅在音訊中偵測到人類語音時才應用安全處理流程,這不僅將整體推論量減少了約 10%,也為系統提供了更高品質的輸入。 

模型評估

儘管我們使用了多種不同的資料集和評估指標,但我們可以分享我們的語音分類器在一個政策違規發生率極高的英語資料集(例如我們在用戶語音濫用報告中發現的情況)上的表現。該資料集由我們的審核員進行了 100% 的人工標註。 當我們將所有違規類型(如粗俗用語、霸凌、約會等)合併為單一二元類別時,觀察到精確率-召回率曲線下面積(PR-AUC)分數超過 0.95,如下圖所示。這意味著在此評估資料集上,分類器通常能偵測到絕大多數的違規行為,同時不會錯誤地標記過多非違規內容。

然而,上述強勁的評估結果未必能直接套用至所有使用情境。例如,在針對違反政策言論的通報案例中,分類器會評估所有 Roblox 語音聊天內容,因此違規發生率較低,且出現誤判結果的機率較高。至於語音濫用通報案例,分類器僅評估已被標記為潛在違規的語音內容,因此違規發生率較高。 儘管如此,上述結果仍足夠令人鼓舞,促使我們開始在生產環境中(採用保守的閾值)進行分類器實驗,以通知用戶其違反政策的語言。這些實驗的結果遠遠超出了我們的預期。

下一步是什麼?

透過運用我們自身的 CPU 基礎設施,並針對大規模運作精心設計處理流程,我們成功將此模型部署於 Roblox 的規模環境中。在尖峰時段,該模型每秒可成功處理超過 2,000 次請求(其中絕大多數並未包含違規內容)。 我們亦觀察到,由於運用此模型向用戶警示違反政策之語言,平台上的違規行為顯著減少。具體而言,自初期上線以來,嚴重等級的語音濫用通報減少了 15.3%,每分鐘語音中的違規次數也下降了 11.4%。

我們正透過多語言訓練資料擴展模型,這使我們能部署單一分類模型於整個平台,以處理多種語言及混合語言情境。此外,我們也在探索新的多任務架構,除了分類目標外,還能識別特定關鍵字,且無需仰賴完整的語音辨識(ASR)。在違規標籤之外檢測這些關鍵字,不僅能提升分類品質,也為在執行處分時提供情境背景的機會。

本文所述的研究是 Roblox 多個團隊共同努力的成果。這充分展現了我們「尊重社群」的核心價值,也是跨領域合作的典範。