はじめに
数年前から返信を自動で提案してくれるSmartReplyという機能がGoogleからGmailやAndroid wearなどで提供されているのをご存じでしょうか。使ったことはなくても、Gmailなどで何気なく提案されているのを見たことがある方は多いのではないでしょうか。今回、Googleから新たに発表されたYoutube用のSmartReplayがTransformer及びWavenetを利用したモデルであるとのことから、Googleブログを参考にモデル構造について紹介します。
Googleブログ(2020年7月1日付):
SmartReply for YouTube Creators
https://ai.googleblog.com/2020/07/smartreply-for-youtube-creators.html
ご参考までに
Transformer紹介記事
https://deepsquare.jp//2020/07/transformer/
Wavenet紹介記事
https://deepsquare.jp//2020/04/wavenet/
SmartReplay概要
今回発表されたのは、YouTube用に構築され、YouTube Studioに実装された最新のSmartReplyになります。このモデルは、①計算効率の高い拡張(dilated)Self-Attentionネットワークを使ってコメントと返信表現を学習し、②初のクロスリンガルで文字バイトベースのSmartReplyモデルを表現した、とGoogleは発表しています。YouTube用のSmartReplyは現在、英語とスペイン語のクリエイター向けに提供されていますが、このアプローチにより、将来的にSmartReplyの機能をより多くの言語に拡張するプロセスを簡素化することができるとGoogleは考えているようです。
また開発者は現在、Play Developer Console内のレビューにSmartReplyを使用し、MLKitやTFLiteで提供されているAPIを使用して独自のバージョンを設定することができるようになっています。ただし、新しいSmartReplyを発表する度に、モデリングとサービスの提供において、タスクの要件に合わせてSmartReplyをカスタマイズする必要があるという独自の課題がありました。そうした課題に対応するためにも、今回汎用性の高い新たなSmartReplyを発表した、とのことです。
SmartReplayの歴史
①RNNでの試み
②事前定義リストから最も適切な応答を検索するシステムの構築
③TransformerとWaveNetを利用した前処理なしモデルの構築
RNNでの試み
SmartReply for Inboxの初期リリースでは、入力された電子メールをRNNで単語ごとにエンコードし、さらに別の単語レベルのRNNで潜在的な返信をデコードしていました。このアプローチは表現力はありますが、計算コストがかかるという問題がありはやく返信できるようにしたいという本来の意図を実現するには向いていなかったということです。
事前定義リストから最も適切な応答を検索するシステムの構築
その代わりに、事前に定義された提案のリストから最も適切な応答を検索するシステムを設計することで目的が達成されました。
この検索システムは、メッセージとその提案を独立して符号化します。まず、①テキストを前処理(言語識別、トークン化、正規化など)して単語と短いフレーズを抽出します。次に、②2つのニューラルネットワークがメッセージと提案を同時に独立してエンコードしました。
この分解により、提案のエンコード部分を事前に計算し、効率的な最大内積検索データ構造を使用して提案セットを検索することができました。これはエンコード部分の類似度を利用したものです。この深層検索アプローチにより、SmartReplyをGmailに拡張することが可能となり、それ以来、現在のYouTubeシステムを含むいくつかのSmartReplyシステムの基礎となっています。しかし、このモデルではYoutubeのコメント欄にある多様な表現という課題には対応できませんでした。そのため、今回新たなモデルが提案され、実装されることになりました。
TransformerとWaveNetを基礎としたシステム
YoutubeにおけるSmartReplayの課題
YouTubeのコメント欄には大量のコメントがありますが、YouTube上のクリエイターや視聴者のコミュニティが多様なことと同様、コメントの形式も多様な形で表現されています。そのため、フォーマルな言葉で長くなりがちなメールに比べて、YouTubeのコメントには、言葉の切り替え、略語、スラング、句読点の一貫性のなさ、絵文字の多用など、複雑なパターンが見られる、という課題がありました。以下は、Googleブログが示している、この課題を示すコメントのサンプルです。
それまでの基礎となっていたSmartReplyシステムは、限られた言語と狭いジャンルの文章に対してよく調整されたワードレベルの前処理に依存していました。つまり、以前のシステムは形式や内容が統一的であればうまく作動しますが、逆に統一されていないとほとんど機能できません。つまり、絵文字やASCIIアート、言語の切り替えなど、多様で異質なコンテンツが含まれている可能性があるYouTubeのコメント欄にはうまく対応できないという問題を抱えていました。
この問題に対処するためバイト言語と文字言語のモデリングに関する最近の研究からインスピレーションを得て、今回発表されたSmartReplayは前処理なしでテキストをエンコードすることにした、ということです。このアプローチは、ディープトランスフォーマーネットワークが、文字やバイトのシーケンスとしてテキストを与えるだけで、単語ベースのモデルと同等の品質で、単語やフレーズを根底からモデル化できることを実証する研究によって裏付けられています。
初期の結果は、特に絵文字や誤字脱字のあるコメントを処理する場合に有効でした。ただ、①文字列が単語に相当するものよりも長く、②Self-Attention層の計算複雑度が列の長さの関数として二次関数的に増大するという事実のため、推論の速度が実用に達しませんでした。
そこで、WaveNet で適用されている拡張技術を利用し、ネットワークの各層で時間的削減層を適用してシーケンスの長さを縮小することで、計算と品質の間で良いトレードオフが得られることを発見しました。
上図は、対照的な目的(コメントと返信)を持ってネットワークを訓練することによって、両方をエンコードし、それらの潜在的な表現間の相互情報を最大化するデュアルエンコーダネットワークを示しています。
今回実装されたSmartReplayモデルの挙動について
今回のSmartReplayは以下のようにモデルが動くことで、実装されています。
①Embedding層は、コメントが埋め込まれた後、Transformerに一連のバイトを供給する。
②Transfomerにおける各層への入力は、オフセットと等しい文字の比率を落とすことによって削減される。
③いくつかのTransformer層を適用した後、シーケンスの長さは大幅に切り詰められ、計算の複雑さが大幅に減少している。
※なお、このシーケンス圧縮スキームは、平均プーリングのような他の演算子で置き換えることができますが、置き換えることによるメリットがなかったため、単純化のために拡張を使用することを選択した、としています。
④Encoder層でエンコードされる。
⑤双方の類似度を算出され、適切な応答を確定する。
今回実装されたSmartReplayの試験結果について
各言語ごとに個別のモデルを学習するのではなく、サポートされているすべての言語に対して単一の言語横断モデルを学習することを選択されています。これにより、コメントでの言語の混在使用をサポートすることができ、また、ある言語での共通要素の学習を、絵文字や数字などの他の言語を理解するために利用することができるとしています。さらに、単一のモデルを持つことで、メンテナンスや更新の物流を簡素化することができるというメリットもあげています。Googleは「このモデルは英語とスペイン語に展開されていますが、このアプローチに固有の柔軟性は、将来的には他の言語に拡大することを可能にします」と発表しています。
モデルによって生成された多言語の提案の集合のエンコーディングを検査すると、モデルは、それらが属する言語に関係なく、適切な応答をクラスタ化することがわかります。このような言語横断的な能力は、学習中に並列コーパスにモデルを晒すことなく現れました。下の図は、3つの言語について、入力されたコメントでモデルがプローブされたときに、回答がその意味によってどのようにクラスタリングされるかを示しています。
例えば、”This is a great video “という英語のコメントに対する正しい返答として”Thanks!”が近い位置にあることがわかります。さらに、他の言語の最も近い返信を調べてみると、英語の返信と似たような意味であるため、適切な返信であることがわかります。また、2次元投影では、類似した意味の返信からなる他のいくつかの言語間のクラスタリングも示されています。このクラスタリングは、このモデルがサポートされている言語でどのようにクロスリンガルユーザー体験をサポートできるかを示しています。
まとめ
今回は、多くのひとにも身近なYoutubeのSmartReplayについて説明しました。TransformerやWaveNetといった技術は有名なものですが、それらが実際に組み合わされ、どういう風に使われているのかと問われるとなかなかイメージが湧きづらいかと思います。今回のような身近なサービスにも実装されていることがわかるとさらにモデルそのものが理解しやすくなるのではないでしょうか。今後もこのような例があれば、紹介していきたいと思います。