【论文解读 KDD 2019 | MEIRec】Metapath-guided Heterogeneous Graph Neural Network for Intent Recommendation

【论文解读 KDD 2019 | MEIRec】Metapath-guided Heterogeneous Graph Neural Network for Intent Recommendation_第1张图片

论文题目:Metapath-guided Heterogeneous Graph Neural Network for Intent Recommendation

论文来源:KDD 2019

论文链接:http://www.shichuan.org/doc/67.pdf

代码链接:https://github.com/googlebaba/KDD2019-MEIRec

关键词:推荐系统, 意图推荐, HIN, GNN


文章目录

  • 1 摘要
  • 2 引言
  • 3 一些定义
  • 4 模型
    • 4.1 模型概览
    • 4.2 Uniform Term Embedding
    • 4.3 Metapath-guided Heterogeneous Graph Neural Network
    • 4.4 User Modeling
    • 4.5 Query Modeling
    • 4.6 优化目标
  • 5 实验
    • 5.1 离线实验
    • 5.2 在线实验
  • 6 总结


1 摘要

本文是通过学习到节点的表示,解决意图推荐问题

什么是意图推荐:意图推荐在电商领域应用广泛,是指在用户没有输入的前提下,根据用户的历史行为为用户做推荐。淘宝的搜索栏在你没有输入的时候,会有一些灰色的字,这就是意图推荐。

作者提出,将意图推荐中的复杂对象和丰富的交互信息建模为HIN。为了充分利用HIN中丰富的结构信息,作者设计了metapath-guided的异质GNN,以学习意图推荐中节点的嵌入表示,提出了Metapath-guided Embedding method for Intent Recommendation (MEIRec)模型。

作者在真实数据集上进行了线下实验,并且在淘宝上进行了线上实验,证明了MEIRec的有效性。


2 引言

什么是意图推荐?意图推荐有什么意义?

推荐系统已成为电商平台的一项基本业务,近两年来意图推荐开始兴起。意图推荐通过分析用户的历史行为,揣测出用户的搜索意图,用几个单词概括,在App搜索栏自动地为用户预先输入搜索词。

意图推荐节省了用户输入的时间,当用户不知道用什么词描述想要搜索的商品时,意图推荐也有助于帮助用户找到他们想要的商品。

图1就是淘宝上进行意图推荐的例子,搜索栏里就是意图推荐的结果,点击搜索按钮就会自动跳转到相关商品的页面。

【论文解读 KDD 2019 | MEIRec】Metapath-guided Heterogeneous Graph Neural Network for Intent Recommendation_第2张图片

什么是历史数据?

历史数据可以粗略分为两类

  1. 属性数据:节点的属性信息,比如用户的个人信息、商品的属性信息;
  2. 交互数据:由users, items, queries组成的三元组数据,例如用户点击(item)日志、用户搜索(query)日志、query guide(item)日志。

本文的意图推荐和传统的查询推荐的不同之处

  1. 根据用户的行为数据做推荐,而不是做与之前类似的查询,也就是说推荐的query可能不是先前的query;
  2. 不需要用户提供任何输入信息。

本文的意图推荐与商品推荐的不同之处

  1. 商品推荐考虑的是users和items的二元交互信息,而本文的意图推荐考虑的是三元组的交互关系,例如 users, items, queries。
  2. 和静态的推荐不同,意图是不断动态变化的。

现有的意图推荐方法

淘宝和亚马逊通常采用人工抽取特征的方法,然后将这些特征输入到例如GBDT, XG-Boost的分类器中。

这些方法非常依赖于专业的领域知识,而且耗费人工。而且现有的方法仅仅使用静态的users, queries的信息和属性信息,不能充分利用实体间丰富的交互信息。


HIN的引入

将丰富的交互信息构建成HIN,如图2(a)所示,HIN可以清晰地刻画出节点和它们之间的各种关系,例如“用户点击商品”、“用户搜索商品”、“查询搜索出商品”(query guide item)。

也有一些方法使用HIN进行推荐,基于元路径挖掘出users和items的交互信息,但是这些方法不能处理三元组的交互信息。

【论文解读 KDD 2019 | MEIRec】Metapath-guided Heterogeneous Graph Neural Network for Intent Recommendation_第3张图片

作者提出

作者提出MEIRec模型用于意图推荐,使用异质的GNN学习users和queries的结构特征表示。

作者还使用了metapath-guided的邻居,以聚合丰富的邻居信息。另外,针对邻居的不同类型的信息,设计不同的聚合函数。

