文章目录

  • Motivation
  • Contribution
  • Solution
    • encoder
      • 使用交互物品的特征
      • 引入边信息
    • decoder
    • 训练方法
    • 权重分配
  • Evaluation
  • Summarization

本文首发于公众号:code路漫漫,欢迎关注

一篇17年的文章,图推荐里面常见的baseline

Motivation

两种类型的推荐系统

  1. content based:从用户和物品的特征入手
  2. 协同过滤:从交互历史入手

本文的idea是把协同过滤技术应用在图上
用户物品的交互历史可以自然而然的表示成二部图上的链接,图上的结点分别是用户和物品。转换为图后,预测评分任务就变为预测结点之间的链接。

Contribution

提出了GC-MC框架(a graph-based auto-encoder framework for matrix completion),在图上卷积,在六个数据集上达到了SOTA的效果

Solution

看上图可以知道,GCN技术的几个问题

  1. 如何更有效地生成用户和物品的表征
  2. side information 如何提高model效果
  3. encoder和decoder的实现细节

下面一一介绍

encoder

使用交互物品的特征

用户和物品的处理方式相同,接下来只介绍生成用户表征的处理方式

encoder可以写成 Z = f ( X , A ) Z=f(X,A) Z=f(X,A)的形式,将 N X D NXD NXD维的特征矩阵 X X X和图邻接矩阵 A A A作为输入,得到 N X E NXE NXE维的embedding矩阵 Z Z Z
前面说的encoder可以生成用户和物品的表示,那么有公式 [ U , V ] = f ( X , A ) [U,V] =f(X,A) [U,V]=f(X,A),其中U是用户的表示,V是物品的表征

考虑到评分类型R可能由多个类型组成,我们对每个类型的评分单独抽取出来做一个矩阵,那么 Z Z Z的表示形式变为
[ U , V ] = f ( X , M 1 , . . . , M r ) [U,V] = f(X,M_1,...,M_r) [U,V]=f(X,M1,...,Mr),这里 M r M_r Mr是用户i评分r的交互矩阵,交互过的值为1,没交互过的值为0

这也是论文的一个创新点,之前的encoder直接把用户u的交互矩阵M传进去,而这里先把M按照评分数量拆分成多个0-1矩阵,然后再传入

用户可以被它交互过的物品表示

这里j表示物品j,i是用户i,c是常量,xj是物品j的feature,Wr是特定的评分矩阵
当我们计算出u之后,使用公式2计算用户i的中间输出(也就是dense layer的输出) h i h_i hi

最后传给公式3就能得到用户的最终表示 u i u_i ui

公式3是encoder的雏形,这里只用了物品的feature,稍后我们还会看到它的改进形式

引入边信息

side information可以用来增强用户的表示,但是当边信息本身含有的信息量不足的时候,直接将其和用户特征一起输入到网络中会导致模型性能下降
在论文中,side information使用单独的通道处理(separate processing channel)
考虑用户i的表示生成

其中 u i = σ ( W h i ) u_i = \sigma(Wh_i) ui=σ(Whi)部分等同于公式3, x i f x_i^f xif是用户i本身的特征, b b b代表bias
那么最终的用户表征由两部分组成

  1. 交互物品的feature
  2. 本身的feature,这里称为边信息

至此encoder的表示如下:

decoder

decoder的作用是接受用户、物品的表征用于生成重构矩阵,然后把重构矩阵和真实的结果矩阵比较计算Loss,使用梯度下降训练整个model

这里decoder计算方法就是公式4和公式5所述

训练方法

权重分配

这一块论文讲得不是很清楚

之前提到,论文把不同类型的评分拆分成单独的矩阵处理,然而并不是所有用户和物品都拥有相同数量的评分。这会导致某些参数的优化次数非常少
对于encoder的权重计算方法,使用ordinal weight sharing策略

T s T_s Ts是什么论文里没说

对于decoder的权重计算方法,使用basis weight sharing策略


模型的整体框架

Evaluation

数据集

score:

使用边信息的效果

Summarization

本文在encoder和decoder上进行改进

  1. 对评分矩阵进行拆分
  2. 使用单独通道处理边信息(只使用交互历史是协同过滤思想,论文中还引入和物品、用户本身的feature,这被称为边信息)
  3. 使用特殊的权重计算方法

论文的code:https://github.com/riannevdberg/gc-mc

