KDD19|基于元路径引导的异质图神经网络意图推荐 论文浅尝
论文链接:https://dl.acm.org/doi/10.1145/3292500.3330673
代码链接:https://github.com/googlebaba/KDD2019-MEIRec
前言
这篇论文是北邮联合阿里的淘宝一起在淘宝平台研究的有关用户意图推荐,很好地利用了淘宝平台的数据优势,结合异质信息网络的元路径方法并融合一些静态的特征信息,最后经过MLP层(神经网络全连接层),预测意图得分。可以说这篇很好地将图神经网络有关推荐进行落地,有很好的参考意义。
Abstract
如今,随着移动电子商务的盛行,一种新型的推荐服务(称为“意图推荐”)已广泛用于许多移动电子商务应用程序中,例如淘宝和亚马逊。 与传统的查询推荐和项目推荐不同,意图推荐是在用户打开应用程序时根据用户的历史行为自动推荐用户意图,而无需任何输入。 在过去的两年中,由于揭示了用户的潜在意图并避免了手机中的繁琐输入,因此意图推荐在过去两年中变得非常流行。 工业上使用的现有方法通常需要人工特征工程。 而且,它们仅利用用户和查询的属性和统计信息,而无法在意图推荐中充分利用丰富的交互信息,这可能会导致性能受限。 在本文中,我们建议将意图推荐中的复杂对象和丰富交互建模为异构信息网络。 此外,我们提出了一种用于意图推荐的新型Metapath-guided嵌入方法(称为MEIRec)。 为了充分利用丰富的结构信息,我们设计了一种基于元路径引导的异构图神经网络来学习意图推荐中对象的嵌入。 另外,为了减轻嵌入中的巨大学习参数,我们提出了一种统一的术语嵌入机制,其中对象的嵌入由相同的术语嵌入空间组成。 在实际的大规模数据上的离线实验表明,与代表性方法相比,所提出的MEIRec具有优越的性能。 此外,淘宝电子商务平台上的在线实验结果表明MEIRec不仅使点击率指标提高了1.54%,而且吸引了多达2.66%的新用户来搜索查询。
1 Introduction
在移动互联网时代,导致意图推荐热潮的原因有很多。 首先,由于在移动设备上键入单词比在台式计算机上键入单词更困难,因此意图推荐可以节省用户时间而无需任何输入,这会增加用户的活动性和粘性。 其次,用户可能没有明显的意图,或者不知道如何描述他们的意图,个性化的意图推荐可以帮助用户找到他们真正需要的东西。 图1展示了淘宝移动应用程序上的意图推荐示例。 根据用户的历史信息,当用户打开应用程序时,会在搜索框中自动建议其意图(例如,显示为“乔丹”)。 如果用户单击搜索按钮,他/她将跳至相应的项目列表页面。 在意图推荐系统中,历史信息可以大致分为两种类型。 第一种是属性数据,其中包含对象的属性信息,例如用户配置文件和项目属性。 另一种类型是交互数据,包含用户,项目和查询之间的三重交互,例如用户单击(项目)日志,用户搜索(查询)日志和查询指南(项目)日志。
因此意图推荐在以下两个方面不同于传统的查询推荐/建议。 (1)推荐根据用户行为(即互动)进行查询,而不是类似的先前查询。 (2)它也不需要用户输入部分查询。 与先前仅考虑用户位置查询关系的移动查询推荐[24]研究不同,意图推荐提供了一个灵活的框架来考虑实际系统中异构对象上的复杂交互。 它也与项目推荐在某些方面有所不同。 (1)我们的意图推荐需要考虑三重对象(即用户,项目和查询)之间的交互,而不是考虑项目推荐中用户和项目之间的二进制交互。 (2)与项目推荐中的原子项目和静态项目不同,意图(即由单词构成的查询)始终动态变化。
现有的方法诸如淘宝和亚马逊之类的工业中用于意图推荐的现有方法通常提取手工制作的特征,然后将这些特征提供给分类器,例如GBDT 和XG-Boost 。 这些方法严重依赖领域知识,并且需要辛苦的特征工程。
在本文中,我们提出了一种用于意图推荐的新颖的基于Metapath的嵌入方法(称为MEIRec)。 为了在意图推荐中充分利用丰富的交互信息,我们建议使用异构图形神经网络(GNN)学习用户和查询的结构特征表示。 具体地说,我们提出了以元路径为导向的邻居来聚合丰富的邻居信息,其中根据不同类型的邻居信息的特征设计了不同的聚合功能。 此外,为了处理意图推荐中涉及的大量数据,考虑到查询和项目标题都包含有限数量的术语,我们设计了统一的术语嵌入机制,其中用户和查询的嵌入是 由相同的术语嵌入空间组成。 利用现有系统中使用的静态功能,以及从交互信息中学习到的用户和查询的嵌入,我们构建了用于意图推荐的预测模型。
2 Preliminaries
在本节中,我们定义了模型中使用的一些基本概念。
定义1 < U , I , Q , W , A , B > <U, I, Q,W,A,B> <U,I,Q,W,A,B>,其中 U = { u 1 , ⋅ ⋅ ⋅ , u p } U = \{u_1,···,u_p\} U={u1,⋅⋅⋅,up}表示p个用户的集合, I = { i 1 , . . . , i q } I = \{i_1,...,i_q\} I={i1,...,iq}表示q个项的集合, Q = { q 1 , . . . , q r } Q = \{q_1,...,q_r\} Q={q1,...,qr} r个查询集,A表示与对象关联的属性, B表示不同类型的对象之间的交互行为, W = { w 1 , . . . , w n } W = \{w_1,...,w_n\} W={w1,...,wn}表示n个术语集合。我们可以利用A和B中的信息来计算用户u对查询q的偏好得分,值得注意的是,推荐查询通过利用用户历史交互信息反映了用户意图。 此外,推荐的查询可能不是以前的查询,而是由现有术语组合生成的新短语。
图2(a)显示了HIN的一个示例,图2(b)是相应的网络架构。 我们可以看到网络由多种类型的对象(例如,用户(U),项目(I),查询(Q))及其丰富的交互关系组成。 我们对从应用程序中的用户和查询开始的元路径特别关注,这些元路径可以揭示用户和查询的语义关系。 例如 在图2(c)中,“用户-项目-查询(UIQ)”元路径表示用户单击的项目,这些项目受某些查询的指导,“查询-用户-项目(QUIQ)”表示某些用户正在搜索查询,这些用户最近还单击了一些项目。
定义2. 元路径引导的邻居。 给定一个对象o和一个HIN(异质信息网络)中的元路径ρ(起始形式o),当对象o沿着给定的元路径ρ行走时,以元路径为导向的邻居被定义为所有访问对象的集合。 另外,我们将对象o的第i阶邻居称为
N
ρ
i
(
o
)
N^i_ρ(o)
Nρi(o),
N
ρ
0
(
o
)
N^0_ρ(o)
Nρ0(o)就是它本身。
对于元路径用户-项-查询(UIQ)”,我们可以得到以元路径为指导的图2(a)为例,,u2的以元路径为指导的邻居表示为
N
U
I
Q
1
(
u
2
)
=
{
i
1
,
i
2
}
N^1_{UIQ}(u_2) = \{i_1,i_2\}
NUIQ1(u2)={i1,i2},
N
U
I
Q
2
(
u
2
)
=
{
q
1
,
q
2
,
q
3
}
N^2 _{UIQ}(u_2)= \{q_1,q_2,q_3\}
NUIQ2(u2)={q1,q2,q3}。 然后,所有u2所有邻居为,
N
U
I
Q
(
u
2
)
=
{
N
U
I
Q
0
(
u
2
)
,
N
U
I
Q
1
(
u
2
)
,
N
U
I
Q
2
(
u
2
)
}
=
{
u
2
,
i
1
,
i
2
,
q
1
,
q
2
,
q
3
}
N_{UIQ}(u_2)=\{N^0_{ UIQ}(u_2),N^1_{UIQ}(u_2),N^2_{ UIQ}(u_2)\} = \{u_2,i_1,i_2,q_1,q_2,q_3\}
NUIQ(u2)={NUIQ0(u2),NUIQ1(u2),NUIQ2(u2)}={u2,i1,i2,q1,q2,q3}。
3 MEIRec Model
3.1 统一术语嵌入
我们从查询和项目标题中提取术语,然后构建术语词典W = {w1,w2,···,wn-1,wn}。 请注意,查询和项目(即其标题)是几个术语的组合。 例如,如图3(a)-(b)所示,查询“ Hand Bag”由术语“ Hand”和“ Bag”构成,项目“ LV Hand Bag”由术语“ LV”,“ Hand”构成 ”和“包”。 由于词典W的数量远远少于查询和用户的数量,因此统一的术语嵌入可以显着减少学习参数的数量。 更重要的是,这些术语可以代表以前从未搜索过的新查询。 我们将说明统一术语嵌入如何与图3(b)所示的两个示例查询q2和项i2一起工作,查询q2由项集{w1,wn}构成,而项i2具有项集
{
w
1
,
w
n
−
1
,
w
n
}
\{w_1,w_{n-1},w_n\}
{w1,wn−1,wn}。 我们使用多元热编码表示q2和i2如下:
{
w
1
,
w
2
,
⋅
⋅
⋅
,
w
n
−
1
,
w
n
}
q
2
=
(
1
,
0
,
⋅
⋅
⋅
,
0
,
1
)
i
2
=
(
1
,
0
,
⋅
⋅
⋅
,
1
,
1
)
.
\qquad \{w_1, w_2, ··· , w_{n−1}, w_n\}\\ q2 = (1,\qquad 0, ··· , 0, \qquad 1) \\ i2 = (1,\qquad 0, ··· , 1, \qquad1).
{w1,w2,⋅⋅⋅,wn−1,wn}q2=(1,0,⋅⋅⋅,0,1)i2=(1,0,⋅⋅⋅,1,1).
然后,我们对术语嵌入进行汇总,以获取查询或项目的嵌入,如下所示:
E
q
2
=
g
(
e
w
1
,
e
w
n
)
,
E
i
2
=
g
(
e
w
1
,
e
w
n
−
1
,
e
w
n
)
,
E_{q_2} = g(e_{w_1} , e_{w_n} ), Ei2 = g(e_{w_1} , e_{w_{n−1}}, e_{w_n} ),
Eq2=g(ew1,ewn),Ei2=g(ew1,ewn−1,ewn),
其中
e
w
i
e_{w_i}
ewi是术语
w
i
w_i
wi的嵌入,而g(·)表示应用于这些术语的运算函数。 在我们的实验中,我们采用平均函数。
3.2 元路径指导的异质图神经网络
我们可以得到u2的不同的元路径引导嵌入,例如 U 2 U Q I U^{UQI}_2 U2UQI。 然后,我们聚合所有以metapath引导的嵌入,以获得最终的u2嵌入。
3.3 用户建模
得到第一步和第二步邻居集后,我们汇总第二步邻居(查询)的嵌入,以获得第一步邻居(项)的嵌入,嵌入基于元路径UIQ的
N
U
I
Q
1
(
u
i
)
N^1_{UIQ}(u_i)
NUIQ1(ui)中的
I
j
U
I
Q
I^{UIQ}_j
IjUIQ的项:
I
j
U
I
Q
=
g
(
E
q
1
,
E
q
2
,
.
.
.
)
I_j^{UIQ} = g(E_{q_1},E_{q_2},...)
IjUIQ=g(Eq1,Eq2,...)
这里g(▪)在模型中我们采用了平均值函数。
接下来,我们汇总第一步邻居(项)的嵌入,以获得用户
u
i
u_i
ui的嵌入:
U
i
U
I
Q
=
g
(
I
1
U
I
Q
,
I
2
U
I
Q
,
⋅
⋅
⋅
)
,
U^{UIQ}_ i = g(I^{UIQ} _1 , I^{UIQ}_ 2 , ··· ),
UiUIQ=g(I1UIQ,I2UIQ,⋅⋅⋅),
用户单击带有时间戳的查询或项目,因此我们将用户的邻居(即项目或查询)建模为序列数据。 事实证明,递归神经网络(RNN),特别是长期短期记忆(LSTM)[2,5]对于顺序数据表现良好。 因此,MEIRec利用LSTM对用户的邻居进行动态建模。 即,对于用户的邻居,聚合函数g(·)是LSTM。
然后,聚合不同的元路径{ρ1,ρ2,···,ρk}嵌入来获得用户嵌入。
U
i
=
g
(
U
i
ρ
1
,
U
i
ρ
2
,
⋅
⋅
⋅
,
U
i
ρ
k
)
,
Ui = g(U^{ρ1} _i ,U^{ρ2} _i , ··· ,U^{ρk}_ i ),
Ui=g(Uiρ1,Uiρ2,⋅⋅⋅,Uiρk),
3.4 查询建模
同理,查询嵌入为:
Q
i
=
g
(
Q
i
ρ
1
,
Q
i
ρ
2
,
⋅
⋅
⋅
,
Q
i
ρ
k
)
Qi = g(Q^{ρ1}_ i ,Q^{ρ2}_ i , ··· ,Q^{ρk}_ i )
Qi=g(Qiρ1,Qiρ2,⋅⋅⋅,Qiρk)
查询的邻居(即item和users)不是按时间顺序显示的,因此,在我们的模型中,我们利用卷积神经网络(CNN)为查询的邻居动态建模。 查询的邻居。 也就是说,聚合函数g(·)是CNN。
3.5 模型优化
我们预测用户
u
i
u_i
ui搜索查询
q
j
q_j
qj的概率
y
^
i
j
\hat{y}_{ij}
y^ij,该概率在[0,1]范围内。通过聚合用户和查询的邻居,我们获得了用于用户ui的融合用户嵌入Ui和用于查询qj的融合查询嵌入Qj。 另外,传统方法中还使用原始静态特征,包括用户(查询)的属性和来自交互信息的静态特征。 我们将这些静态特征馈送到多层感知器,以获取静态特征Sij的表示形式。 然后,我们将用户,查询和静态功能的嵌入进行合并以融合它们。 最后,我们将融合的嵌入内容馈送到MLP层中以获得预测得分yij。
y
^
i
j
=
s
i
g
m
o
i
d
(
f
(
U
i
⊕
Q
j
⊕
S
i
j
)
)
,
\hat{y}_{ij} = sigmoid(f(Ui ⊕ Qj ⊕ Sij)),
y^ij=sigmoid(f(Ui⊕Qj⊕Sij)),
其中f(·)是只有一个输出的MLP层,sigmoid(·)是Sigmoid层,而⊕是嵌入串联操作.
损失函数:
J
=
∑
i
,
j
∈
y
⋃
y
−
(
y
i
j
l
o
g
y
^
i
j
+
(
1
−
y
i
j
)
l
o
g
(
1
−
y
^
i
j
)
J = \sum_{i ,j\in y \bigcup y^-}(yijlog \hat{y}ij + (1 −yij)log(1 − \hat{y}ij)
J=i,j∈y⋃y−∑(yijlogy^ij+(1−yij)log(1−y^ij)
4 实验
-
MEIRecstats:它仅使用静态功能。
-
MEIRecstru:仅使用结构信息。
-
MEIRecavд:同时使用结构信息和静态特征。 我们使用AVE函数(即对汇总嵌入进行平均操作)来汇总该模型中用户和查询的邻居。
-
MEIReclstm:它使用结构信息和静态功能。 在此模型中,我们使用LSTM来聚合用户的邻居,并使用AVE来聚合查询的邻居。
-
MEIRec:这是建议的模型MEIRec。
下面是增加不同元路径的AUC效果: