【論文紹介】Collaborative Metric Learning (WWW2017)

2020/01/09

Tech 機械学習 論文紹介

t f B! P L

こんにちは、ぐぐりら(@guglilac)です。

今回は、協調フィルタリングとmetric learningを組み合わせたCollaborative Metric Learning (CML)の論文を読んで要点をまとめました。

概要

従来の協調フィルタリングでは、内積によりuser-itemの交互作用を考慮することでuserの好みを潜在表現として獲得していたが、内積では三角不等式を必ずしも満たさないので、良い表現が得られない可能性があります。 本研究では協調フィルタリングとMetric Learningを組み合わせたCollaborative Metric Learning (CML)を提案し、user-userやitem-itemの類似度も考慮した空間に埋め込み、近似最近傍探索に応用することでtop-k推薦を高速化しました。

協調フィルタリングの問題点

Matrix Factorizationなどの手法では、userとitemをある空間に埋め込み、 それらの内積によりuserがitemを好むかどうかを表現しています。

このようにして得られるuser,itemのembeddingは、正しく学習されれば近い場所に埋め込まれるはずです。 userがitemを好めば内積が大きくなるように学習するので、当然ですね。

では、似たようなuser同士や、似たようなitem同士は近くに埋め込まれるのでしょうか? なんとなく近くに埋め込まれる気もしますが、必ずしもそうはならない、というのが本論文の主張です。

論文中にある次の図を見るとわかりやすいです。

左がMatrix Factorizationなどの内積を用いた場合のembedding,右が今回提案するようなmetic learningを使って得られる(得られてほしい)embeddingを可視化した図です。

User group U1U_1はitem v1v_1を、User group U2U_2はitem v2v_2を、 User group U3U_3はitem v1,v2v_1, v_2の両方を好む場合です。

内積を使った場合は、確かにuserがitemを好んでいる場合は内積が2で、好んでいない場合は0なので、学習はできています。

しかし、user U3U_3がitem v1,v2v_1, v_2の両方を好んでいるのである程度v1,v2v_1, v_2は似ているはずなのに、v1,v2v_1, v_2の内積を計算してみると0となってしまい、類似していないことになります。 図的にはv1,v2v_1, v_2が離れた場所に埋め込まれていることに対応します。

これは、内積が三角不等式を必ずしも満たさないために、user U3U_3が両方のitem v1,v2v_1, v_2を好むという情報がv1,v2v_1, v_2同士の類似度まで伝搬していないということです。

本当に欲しいembeddingは右のように、v1,v2v_1, v_2のembedding同士が近くなるようなものであるはずだよね、というのが本研究のモチベーションになります。

Collaborative Metric Learning (CML)

提案するCMLモデルはimplicit feedbackを扱うモデルです。

implicit feedbackはuserによるクリックや購入などのフィードバックを指し、レーティングなどのexplicit feedbackと対比されます。 implicit feedbackは正例のみ観測され、観測されないデータは本当に興味がないのか、ただuserがitemを認知していないだけなのか、が切り分けられないことが難しさの原因となっています。

CMLでは

  • 観測された(user ii, item jj)よりも観測されていない(user ii, item kk)の方が距離が離れているべき

と考えます。

こんな感じですね。

観測されていない組にはもちろんrelevant(本当はuserがitemを好む)なものがあるはずですが、その強度は観測されたものと同等かそれ以下だろう、という仮定が(暗黙的にですが)置かれているように思えます。

この辺りはBPRに似ていると感じました。

ただ、BPRは外した時のpenaltyのかかり方がrankによって偏っていないという問題があるので、 WARPのように

  • 予測した順位に応じてpenaltyを大きくする

という工夫をしています。

BPRやWARPについては論文紹介記事を書いたので、こちらも合わせて読んでいただけると理解いただけるかと思います。

これらを合わせて次のようなlossを提案しています。

