Learning a Unified Embedding for Visual Search at Pinterest
2019/10/24
Authors
Andrew Zhai(1), Hao-Yu Wu(1), Eric Tzeng(1, 2), Dong Huk Park(1, 2), Charles Rosenberg(1)
どんなもの?
特定の用途ごとに特徴量を作るのではなく、すべての用途の学習を集約することでoutperform
先行研究と比べてどこがすごい?
目的(画像検索やおすすめ、CTR予測)ごとにモデルを作るのではなく、統一的なモデルを構築することでエンジニアリングのコストを削減
ついでに精度も向上
技術や手法のキモはどこ?
subsampleモジュールをつけることでsoftmaxの計算量を削減
binarizeモジュールでメモリ使用量、計算量を削減
概要
3サービスで横断的に使えるモデルを構築
Flashlight
ユーザーが見たPinに応じておすすめの画像を推薦
Lens
ユーザーが撮影した画像に特化した推薦サービス
Shop-The-Look
入力画像からそれを売っていそうな店を推薦
https://gyazo.com/faeac80159a99bf82b1da4adedace164
データセット
既存のロジックを用いて分類された画像について、imp等の制限を用いてノイズを除去
800k画像に対して15k種類のラベルを付与
データがsparse過ぎて半自動では取れなさそうだったので手動でタグ付けされた画像を使用
540k画像に対して2k種類のラベル
人手で付与された画像とタグを利用
340Kに対して50k種類のラベル (と189の製品ラベル)
モデル
classification-based metric learningの仕組みを拡張したもの
インスタンス数 (ラベルの種類) が多い FlashLight と STL については間にProxyモジュールを挟んて対処
二値化をする前にGroupNormレイヤーを挟んだ
二値化は計算量やメモリ使用量の観点で行うと良いらしい
https://gyazo.com/76bc8882f3d6f1be923630318fda482a
https://gyazo.com/5c713851983076092235ebb8f2bfb827
学習
minibatchごとに各データセットのデータが均等に入るようにする
学習がsparseになるため (binarization) optimizerのmomentumが動くように工夫している (詳細略)
結果
https://gyazo.com/042cd10ec1cdb19380c372813417262c
sm (softmax, おそらくnormalized softmaxの代わりに通常のsoftmaxを使うようにしたもの), gn(GroupNorm), r(relu), dp(dropout)
提案手法がベースラインよりも良い性能を記録
https://gyazo.com/36be8b0342747c319b73b92f1ae01575
MTLが性能向上に大きく寄与
人手評価, OnlineEvaluation (A/B Testing) においても性能向上 (表略)
まとめ
様々な画像データセットを統一的に学習して埋め込み表現を得る手法を提案
各モデルをそれぞれ構築するよりも良い性能を記録
所感
巨大なデータセットが複数あればそれらを統合して学習させるのも良いのかもしれない
とはいえまだうちはそこまで画像を活用できるほどのデータを持っていないかもしれない
Proxyモジュールの部分、sampled softmaxとかblackoutとかよりも良いのだろうか