DAGNN: Demand-aware Graph Neural Networks for Session-based Recommendation

DAGNN:基于需求感知图神经网络的会话推荐

发表于:sigir(2022)

摘要

大多数现有的方法都是为了直观地从匿名会话数据中发现潜在的兴趣或偏好,忽略了如何从会话中估计潜在需求。为了解决上述问题,本文提出了一种需求感知图神经网络(DAGNN)。设计了一个需求建模组件来首先提取会话需求,并使用全局需求矩阵估计每个会话的潜在多个需求。然后,设计了需求感知图神经网络来提取会话需求图,以学习DemandWare项嵌入,为以后的推荐提供依据。

Introduction

大多数基于会话的建议在技术上设计为首先探索隐藏在每个会话中的用户偏好,然后最好地匹配目标项目和提取的偏好之间的特征表示。然而,这些现有方法忽视了一个事实,即意图/目的或偏好/兴趣本质上是由用户的需求驱动的,即用户浏览或购买一组不同类别的项目的背后原因。因此,本文旨在明确地为推荐下一个项目的潜在需求建模。图1中绘制了一个示例,以澄清不同方法之间的差异。从这个图中可以清楚地看出,意图/目的是指用户想要购买的特定类别的物品。也就是说,用户清楚地知道要购买什么样的物品,例如沙发。出于这个目的,用户可能会有自己的喜好,如“浅色或深色”和“舒适或功能性”。然而,用户可能想要翻新他们的公寓,因此他们可能会购买沙发以及其他类别的物品。这些类别组合在一起,表示决定因素或不确定需求。显然,应该使用语义相关的多个意图/目的来建模此类需求。此外,需求项之间的订单依赖性是推荐的一个重要因素。例如,在“装修”需求下,用户在选择“浅色”地板后,倾向于购买“浅色”桌子。

项目的类别通常被建模为用户的意图。在一个特定的意图下,用户可能会有自己的个人品味,这被建模为偏好或兴趣。我们提出的需求是对不同数量的意图进行建模。例如,需求“装饰”包括沙发、桌子、窗帘等。

为此,我们通过线性变换矩阵将项目类别投影到假定的潜在需求空间,该矩阵作为全局控制器来学习项目类别空间之间的语义关联。其次,根据项目的需求得分构建需求感知图,学习需求感知项目嵌入。并根据邻居消息传递的特点,将项目需求得分作为门控单元来管理项目间的消息传递。相互损失旨在进一步提高学习项目嵌入的质量,用于后续预测。

模型

基于需求感知的图神经网络模型,分为三个部分:(1)需求建模组件,(2)需求感知项目嵌入组件,(3)需求推动的推荐组件

给定一个会话,通过需求建模组件获得需求权重向量。然后,基于构建的需求图,通过gnn层学习需求感知项目嵌入。最后,生成带有最后一项嵌入的会话嵌入以供推荐

需求建模组件

用于对每个输入会话中可能包含的底层需求进行建模。

给定一个项目会话V以及类别序列C,首先将C分别投影到M个需求空间中,M是一个预定义的值。可以在需求空间中获取类别之间的相关性。

C为类别嵌入序列,D^m为第m个需求的表示

为了获取会话中包含的多个需求的表示,将生成的需求表示沿类别方向聚合到需求表示向量中。

d_i^mD^m 中第i列,表示为第m个需求空间中第i个项目的需求表示。d^m表示为当前会话的第m个需求表示

先分别计算s和v_t的类别查询向量,再分别计算会话s的需求分数z^m和目标项v_t的需求分数z_t^m

会话s的类别查询向量和需求分数
目标项v_t的查询向量和需求分数

其中,K为第m个需求空间中的查询矩阵,z^m的第i个z_i^m为第i类对第m类需求d^m的贡献。

需求感知项目嵌入组件

构造需求图以保持顺序依赖性:给定一个会话s=\left\{ (v_1,c_1),(v_2,c_2),...,(v_\vert s \vert ,c_\vert s \vert ) \right\} ,我们构建每个有向需求图G^m=(V, E^m)以保持项目间的顺序,其中V表示s中包含的所有不同的项目,E^m表示第m个需求空间下的G^m的边集。

首先根据项目在会话中的顺序构造有向实边。下图中,v1,v3,v4,v5属于相同的需求,但由于单跳邻居节点v2与节点v5不属于相同的需求,所以项目v5不可能从其两跳邻居v1,v4中获得相同需求下的信息。

为了获得相同需求下邻居节点的信息,虚线边的权重为:

需求感知的项目表示学习

受门控制机制和图形注意神经网络的启发,我们将目标节点的需求分数视为门单元,这是一个软门,用于控制从相邻节点到目标节点的消息传递。因此,对于图G^m=(V, E^m)中的每个节点vi,在l层的GNN上聚合相邻节点被定义为

N_{v_i}表示为实线便连接的vi的相邻节点,\hat{N_{v_i}} 为通过虚线边相连的vi的相邻节点。

v_i^m的项目嵌入更新为:

需求推动的推荐组件

在这个组件中,我们首先嵌入每个会话,然后预测目标项目是否被推荐的概率。

session嵌入:通过学习需求感知嵌入,通过图G^m=(V, E^m)的读出函数进一步学习需求感知会话表示s_{g}^m ,用软注意力机制来聚合所有节点嵌入。

有了项目嵌入和会话嵌入,需要将“本地”项目嵌入和“全局”会话嵌入之间的关系与项目类别和提取的会话需求之间的关系对齐。受对比学习[2,6,12]的启发,我们仔细设计了互信息损失,以最小化全局表示smg和局部项表示之间的差异,计算如下:

鉴别器D(,)是一个双线性函数,用于衡量某个项目是否属于当前会话。

预测层:为了预测目标项目是否被推荐,首先计算第m个需求下的会话嵌入s_g^m和目标项的嵌入v_{last}^m。然后用线性变换将这些嵌入连接在一起,形成预测层的输入:

目标项的推荐概率:

交叉熵损失:

模型的整体损失:

实验结果


Tafeng数据集上的结果
Tmall数据集上的结

总结

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容