前言
- AAAI 2019,针对基于session的推荐任务,设计的基于GNN的推荐算法。
Session-based Recommendation with Graph Neural Networks - Yanqiao ZHU (sxkdz.github.io)
摘要
基于会话的推荐问题旨在基于匿名会话预测来用户操作。之前的方法将会话session建模为一个序列,并建模物品表示和用户表征以生成推荐。但它们不足以在session中获得准确的用户向量,忽略了物品的复杂转换(complex transition)。
为了获得准确的物品嵌入,并考虑到物品的复杂转换,我们提出了一种新的方法,即基于会话的图形神经网络推荐,SR-GNN。
session序列被建模为图结构化数据,基于session图,GNN 可以捕获复杂的物品关联,这是以往传统的序列方法难以揭示的。
引言
大多数现有的推荐系统都假定用户画像和历史行为会不断地被记录。但是,在许多服务中,用户标识可能是未知的,只有正在进行的会话期间(session)的用户行为历史记录可用。
因此,在一个会话中建立有限行为模型并生成相应的推荐是非常重要的(短序列推荐)。
传统的推荐方法依赖于足够的用户-项目交互,在这种情况下难以产生准确的结果。
由于工业价值比较高,session-based当前研究很多:基于马尔可夫链:基于前一个物品来预测下一个点击行为。这种方法具有比较强独立性假设,过去分量的独立组合限制了预测精度。
近年来主要研究关注于实用RNN来处理session序列,这些模型已经取得不错效果,但还存在一些局限:
会话中的用户行为比较少,这些方法难以学到高质量的用户表征。通常,通过RNN获取的隐向量被视为用户表示,基于这些表示生成推荐。然而,在基于会话的推荐系统中,会话大多是匿名的,且数量大,单个会话中的用户行为非常有限的。很难准确地建模每个会话中用户表征 。
其次,以往的研究表明,物品迁移模式(Item transitions)非常重要,可以作为基于会话的推荐中的局部因素使用,但这些方法总是模拟连续物品之间的单向转换,忽略上下文之间的转换,即会话中的其他物品(序列建模的思想)。因此,这些方法常常忽略了距离较远的物品之间的复杂关系。
项目代码:https://github.com/CRIPAC-DIG/SR-GNN.
模型方法
1. 基础定义
定义为物品集,匿名会话序列按照时序表示为,session-based推荐就是给定序列s,预测下一个点击
2. 构建图
由于不同的会话序列可能存在共现物品,构建物品图时定义两个节点的边为有权边,边的权重定义为:两个节点的共现次数 / 头节点的出度(outdegree),是正则化的权重形式。
通过GNN来学习这样的会话图中的每个节点的嵌入,对于一个会话而言,每个session利用会话内节点嵌入来构成会话表征。
3. 学习session graph中的节点嵌入
GNN能够自动提取会话图的特征,并考虑到节点之间存在丰富的连接,因此非常适合于基于会话的推荐。文中采用了Gated GNN的模型进行特征处理,将循环门控单元和基础的GNN结合起来,计算形式如下:对当前session的所在子图进行处理4. 生成会话嵌入
之前的方法总是假设每个会话都存在唯一的用户潜在表示(distinct latent representation)。相反,SR-GNN 方法并没有对会话表征做出任何假设,而是由该会话中涉及的节点直接表示。为了更好地预测用户的下一次点击,模型将当前会话的长期偏好和当前兴趣结合起来,并使用这种结合的嵌入作为最终的会话表示。对于会话,当前兴趣可以取最后一个点击的物品,。
当前session的全局表征,即长期兴趣可以利用soft-attention来计算,即序列中每个节点与做计算:
5. 生成推荐和模型训练
候选物品和会话表征进行点积计算,并通过softmax对所有候选物品得分进行归一化,得到最后的推荐分值模型优化使用BPTT(Back-Propagation Through Time)进行优化训练
实验结果
END
本人简书所有文章均为原创,欢迎转载,请注明文章出处 。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问本人简书主页查看最新信息https://www.jianshu.com/u/40d14973d97c