神经协同过滤
论文链接:Neural Collaborative Filtering, WWW’17
原理:融合 GMF 和 MLP
1. 摘要
虽然最近的一些研究使用深度学习作为推荐,但他们主要是用深度学习来建模辅助信息
,例如 item 的文本描述。在表示协同过滤的关键因素——用户和项目特征之间的交互
时,仍然使用矩阵分解等用内积来建模。
通过用一种能从数据中学习任意函数的神经结构代替内积
,提出了一种通用的神经网络协同过滤框架 NCF。为了使非线性的 NCF 模型更加完善,我们提出利用 MLP 来学习用户-项目交互函数
。
关于Matrix Factorization
将用户和项映射到同一潜在空间,用用户向量和项向量的内积来评估他们之间的交互。
但当潜在空间的维度 K 小的时候会存在一些限制,而扩大 K 的话会有损模型的泛化能力。
2. 模型
2.1 GMF(Generalized Matrix Factorization )
我们称之为GMF(Generalized Matrix Factorization,广义矩阵分解)
PTVUu 表示用户的潜在向量 pu ,QTVIi表示项目的潜在向量 qi,定义第一层神经CF层的映射函数为:
然后,将向量映射到输出层:
2.2 MLP (Multi-Layer Perceptron)
用MLP(多层感知机)来学习用户和项目潜在特征之间的相互作用。MLP模型定义为:
采用塔层结构,每一层比上一层的单元数减少一半。
2.3 Fusion of GMF and MLP
GMF:应用了一个线性内核来模拟潜在的特征交互
MLP:使用非线性内核从数据中学习交互函数
为了使得融合模型具有更大的灵活性,允许GMF和MLP学习独立的嵌入,并结合两种模型通过连接他们最后的隐层输出。图中展示了方案,公式如下:
该模型结合MF的线性度和DNNs的非线性度,用以建模用户-项目之间的潜在结构。我们将这一模式称为“NeuMF”,简称神经矩阵分解(Neural Matrix Factorization)。
2.4 Pre-training
由于NeuMF的目标函数的非凸性,基于梯度的优化方法只能找到局部最优解。由于 NeuMF 是 GMF 和 MLP 的组合,我们建议使用 GMF 和 MLP 的预训练模型来初始化NeuMF。
我们首先训练随机初始化的 GMF 和 MLP 直到模型收敛。然后,我们用它们的模型参数初始化 NeuMF 相应部分的参数。唯一的调整是在输出层,在那里我们将两者用权重连接起来:
对于从头开始训练的 GMF 和 MLP ,我们采用自适应矩估计(Adam,Adaptive Moment Estimation),它通过对不频繁的参数进行频繁和更大幅度的更新来适应每个参数的学习速率。Adam方法在两种模型上的收敛速度都比普通SGD快,并缓解了调整学习率的痛苦。在将预先训练的参数输入NeuMF之后,我们用普通SGD而不是Adam进行优化。 这是因为Adam需要保存更新参数的动量信息(momentum information)。因为我们用预先训练的模型参数初始化NeuMF,并且放弃保存动量信息,不适合用基于动量的方法进一步优化NeuMF。