论文:
论文题目:
《Decoupled Graph Convolution Network for Inferring Substitutable and Complementary Items 》
论文地址:https://www.researchgate.net/publication/344752305_Decoupled_Graph_Convolution_Network_for_Inferring_Substitutable_and_Complementary_Items
这是一篇由京东发表在CIKM2020上面关于如何解耦商品可替代性以及互补性的图神经网络文章,该论文是第一篇将这两个属性利用两个不同的图结构建模的文章,同时在利用对方的结构以及语义进行互补,更好的建模了item的可替代性和互补性这两个在电商领域只为重要的特征。
一 、背景
在电商领域中商品有两个很重要的属性,可替代性(substitutable)和互补性(complementary),这两个属性在推荐系统里面发挥着重要的作用,可以建模商品之间的关系,从而给用户生成候选物品,关于这两个属性,可以用以下两个例子来举例。
用户在浏览网站的时候,假如他/她最后购买的是一件t-shirt,那么他/她在购买这件t-shirt之前一定是浏览过很多其他的t-shirt的,这些其他t-shirt就是她最终购买的这件t-shirt的可替代性item。
用户在购买来一件t-shirt后,通常会购买一条可以跟这件衣服搭配的牛仔裤,这条牛仔裤就是这件t-shirt的互补item。
了解完item的这两个属性后,我们来思考一下,如果要对这两个属性进行表征学习,一般的方法是同时对这两个表征学习,把这两个属性映射到同一个空间里面,共同作为item的embedding表示。
我们知道item之间的关系是复杂多样的,item之间这种存在多种不同关系的结构可以定义成item的异质图结构,可替代性和互补性是item的两种不同方面的属性,如果在同一个空间里对这两个属性进行表征学习就会有几个问题:
1.将item的可替代性和互补性简单地融合在一个共享的embedding中是不鲁棒且有噪声的。
2.直观地说,一个物品的补充信息也可以提供关于它的可替代性的重要线索,反之亦然。例如,如果两件t恤是可替换的,即有相似的风格和尺寸,他们可能有许多共同的互补项目(如牛仔裤)。
所以我们在建模表征学习的时候需要将这两个item的属性进行图结构上的解耦和语义上的解耦,当然解耦不是简单的将两部分的东西完全分离,前面也说了这两个属性也是可以作为彼此的信息补充,所以在表征的时候会充分利用这两部分信息。
这篇论文会从结构和语义两个阶段来阐述可替代性和互补性是如何表征学习的,更具体的细节我们接着往下看吧。
二、问题描述和定义
2.1 Heterogeneous Graph(异质图)
我们用异质图表示item之间具有多种不同关系的图结构,G = (V, E),V是节点的集合,E是边的集合,在这篇论文里面E= ,其中谁可替代性关系的边,是互补性关系的边。节点的属性集合为X = {x1, x2, ..., x𝑛}。
由于我们考虑了两种不同的边,所以可以把整个图看成是两个子图,一个子图表示的是可替代关系的图, = (V, ),另一个是互补性的图, = (V, )。
2.2 Problem Definition(问题定义)
由于我们把关系限定在了可替代性和互补性之内,所以我们就需要把这两个属性的embedding都表征出来:
当然,我们得到这两种embedding后还是需要定义出怎么来生成候选集的:
表示i和j是可替代物品的概率,表示i和j是可互补物品的概率。
三、模型结构
3.1 Graph Convolutional Network
这部分主要讲一下本论文采用的图神经网络结构用的图卷积的方式是GraphSage这篇文章采用的方法,具体的细节我们已经在第27篇文章里面讲过了,想了解的可以去看一下,或者看一下原文,这里就不在阐述了:
3.2 Overview of Decoupled GCN
对比那些把这两部分融合在一起的结构,本文将两部分属性解耦了,这么做可以更灵活地建模复杂的替代和补充关系。
我们在之前也说过了,虽然需要把这两部分属性解耦建模学习,但是这里的解耦学习的意思是分别学习出各自的embedding,在学习的过程中仍然需要将这两部分的结构和语义信息互相补充来学习embedding。
为了结合这两部分的信息,文中采用了两阶段学习的方式:structural integration和semantic integration,下面我们来讲解下这两个阶段的学习方法。
3.2.1 structural integration
结构聚合,就是在建模一个sub-graph结构的时候要利用另一个结构的,具体而言,我们把上面的方法改写成:
另一个子图的结构跟节点的特征X一起作为条件给出了,下面我们以如何建模学习可替代性的embedding出发讲解,另一个也一样就不再具体详细解说了。
3.2.2 Semantic integration.
之前也提到了,我们是两阶段建模的过程,所以这部分是在structural integration学习到的embedding基础上学习的:
这个阶段跟上面阶段不一样的地方在于,structural integration用的是另一部分的结构信息,但是学习过程中的embedding还是自己的,而这部分的学习是直接利用到了对方的embedding信息。
接下来我们要详细讲解这两个阶段的细节。
3.3 Structural Integration: Multifaceted Co-Attentive Neighborhood Aggregation
我们先不谈具体的符号定义,单看这个结构,很容易就能看出具体的集成过程,正如图结构里面所画出来的计算定义一样,实际上的运算也是这么简单易懂。
我们先来给出几个定义:
,其中是 节点i在可替代结构子图中的邻居节点
,其中是节点i在互补结构子图中的邻居节点
这两部分的的意思就是将邻居节点的embedding堆叠起来的意思,注意一下,这里只有结构上定义的邻居是在不同的子图中产生的,实际上这些embedding都是在可替代性的结构中定义的embedding。
再来看看关键的和这部分是通过attention结构得到的分数:
后面的计算就简单了:
最后我们还需要进行一次pooling操作:
这里我们用另一个前面提到的符号来定义这个阶段学习到的embedding,z˜(𝑠)。
3.4 Semantic Integration: Knowledge Transfer between Decoupled Node Representations
第二阶段的主要工作是把第一阶段学习到的embedding信息进行语义聚合。
Direct transfer of item semantics.
其中,函数f是为了将不同的embedding映射到同一个空间中。
Back transfer.
3.5 Model Optimization & Prediction
模型最终要学习的目标跟GraphSage中的方式一样,为了让相邻的节点更相近,让更远的节点也变得更远:
最终,预测的时候,我们只需要计算:
这两个概率就够了。