Neural Graph Collaborative Filtering(NGCF)阅读笔记

NGCF在协同过滤中使用的图卷积神经网络GCN来使模型可以捕获在user-item交互图中多跳连接的item。

论文链接:https://doi.org/10.1145/3331184.3331267

代码链接:https://github.com/ xiangwang1223/neural_graph_collaborative_filtering

GCN在推荐领域的简要介绍

图的构建

  1. 节点(Nodes)

    • 用户(Users):每个用户是一个节点。
    • 项目(Items):每个推荐项目(如电影、商品等)也是一个节点。
  2. 边(Edges)

    • 用户-项目边(User-Item Edges):边代表用户与项目之间的交互,例如用户观看了一部电影、购买了一个商品或对一个项目进行了评分。
    • 边的权重可以反映交互的强度,例如评分值、购买频次等。

特征表示

  1. 用户特征(User Features)

    • 用户的属性信息,如年龄、性别、位置、兴趣等。
  2. 项目特征(Item Features)

    • 项目的属性信息,如类别、价格、描述等。

模型结构

  1. 输入层

    • 用户和项目的初始特征向量。
  2. 图卷积层(Graph Convolution Layers)

    • GCN通过消息传递和特征聚合的方式来更新节点的表示。每一层GCN通过以下步骤来实现:
      • 消息传递(Message Passing):每个用户节点从其连接的项目节点接收信息,反之亦然。
      • 特征聚合(Feature Aggregation):将接收到的邻居节点的特征与自身特征进行聚合。
      • 非线性变换(Non-linear Transformation):对聚合后的特征进行非线性变换(例如ReLU激活函数)。
  3. 多层GCN

    • 通常使用多层GCN,通过逐层聚合更远距离的节点信息,使得节点表示包含更多全局的信息。

训练过程

  1. 损失函数(Loss Function)

    • 常用的损失函数包括交叉熵损失(对于分类任务)或均方误差(对于评分预测)。
  2. 优化方法(Optimization Method)

    • 使用梯度下降法(如Adam优化器)来最小化损失函数,更新模型参数。

推荐生成

  1. 节点表示(Node Representations)

    • 经过多层GCN后的用户和项目节点的最终表示。
  2. 评分预测(Score Prediction)

    • 使用点积或其他相似度度量方法计算用户节点和项目节点之间的匹配度,得到推荐分数。
  3. 生成推荐(Generate Recommendations)

    • 根据推荐分数生成个性化的推荐列表,推荐最可能感兴趣的项目给用户。

NGCF核心原理

协同过滤

协同过滤(Collaborative Filtering)是推荐系统中最广泛使用的一种技术,旨在根据用户的历史行为数据(如评分、购买记录等)来进行个性化推荐。其主要思想是利用用户之间或项目之间的相似性来进行预测和推荐。

NGCF核心点

上图是NGCF开山之作中的图片,对于user和item,在其特征编码时,使用了GCN,若只使用一层GCN便可以获得于一跳邻居的交互信息,同理若使用n层GCN便可以获得于n跳邻居的交互信息。原始的编码为e_{u1}^{(0)}e_{i4}^{(0)},而经过一层GCN的e_{u1}^{(1)}则有公式

m_{u<-u}为用户本身的信息,而m_{u<-i}是user-item交互图中和user有交互的一跳邻居传来的信息,对应的也可以使用多层GCN,那么便可以结合多跳邻居的信息,都体现在公式最后的那个求和上面。然后通过公式

将其原本的信息和多层GCN得到的结果连接起来(也可以通过LSM,GRU,MAX POOLINNG,将其结合在一起)作为后序预测的编码。对于多跳邻居的结合如下图所示:

同样的如第一张图的NGCF的结构,其每一个user和item都通过了NGCF的框架对嵌入向量进行了改进,除去其本身的特征还加入了相邻和多跳邻居的信息,可以更好的改善推荐效果(对比于随机游走NGCF可以更好的完全捕获多跳邻居的信息)。

以上就是NGCF的创新点,其余的模型预测部分就是点积来预测。

这个方法是19年提出来的,比较经典,以上就是其核心部分,别的部分说的都比较省略,如果需要的话还是看原创文章,本篇文章只介绍其核心创新点。以上纯属个人理解,如有侵权请联系删除。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

forever0827

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值