为了能够处理大规模数据,减少参数量,作者设计了统一的嵌入机制,让users和querise映射到term的嵌入空间,users和queries都是由多个term组成的。4.2对term进行了解释

同时使用 静态的特征 以及 从交互信息中学习到的users和queries的嵌入表示,构建预测模型以用于意图推荐。


本文的贡献

  1. 提出意图推荐问题,即根据用户的历史行为对其进行自动的意图推荐。
  2. 提出基于GNN的模型MEIRec,将意图推荐系统建模成HIN,利用元路径指导下的邻居的丰富信息。提出统一的嵌入机制以减少参数。
  3. 线下实验超过baselines,淘宝线上实验也证明了模型的有效性。

3 一些定义

(1)意图推荐

给定集合 < 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 p p个用户, I = { i 1 , . . . , i q } I={\{i_1,...,i_q\}} I={i1,...,iq} 表示 q q q个商品, Q = { q 1 , . . . , q r } Q={\{q_1,...,q_r\}} Q={q1,...,qr} 表示 r r r个请求, W = { w 1 , . . . , w n } W={\{w_1,...,w_n\}} W={w1,...,wn} 表示 n n nterms A A A 表示节点的属性, B B B 表示不同类的节点间的交互关系。

本文中的一个请求 q q q或者是一个商品 i i i,都是有多个terms w w w组成的。

意图推荐的目的是为user推荐最贴合意图的query。

(2)元路径指导的邻居(Metapath-guided Neighbors)

从给定的节点 o o o出发,按照元路径 p p p的模式访问到的邻居节点。定义第 i i i步访问到的邻居为 N p i ( o ) N^i_p(o) Npi(o) N p 0 ( o ) N^0_p(o) Np0(o)就是 o o o节点。

图2(a)所示,给定元路径"User - Item - Query(UIQ)"和user u 2 u_2 u2,可以得到metapath-guided neighbors N U I Q 1 ( u 2 ) = { i 1 , i 2 } , N U I Q 2 ( u 2 ) = { q 1 , q 2 , q 3 } N^1_{UIQ}(u_2)={\{i_1, i_2\}}, N^2_{UIQ}(u_2)={\{q_1, q_2, q_3\}} NUIQ1(u2)={i1,i2},NUIQ2(u2)={q1,q2,q3}。这样,节点 u 2 u_2 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}


4 模型

4.1 模型概览

MEIRec的基本思想是设计一个异质的GNN以学习到users和queries的丰富表示。模型在元路径的指导下选择每一步的邻居节点。由于节点类型多样,为了减少参数,提出了统一的嵌入方法(uniform term embedding)。注意,queries和items的标题(titles)都是由一定数量的terms组成的

图3展示了MEIRec的整体框架。首先,将三元组作为输入。接着,使用统一的term embedding为items和queries生成初始的嵌入。然后,聚合元路径指导得到的邻居信息,通过异质的GNN学习到users和queries的嵌入。再分别把基于不同元路径得到的users和queries的嵌入融合。最后,同时利用融合后的users, queries的嵌入和它们的静态特征,预测user会搜索特定query的概率。接下来将对模型详细介绍。

【论文解读 KDD 2019 | MEIRec】Metapath-guided Heterogeneous Graph Neural Network for Intent Recommendation_第4张图片

4.2 Uniform Term Embedding

之前的基于神经网络的推荐方法,为每个user/query都提供一个唯一的嵌入表示。但是在意图推荐场景下,有数以十亿的users和queries,若使用传统的协同过滤方法或者基于神经网络的方法处理所有的users和queries,参数的规模将会非常非常大。

作者注意到,queries和items的标题都是由多个term组成的,而且term的数量并不是很多。所以,使用一定数量的term的嵌入表示作为queries和items的嵌入表示,这样就只需要学习term的嵌入就可以了,不需要学习所有节点的嵌入,参数量就大大减少了。而且之前没有被搜索过的query也可以通过这些term表示。

个人感觉如果把query, item看成NLP中的单个词语的话,term就可以看成是义原。

首先,要从queries和items的标题中抽取出terms,组成词典 W = { w 1 , w 2 , . . . , w n − 1 , w n } W={\{w_1,w_2,...,w_{n-1},w_n\}} W={w1,w2,...,wn1,wn}

图3(a)-(b)所示,query "Hand Bag"由"Hand"和"Bag"两个term组成,item “LV Hand Bag"由"LV”, “Hand”, "Bag"三个term组成。

【论文解读 KDD 2019 | MEIRec】Metapath-guided Heterogeneous Graph Neural Network for Intent Recommendation_第5张图片

