Dual Policy Learning for Aggregation Optimization in

名称:Dual Policy Learning for Aggregation Optimization in

Graph Neural Network-based Recommender Systems

作者:Heesoo Jung

Sungkyunkwan University
Sangpil Kim
Korea University
Hogun Park∗
Sungkyunkwan University

摘要:

基于图神经网络的推荐系统可以通过用户-商品交互信息聚合特征从而捕获到高阶的关系。近年来,知识图谱也被应用于用户-商品的交互图中,以提供更加丰富的信息,这可以解决冷启动问题,并且可以使得图神经网络中的聚合更具可解释性。由于用户和商品的异质性,应该对这两种图使用不同的聚合策略。开发一种高效的聚合策略应用于跨多个神经网络的系统仍是一个挑战。
本文作者提出的是一种基于强化学的信息传递框架,命名为:DPAO(Dual Policy framework for Aggregation Optimization))。双 指的应该就是分别在用户图上和商品图上进行计算,对不同情况采用不同的gnn算法和聚合层数。

介绍:

目前许多基于gnnr的方法在固定GNN层数和使用固定聚合策略方面存在局限性,这限制了系统学习不同结构角色和确定更准确的子图聚合范围的能力。因为不同实体之间可能存在关系,因此多跳的节点也能够为当前节点提供信息。但是它们之间的聚合策略不应该直接设置相同,而应该有不同的策略,或者是一个可学习的关系。
然后他为了证明这一点做了一个实验,通过改变用户侧和物品侧gnn的层数对LightGCN进行了比较,在MovieLens1M数据集中,采样用户(user 1)与三个交互项目(项目a、项目B和项目C)的匹配分数如图所示。匹配的分数显示了预测正确物品的可能性,颜色越亮表示得分越高。

在这里插入图片描述

当用户1和物品A分别经过1层gnn时,预测的得分最高
当用户1和物品B分别经过4层gnn时,预测的得分最高
当用户1和物品C分别经过1层和3层gnn时,预测的得分最高

基于此提出的DPAO (Dual Policy framework for Aggregation Optimization)。DPAO将每个用户和项目的聚合优化问题重新表述为马尔可夫决策过程(MDP),并开发了两个Deep-Q-Network (DQN)[15]模型来学习Dual policy。每个DQN模型为用户或项目搜索有效的聚合策略。我们的MDP的奖励是使用项目抽样和用户抽样技术获得的。

框架

在这里插入图片描述

预处理:定义一个用户商品的二部图;包括用户集U和商品集V,
用户的隐式反馈O+(u,v+),表示u对商品v是一个正反馈。定义一个I作为交互集。交互集中分为两种数据I(u)={},集合里面是用户u产生正反馈的商品集合;I(v)={},同理。对于加入了知识图谱的系统,三元组(h,r,t)分别表示实体h与实体t之间的关系r。
将这种关系加入u-i的二部图中,构成一个合并了知识图谱的协作知识图。
获得嵌入;首先初始化u、v特征向量,然后用邻居节点来进行LightGCN来聚合得到特征嵌入
在这里插入图片描述
在这里插入图片描述

预测得分,计算损失,反向传播:

在这里插入图片描述
在这里插入图片描述

介绍了一下马可夫决策过程,用以进行强化学习。
DQN是强化学习的一种模型,它使用神经网络去估计一个Q值,这个值是用给出的t时刻状态s_t和动作a_t 来计算得出,其结果表示下一个动作的概率,在该论文里提到的具体指的是跳数。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

聚合st的at跳的邻居;
在这里插入图片描述

聚合正样本对的邻居
在这里插入图片描述

聚合负样本对邻居
在这里插入图片描述

BPR损失作为奖励值reward
在这里插入图片描述

随机抽一个用户s_0^u ,I(s_0u)中随机抽一个s_0v,\epsilon=1-z/Z,也就是说会不断变小,这个是抽样的概率,初始化两个空的列表L_u、L_v
循环\kappa次:
跟据概率є随机的抽出一个a_tu、a_tv,如果概率为0,则a_t^u= argmax_a𝑄𝑢 (s_t^u,a), a_t^v= argmax_a𝑄v (s_t^v,a)
\left(s_tu,a_tu\right) 存入列表L_u
s_{t+1}^u = NextState(𝑠𝑡, 𝑎𝑡, G),其实就是在st节点的at跳子图中随机抽一个节点作为下一个状态
当t大于预热迭代参数β时,通过Reward()计算当前时间t的u的奖励;具体说就是找到st的交互节点,这应该是一个商品的集合,在Lv中找找到这些节点和它们的跳数a,这个集合作为正样本;找到Lv中与st无交互的节点和他们的跳数a,在这个集合中随机选出跟正样本相同数量的样本作为负样本。用st的at子图来做gnn聚合,用正样本子集做gnn聚合,用负样本子集做gnn聚合,三个gnn共享参数,最终得到st的三个特征表示:e_{st}\ast、e_tp、e_t^n;然后用这个公式来计算reward:
在这里插入图片描述

把s_tu、a_tu、r_tu、s_{t+1}u 保存进内存
\left(s_tv,a_tu\right) 存入列表L_v
s_{t+1}^v = NextState(𝑠𝑡, 𝑎𝑡, G),其实就是在st节点的at跳子图中随机抽一个节点作为下一个状态
当t大于预热迭代参数β时,通过Reward()计算当前时间t的u的奖励;具体说就是找到st的交互节点,这应该是一个用户的集合,在Lu中找找到这些节点和它们的跳数a,这个集合作为正样本;找到Lv中与st无交互的节点和他们的跳数a,在这个集合中随机选出跟正样本相同数量的样本作为负样本。用st的at子图来做gnn聚合,用正样本子集做gnn聚合,用负样本子集做gnn聚合,三个gnn共享参数,最终得到st的三个特征表示:e_{st}\ast、e_tp、e_t^n;然后用这个公式来计算reward:

把s_tv、a_tv、r_tv、s_{t+1}v 保存进内存

结果在这里插入图片描述

在有知识图谱的数据中,3跳和四跳的数据明显增加了,原因可能是知识图谱聚合进去后,许多多跳关联的节点之间的关系被添加了,带来了更多的数据样本;
这说明这个方法在数据集较少时可能会有比较好的效果。

\theta_{gnn} 指的是选择的gnn的层数,按照摘要里提到的,她可能也可以表示不同的gnn类型。
模型训练完成后,得到三部分参数:\theta_u、\theta_v、\theta_{gnn}
在测试节点时,输入节点k,跟据\theta_u、\theta_v的DQN得到概率最大的下一跳a_{t+1},以此构建k关于a_{t+1}的子图,然后根据\theta_{gnn}聚合信息得到表示。
对于冷启动用户——即那些与系统交互较少的用户——DPAO模型通过自适应选择聚合层数来提升性能,尤其是在与用户交互较少的情况下。这表明对于冷启动用户,DPAO模型可能会自适应地选择较少的聚合层数以优化性能

  • 19
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值