论文地址:http://staff.ustc.edu.cn/~hexn/papers/sigir20-DGCF.pdf
Intros
核心思想:用户和商品的某次交互背后都有其潜在的原因,比如购买手机,某个用户可能是因为该手机的品牌也有可能是喜欢其款式、颜色、大小等等,而实际生活中,驱使用户最终做出该购买行为的原因往往不止一个原因,并且一般情况下各个原因之间是有相互联系的、是纠缠在一起的。作者该篇文章主要就是以这样一种现象作为背景,提出推荐系统中主流使用的协同过滤方法与解耦合表示相结合,之前的协同信息仅仅只包含用户和商品有过交互(数据形式0/1,1就是有过交互),而现在将每个交互背后的某一种原因(意图)单独地表示出来,可以说某次交互用k个不同的意图表示来表示的(论文中使用的是k维向量且初始化为1),通过学习,最终可以学习到某个用户和某个商品之间的交互是由哪一个关键性意图信息所决定的。
如图,u1因为k1意图而对i1,i3有所交互。
主要任务:利用协同信息,预测某一个用户与某一个商品之间交互的可能性——得到“预测分数”,该分数由用户和商品的embedding得到,所以我们的主要任务在于得到一个能够更好的刻画用户和商品的向量表示。
Related Works
- 给所有用户和所有商品之间交互的所有可能的意图分别构建一个邻接矩阵,即k个邻接矩阵。在u个用户和i个商品之间的交互上有“分数”,比如在第k个意图矩阵上,u1和i1有交互,并且“交互分数”为0.7,那么u1选择购买i1的70%的可能性是出于第k个意图。
- 将原本的d维向量用来表示用户和商品“特征”,现在在k个意图的基础上将其均分成k个分块,第k个分块表示第k个意图。
Methodology
利用邻居路由和嵌入传播来进行k个意图组成的图的更新最终得到用户和商品embedding表示的更新。
- 邻居(用户u的邻居节点)路由来更新意图感知图,利用用户u和商品i的交互数据组成k个邻接矩阵:
其中的Ak包括k个u和i的交互数据,将之间的有交互=1变成用一个k维向量来表示,初始化为全1。
再进行softmax归一化,是的表示一次交互的向量表示为类似于这样的——(0.1,0.2,0.4,0.3)向量表示,表示这次交互得以交互的主要原因是第三个。 - 在上述图中进行u和i的embedding嵌入传播,使用GNN思想,进行多层聚合,分别更新u 和i 分块的embedding。
利用邻居路由来收集用户的一阶邻居节点关于第k个意图的相关信息,即使用T迭代来更新意图感知图,以及各个意图的影响程度分布,即上面的公式。
经过T迭代的邻居路由机制后,可以对用户的embedding进行一次更新,最终只保留经过T次迭代后的embedding结果——再将最终得到的更新用户embedding进行多层gnn的高阶信息融合(其中的L是上面式子再除以用户u的邻接用户与商品的个数的乘积开方,如右下角所示):
而意图感知图的更新要受到用户和商品embedding更新的一个反馈,在T迭代过程中,我们的意图感知图是不断更新的:
- 使用距离相关(distance correlation)来尽可能的保证每个意图之间的相互独立性,针对两个意图之间进行一个正则化约束:
Summary
个人理解:可能这个T迭代看着有些混乱,但是我觉得这个T迭代跟梯度下降的意思一样。