Skip to content

機械学習で安全な通話を実現

Robloxの使命は10億の人々を希望と配慮でつなぐことです。そのためには人々につながりを実感させる必要があります。 現実のような3Dバーチャル空間では、人間の声こそがリアルな友情とつながりを形成する力を持ちます。 とはいえ、豊かで没入感のあるボイスチャットを安全なコミュニティと両立するにはどうすればいいのでしょう?

この記事では、私たちがいかにリアルタイムな安全を実現しているかをご紹介します。エンドツーエンドの機械学習モデルが一日に何百万分という規模の音声通話からポリシー違反を検出します。人の手による審査より精度も優れています。 このシステムからの出力は、適切な結果を判定する他のモデルに取り込まれます。 結果を判定するモデルはポリシー違反者に通知を送ります。最初は警告から始まり、改善されない場合は徐々に措置が厳しくなります。

このエンドツーエンドのリアルタイム安全システムは新たな挑戦でした。リアルタイム音声安全機能を多言語対応させるのは業界でも例を見ない試みです。 判定には音量やトーンといった要素と発言内容の両方が加味されます。 自動化のない状態からどのようにシステムを開発してきたかお見せしましょう。実質的にラベル済みデータやモデルが存在しないところから、驚くべき速さでリアルタイムな通話モニタリングを実現したのです。

音声安全モデルの一つはRoblox初のオープンソースモデルとして公開されました。 商用利用可能なモデルとしてオープンソース化していますから、ポリシー違反検知の業界水準を引き上げられることを願っています。通話モニタリング用の機械学習モデルの開発は加速することでしょう。 このオープンソースモデルは最初のバージョンです。現在テスト中のバージョンは大幅に進歩しています。

データ不足の克服

多くの企業と同じように、機械学習でまず必要となるのはモデルの学習と評価に使用する高品質なデータを見繕うことでした。 発言そのものと、発言内容の安全性について高い精度で評価したラベルデータ。これを紐付けたデータセットが理想的です。 当初、大規模に実際の会話をラベリングしたデータセットというのはほぼ見つかりませんでした。 管理された方法で高品質な通話モニタリング用モデルを学習させるには、対応言語ごとに何千時間分ものラベル済みデータが必要でした。その収集には何年もかかると予想され、時間とリソースの消耗が激しすぎます。

人力でラベリングされたデータを何千時間分も用意する代わりに、複数の効率的な方法を生み出しました。

  • 機械によってラベリングされたデータを学習に利用。手作業による完璧なラベリングを追い求めるのではなく、機械によってラベリングされた音声を大規模な学習用データとして使用しました。 自動でラベリングされたデータを大量に活用し、軽度の管理を加えることでラベルに含まれるノイズに強い学習用モデルが生まれました。 このアプローチが成功した要因のひとつはオープンソースの優れた音声テキスト変換ライブラリを使用したこと。そして、数年に渡り機械学習を用いてコミュニティ基準違反のテキストコミュニケーションを検出してきた知見を活用したことです。 このアプローチによって、モデルに必要な学習用データを数週間で用意できました。本来ならラベル付けに数年かかります。

  • 審査には人の手でラベリングされたデータを使用。高性能モデルの学習にはある程度の品質があればいいので、機械で十分です。しかし結果判定に使用するモデルにはふさわしくありません。 ですが、人力でラベリングされた審査用データはどこで確保するかが問題です。 学習に必要な規模のデータを手早く確保するのは不可能でしたが、審査に使うモデルの場合は可能でした。人力で違反行為の通報に対処している内部の内容審査スタッフの協力があったからです。 これにより両者の活用が可能になったのです。機械でラベリングされた大量のデータは十分な品質で高性能モデルを生み出してくれます。人の手でラベリングされたデータは小規模ですがモデルの品質を保証してくれます。

データ不足問題はポリシー違反の分野でも立ちふさがりました。薬物、アルコール、自傷に関する表現など、例が少ないカテゴリがあります。 この問題に対処するため、例の少ないカテゴリを他のものと組み合わせました。 その結果、最終モデルは暴言、いじめ、差別、恋愛関係、その他のカテゴリを特定できるようになりました。Robloxの健全性を保つためには「その他」カテゴリの理解が必要ですから、さらなる例を用いて検証を重ねる予定です。 学習データ例が一定量溜まれば、「その他」カテゴリ内のサブカテゴリもやがて名前つきのカテゴリとして登録されることになるでしょう。

学習データ用機械ラベリングパイプライン

