【論文紹介】Gaussian process factorization machines for context-aware recommendations (SIGIR2014) - 7月 26, 2019 こんにちは、ぐぐりら(@guglilac)です。 今回は、Factorization MachinesにGaussian Processを組み合わせた、Gaussian process factorization machines for context-aware recommendations (SIGIR2014) を読んだので、まとめておきます。 ## 3行まとめ FMの交互作用の部分をGPに置き換えたGPFMを提案。context-awareな推薦に用いることができる。 またimplicit feedbackに対応するモデルとしてBPRにGPFMを適用したGPPWを提案した。 ## 論文リンク Gaussian process factorization machines for context-aware recommendations ## 問題意識 factorization machineでは交互作用を内積で扱っていて線形で表現力に乏しいので、non linearに拡張したものを考えたい。 matrix factorizationにGPを足してnon linearに対応したものがrelated workにあるが(NPMF: Probabilistic Matrix Factorization)これはcontext-awareではない。 今回のGPFMはNPMFのMFをFMに変えたものと言える. ## 関連研究 Factorization Machines (FM)とGaussian Process (GP)で構成されるので、その辺りの知識があると読みやすい。 FMについてはこちらのQiitaの記事で。 Field-awareなFactorization Machinesの最新動向(2019) - Qiita GPは自分も勉強し始めたぐらいなのですが、こちらの超入門記事を参考にどうぞ! この論文を読むのには問題ないくらいの知識はカバーされている(はず) ガウス過程回帰入門 ## GPFM explicit feedbackへのモデル。 explicit feedbackとは、userが各itemに対して与える評価(rating)のことである。 amazonの星いくつ?みたいなもの。 itemとcontextのembeddingを得る。 userごとに異なるGPを考える。あるuserの行動履歴(item,contextの組)を入力とするGPをuser分考える。 kernelはRBFカーネルとかで、似たようなitem,contextに対しては似たようなratingを返して欲しいよね、というところ。カーネルのハイパーパラメータはuserごとに別のものを使う。 平均ベクトルにはbias embeddingの和を使う。MFとかでよくみるやつ。userごとのbias,itemごとのbiasを扱うあれ。 gaussian noizeを載せても出力もガウス分布になっていて、対数尤度が計算できるのでこれを最適化する。 普通に微分できるのでitem,contextのembeddingやGPのハイパーパラメータについて微分する。 勾配が計算できるのでSGDする。 普通のGPでは、入力は固定して考えるけど、ハイパーパラメータを決めるときには似た感じで対数尤度を微分して最適化する、みたいなことをやる。 今回は入力もembeddingなので学習したい、という状況なので、全部微分してしまおう、という感じになる。 ## GPPW GPFMをimplicit feedbackバージョンにするために、BPRを用いる. implicit feedbackとは、explicit feedbackのようにratingが与えられず、userがclickしたとかwebページを閲覧したなどの情報のみ得られる場合を指す。explicit feedbackでは人の好みがダイレクトにデータとして与えられるけれど、implicit feedbackではそれがダイレクトではない(クリックしてないからといってuserが特定のitemにrelevantでないとは言えない)というところが難しいポイント。 explicit feedbackよりもデータが集めやすく、現実的なのでよく研究されている。今回この研究でも利用しているBPRはそのうちの一つ。 (BPRも読んだのですが記事にできていません。。。) BPR: Bayesian Personalized Ranking from Implicit Feedback ざっくりいうと、BPRではlossの部分を変更する。 lossの部分は、クリックされたものとされなかったもののpairを学習する。 されなかったもの同士、されたもの同士は比較できないので何もしない。 基本的にはBPR通り、pair wiseなlossを作る。 GPぽさがあるのは、user preference functionをBPRで必要になる(どっちのitem,contextをより好む?という関数)が、ここをGPFMの差とすることで、その差もGPになるよね、ということ。 とすると、カーネルが 結局カーネルを変えるだけでいけますよね(平均は0になる)っていう。 出力が従うガウス分布は次のようになる(本当はこれにnoizeをつけたもの) ## prediction 新しいのが来たら、 (item,context)のembeddingを得る。 そして、それらを入力とするGPでregressionをする(条件付きの分布もGaussianになるいつものあれ) ## 訓練時間 各userごとに行動ログは少ないと考えられるので、GPの逆行列計算ではインスタンスの3乗になるけど大丈夫だよね、ってある 各ステップで微分するところが、 $O(BaMd)$となる。 $B$は全観察データ $a$はuserあたりのlog $M$はcontextの個数 $d$はembedding dim embedding dimはGPのおかげで3とかめっちゃ小さくできる らしい。 ## 実験 メモ程度の記事なのでひとまず割愛。 ただ一つ気になった結果があった。 提案手法の学習時間がデータサイズに関してどう変化するかを確かめる実験で、結果が次のようになった。 横軸がデータサイズ(全体に対してどのくらいのデータを使ったか)、縦軸がフルで使って$d=8$の時を1とした時の訓練時間を表す。(凡例がおかしい気がする。$d=8$でフルサイズ使った時が1なはずなので、逆では?) 論文中では、データサイズのついて訓練時間が線形にしか増加していないね、といっているが、線形か?と疑問に思った。 計算時間の解析のところで $O(BaMd)$となる。 $B$は全観察データ $a$はuserあたりのlog $M$はcontextの個数 $d$はembedding dim だったので、userごとに満遍なくlogがある場合、訓練時間はデータサイズの3乗のオーダーになるのでは??と思った。し、線形というよりは2,3次関数ぽい気がするんだけど、、、 ## まとめ Gaussian Process + Factorization Machinesでnon linearに対応しましょう、というGPFMを紹介しました。 FMの線形性を克服するために...という研究はDeep + FMにも繋がるものがあり、そっちが割と盛んに行われたイメージがあります。この論文とちょうど同じごろに始まっているのも頷けます。 ちなみに、一度この記事を書いたのですがなぜかデータが消えてしまい、やる気をなくしてしまったので少し簡素になってしまいました。。。 読んでいただきありがとうございました。 この記事をシェアする Twitter Facebook Google+ B!はてブ Pocket Feedly コメント
コメント
コメントを投稿