Neural Collaborative Filtering (2017)
March 25, 2024行列分解による協調フィルタリングは、ユーザとアイテムの評価値行列を近似するユーザとアイテムの潜在因子行列の積を学習する。 Neural Collaborative Filtering (NCF) は、行列分解のかわりにニューラルネットワークで、パラメータを更新する。 NCFは3種類あり、Generalized Matrix Factorization (GMF) と Multi-Layer Perceptron (MLP)、GMFとMLPを組み合わせたNeural Matrix Factorization (NeuMF) がある。
GMFは、ユーザとアイテムの潜在ベクトルのアダマール積を、1層の全結合層と活性化関数のネットワークに入力する。 ユーザ\(u\)とアイテム\(i\)の潜在ベクトルを\(\textbf{p}_u\), \(\textbf{q}_i\), 活性化関数を\(a_{\text{out}}\), 重みを\(\textbf{h}^\top\)とおくとき、評価値を
$$ \hat{y}\_{ui}=a\_{\text{out}}(\textbf{h}^\top(\textbf{p}\_u\odot \textbf{q}\_i)) $$と推定する。 GMFにおいては、行列分解を、重みの要素が1、活性化関数が恒等写像、バイアス項がない1層の全結合層とみなせる。
MLPにおきかえる場合、\(\textbf{p}_u\), \(\textbf{q}_i\)を連結してできるベクトルをMLPに入力する。
$$ \begin{align*} \textbf{z}\_1&=\phi\_1(\textbf{p}\_u, \textbf{q}\_i)=\begin{bmatrix}\textbf{p}\_u\\\\\textbf{q}\_i\end{bmatrix}\\\\ \phi\_2(\textbf{z}\_1)&=a\_2(\textbf{W}^\top\_2\textbf{z}\_1+\textbf{b}\_2)\\\\ &\dots\\\\ \phi\_L(\textbf{z}\_{L-1})&=a\_L(\textbf{W}^\top\_L\textbf{z}\_{L-1}+\textbf{b}\_L)\\\\ \hat{y}\_{ui}&=\sigma(\textbf{h}^\top \phi\_L(\textbf{z}\_{L-1})) \end{align*} $$NeuMFは、GMPとMLP出力を1層の全結合層に入力する。
$$ \begin{align*} \phi^{\text{GMF}}&=\textbf{p}^G\_u\odot \textbf{q}^G\_i\\\\ \phi^{\text{MLP}}&=a\_L(\textbf{W}^T\_L(a\_{L-1} (\dots a\_2(\textbf{W}^\top\_2\begin{bmatrix}\textbf{p}^M\_u\\\\\textbf{q}^M\_i\end{bmatrix}+\textbf{b}\_2)\dots)) + \textbf{b}\_L)\\\\ \hat{y}\_{ui}&=\sigma (\textbf{h}^\top \begin{bmatrix}\phi^{\text{GMF}}\\\\\phi^{\text{MLP}}\end{bmatrix}) \end{align*} $$雑記
論文では、潜在ベクトルを、ユーザやアイテムのインデックスを示すone-hotベクトルと重みの積から生成していた。 テスト時に推定したいユーザとアイテムの評価値は、訓練時には0.5とするのだろうか。