图3(b)中的 q 2 , i 2 q_2, i_2 q2,i2为例, q 2 q_2 q2 { w 1 , w n } {\{w_1, w_n\}} {w1,wn}组成, i 2 i_2 i2 { w 1 , w n − 1 , w n } {\{w_1, w_{n-1}, w_n\}} {w1,wn1,wn}组成。使用multi-hot编码来表示 q 2 , i 2 q_2, i_2 q2,i2

【论文解读 KDD 2019 | MEIRec】Metapath-guided Heterogeneous Graph Neural Network for Intent Recommendation_第6张图片

term embedding映射函数将所有term映射成了 d d d维的向量表示 e w i e_{w_i} ewi。在look-up层,queries/items被表示成term embedding的组合,使用函数 g ( ⋅ ) g(\cdot) g()(文章中使用的是取平均)聚合这些term embeddings就可以得到queries/items的embeddings

这样就将queries, items的嵌入表示统一到了term的嵌入空间中。而且可以同时利用所有的节点嵌入来优化term embeddings,这样就可以得到包含user-query, user-item交互信息的term embeddings


4.3 Metapath-guided Heterogeneous Graph Neural Network

受GCN的启发,提出元路径指导的异质GNN。利用元路径来获得在游走过程中,从初始节点出发,在不同步下的邻居节点。通过聚合在不同元路径下得到的邻居信息,得到uers, queries的嵌入。

【论文解读 KDD 2019 | MEIRec】Metapath-guided Heterogeneous Graph Neural Network for Intent Recommendation_第7张图片

图4就描述了基于多个元路径(UIQ, UQI)得到 u 2 u_2 u2的嵌入 U 2 U_2 U2的过程。

(1)首先根据元路径UIQ聚合邻居信息:先使用统一的term embedding获得queries的初始嵌入。

(2)然后根据元路径UIQ得到邻居节点 N U I Q 1 ( u 2 ) = { i 1 , i 2 } , N U I Q 2 ( u 2 ) = { q 1 , q 2 , q 3 } N^1_{UIQ}(u_2)={\{i_1, i_2\}}, N^2_{UIQ}(u_2)={\{q_1, q_2, q_3\}} NUIQ1(u2)={i1,i2},NUIQ2(u2)={q1,q2,q3}

(3)接着,聚合二阶邻居的嵌入来得到一阶邻居的嵌入。也就是聚合 q 1 q_1 q1的嵌入得到 i 1 i_1 i1的嵌入,聚合 q 2 , q 3 q_2, q_3 q2,q3的嵌入得到 i 2 i_2 i2的嵌入。

(4)最后,聚合一阶邻居 { i 1 , i 2 } {\{i_1, i_2\}} {i1,i2}的嵌入得到目标节点 u 2 u_2 u2的嵌入 U 2 U I Q U^{UIQ}_2 U2UIQ

(5)按照上述方法得到在多条元路径指导下的 u 2 u_2 u2嵌入,然后再将它们聚合成user u 2 u_2 u2的最终嵌入表示 U 2 U_2 U2


4.4 User Modeling

本小节介绍MEIRec建模user嵌入的细节。

基于元路径 U I Q UIQ UIQ得到的节点 u i u_i ui的二阶邻居节点集合 { q 1 , q 2 , . . . } {\{q_1,q_2,...\}} {q1,q2,...},聚合它们的嵌入表示,得到 u i u_i ui的一阶邻居节点集合 { i 1 , i 2 , . . . } {\{i_1,i_2,...\}} {i1,i2,...} 的嵌入表示。例如item i j i_j ij的嵌入 I j U I Q I^{UIQ}_j IjUIQ表示为:

其中 g ( ⋅ ) g(\cdot) g()是聚合函数,针对不同类型的邻居,使用不同的聚合韩式,上式使用的是求平均值。queries集合 { q 1 , q 2 , . . . } {\{q_1,q_2,...\}} {q1,q2,...}是item i j i_j ij的邻居。

接着聚合 u i u_i ui的一阶邻居节点集合 { i 1 , i 2 , . . . } {\{i_1,i_2,...\}} {i1,i2,...} ,得到 u i u_i ui的嵌入表示:

注意,由于users不同时间和不同的queries, items有交互(带有时间戳),所以users邻居节点(例如 items, queries)被建模成序列

RNN更适合处理序列数据,所以MEIRec使用LSTM动态建模users的邻居节点,也就是说(4)式中的 g ( ⋅ ) g(\cdot) g()指的是LSTM。

