nogawanogawa / paper_memo

4 stars 0 forks source link

Related Pins at Pinterest: The Evolution of a Real-World Recommender System #45

Closed nogawanogawa closed 2 years ago

nogawanogawa commented 2 years ago

論文URL

https://arxiv.org/abs/1702.07969

著者

David C. Liu, Stephanie Rogers, Raymond Shiau, Dmitry Kislyuk, Kevin C. Ma, Zhigang Zhong, Jenny Liu, Yushi Jing

会議

WWW '17

背景

XXX

目的

XXX

アプローチ

歴史的経緯の説明。

image
nogawanogawa commented 2 years ago

背景

Related PinはPinterest上でアイテムの発見をする上で非常に大きな役割を果たしている。 2013年に登場したこの機能は2015年には全保存数とインプレッションの40%以上がRelated Pinから発生し、Pinterestの主要な発見メカニズムの1つとなっている。

nogawanogawa commented 2 years ago

目的

-- 製品紹介チックな論文なので、問題を解いた論文ではない

アプローチ

(Related Pinの推薦の仕組みを紹介する)

nogawanogawa commented 2 years ago

Candidate Generation

Candidate Generationは基本的にユーザーが作成したボードとピンのグラフに基づいて生成される。

ボードの共起

最初期は、同じボードに発生したPinのペアを, Hadoop/MapReduceを使用して取得し、それをランダムサンプルしていた。

現在はPixieと呼ばれるランダムウォークによってCandidate Generationされている。 これはPinとボードの二部グラフを使用し、関連性の低いピンを除去した後、ランダムウォークによってユーザー固有のPageRankを算出する。

これによって、Pinから数ステップ離れたボードについても検索することができ、希少なピンが推薦される範囲を拡大できる。

image

セッションの共起

通常、同じセッション内で何らかの形で関係しているが、それは必ずしも同じボード内に保存するわけではなく、ユーザーが別々のボードに画像を保存する事もある。 そのため、時間的次元を考慮することで、この問題に対処している。

具体的には、同じセッション内で保存したPinの系列をword2vecと同様の方法で、Pin2Vecとして学習することで、同一セッションで保存されたPin間の距離を最小化するように学習したEmbeddingを使用している。

image

候補の補充

先に挙げた方法とは並行して、Cold start問題や推薦の多様性確保に対応するために候補の補充を行った。

セグメントによるフィルタリングした候補の追加

Pinterestが国際化したことによって、localeごとにPinの付き方が大きく異なっていた。 そこで、Boardの共起の結果から、localeが合致したPinのみを取得するようにFilteringを行っている。

nogawanogawa commented 2 years ago

Memboost

Memboostとは、Pinterestで使用されている仕組みで、過去にあったクエリとなるPinと結果のペアを記録しておいてそれを使用します。

ログデータには強いポジションバイアスがかかるので、ログデータをそのまま使用することはできない。

image

そこで、位置に関するクリックの期待値に対して、実際にクリックされたかを使用し、最終的にこのスコアを使用してソートする。

image

また、Memboostの過程で発生した高いスコアのアイテムが、candidate Generationによって選択されない場合があるが、その際にはMemboostからの候補として追加している。

Memboost自体は、システムが複雑化し問題がありつつ、ポジティブなメリットが大きいと判断して長らく使用されてきた。

nogawanogawa commented 2 years ago

Ranking

長らくCandidate GenerationとMemboostだけでRelated Pinの推薦を行ってきたが、その後Rankingモデルを導入した。 Memboostのスコアに加えて、Pinのデータや、後にユーザーに関する情報(最新のクエリなど)をFeature Extractorによって特徴量化され、それらをモデルのインプットとしている。

image
  1. Memboost学習データ、関連性ペアラベル、ペアワイズロス、線形
  2. 個別のRelated pinのセッションに移行
      1. で使用するMemboostは、ユーザーを集約して得られる値のため、本質的なパーソナライズは難しい
    • またpopulation biasがかかることもわかっていた
    • そこで個別のRelated pinの情報を使用するように移行
  3. RankNet GBDT モデルへ移行
    • 線形モデルではスコアが線形に縛られるため表現が難しかった
    • RankNet GBDTを使用
  4. ポイントワイズ分類損失、バイナリラベル、ロジスティックGBDTモデルへ移行
    • 本来保存というアクションが重要なのに、クリック等が強く反映されることを懸念した
    • 合わせてポイントワイズに移行

その他、フィードバックループによるバイアスを除外するためにログデータをサンプリングして使用する工夫をしている。

image

オフライン指標には、紆余曲折あれどPR AUCを使用した。

オフラインでランキングを実行しようとすると、リソースの制約により、50%程度しかカバーできないことがわかった。 そのた、いろんな方法を試したが、オフラインでランキングを生成することは難しくなり、オンラインで推論を行うことにした。