Neural Collaborative Filterinng vs. Matrix Factorization Revisited
https://gyazo.com/097f0166fe11267f8bbdf24eb561ffc6
Googel Researchのチーム
Steffen RedleはFactorization MachineとBPRを生んだ推薦システム業界の現人神
2020年から新設されたReproductivity Track
Recsys 2019のBest Paperの精度再評価に近い流れ
Are We Really Making Much Progress? A Worrying Analysis of Recent Neural Recommendation Approaches
2件の論文がAcceptされている
もう1件は「Are We Evaluating Rigorously? Benchmarking Recommendation for Reproducible Evaluation and Fair Comparison」
推薦システムの評価方法に着目していろいろやっている論文
いろんな設定で並行評価している
Neural Collaborative FilteringとMatrix Factorizationを比較
適切にパラメータを与えればNeuralより、dot productのほうが良い性能を出すことを示す
ここで、embedされたユーザとアイテムはすでに所与のものであり、類似性を測る関数のみに着目していることに注意。
実験ではMatrix Factorizationによって得られたベクトルを利用している
https://gyazo.com/0ff50e836d185689b15b7c41c0b1ba27
https://gyazo.com/06246a9bc22e723d93ad70aab1cf6cb4
Dot はシンプルな内積値
ここで(2)みたいなテクニックがあるらしい(初めてしった)
https://gyazo.com/33dc64930514d2469deeea8bc53d7329
MLPはユーザとアイテムをそのままconcatとして入力しているとする
https://gyazo.com/aff76f04b474ff89ea822d5c3e5d5967
NeuMFはMLP+GMF
https://gyazo.com/bedb303affe7914cbbcf93556bfa7f5a
Recsys2019の論文でぼっこぼこにされた論文のひとつ
https://gyazo.com/fd038ad78ff54374252373e58b823891
実験1: Revisiting NCF Experiments
データセット
MovieLens 1M
Pintrest
両方Implicit Feedback
実験形式: one-leave-out
ユーザの消費系列の一番最後をtestデータとする
他のユーザのテストデータからランダムに100個サンプリングしてくる
このとき、ユーザの消費系列に含まれていないアイテムにする
101個のアイテムを並び替えて、何番目に正解データがきたかを評価する
評価
Hit RaitとNDCG
比較するもの
MLP
NeuMF
simple Matrix factorization
実験準備
ユーザベクトル p, アイテムベクトルqはモデルとは関係ないところで作る
Matrix FactorizationをLogLossの最小化をL2正則化で、Stochatic gradient decentで最適化
ネガティブサンプリング込み
埋め込み次元は(16, 32, 64, 96, 128, 192)
結果
https://gyazo.com/082eb613184257767b3d3e4d15612a49
全体としてsimple matrix factorizationはDeepなモデルを全体として上回った
MF vs MLP
MLPにより得られたsimilarityはMFを超えることはできなかった
すべてのデータセット、評価指標、埋め込み次元数において
MLPは精度が悪いだけじゃなくて、パラメータも多いし、リリースにコストも掛かるので、いいところがない
言いたい放題である。
MF vs NeuMF
Green: MLPをわずかに改善したが、MFには全体として及ばない
これはcombineなモデル
Red: 1つの点だけ、MFに勝ったが、ほかはまけている
これはMFとMLPをバラバラに学習している
アンサンブルモデル
元論文はこちらを用いているが、著者の考えとしてはこれはNeuralな類似性をやってない
GMFってどうなの?
NeuMFで提案している重み付きのMF
実装してやってみたけど、性能は論文で言われてたやつからめっちゃ下がったよ
っていうかこれ、L2正則化の観点からみたら、やる意味なくない?
https://gyazo.com/c42823ee190d0692adda23173b0e9a3c
This is another indicator that adding parameters to a simple model is not always a good idea and has to be done carefully.
まじで厳しい
https://gyazo.com/57f3dda4ecdae6fe68ec91018ad9ddff
As reported in the meta study of (8), the results for NeuMF and MLP in (16) were cherry-picked in the following sense: the metrics are reported for the best iteration selected on the test set.
草
ぼくらのはCherry Pickじゃないけど、Cherry Pickなデータと比較してもぼくらのほうがいいよ!
Our study treats MLP and NeuMF favorably: (1) we report the results for MLP and NeuMF that were obtained by the original authors, avoiding any bias in improperly running their methods. (2) These cited numbers for MLP and NeuMF are likely too optimistic as they were obtained through cherry picking as identied by 8. 実験2: Learning a Dot Product with MLP is Hard
MLPはさまざまな関数を学習できるはずだから内積も学習できるはずでは?
CNNとかRNNとかは学習できずにアーキテクチャで解決しているから、難しいものは難しい
でも内積はかなりシンプルだよね
理論的解析の研究では、内積を学習するには $ O(d^4/\epsilon) 必要だと言われている
d: 次元, ε: error bound
実験設定
MLPに内積自体を直接学習させるタスクを考える
人工データ:$ y(p, q) = <p, q> + \epsilon
εは平均0の正規分布
MLPは3つの隠れ層
(4h, 2h, h)
hはパラメータ
データ数
1ユーザに100個の評価アイテムがあるケースを考える
100M個のデータを90%を訓練、10%を評価に用いる
https://gyazo.com/7ba6e65ae23b42cbb64ed5766cc3900f
MLPが内積を再現させることはできる
一方で、埋め込みたい次元数が増えると、パラメータ数とデータ数が増大する
内積を学習させるべきなのか?
実務上推薦システムでMLPのSimilarity関数を使うべきなのか?
実務の推薦システムではユーザからのリクエストに対してリアルタイムにレスポンスを返すことを求められる
内積は $ O(d) に対して、MLPの計算は $ O(d^2) かかる
推薦候補記事がn個あるなら、$ O(dn)と $ (O(n d^2)になる
しかも内積の場合で、小さいもののTOP-Nを得ることはは近傍探索アルゴリズムにより、より高速に実装できることがよく知られている
まだMLPではやられていない
結論:リアルタイムにTop-Nの推薦を返すシステムで、Similarity関数をMLPで求めることはお勧めしない