Graph Convolutional Matrix Completion,GC-MC相关推荐

  1. Graph Convolutional Matrix Completion

    Graph Convolutional Matrix Completion 该篇文章提出了基于图卷积的矩阵补全方法. 图卷积编码器 文章提出了一种能为每种边的类型分配单独的处理过程(简而言之,不同类型 ...

  2. Graph Convolutional Neural Networks for Web-Scale Recommender Systems(用于Web级推荐系统的图形卷积神经网络)

    Graph Convolutional Neural Networks for Web-Scale Recommender Systems 用于Web级推荐系统的图形卷积神经网络 ABSTRACT R ...

  3. 论文笔记:Stochastic Weight Completion for Road Networks using Graph Convolutional Networks

    ICDE2019 pytorch 笔记: 复现论文 Stochastic Weight Completion for Road Networks using Graph Convolutional N ...

  4. GCN (Graph Convolutional Network) 图卷积网络

    这几个同时看一下,感觉能理解不少: B站视频:https://www.bilibili.com/video/BV1ta4y1t7EK GCN论文原文和代码:https://github.com/tki ...

  5. Structured Sequence Modeling With Graph Convolutional Recurrent Networks

    https://davidham3.github.io/blog/2018/07/23/structured-sequence-modeling-with-graph-convolutional-re ...

  6. POI推荐文献阅读笔记3:Predicting Human Mobility via Graph Convolutional Dual-attentive Networks

    POI推荐文献阅读笔记3: Predicting Human Mobility via Graph Convolutional Dual-attentive Networks 1.摘要 2.贡献 3. ...

  7. 论文阅读 Semantic Graph Convolutional Networks for 3D Human Pose Regression

    Semantic Graph Convolutional Networks for 3D Human Pose Regression 使用语义图卷积网络对三维人体姿态进行回归 Abstract ​ 在 ...

  8. [LGCN论文笔记]:Large-Scale Learnable Graph Convolutional Networks

    文章目录 Abstract 补充:如何理解 inductive learning 与 transductive learning? 1. Introduction 2. Related Work 图卷 ...

  9. pytorch 笔记: 复现论文 Stochastic Weight Completion for Road Networks using Graph Convolutional Networks

    1 理论部分 论文笔记:Stochastic Weight Completion for Road Networks using Graph Convolutional Networks_UQI-LI ...

最新文章

  1. dataframe,python,numpy 问题索引1
  2. 特征选择算法java实现_relief算法特征选择
  3. python子进程关闭fd_python – 捕获崩溃的子进程的“分段错误”...
  4. maven的仓库、生命周期与插件
  5. 设计模式 责任链模式
  6. springcloud使用feign进行远程服务调用
  7. python tkinter画笑脸_tkinter绘制红绿灯图案
  8. SCOM 2012 SP1安装过程
  9. 亭台六七座,八九十枝花——python正则表达
  10. 应聘计算机程序员英文,计算机程序员英文简历模板
  11. mysql 共享锁(读写锁) 修改数据问题(update,insert)(LOCK IN SHARE MODE)
  12. LiveQing云平台直播点播流媒体服务-产品介绍及相关资源
  13. XML的优势及应用领域
  14. 2015 kitti 数据集_KITTI 数据集
  15. 数据堂亮相GMIC2015全球移动互联网大会
  16. CaEGCN: Cross-Attention Fusion based Enhanced Graph Convolutional Network for Clustering 2021
  17. 微信服务号开发之jssdk-微信充值、支付见解
  18. ubuntu(18.04LTS)切换 tty终端模式 和图形桌面
  19. 【python】文本转换为语音——pyttsx3模块的使用
  20. MongoDB入门(1)- MongoDB简介

热门文章

  1. linux操作系统安装自定义分区,CentOS linux操作系统安装图文教程
  2. 智能分析网关微信端告警消息推送的开发流程
  3. 光致变色染料的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  4. 张一鸣应该接过张近东的枪
  5. php adc类,Maxim:六种主流ADC架构的比较(SAR,Sigma-Delta,Pipelined等)
  6. 全局安装vue-cli以及初始化
  7. [Java实验 5] 异常处理
  8. 信息系统项目管理师学习笔记5——信息化与信息系统5
  9. 如何将Mac设置为热点?
  10. JAVA毕业设计HTML5企业员工管理系统计算机源码+lw文档+系统+调试部署+数据库