Dual Channel Hypergraph Collaborative Filtering 阅读笔记
KDD 2020
Shuyi Ji, Yifan Feng, Rongrong Ji, Xibin Zhao, Wanwan Tang, Yue Gao.
前置知识
-
超图
超图是一种广义上的图,主要特点是一条边可以连接任意数量的顶点
形式上,超图H是一个集合组 G=(V,E) : V为顶点,E为超边,E是V的非空子集的集合。
切入点
方法
作者提出了一个双通道超图协同过滤框架DHCF。

首先采用分治思想提出了双通道的学习策略,分别在User-item两个子超图上学习embedding.
然后利用JHConv方法来在超图上传播带有高阶关联信息的embedding
-
超图建模
-
关联矩阵
H∈{0,1}∣V∣×∣E∣
h(v,e)={10 if v∈e if v∈/e
-
度
一个点有多少个边
一个边上有多少个点
-
超边
解释性:把有相似行为但没有直接关系的User关联起来,通过这种方式来表示高阶关联。
-
高阶关联
-
Item的K阶可达邻居。
Item A — User1 — ItemB — User2 — Item C
如果链中两个Item之间的User小于K,就称这两个Item为K阶可达邻居。
-
Item的K阶可达User。
如果User和Item B 有直接交互,且Item B 是item A 的K阶邻居,则该User是Item A 的K阶可达User。

-
超图定义
Item的K阶邻居
Aik=min(1,power(H⊤⋅H,k))
Item的K阶可达User
HBuk=H⋅Aik−1
考虑一阶和二阶可达的超图
⎩⎨⎧Hu=f(EBu1,EBu2)Hi=f(EBi1,EBi2)=HBu1∥HBu2=HBi1∥HBi2
矩阵形式定义
Hu=A∥(A(A⊤A))
Hi=A⊤∥(A⊤(AA⊤))
其中A是传统User-item二部图的邻接矩阵,A∈{0,1}N×M
高阶关联的主要信息包含在A(A⊤A) 中,也就是实现了user-item-user-item这一作用链(二阶关联)的建模。
-
超图卷积
X(l+1)=σ(Dv−1/2HDe−1H⊤Dv−1/2X(l)Θ(l))
其中度矩阵作用类似GCN中的度矩阵,起到归一化的作用。
主要部分是H HT 表示信息的传播路径:顶点-超边-顶点,实现了顶点间的高阶信息交互。
-
DHCF框架

-
高阶消息传递
{MuMi=HConv(Eu,Hu)=HConv(Ei,Hi)
Mu和Mi分别从他们的高阶邻域学习了复杂的关联关系。
HConv具体实现为:跳跃超图卷积
X(l+1)=σ(Dv−1/2HDe−1H⊤Dv−1/2X(l)Θ(l)+X(l))
- 同时考虑了自身信息和邻居信息
- 借鉴了Resnet的思想,使得网络更容易优化。
-
联合消息更新
{Eu′Ei′=JU(Mu,Mi)=JU(Mi,Mu)
JU可以是任意神经网络,用第二个参数更新第一个参数。作者采用MLP。
-
优化方法
Loss:
L=−∑(u,i+,i−)∈T−lnσ(r^ui+−r^ui−)+λ∥Θ∥22
BPRLoss
实验
数据集:

实验结果:

结果分析:
方法 |
分析 |
GC-MC |
只用了一层GCN,只考虑一阶邻居。丢弃了当前节点的信息,鲁棒性较差。 |
PinSage |
引入高阶连通性,保留当前节点和邻居信息 |
NGCF |
节点更新策略更复杂,具有双重可训练参数,数据小的时候,容易出现过拟合。 |
DHCF |
明确建模了高阶关联,减少了模型参数 |
感悟
-
找论文的能力得到了进一步提升,先前缺少追踪最前沿成果的经验,找论文原文花费了不少时间。
记录下经验:会议官网,预印本平台,ResearchGate,搜索引擎都无果的情况下,可以按照作者的线索来寻找。本文是通过作者的实验室主页找到的,如果作者的个人主页和实验室主页都找不到的话,也可以考虑发邮件向作者请求PDF档。
本文连接 ,感谢作者!
-
传统图卷积的本意是在同构图中提取信息,近年来的方法一般是通过拼接邻接矩阵和其转置为大矩阵的方法,把User-item看做同种结构,一起学embedding。如果要考虑多种关联,传统思路一般是增加GCN的层数,并融合在一起。但是增加网络层数可能会带来训练过程中的梯度消失等问题。
作者通过超图的概念,一举两得,同时达到了分开学习更好Embedding 和 建模高阶关联的作用。
-
超图中如何表示高阶关联,一开始比较模糊,自建了一个小网络跟着论文一步步推导之后才逐渐明了。
-
类似NCF,给出了超图上做协同过滤的框架,其中超图的定义,超图卷积,联合消息更新都可以自定义。提出框架的工作一般会比单独的模型影响力大,后续写作过程中可以想办法把工作提炼升华成框架的形式。
-
分治思想比较重要,往往让一套embedding去拟合两个目标,如本文中提到同一套embedding同时拟合user和item,NCF中提到的同一套embedding同时拟合MF和MLP,效果都不如分别训练embedding去拟合各自的目标。