|
论文链接:https://arxiv.org/abs/1711.10730
本文中,我们提出一种新奇的基于异构网络节点表示学习的异构网络推荐方法:HERec。为了学习网络节点的表示,我们设计了一种基于Meta-Path的随机游走方法来生成许多有意义的节点序列。
1. 基于元路径的随机游走采样方法
如图3所示,为了学习用户和项目的有效表示,我们只考虑起始类型为用户类型或项目类型的元路径。这样,我们就可以得到一些元路径,比如umu、umdmu和mum。以UMU的元路径为例。我们可以根据公式1生成一个采样序列u1→m1→u2→m2→u3→m2→u4。一旦构建了序列,我们进一步删除与起始节点相比具有不同类型的节点。这样,我们最终获得了一个同构节点序列“u1→u2→u3→u4”。因此,尽管节点序列是使用具有异构类型的元路径构造的,但最终的表示是使用同构邻域学习的。

2.学习同构序列的表示(算法框架)
用于单个元路径的HIN嵌入算法

算法1:用于单个元路径的HIN嵌入算法
输入: 给定一个异构信息网络G = { V , E } ,给定原路径ρ ;目标节点类型At;向量维度d;游走长度wl;领域规模ns(相当于词向量训练的窗口大小);每个节点的行走次数r
输出:目标节点类型w.r.t嵌入单个元路径,用e表示
- 用标准正态分布初始化e;
- paths = []
- (外层循环)遍历顶点集合中的每一个属于At类型的顶点v(例如用户顶点):
- (里层循环)随机游走r次
- path = []
- 一次路径没走完
- 按照元路径进行采样,得到下一个节点x
- 如果x是At类型,将x加到path集合中
- wl=wl-1
- 一个节点的一次采样结束
- Add path to paths
- 退出里层循环
- 退出外层循环
- 将采样得到的序列输入到skip-gram模型中训练
3.融合函数
通过上述方法,对于每一个给定的节点v∈V,我们可以获得一组表示{ev(l)}l=1∣p∣,P是元路径的集合,ev(l)表示以v为起始顶点,根据第l个元路径得到的顶点向量表示。因此需要将这一组针对不同元路径得到的向量融合成一个向量。(简单理解就是相同的一个用户节点u,根据umu和umdmu两种元路径学到了两种不同的表示,因此需要将其融合成一种表示)文章建议使用通用函数g(·):
eu(U)←g({eu(l)})
文章给出了三种融合函数:
-
简单的线性融合。 假设每个用户对每个元路径具有相同的偏好,为每个元路径分配每个用户的统一权重(即平均值)。这种方法类似于机器学习中的线性回归方法。Ml是拟合参数,bl是偏置量,都是未知量

-
个性化线性融合。 简单的线性融合无法模拟用户对元路径的个性化偏好。 因此,我们在元路径上为每个用户分配权重向量,表示每个用户对每个元路径的个性化偏好。 每个用户在许多实际应用中具有他/她的个人兴趣偏好更合理。其中wu(l)是用户在第l个元路径上的偏好权重。

-
个性化非线性融合。 线性融合在复杂数据关系建模中的表达能力有限。因此,我们使用非线性函数来增强融合能力。其中,σ(·)是非线性函数,例如我们工作中的sigmoid函数。

文章认为应该根据具体任务学习良好的融合功能,也就是需要把融合函数代入到具体任务中,学习对应的参数Ml、bl、wu(l)(文章是针对推荐任务做的,把融合函数代入到了矩阵分解中,这一块的内容没有细看)
|