【レポート】Google を支える推薦モデル「Two-Tower」とベクトル近傍検索技術 #GoogleCloudDay

2022.05.05

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

本記事は2022/04/21(木)に行われた「Google Cloud Day: Digital ’22」 の機械学習セッション「Google を支える推薦モデル「Two-Tower」とベクトル近傍検索技術」についてのレポート記事となります。

セッション情報

登壇者

  • Google 佐藤 一憲 様
    • デベロッパー リレーションズ
    • デベロッパー アドボケイト

セッション概要

インターネット上の膨大なコンテンツからユーザーにとって価値の高い情報を瞬時に見つけ出すために、Google 検索や YouTube、Google Play 等では「Two-Tower」と呼ばれるディープラーニング モデルと大規模高速なベクトル近傍検索基盤が利用されています。本セッションでは、これら Google を支えるレコメンデーション技術を Google Cloud 上で再現し、さまざまなビジネスに適用する方法を解説します。

取り上げる主な Google Cloud 製品 / サービス

  • AI Infrastructure
  • Vertex AI (旧 AI Platform)

レポート

Googleを支えるベクトル検索技術

一般的な検索では、タグ、ラベル、カテゴリ等のキーワード検索が主流

Googleのサービスでは、ベクトル類似度を用いたベクトル検索が主流

例えば、あるコンテンツのジャンルが下記の割合で占めている場合

  • movie(映画):10%(0.1)
  • music(音楽):2%(0.02)
  • actor(俳優):30%(0.3)

3つの数字(0.1, 0.02, 0.3)からベクトルを定義して、類似しているベクトルのコンテンツを検索する

様々なコンテンツの種類(画像、動画、アプリなど)に対応可能で、数ミリ秒で検索している

ベクトル検索でビジネスの課題を解決する

Embeddings:

  • ビジネスやユーザーの要件にフィットするベクトル空間
  • 「かしこい」ベクトル 

ベクトル検索の応用範囲

下記のように、あらゆる用途で利用可能

  • 文書画像の内容で探す
  • 似ている 製品を探す
  • 似ている ユーザーを探す
  • おすすめの 音楽動画を探す
  • 故障しそうな IoTデバイスを探す

Vertex AI Matching Engineによる高速近似近傍検索

次元(dimensions)の数やコンテンツ(items)の数が多いほど、類似度の計算などが大変

Google Reserch 開発では、「ScaNN」と呼ばれる技術を用いて、類似度の計算を高速化している

ScaNN:

  • Google 画像検索、Youtube、Google Play 等を支える高速近似近傍検索技術
  • 精度と速度のトレードオフを大幅に改善

Vertex Matching Engine( ScaNNを実行できるGoogle Cloudのマネージドサービス )を使って、高速なベクトル検索が実装可能

  • Step 1: Embeddings 抽出モデルの学習 → ユーザー側で実施
  • Step 2: ベクトル検索 → Vertex Matching Engine(Google Cloud側)で実施

リコメンドのためのembeddingsの作り方

協調フィルタリング (広く利用されているリコメンド手法)

  • 良い点
    • ドメイン知識が不要
    • 偶然性(serendipity)が期待できる
    • 実装例や実績が豊富
  • いまひとつな点
    • コールドスタート問題 (未知のクエリに対応にしくい)
      • 例.視聴履歴がほとんどない新しいコンテンツなどが推薦されにくい
    • 多彩な特徴量を加味できない

Googleのサービス(YouTubeやGoogle Playなど)では、「Two-Towerモデル」を採用している

Two-Towerモデル

  • 良い点
    • 特徴量と特徴量の関係を学習 (コールドスタート問題の解消)
    • 多彩な特徴量を加味できる (マルチモーダルにも対応)
  • いまひとつな点
    • まだ広く利用されてない
    • モデルの設計と学習が必要
特徴量と特徴量の関係を学習

視聴履歴がほとんどない新しい映画などでも、特徴量から推論することができる

多彩な特徴量を加味できる

ユーザーの ベクトルと製品の ベクトルとの関係を学習させたりすることも可能

デモ

実際のセッションでは、下記のページを参考にしてTwo-Towerモデルを使ったembeddingsの作り方が紹介されてました。

おわりに

普段使っているサービス(YouTubeやGoogle Play)の裏側を覗き見できた感覚で、非常に有意義なセッションでした!

個人的には、「コールドスタート問題の解消」ができるTwo-Towerモデルは印象深かったです。

セッション自体も約30分以内のコンパクトな内容になっているので、是非視聴してみることをお勧めいたします!

以上、DA(データアナリティクス)事業本部のナガマサでした。