推薦モデルを metric leaning の観点からとらえる
この記事の目的は?
推薦または metric learning に興味がある人に、 metric learning と推薦には関係がある ということを伝えることです。
次のセクションから、いくつかの推薦手法を metric learning の観点からとらえてみます。
MF (Matrix Factrization)
MF とは、以下の図のようにユーザーによるアイテムの評価行列を低ランクの行列に分解する手法です。
以下の最適化問題を解くことで、ユーザー行列とアイテム行列を学習します。
-
: ユーザーの添字u \in \{1, ..., U\} -
: アイテムの添字i \in \{1, ..., I\} -
: 評価行列(ユーザーR \in \mathbb{R}^{U \times I} によるアイテムu の評価値i の行列。r_{i,j} は5段階評価やr_{i,j} など。){0, 1} -
: ユーザー行列(ユーザーのP \in \mathbb{R}^{K \times U} 次元特徴量ベクトルK を並べたもの)\bm{p}_u -
: アイテム行列(アイテムのQ \in \mathbb{R}^{K \times U} 次元特徴量ベクトルK を並べたもの)\bm{q}_i -
: フロベニウスノルム\|\cdot\|^2_F
上の式では、 ユーザー特徴量とアイテム特徴量の内積を、そのユーザーによるそのアイテムの評価値に近づけようとします。つまり、 高い評価のユーザーとアイテムの特徴量どうしを近づけ、低い評価のものを離す ように学習するので、 評価値(内積)を計量とする、線形写像を学習する metric learning ととらえることもできます[1]。下図は、 それを表したものです。
参考
BPR (Bayesian Personalized Raking)
BPR もユーザーによるアイテムの評価を予測しますが、 評価値が implicit feedback の場合を考えます。 implicit feedback とは購入や閲覧など、ユーザーが暗黙的に与える評価のことで、逆に5段階の☆をつけるなど、ユーザーが明示的に与える評価は explicit feedback と言います。implicit feedback では、購入・閲覧されなかったアイテムだからといって、ユーザーが嫌っているかはわかりません。そこで、購入・閲覧されなかったアイテムより、されたアイテムの評価値の方が相対的に高くなるように学習させるのが BPR です。
BPR における評価値の予測方法は自由です。 MF で評価値を予測し、 MF のパラメータ
-
: ポジティブサンプル(ユーザーi が購入・閲覧などをしたアイテム)u -
: ネガティブサンプル(ユーザーj が購入・閲覧などをしなかったアイテム)u -
: シグモイド関数\sigma(\cdot)
上の式は、 metric learning の手法である triplet loss にそっくり です[3]。
-
: マージンという正の実数m
どちらも、 ユーザーとポジティブサンプルの内積を、ネガティブサンプルとの内積よりも相対的に大きくするように学習する 点は同じです
異なる点は、内積の差に施している関数です。 BPR では
細かな違いはあるものの、どちらも本質的にやっていることは同じなので、 BPR も metric learning に関係があると言えそうです。
参考
- (S. Rendle et al., 2009, UAI) BPR: Bayesian Personalized Ranking from Implicit Feedback
- (J. Wang et al., 2014, CVPR) Learning Fine-grained Image Similarity with Deep Ranking
SMORe (Sampler Mapper Optimizer for Recommendation)
RecSys2019 で提案された SMOReでは、既存の推薦システムの手法を3つのモジュールに分割することで、統一的に表現できる枠組みです。
協調フィルタリングベースの手法は、学習データはユーザーやアイテムをノードとしたグラフであると考えることができます。モデルの学習は、 ユークリッド空間などに、 隣接したノード同士は近くに、そうでないノードどうしは遠くに埋め込む ことであると解釈できます。
以上の解釈を踏まえ、著者らは既存の手法を以下の 3 つのモジュールで表現することを提案しました。
出典:https://www.slideshare.net/changecandy/recsys19-smore
- Sampler:ユーザー・アイテムのグラフからノードをサンプルする方法
- Mapper:サンプルしたノードを特徴量空間に埋め込む学習可能な写像
- Optimizer:類似度または距離と、損失関数
前のセクションで紹介した MF と BPR を SMORe で表すと下図のようになります。
出典:https://www.slideshare.net/changecandy/recsys19-smore
BPR は SMORe の Loss の選択肢の1つとしてとらえています。
出典:https://www.slideshare.net/changecandy/recsys19-smore
SMORe のモジュールの分け方は、 metric learning のモジュールの分け方に似ています 。
deep metric learningによるcross-domain画像検索 - ZOZO Technologies TECH BLOG における分け方との対応は以下のようになると考えています。
SMORe | ブログ |
---|---|
Sampler | サンプリング |
Mapper | ネットワークの構造 |
Optimizer | 計量と損失関数 |
また、 metric learning のライブラリである pytorch-metric-learning におけるモジュールの分け方は下図のようになっています。
出典:https://kevinmusgrave.github.io/pytorch-metric-learning/
SMOReのモジュールとこれらの対応は以下のようになると考えています。
SMORe | pytorch-metric-learning |
---|---|
Sampler | Sampler (Lossも若干) |
Mapper | Trainer の中の model(CNNやEmbeddingなど) |
Optimizer | Loss |
上記のようにモジュールの分け方が似ていることからも、 協調フィルタリングベースの手法と metric learning はかなり近いもの と考えられそうです。
ちなみに、 SMORe と pytorch-metric-learning は OSS として公開されており、これらを積極的に活用することで、 実装の効率化や、実験の透明化・公平化 が期待できます。
- cnclabs/smore: SMORe: Modularize Graph Embedding for Recommendation
- KevinMusgrave/pytorch-metric-learning: The easiest way to use deep metric learning in your application. Modular, flexible, and extensible. Written in PyTorch.
すでに metric learning は使われている
前のセクションでは、既存の推薦手法を metric learning の観点からとらえましたが、 すでに推薦分野で metric learning として明示的に使われている手法もあります。 Collaborative Metric Learning などが有名ですが、以下の記事に関連研究がまとまっています。
Collaborative Metric Learningの関連研究まとめ - Qiita
また、 コンテンツベースの手法 でも明示的に使われています。コンテンツベースの手法は、推薦のコールドスタート問題の対処方法の1つです。以下の2つの論文では、アイテムからアイテムを推薦する問題設定において、アイテムの画像を特徴量として使う手法になります。協調フィルタリングベースの手法では、ユーザーやアイテムのIDの埋め込みベクトルどうしを近づけたり・遠ざけたりしましたが、こちらは アイテムの画像特徴量どうしを近づけたり・遠ざけたりします 。
- (R. He et al., 2016, ICDM) Learning Compatibility Across Categories for Heterogeneous Item Recommendation
- (J. Mcauley et al., 2015, SIGIR) Image-based Recommendations on Styles and Substitutes
まとめ
既存の推薦手法を metric learning の観点からとらえ、 すでに metric learning が明示的に使われている例も紹介することで、 推薦分野と metric learning の繋がりを説明しました。
両分野の手法において些細な違いはあるものの、その些細な違いをお互いの分野に持ち込むことで、良い影響を与え合えるのではないかと考えています。
次回は?
今度はWord2VecやRNNといった自然言語処理のモデルと metric learning の繋がりを説明します。
-
本来、評価値(内積)は計量(距離)ではありませんが、 metric learning の定義が明確に定まっておらず、 内積や類似度を使った手法も含めて metric learning と呼ぶ研究もあります。ユークリッド距離を展開するとわかりますが、ユークリッド距離による metric learning は内積を大きく/小さくしています。 ↩︎ ↩︎
-
Bayesian と謳ってますが、論文中では MAP 推定をしています。
の事前分布を多次元正規分布P, Q と仮定した場合、MAP推定をすると、目的関数に\mathcal{N}(\bm{0}, \lambda I) の L2 正則化項が付きますが、 BPR の構成要素のうち metric learning の観点からとらえたいのは、内積を相対的に最適化する部分なので、余計な正則化項を外すために最尤推定にしました。 ↩︎P, Q -
triplet loss の論文では、計量にユークリッドを用いていますが、便宜上、内積を用いています。内積でも metric learing と呼んでよさそうです[1:1]。 ↩︎
Discussion