ボイスチャットの内容から高品質なラベルを自動で抽出するためのパイプラインが設計されました。 パイプラインは3つのステージに分かれます。

  1. 音声チャンクの分割。最初のステージでは文章の間の無音部分を判定し、音声を一定のセクションに分割します。 これにより効率的なポリシー違反内容の検出とラベル付けが可能になります。

  2. 音声の文字起こし。第二ステージでは分割されたセクションごとにASR(自動音声認識)モデルによる文字起こしを行います。 ここではオープンソースのASRモデルを活用しました。

  3. テキストの分類。最終ステージでは独自のテキストフィルターで文章の内容をスキャンします。 本来、テキストチャットで不適切な内容を検出・ブロックするために設計されたフィルターです。 このフィルターを文字起こしされた音声データにも活用できるよう調整し、分割された音声をポリシー違反のクラス・キーワードでラベル付けできるようになりました。 テキストフィルターは人力ラベリングされたポリシー違反テキストで学習されたアンサンブルモデルで、拡張されたDistilBERTモデルと正規表現ルールで構成されています。

目標は究極のモデルを作り出すこと— 重要なのは、このパイプラインは学習用データの生成のためだけに用いられたということです。 必要なラベルを生成するパイプラインが整っているのに、どうしてモデルの学習が必要になるのか… 効率性を求めていたからです。ごく短時間で、ごく精密な結果が必要なのです。 Robloxのスケールでは、ASRによってあらゆる会話内容を文字起こしするのは時間とリソースの消耗が現実的ではありません。 このデータで学習させたコンパクトな機械学習モデルがあれば、すべてを文字に起こさずとも音声会話のポリシー違反検出に特化したモデルとして、同程度の精密さを維持しつつ、Roblox規模の環境でも使用できる速度を実現できます。

機械ラベリング用パイプラインの大規模運用

最大規模のAI戦略により、機械学習で高品質の学習データを確保することになりました。システムは一から構築します。このプロジェクト用の機械ラベリングパイプラインを常時稼働、第一級のプロダクションシステムとして開発し、何千ものCPUとGPUを並行して動かす必要がありました。 学習データのクラスタを何千ものCPUコアに埋め込むことで、音声ストリームを並行して自動処理し、ラベルを生成できます。 最大限の処理が可能になるよう、システムはスムーズに稼働する必要があります。あらゆるエラーやラグは学習データの生成に数日から数週間の遅れを発生させます。

下記にアーキテクチャの概要を示しました。数週間あれば、何万時間分もの音声データを自動でラベリング可能な構造です。 ポイントとなるのは、処理の重要な部分でボトルネックを除去することです。多くのマシンで無数の作業スレッドを同時稼働させて対応します。 先述の音声ファイルの分割、文字起こし、内容のスキャンがその対象となります。

機械学習アーキテクチャ

モデルの検索に最も必要とされるのは低遅延であることです。生の音声に直接対応してスコアを算出できるアーキテクチャが必要ですから、推論はほぼリアルタイムでなければなりません。 シークエンスの要約に優れた性能を発揮するTransformerベースのアーキテクチャを活用しました。業界でも自然言語処理(NLP)や音声モデリングの分野で利用されています。 推論は低遅延でありつつ、繊細な処理が可能でなければいけません。両者のバランスをとることが課題でした。Roblox製品に求められるスピードを実現しつつ、言語やアクセント、ノイズ、音質を問わず対応できる性能が求められます。

モデルの選択

設計の際問題となったのが、Transformerモデルの学習にどのような長さの音声を使うかということです。 数日分のボイスチャットの音声データについてグラフで検証したところ、15秒がベストなバランスを実現していました。遅延が少なく、スキャンに必要な文脈を提供できます。 ポリシー違反が見られない場合、「違反なし」として分類されることにしました。 一つの音声ファイルから複数の違反が検出されることもあるので、タスクを複数のラベル付けに対応させる必要があります。従来型のクラス分類のやり方では問題が出てきます。 このタスクのヘッドレイヤーを含むネットワーク全体をバイナリクロスエントロピー(BCE)ロスによってファインチューンしました。

チャット音声から抽出した発言を分類したグラフ。発言の75%は15秒以内で完結することが示されている。

