pubDate: 2024-06-05
author: sakakibara
YouTubeでは何億もの動画がアップロードされ、その中から検索によって目的の動画を見つけることができる。 大量の動画を効率的に扱うためにはそれなりの検索システムが必要となる。
ユーザーは入力したテキストにたいして、関連性が高く、見たい動画を表示することを期待している。これをMLのタスクとして落とし込むにはテキストクエリに対する関連性をベースに動画をランク付けする問題として定式化することができる。
動画とテキストの関連性を決めるために、動画の内容と動画のテキストデータ(タイトル、説明文)を使う。
Visual Searchではテキストを入力として受け取って、動画のリストを出力する。 出力された動画は入力テキストと動画の内容の類似度によってランク付けされる。
動画の内容を処理し、動画を検索する方法として一般に表現学習が使われる。 入力テキストと動画は別個に2つのエンコーダーを使ってそれぞれ埋め込みベクトルに変換される。 動画とテキストの埋め込みベクトルの類似度はコサイン類似度などを使って計算される。
外見的にも文脈的にも入力テキストと似ている動画をランク付けするために、埋め込み空間の入力テキスト(ベクトル)と埋め込み空間の動画(ベクトル)の内積を計算する。 ここで注意すべきは入力テキストは一つのベクトルに対して、動画のベクトルは複数あるため、意味としては各動画に対するテキストの類似度を計算してベクトルとして考えることになる。
”dogs playing indoor”のような入力テキストを受け取るText Searchがどのように動くかの外観は以下の通りである。
転置インデックス(逆引き索引)はデータベースから全文検索を行うためによく使われる効率的な方法である。
なお、普通の索引は文書Aの中に単語がどの場所Xにあるかを記録するが、 転置インデックス(逆引き索引)はどの単語がどの文書Xにあるかを記録する。
転置インデックスは機械学習ベースでは無いために学習コストは無い。 よくElasticsearchやSolrなどが使われる。