多言語翻訳モデルで言語障害を分割する
バーチャル空間で出会った新しいRobloxの友達は、実は韓国人だったかもしれません。あなたは英語で入力していて、向こうは韓国語でタイピングしている。楽しく会話してたのに、お互い気付いてないんです。 最新のリアルタイムAIチャット翻訳により、現実世界では不可能なことがRobloxで可能になりました。没入感のあるバーチャル3D空間で、異なる言語を使ってシームレスに会話できるんです。 Robloxのカスタム多言語モデルが、対応する16の言語をあらゆる組み合わせで翻訳できるようになったおかげです。
バーチャル空間がテキストチャットに対応している限り、言語の壁を越えて別の国の人と交流できます。 チャットウィンドウは翻訳結果を自動で表示します。それぞれの母国語で会話を読めるようになるのです。 翻訳はリアルタイムで表示されます。待ち時間は100ミリ秒ほどで、見えないところで翻訳が実行されています。 AIによるテキストチャットのリアルタイム翻訳は言語の壁を壊し、世界中の人たちをつなぐことになるでしょう。
統合された翻訳モデルの構築
AI翻訳自体は新しいものではなく、バーチャル空間のコンテンツの大部分はすでに自動翻訳されています。 これから目指したいのは動的なコンテンツの翻訳です。 サポートされた16の言語で、やりとりの自動翻訳を可能にしたいと思っています。 この挑戦は困難です。理由は2つあります。第一に、英語のようなメイン言語からの翻訳だけではなく、サポートされた16の言語のあらゆる組み合わせに対応させたいこと。 第二に、スピードが求められること。 実際のチャットに対応させようと思うなら、待ち時間は100ミリ秒程度でなければなりません。
Robloxのアクティブユーザーは毎日7000万人以上で、その数は拡大を続けています。 24時間ずっと、世界中の人々がそれぞれの言葉で交流と制作をしているのです。 アクティブなバーチャル空間の数は1500万を超えます。そこで発生する会話をリアルタイムで翻訳することは手動では不可能でしょう。 無数のユーザーが各バーチャル空間で同時に会話しているのです。この規模のライブ翻訳に必要なのは、圧倒的な精度と速度を誇る大規模言語モデルです。 文脈を認識できるモデルでなければなりません。Roblox特有の言葉にも対応する必要があります。例えば、障害物アスレのようなスラングや略称です。 さらに、現在サポートされている16の言語の組み合わせにモデルを対応させる必要もあります。
言語の組み合わせごとにモデルを構築する場合(例:日本語 x スペイン語モデル)、16x16で256種類のモデルが要求されてしまいます。これとは別のアプローチをとりました。 Transformerベースの大規模言語モデルを翻訳に特化させ、単一のモデルであらゆる言語ペアを処理するのです。 類似した言語グループを扱う翻訳アプリを複数、単一のインターフェースで操るようなものでしょうか。 元の言語と翻訳先の言語が検知され、組み合わせに応じたエキスパートが呼び出されます。
この仕組みであればリソースを有効に活用できます。各エキスパートは異なる専門分野を持つため、翻訳品質を下げずに学習と推論の効率を高められるのです。
この仕組みには様々なメリットがあり、モデルの学習と管理の効率を上げてくれます。 例えば、モデルが言語同士の共通点を活用できること。 スペイン語とポルトガル語のような類似した言語を同時に学習させることで、双方の言語データを取り込めるため、翻訳品質の向上に役立ちます。 大規模言語モデルにアップデートがあった場合も、システムに反映させて最新鋭の技術の恩恵を受けやすくなります。テストも容易です。 統合されたモデルの利点は他にもあります。元の言語が適切に設定されていない場合も、モデルが自動的に正しい言語を検出して翻訳くれるでしょう。 原文に複数の言語が混在していても、言語をそれぞれ検出して翻訳できるほどです。 その場合高い精度は得られないかもしれませんが、理解できるだけの出力結果が期待できます。
統合モデルの事前学習には、オープンソースのデータに加え、バーチャル空間内の翻訳データ、人力のチャット翻訳文、チャットでよく使われる表現を使用しました。 さらに独自の翻訳評価基準を作り、翻訳品質を評価するためのモデルも作成しました。 一般的な指標では、AI翻訳の結果を模範・参考訳データと比較して、翻訳のわかりやすさに主眼を置きます。 Robloxでは模範データ抜きで翻訳の品質を保証したいと思いました。
エラーは正確さ(抜け・余分・誤訳)、流暢さ(句読点・スペル・文法)、参照の誤り(テキストの他の部分との食い違い)といった複数の側面から評価されます。 エラーの重大さは以下のように分類されます。深刻、重度、軽度の3種類です。 私たちは品質評価のために機械学習モデルを作成し、人の手で設定されたエラー種別とスコアで学習させました。 さらに多言語モデルをファインチューニングし、ワード単位のエラーを予測して分類、スコアを多元的な指標で測定させます。 これにより包括的な品質の把握とエラーの分類が可能になります。 模範的な翻訳データが存在せずとも、原文と機械翻訳をもとに品質を評価し、エラーを検知できるのです。 品質評価の結果を用いて、さらに翻訳モデルの品質向上を図ることもできます。
フランス語からタイ語のような一般的でない組み合わせは品質の高いデータが不足するため難易度が上がります。 ギャップの解消のため、再翻訳結果(翻訳文を再度原文に翻訳したもの)を原文と比較して精度を確かめる手法をとりました。 学習プロセス中に再翻訳を繰り返させることで、再翻訳データと管理された(ラベル済み)データを組み合わせてモデルの学習用データの量を増加させることにも成功しています。
モデルに現代的なスラングを理解させるために、人力で翻訳させた各言語の流行語も学習データに取り入れています。 最新のスラングに対応させるため、このプロセスは定期的に繰り返す予定です。
チャット翻訳用モデルは結果的に、10億個ほどのパラメータを持つことになりました。 ここまで巨大なモデルを大規模な翻訳に使うとリソースの消耗が恐ろしいことになる上、時間もかかります。リアルタイムの会話にはスピードが重要です。1秒に5000件以上のチャット文に対応させなければいけません。 そこで、軽量で規模の小さいモデルを作成することにしました。この巨大モデルを教師として学習させるのです。 蒸留、量子化、モデルのコンパイルなどの最適化手法でサイズを削減。パラメータ数を6億5000万個に抑え、効率的な運用が可能になりました。 バーチャル空間内テキストチャットで使用されているAPIにも手を加え、メッセージの原文と翻訳結果をユーザーが受け取れるようにしました。 翻訳前のメッセージの原文と、それぞれの言語に翻訳されたメッセージを素早く切り替えて表示できるようになります。
大規模言語モデルの完成後、モデルサーバーと接続するためのバックエンドも実装されました。 このバックエンドには追加のチャット翻訳ロジックを適用し、通常のセーフティ機能がここでも働くようにします。 翻訳文にも通常と同レベルのフィルターがかかり、ポリシーに違反する言葉が検知されブロックされます。 これも重要なパズルのピースでした。安全とマナーはRobloxの最優先事項ですからね。
引き続き精度の向上を
テストの結果、新しい翻訳システムがエンゲージメントを高め、セッションの品質を高めることが確認されました。 私たちのモデルは、Robloxで使用されている業務用翻訳APIをしのぐ性能を発揮しました(当社基準による)。モデルをRobloxのコミュニケーションに合わせて最適化させることに成功したのです。 これによってユーザーの体験にどれだけ変化がもたらされるか楽しみです。違う言葉を話す友達とゲームや買い物、共同作業、雑談ができるようになるんです。
それぞれの母国語を使ってシームレスで自然な会話ができるなら、世界中の人々を希望と他者への配慮をもってつなぐという目標に近づきます。
もっと翻訳の精度を上げて、モデルの学習用データの質を高めるために、ユーザーが翻訳に対するフィードバックを提供できるツールを実装する予定です。システムの改善に要する時間も短縮されていくでしょう。 ツールがあれば、ユーザーが誤訳を見つけた時に指摘できます。より良い翻訳を提案すれば、学習用データに取り込んでモデルの改善にも貢献できます。
現在16の言語に対応していますが、まだまだ理想には程遠い状態です。 これからも、バーチャル空間における最新の翻訳例を使ってモデルをアップデートしていく予定です。もちろん、チャットでよく使用されるフレーズや流行のスラングにも対応させていきます。 このやり方であれば、十分な学習用データが存在する限り、新しい言語のモデルも比較的低コストで訓練できます。 さらに、何でも自動翻訳できるようにする方法を追求しているところです。例えば画像やテクスチャ、3Dモデル内のテキストです。
私たちはすでに新しい地平を開拓しています。自動の音声チャット翻訳です。 例えば、フランス語のユーザーとロシア語のユーザーがボイスチャットできるんです。 遅延は少なく、それぞれの言葉のトーンとリズム、声に宿る感情をそのまま使って互いを理解できます。 SFみたいな話ですよね。時間はかかると思いますが、翻訳関連にはこれからも力を注いでいきます。 近い将来、Robloxは世界中の人々がテキスト以外の媒体でも気軽にコミュニケーションできる場所になるでしょう。