オープンソースのエンコーダーモデルを音声研究コミュニティからお借りして候補を検討しました。残ったのはWavLMWhisperです。 最初の実験では学習済みのWavLM base+を2300時間分の音声データ(Robloxによる自動ラベリング済み)でファインチューンし、スキャン結果を実際の審査用データセットで評価しました。 スキャン結果はとても良好でしたが(「モデル審査」の項を参照)、実際に運用するには問題となる遅延度合いでした。 次はカスタムしたWavLMアーキテクチャを導入し、Transformerレイヤーの数を減らして、エンドツーエンドモデルを自動ラベリング済みの音声データ7000時間分で最初から学習させました。 会話のスキャンに性能を発揮しつつ、ファインチューン版よりもコンパクトなモデルとなりました。 最終モデルの候補には、教師モデルからの蒸留を活用。Whisperエンコーダーを教師ネットワーク、WavLMのエンドツーエンドアーキテクチャを生徒側のネットワークにします。 4000時間分の音声データで学習を進めると、ファインチューン版のモデルと同程度のスキャン精度を発揮しつつ、遅延とモデルサイズに関しては大幅な改善が見られました。 3つの実験で用いたモデルのパラメータを下に概略で示しています。 モデルを多言語の音声スキャンに活用できるよう、効率的なデータサンプリングと審査について、またモデルのハイパーパラメータについてこれからも模索していきます。



データサイズ

モデルサイズ

推論のレイテンシ/ 入力秒数

実時間係数

ファインチューン化WavLM

2300h

96M パラメータ

102 ms

9.80

エンドツーエンド学習

7071h

52M パラメータ

83 ms

12.08

蒸留

4080h

48M パラメータ

50 ms

19.95



モデルの最適化

選択されたTransformerレイヤーの量子化によって品質を落とさず25%以上の加速を実現するなど、業界標準のメソッドを採用しました。 特徴量抽出をCNN(畳み込みニューラルネットワーク)のみによる形からMFCC入力とCNNの組み合わせに切り替えたことで推論速度は40%以上向上しました。 さらに、音声活動検知(VAD)モデルを事前処理段階に導入することで、パイプライン全体が大幅に安定しました。具体的に言うと、ノイズの多いマイクが使用されていても対応できます。 VADによってノイズをカットした上で安全パイプラインを適用できます。音声に人の声が検出された場合にのみ適用されるので、推論が必要になる量は1割ほど削減されました。システムに入力されるデータ品質も向上します。

モデル審査

審査には多様なデータセットや基準を用いてきたのですが、ポリシー違反度が高い英語データセット(通報されるような内容)において音声スキャンがどのように機能したかお見せします。 このデータセットはすべて内容審査スタッフの手でラベリングされました。 暴言、いじめ、恋愛関係などあらゆる違反タイプを単一のバイナリカテゴリにまとめました。PR-AUC(適合率-再現率曲線の下部)に0.95以上のスコアが見られました。 この審査データセットをスキャンすれば、違反していない内容を誤ってフラグ付けすることなく非常に高い確率で違反を検出できるということです。

一見強力な審査が可能なように見えますが、必ずしもあらゆる場面で有効とは言えません。 ポリシー違反的な会話があったとユーザーに通知するような場合は、違反内容ばかりではないあらゆるボイスチャット内容をスキャンするので、誤検出のリスクも高まります。 通報があった場合は、違反の可能性の高いとされる会話をスキャンするので、このリスクは低くなります。 リスクを踏まえても、控えめな設定を使って実際の製品でテストするに見合うだけの結果が得られました。ポリシー違反の会話があったとユーザーに知らせるためです。 期待を大幅に上回る成果でした。

今後の展望

CPUインフラを活用して大規模環境向けのパイプラインを設計することで、Roblox規模の環境でもモデルを展開できるようになりました。 ピーク時間では1秒あたり2000のリクエストを処理できます。大半は違反の含まれない内容です。 モデルを活用しポリシーに違反する言葉を使っていると通知することで、プラットフォーム全体でポリシー違反的な行いが大幅に減少していることが確認されています。 この取り組みを始めて以来、音声に重度の違反があるという通報は15.3パーセント減少、音声1分あたりに見られる違反件数は11.4パーセント減少しました。

これから多言語の学習データによってモデルを拡張し、複数の言語や言語の混合にも対応できる単一のスキャン用モデルを実装する予定です。 新型マルチタスクアーキテクチャによって、スキャン目標および選択されたキーワードを音声全体を認識せずとも特定できるようにする試みもあります。 違反ラベルだけでなくキーワードを検出することでスキャン品質は向上。また、ユーザーに措置を下す際に状況を説明できるようになります。

上記の研究はRoblox内の多くのチームが協力した成果です。 領域をまたいで力を合わせ、コミュニティの尊重というRobloxの価値観を体現したと言えるでしょう。