【RS】:论文《Neural Collaborative Filtering》的思路及模型框架

【论文的思路】

NCF 框架如上:
1、输入层:首先将输入的user、item表示为二值化的稀疏向量(用one-hot encoding)
2、嵌入层(embedding):将稀疏表示映射为稠密向量(??如何映射)
所获得的用户(项目)的嵌入(就是一个稠密向量)可以被看作是在潜在因素模型的上下文中用于描述用户(项目)的潜在向量。
3、NCF 层:将用户嵌入和项目嵌入送入多层神经网络结构,我们把这个结构称为神经协作过滤层,它将潜在向量映射为预测分数。
4、输出层:预测分数
预测模型为:
其中,  分别表示用户和项目的隐含特征矩阵。 表示交互函数 f 的模型参数。
函数 f 被定义为多层神经网络,可以被定义为:
其中, 分别表示为输出层和第 x 个神经协作过滤(NCF)层映射函数,总共有X个NCF层。
【NCF的学习过程】
——运用均方误差(squared loss)进行回归:
其中:
y  表示交互矩阵 Y 中观察到的条目(如对电影有明确的评分,评级)
y− 表示消极实例(negative instances,可以将未观察的样本全体视为消极实例,或者采取抽样的方式标记为消极实例)
w_ui 是一个超参数,用来表示训练实例 (u,i) 的权重。
 
似然函数的定义:
对似然函数取负对数,我们得到 (负对数可以用来表示Loss函数,而且还能消除小数乘法的下溢出问题):
(如何推的?——涉及到交叉熵损失函数: https://blog.csdn.net/red_stone1/article/details/80735068
 
——这是NCF方法需要去最小化的目标函数,并且可以通过使用随机梯度下降(SGD)
来进行训练优化。

(证明MF是如何被解释为NCF框架的一个特例)
1、首先左侧的GMF层:
第一层神经CF层的映射函数为:
将向量映射到输出层:
其中,a_out和h分别表示输出层的激活函数和连接权:
激活函数为a_out :sigmoid函数 
权重h为 : 通过log loss(第3.1.1节)学习 h
(当a_out是一个恒等函数,h权重全为1,即为MF模型)
2、右侧的MLP层:
由于NCF用两条路线来对用户和项目建模(图2中可以明显看出用户和项目两个输入),自然地,需要通过两个路线,把他们各自的特征连接结合起来。
 
NCF框架下的MLP模型定义为:
其中,W_x,b_x,a_x分别表示x层的感知机中的权重矩阵、偏置向量(神经网络的神经元阈值)和激活函数(选择的是ReLU)。
与GMF不同的有两个部分:
1)首先是user_latent和item_latent的merge的部分,不再采用内积的形式,而是contract拼接的方式;
2)再者就是for循环构建深层全连接神经网络,内部Layer的激活函数是relu,最后一层的激活函数仍然是sigmoid。
 
 
3、二者结合的NeuMF层:
为了使得融合模型具有更大的灵活性,我们允许GMF和MLP学习独立的嵌入(embedding),并结合两种模型通过连接他们最后的隐层输出。
公式如下:
 
其中:
 分别表示 GMF 部分和 MLP 部分的用户嵌入(user embedding),
分别表示 项目的嵌入。
MLP层的激活函数是 ReLU,
 
该模型结合MF的线性度和DNNs的非线性度,用以建模用户-项目之间的潜在结构。我们将这一模式称为“NeuMF”,简称神经矩阵分解(Neural Matrix Factorization)。该模型的每个模型参数都能使用标准反向传播(back-propagation)计算。
 
【预训练过程】
由于 NeuMF 是 GMF 和 MLP 的组合,我们建议使用 GMF 和 MLP 的预训练模型来初始化NeuMF。
1、首先 训练随机初始化的 GMF 和 MLP 直到模型收敛。
( 采用 自适应矩估计(Adam,Adaptive Moment Estimation), 通过对不频繁的参数进行频繁和更大幅度的更新来适应每个参数的学习速率。 Adam方法在两种模型上的收敛速度都比普通SGD快,并缓解了调整学习率的痛苦。)
2、然后 用它们的模型参数初始化 NeuMF 相应部分的参数。
( 在将预先训练的参数输入NeuMF之后,我们用 普通SGD而不是Adam进行优化。
这是因为Adam需要保存更新参数的动量信息(momentum information)。因为我们用预先训练的模型参数初始化NeuMF,并且放弃保存动量信息,不适合用基于动量的方法进一步优化NeuMF。)
3、 唯一的调整是在输出层,在那里我们将两者用权重连接起来:
其中, 分别表示 GMF 和 MLP 模型预训练的 h 向量, α 是一个超参数,用来权衡两个预训练模型(的比重)。
 
 
 
【4 实验】
围绕三个研究问题开展实验:
RQ1 我们提出的NCF方法是否胜过 state-of-the-art 的隐性协同过滤方法?
RQ2 我们提出的优化框架(消极样本抽样的log loss)怎样为推荐任务服务? 
RQ3 更深的隐藏单元是不是有助于对用户项目交互数据的学习?
 
【数据集】
1、MovieLens-1M :userid-itemid-rating-timestamp
这个电影评级数据集被广泛地用于评估协同过滤算法。我们使用的是包含一百万个评分的版本,每个用户至少有20个评分。 虽然这是显性反馈数据集,但我们有意选择它来挖掘(模型)从显式反馈中学习隐性信号[21]的表现。为此,我们将其转换为隐式数据,其中每个条目被标记为0或1表示用户是否已对该项进行评分。
2、Pinterest:
 
 

猜你喜欢

转载自www.cnblogs.com/shenxiaolin/p/11162958.html