推荐系统遇上深度学习(五十八)-基于“翻译”的序列推荐方法

关注小编的公众号,后台回复“进群”,一起来交流学习吧!

本文介绍的论文的题目是《Translation-based Recommendation》
论文下载地址是:https://arxiv.org/abs/1707.02410

1、背景

在推荐系统中,建模和预测用户和物品、物品和物品之间的关系是十分重要的。而在序列推荐中,为了预测用户下一个可能交互的物品,需要建模三方的关系。这三方分别是用户u、用户最近交互的物品i(或者一系列物品)、下一个要交互的物品j。

传统的方法大多仅仅建模两方的关系,如矩阵分解模型仅仅建模用户和物品的交互关系,而马尔可夫链的方法仅仅建模用户交互序列中物品的关系。

在本文中,我们提出了一个基于“翻译”(这里加引号是不太确定Translation-based是否应该解释成基于“翻译”的模型,只是暂时这么解释)的推荐模型来同时建模三方的关系,一起来学习一下。

2、模型介绍

2.1 问题定义

本文中用到的一些符号如下:

公式打起来不方便,所以直接在图上进行了解释,嘻嘻。

2.2 模型结构

模型的基本思想很简单,如下图所示:

其基本的思路就是用户对应的向量和用户上一个交互过的物品向量之和,要和用户下一个要交互的物品向量在距离上相近。

这里物品向量用γi表示,用户向量用Tu表示,而Tu可以被分解为两部分:

这么分解乍一看和直接学习一个tu没有区别,但实际推荐的场景中,往往存在数据稀疏以及冷启动的问题,因此学习一个全局的向量t,可以一定程度上解决冷启动的问题。对于新来的用户,将tu被设置成零向量即可,即Tu = t。

接下来,我们考虑一个问题,如何处理热门物品?如果一个物品十分热门,在训练集中出现的次数非常多,那么会导致热门物品对应的向量与许多用户+物品向量的距离非常近,导致推荐时热门物品出现的次数非常多,一定程度上降低了推荐结果的多样性,因此本文的做法是对热门物品进行一定的惩罚:

当用户u上一个交互的物品是i时,下一个交互的物品是j的概率应该正比于距离的相反数(即距离越小,推荐的可能性越大),除此之外,对每一个带推荐物品,这里还加入了一个常数βj。并通过βj对热门物品进行一定的惩罚,如越热门的物品βj越小,这样的话,如果对物品j和j'的距离相同,但j物品相较于j'更加热门,此时βj 会小于βj',因此更倾向于推荐j',从而提升推荐结果的多样性。

2.3 模型训练

模型的整体思路比较简单,在训练时使用pair-wise的方法:

其中j是真实的下一个交互的物品,j'是除j之外的任意一个物品。

2.4 模型预测

在预测阶段,依据距离度量,找到距离最近的物品进行推荐。但到目前为止,我们还没有介绍距离度量的方式,下一节来看一下。

2.5 距离度量

这里文中说距离度量可以用L1的方法,也可以使用L2的方法,二者的计算公式如下:

但从实验结果来看,L2距离是更好的选择。

3、总结

本文略过了实验结果部分,感兴趣的同学可以看一下原文。本节咱们对文中的思路做一个简答的总结:

1)文中使用距离度量的方式,将用户、用户交互过的物品、待推荐物品通过一个公式同时进行考虑。
2)文中提出的方式可以很容易处理长度较长的用户交互序列,因为在使用时仅仅考虑上一个交互的物品。
3)成功将度量学习(Metric Learning)和知识图谱补全(knowledge-graph completion)的思路引入到了推荐系统中, 并取得了不错的效果。简单说一下知识图谱补全,其基本的思想也是将图谱中的实体、关系转换成向量表示,并基于已有的三元组关系去预测未知的实体之间的关系,可以表示成如下的式子:

可以看出与本文的思路十分类似,用户的向量Tu可以近似表示成一种relation。
4)基于本文的思路,又衍生出了其他的论文,如将其与FM进行融合的方法,我们将在下一篇文章中进行介绍,小小期待一下吧。

你可能感兴趣的:(推荐系统遇上深度学习(五十八)-基于“翻译”的序列推荐方法)