wijw_{ij}がuser iiについてランキングを作った時のitem jjにかかるpenalty(どれだけ大きく外しているか)で,残りの項が観測された(user ii, item jj)よりも観測されていない(user ii, item kk)の方が距離が離れるように設計されています。(mmはマージンでハイパーパラメータ)

wijw_{ij}log(rankd(i,j)+1)\log (rank_d(i,j)+1)のように定義していて、ランキング(user uuに近い順にitemを並べている)を計算する必要があります。

WARPの元論文では、未観測データ集合からitem jjよりもuser uuに近いitemが出るまでサンプリングしてきて、出るまでにかかった回数を用いてrankを推定します(幾何分布の要領)

今回は、並列化できるようにということで、並列にUU個negative samplingしてきて、そのうちitem jjより近かったitemの個数から逆算してrankを推定しています。

他にも

  • embeddingの共分散について正則化 (参考)
  • item featureをMLPにかけてitemのembeddingに近づける

という項をlossに加えているのですが、少し肝からそれるので割愛します。

item featureをMLPにかけて出てきたembeddingをそのまま使えばいいと思うんだけど、なぜそれとは別にembeddingを学習するのかがよくわかりませんでした。

正則化についてはそういうテクニックがあるのねふーんと思いました。 embeddingがなるべく独立になるように、というのはより効率的に空間を使ってembeddingを得たい、という気持ちが現れているようです。 参考にしている論文を読むとよりわかるかもしれません。

制約の部分は、embeddingのノルムが1以下という制約をいれています。 単純なll2正則化にしていないのは、今回の問題設定では原点には特に意味がないから、だそうです。

実験

データセット

  • CiteULike
  • BookCX
  • Flickr
  • Medium
  • MovieLens20M
  • EchoNest

比較手法

item featureなし(これらとCMLを比較)

  • Weighted Regularized Matrix Factorization (WRMF)
  • Bayesian Personalized Ranking (BPR)
  • Weighted Approximate-Rank Pairwise (WARP)

item featureあり(これらとCML+Fを比較)

評価指標

recall@k

結果

  • 精度向上!
  • 近似最近傍探索と組み合わせると高速!
  • 画像の類似度だけでなくuserの好みを反映した表現が獲得できた!

最後のだけ、論文の図(t-SNEで可視化したもの)を見てみると

元のembeddingでも鳥や花、風景といった画像が固まって配置されていますが、それぞれのクラスターは離れています。

一方、CMLによって得られるembeddingでは似た画像がクラスターを作る点は同じで、それぞれのクラスターの配置が変わっています。鳥や花、風景画像のクラスターが近くに配置されていることがわかります。

画像の類似度だけでなく、同じuserが複数種類の画像を好むという情報が伝搬してembeddingが得られていることが見て取れます。

まとめ

協調フィルタリングとmetric learinigを組み合わせたCMLの論文を読んで紹介しました。

CML関連の研究は最近もちょこちょこ出ているので読んでみようと思います。

最後まで読んでいただきありがとうございました。

このブログを検索

SPONSORED LINK

RECENT POSTS

数字の入ったことわざを一般化する

## はじめに こんにちは、ぐぐりら(@guglilac)です。 ...

Nishika 中古マンション価格予測 2022春の部 3rd Prize Solution

こんにちは、ぐぐりら(@guglilac)です。 先日、Nishikaの...

【旅行記】屋久島に車なし一人旅してきました

こんにちは、ぐぐりら(@guglilac)です。 最近ちょっと時間ができ...

umap-learnをPython3.9で使おうとしたらエラーになった

こんにちは、ぐぐりら(@guglilac)です。 次元削減のライブラリで...

トライアングルストラテジー全エンディング見たので感想を書く(ネタバレあり)

こんにちは、ぐぐりら(@guglilac)です。 今回は前回の続きの記事...

PreviousHome

TWEETS

CONTACT

名前

メール *

メッセージ *

QooQ