本文结构:
实际需求
训练数据
《Collaborative Deep Embedding via Dual Networks》
目的:采用Dual网络分别对项目和用户进行enbedding,通过协作方式共同训练,捕捉用户项目之间的复杂关系,具有强泛化能力(推广到未知项目或用户)。
论文信息:2017年。
一,Contribution:
1)提出一个通用的,模型,dual networks,分别用于编码项目和用户,协作的方式共同训练。能够捕捉复杂的匹配关系,更好地推广到未知的物品或用户。
2)解决了两个问题:噪音数据及数据稀疏和冷启动问题。
二, 实验:
首先:考虑问题:
l 数据稀疏有噪音。
l 冷启动问题。
以上问题均来源于缺乏能力去捕捉项目和用户之间的复杂关系基于此,本论文提出dual network捕捉用户项目的复杂关系,三种不同的设计,从基本的设计,多层次的设计,多层次的分支设计。每一个新设计是在以前的版本中有一定的改进。
其次,本文实验数据集:CiteULike,MovieLens+Posters,Ciao。
2.1本文模型:
如上图所示:dual network中一边为项目网络,另一边为用户网络,都是使用深度神经网络编码。其中项目网络为每个项目产生一个向量Vj=f(xj;Wv);而用户网络则为每个用户生成一个向量 Ui=f(ri;Wu)。用户网络的参数Wu取决于项目嵌入V,项目网络同样。在输出层是两个非线性函数的点积。
学习的任务是估计编码网络的参数,一旦编码网络学得,它们以一个统一的方式编码用户和项目,无论是在训练中是否可以看到。换句话说,新用户和新项目和在训练集中的数据编码一样。这提高了模型的泛化能力,实验证明优于CDL模型。
模型输入
输入包括X,给定物品的固有特征,评分矩阵r,ri是R的第i行被视为一个列向量,代表第i个用户的历史;
具体输入时,使用dual mini-batches。在每次迭代中,项目批次BV和用户批次Bu均被选择。除了项目的特征和用户的历史,匹配矩阵R对应的部分也会被加载,反馈给网络。在这里,两个批次BV和Bu可不同,他们应该根据匹配矩阵R的稀疏性选择,使得每一双mini-batches可以覆盖正面和零评级。
模型训练
训练目标如下:
向后传递期间,损失层取其内积,并与R(i,j)进行比较会产生两个梯度,分别为项目和用户。这些梯度再沿着各自的网络传播。注意在使用多层次的设计(不管有无分支)时,每一个中间层将得到两个来源的梯度–来自上层和那些从对偶网络接收(通过点积层)。因此,一个网络的训练会影响其他的。
整个训练过程分为两个阶段:预训练与优化。
在预训练阶段,项目网络用无监督训练初始化,用户网络随机初始化。项目网络的无监督训练能够捕捉到特征统计。两个网络都将共同以一层一层的方式完善。即先调一级网络,以其输出的点积作为预测。随后,堆叠的第二层和以类似的方式完善它们。这种逐层细化方案提供了更好的初始化。
在优化阶段,采用动量SGD算法和利用上述dual mini-batches计划。在这个阶段,训练分很多epochs。每一个epoch,通过多次迭代,覆盖整个匹配矩阵R不重复。选择dual mini-batches的顺序是任意的,并且在每一次迭代的开始被shufferd,额外的技巧,如dropout and batch normalization被用来进一步提高性能。
2.2 实验结果
评价指标:较高的Recall@M显示更好的推荐性能。
三个数据集上的性能比较。M设置为50, 100,和200。