最后,聚合基于不同元路径 { p 1 , p 2 , . . . , p k } {\{p_1, p_2,..., p_k\}} {p1,p2,...,pk}(均以user节点为起始点)的user嵌入,得到最终的混合的user嵌入表示:


4.5 Query Modeling

像user信息聚合一样,对于query也是同样的操作。基于不同元路径 { p 1 , p 2 , . . . , p k } {\{p_1, p_2,..., p_k\}} {p1,p2,...,pk}(均以query节点为起始点),得到混合后的query嵌入 Q i Q_i Qi

注意,queries的邻居节点(例如 items, users)没有时间顺序,所以使用CNN为queries的邻居节点动态建模,聚合函数 g ( ⋅ ) g(\cdot) g()指的是CNN


4.6 优化目标

首先计算出静态特征,包括users, queries的属性特征和交互信息中的静态特征。然后将这些特征输入到多层感知机(MLP),得到静态特征 S i j S_{ij} Sij

接着,将 U i , Q j , S i j U_i, Q_j, S_{ij} Ui,Qj,Sij作为输入,对于user u i u_i ui预测其搜素query q j q_j qj的概率为 y ^ i j \hat{y}_{ij} y^ij

其中, f ( ⋅ ) f(\cdot) f()就是MLP, ⊕ \oplus 是向量拼接操作。

采样正样本和负样本, y i j ∈ { 0 , 1 } y_{ij}\in {\{0, 1\}} yij{0,1}表示真实标签,最终的损失函数如下:


5 实验

5.1 离线实验

数据集

从淘宝客户端收集了真实的5天的交互数据

【论文解读 KDD 2019 | MEIRec】Metapath-guided Heterogeneous Graph Neural Network for Intent Recommendation_第8张图片

对比方法

  • LR:使用静态特征的线性模型
  • DNN:输入同LR,3层MLP
  • GBDT:基于树的模型,输入静态特征
  • LR/DNN/GBDT+DW:输入users, queires的静态特征,以及DeepWalk得到的预训练的带有结构信息的embedding
  • LR/DNN/GBDT+MP:同上,区别在于使用MeataPath2vec得到预训练的embedding
  • NeuMF:top-N推荐的state-of-the-art,输入结构信息(users, queries间的交互信息),不能输入静态特征

实验结果

【论文解读 KDD 2019 | MEIRec】Metapath-guided Heterogeneous Graph Neural Network for Intent Recommendation_第9张图片

文章中还进行实验研究了不同聚合函数的影响、不同元路径的影响、不同数目的邻居的影响。


5.2 在线实验

在淘宝移动客户端上进行了在线实验

【论文解读 KDD 2019 | MEIRec】Metapath-guided Heterogeneous Graph Neural Network for Intent Recommendation_第10张图片

6 总结

本文研究的是电商领域中的意图推荐,并且成功运用到了淘宝App中。

意图推荐指的是通过分析用户的历史行为,揣测用户的搜索意图,在搜索栏自动生成搜索词(query),节省了打字的时间,同时也为不知道如何描述想搜索的商品的用户提供了便利。

模型思路清晰,首先建立起user, item, query为节点的HIN,然后按照预先定义的元路径获得目标节点的多阶邻居节点,将其按照GNN迭代的方式逐层聚合,得到目标节点的嵌入表示。然后再将不同元路径下得到的user, query的嵌入表示据聚合,和节点的静态特征一起输入进多层感知机中,预测出user发出该query的概率。最后优化目标函数并调参,以更准确地进行意图推荐。

有两点需要注意:

(1)由于节点数目非常多,数以十亿,为每个节点都学习到唯一的嵌入表示的话,参数量是非常巨大的。所以作者提出了term embedding的概念,即query和item的题目都是由几个term组成的,只为每个term学习到唯一的嵌入表示,再将其组合就可以得到对应的query和item的嵌入表示了,这就大大减少了参数量,增加了应用落地的可行性。

(2)对于不同类型的节点的邻居,采用的聚合函数是不同的。例如对user来说,用户的行为是有时序性的特征的,所以它的邻居节点就被建模成了序列,自然用LSTM这种RNN的方法聚合效果更好。

而对于query来说,它的邻居节点没有顺序性,文章中显示采用CNN聚合效果更好。


元路径需要提前定义好,不过对于电商平台来说,节点类别和边类别没有那么多,例如文章中节点一共有3中,边有3种。就算人为设定,工作量也不是很大。

你可能感兴趣的:(NE&GNN,论文,KDD,意图推荐,HIN,GNN)