作者 | 老潇
链接 | https://zhuanlan.zhihu.com/p/27259610
编辑 | 机器学习与推荐算法
Metric Learning
具体的来说就是通过学习一种数据与数据间的距离度量形式,将现有的数据映射到第三方空间,通过学习到的距离度量来衡量数据间的similarity,度量在数学上满足三角不等式,及两边的长度和不小于第三边,例如与,均相似,而度量学习的策略即缩短相似数据对之间的长度,而同时度量满足三角不等式,所以学习过程就会自动将相近的样本的距离缩短,这种类似于相似度传播的结果与CF的思想有点像,于是作者想到将metric learning与CF结合起来解决用户用品推荐的问题。提出了CML(Collaborative Metric Learning)的模型。
CML
主要内容就是,给定所有数据和一个数据集,里面是user-item的数据对,并且是已知具有正相关的,通过学习user-item之间度量来将这种关系编码到第三方空间,具体的学习,拉近中正相关item,推远其他的item。
度量使用的欧几里得距离:
距离的损失函数:
其中为数据中具有正相关的集合,即为item为用户所喜欢的,item为用户所不喜欢的,为hinge loss,叫做ranking loss weight,后面会提到,为安全边界值。
下图表示了在梯度训练时的过程:
可以看到在loss的控制下,正相关的item与user的距离沿着梯度缩小,而不相关的则相反。其中impostor表示在安全边界内出现的负样本(与user不相关的item)
Approximated Ranking Loss
距离损失函数中的采取一种叫做WARP(Weighted Approximate-Rank Pairwise)的loss来建立:
目的是来惩罚排名靠后的正相关item项其中。
其中为在user的推荐列表中item的排名,通过下面的策略来近似:
1、对于每个user-item对,采样个负样本item,并计算距离损失函数。
2、让代表中impostor的个数,则其中可近似为:
其中,为所有的item数。
特征损失函数:
本文中借助的隐式反馈则为用户喜欢的item的feature,为将特征映射到user-item空间的函数(即为本文学习的结果),为相应item的向量,特征损失函数目的是把item的特征向量作为item本身的一种先验,来调整的位置,即相同feature的item理应离得更近,并且能改善那些很少评分的item的位置。由MLP+dropout实现。
正则项损失函数:
其中为协方差矩阵:
其中为user或者item的向量,为batch中的索引,为向量的维度。,N为batch大小。协方差正则项的引入,主要是接触各维度间的相关性,因为协方差可以看作向量间的冗余。这样能使得整个空间能进行更多信息的表达。
训练过程:
这是总的损失函数,下方的限制条件为保证空间可计算性。整个过程为Mini-Batch SGD训练,学习率采用AdaGrad控制。训练步骤如下:
1、从中抽样个正相关user-item对。
2、对于每一对,抽样个负样本item,并计算近似的。
3、对于每一对,保留使得距离损失函数最大的那个负样本item(k),并组成一个batchN。
4、计算梯度并更新参数。
5、重复此过程直到收敛。
本文将CML与CF中的许多方法在各领域都进行了对比实验。
实验数据集包括:
其中Concentration表示了评分集中在Top 5%物品的比例,可以反映该数据集对于热门物品的偏爱程度,与用户个性化物品偏爱程度。
实验结果:
实验结果中可以看到,CML超过了几乎所有的方法,并且是在各领域都达到了state-of-the-art。
并且CML方法在对于注重用户兴趣的数据集上比较好,说明CML能很好的发现用户的preference。
选取了图像集来说明CML在只关注与user-item关系的情况下对item-item的similarity也产生了很好的效果。
本文将metric learning与cf结合起来,通过充分利用metric learning学习距离的优势来挖掘user-item间的潜在关系,并且在各领域都能取得好成绩,文中也提到学习用户与物品距离成为了推荐在CF后的新方向。
🧐分享、点赞、在看,给个三连击呗!👇