数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 MCMC 采样
- 机器学习方法概论
统计学习
深度学习
- 深度学习简介
- 深度前馈网络
- 反向传播算法
- 正则化
- 深度学习中的最优化问题
- 卷积神经网络
- CNN:图像分类
- 循环神经网络 RNN
- Transformer
- 一、Transformer [2017]
- 二、Universal Transformer [2018]
- 三、Transformer-XL [2019]
- 四、GPT1 [2018]
- 五、GPT2 [2019]
- 六、GPT3 [2020]
- 七、OPT [2022]
- 八、BERT [2018]
- 九、XLNet [2019]
- 十、RoBERTa [2019]
- 十一、ERNIE 1.0 [2019]
- 十二、ERNIE 2.0 [2019]
- 十三、ERNIE 3.0 [2021]
- 十四、ERNIE-Huawei [2019]
- 十五、MT-DNN [2019]
- 十六、BART [2019]
- 十七、mBART [2020]
- 十八、SpanBERT [2019]
- 十九、ALBERT [2019]
- 二十、UniLM [2019]
- 二十一、MASS [2019]
- 二十二、MacBERT [2019]
- 二十三、Fine-Tuning Language Models from Human Preferences [2019]
- 二十四 Learning to summarize from human feedback [2020]
- 二十五、InstructGPT [2022]
- 二十六、T5 [2020]
- 二十七、mT5 [2020]
- 二十八、ExT5 [2021]
- 二十九、Muppet [2021]
- 三十、Self-Attention with Relative Position Representations [2018]
- 三十一、USE [2018]
- 三十二、Sentence-BERT [2019]
- 三十三、SimCSE [2021]
- 三十四、BERT-Flow [2020]
- 三十五、BERT-Whitening [2021]
- 三十六、Comparing the Geometry of BERT, ELMo, and GPT-2 Embeddings [2019]
- 三十七、CERT [2020]
- 三十八、DeCLUTR [2020]
- 三十九、CLEAR [2020]
- 四十、ConSERT [2021]
- 四十一、Sentence-T5 [2021]
- 四十二、ULMFiT [2018]
- 四十三、Scaling Laws for Neural Language Models [2020]
- 四十四、Chinchilla [2022]
- 四十七、GLM-130B [2022]
- 四十八、GPT-NeoX-20B [2022]
- 四十九、Bloom [2022]
- 五十、PaLM [2022] (粗读)
- 五十一、PaLM2 [2023](粗读)
- 五十二、Self-Instruct [2022]
- 句子向量
- 词向量
- 传统CTR 预估模型
- CTR 预估模型
- 一、DSSM [2013]
- 二、FNN [2016]
- 三、PNN [2016]
- 四、DeepCrossing [2016]
- 五、Wide 和 Deep [2016]
- 六、DCN [2017]
- 七、DeepFM [2017]
- 八、NFM [2017]
- 九、AFM [2017]
- 十、xDeepFM [2018]
- 十一、ESMM [2018]
- 十二、DIN [2017]
- 十三、DIEN [2019]
- 十四、DSIN [2019]
- 十五、DICM [2017]
- 十六、DeepMCP [2019]
- 十七、MIMN [2019]
- 十八、DMR [2020]
- 十九、MiNet [2020]
- 二十、DSTN [2019]
- 二十一、BST [2019]
- 二十二、SIM [2020]
- 二十三、ESM2 [2019]
- 二十四、MV-DNN [2015]
- 二十五、CAN [2020]
- 二十六、AutoInt [2018]
- 二十七、Fi-GNN [2019]
- 二十八、FwFM [2018]
- 二十九、FM2 [2021]
- 三十、FiBiNET [2019]
- 三十一、AutoFIS [2020]
- 三十三、AFN [2020]
- 三十四、FGCNN [2019]
- 三十五、AutoCross [2019]
- 三十六、InterHAt [2020]
- 三十七、xDeepInt [2023]
- 三十九、AutoDis [2021]
- 四十、MDE [2020]
- 四十一、NIS [2020]
- 四十二、AutoEmb [2020]
- 四十三、AutoDim [2021]
- 四十四、PEP [2021]
- 四十五、DeepLight [2021]
- 图的表达
- 一、DeepWalk [2014]
- 二、LINE [2015]
- 三、GraRep [2015]
- 四、TADW [2015]
- 五、DNGR [2016]
- 六、Node2Vec [2016]
- 七、WALKLETS [2016]
- 八、SDNE [2016]
- 九、CANE [2017]
- 十、EOE [2017]
- 十一、metapath2vec [2017]
- 十二、GraphGAN [2018]
- 十三、struc2vec [2017]
- 十四、GraphWave [2018]
- 十五、NetMF [2017]
- 十六、NetSMF [2019]
- 十七、PTE [2015]
- 十八、HNE [2015]
- 十九、AANE [2017]
- 二十、LANE [2017]
- 二十一、MVE [2017]
- 二十二、PMNE [2017]
- 二十三、ANRL [2018]
- 二十四、DANE [2018]
- 二十五、HERec [2018]
- 二十六、GATNE [2019]
- 二十七、MNE [2018]
- 二十八、MVN2VEC [2018]
- 二十九、SNE [2018]
- 三十、ProNE [2019]
- Graph Embedding 综述
- 图神经网络
- 一、GNN [2009]
- 二、Spectral Networks 和 Deep Locally Connected Networks [2013]
- 三、Fast Localized Spectral Filtering On Graph [2016]
- 四、GCN [2016]
- 五、神经图指纹 [2015]
- 六、GGS-NN [2016]
- 七、PATCHY-SAN [2016]
- 八、GraphSAGE [2017]
- 九、GAT [2017]
- 十、R-GCN [2017]
- 十一、 AGCN [2018]
- 十二、FastGCN [2018]
- 十三、PinSage [2018]
- 十四、GCMC [2017]
- 十五、JK-Net [2018]
- 十六、PPNP [2018]
- 十七、VRGCN [2017]
- 十八、ClusterGCN [2019]
- 十九、LDS-GNN [2019]
- 二十、DIAL-GNN [2019]
- 二十一、HAN [2019]
- 二十二、HetGNN [2019]
- 二十三、HGT [2020]
- 二十四、GPT-GNN [2020]
- 二十五、Geom-GCN [2020]
- 二十六、Graph Network [2018]
- 二十七、GIN [2019]
- 二十八、MPNN [2017]
- 二十九、UniMP [2020]
- 三十、Correct and Smooth [2020]
- 三十一、LGCN [2018]
- 三十二、DGCNN [2018]
- 三十三、AS-GCN
- 三十四、DGI [2018]
- 三十五、DIFFPOLL [2018]
- 三十六、DCNN [2016]
- 三十七、IN [2016]
- 图神经网络 2
- 图神经网络 3
- 推荐算法(传统方法)
- 一、Tapestry [1992]
- 二、GroupLens [1994]
- 三、ItemBased CF [2001]
- 四、Amazon I-2-I CF [2003]
- 五、Slope One Rating-Based CF [2005]
- 六、Bipartite Network Projection [2007]
- 七、Implicit Feedback CF [2008]
- 八、PMF [2008]
- 九、SVD++ [2008]
- 十、MMMF 扩展 [2008]
- 十一、OCCF [2008]
- 十二、BPR [2009]
- 十三、MF for RS [2009]
- 十四、 Netflix BellKor Solution [2009]
- 推荐算法(神经网络方法 1)
- 一、MIND [2019](用于召回)
- 二、DNN For YouTube [2016]
- 三、Recommending What Video to Watch Next [2019]
- 四、ESAM [2020]
- 五、Facebook Embedding Based Retrieval [2020](用于检索)
- 六、Airbnb Search Ranking [2018]
- 七、MOBIUS [2019](用于召回)
- 八、TDM [2018](用于检索)
- 九、DR [2020](用于检索)
- 十、JTM [2019](用于检索)
- 十一、Pinterest Recommender System [2017]
- 十二、DLRM [2019]
- 十三、Applying Deep Learning To Airbnb Search [2018]
- 十四、Improving Deep Learning For Airbnb Search [2020]
- 十五、HOP-Rec [2018]
- 十六、NCF [2017]
- 十七、NGCF [2019]
- 十八、LightGCN [2020]
- 十九、Sampling-Bias-Corrected Neural Modeling [2019](检索)
- 二十、EGES [2018](Matching 阶段)
- 二十一、SDM [2019](Matching 阶段)
- 二十二、COLD [2020 ] (Pre-Ranking 模型)
- 二十三、ComiRec [2020](https://www.wenjiangs.com/doc/0b4e1736-ac78)
- 二十四、EdgeRec [2020]
- 二十五、DPSR [2020](检索)
- 二十六、PDN [2021](mathcing)
- 二十七、时空周期兴趣学习网络ST-PIL [2021]
- 推荐算法之序列推荐
- 一、FPMC [2010]
- 二、GRU4Rec [2015]
- 三、HRM [2015]
- 四、DREAM [2016]
- 五、Improved GRU4Rec [2016]
- 六、NARM [2017]
- 七、HRNN [2017]
- 八、RRN [2017]
- 九、Caser [2018]
- 十、p-RNN [2016]
- 十一、GRU4Rec Top-k Gains [2018]
- 十二、SASRec [2018]
- 十三、RUM [2018]
- 十四、SHAN [2018]
- 十五、Phased LSTM [2016]
- 十六、Time-LSTM [2017]
- 十七、STAMP [2018]
- 十八、Latent Cross [2018]
- 十九、CSRM [2019]
- 二十、SR-GNN [2019]
- 二十一、GC-SAN [2019]
- 二十二、BERT4Rec [2019]
- 二十三、MCPRN [2019]
- 二十四、RepeatNet [2019]
- 二十五、LINet(2019)
- 二十六、NextItNet [2019]
- 二十七、GCE-GNN [2020]
- 二十八、LESSR [2020]
- 二十九、HyperRec [2020]
- 三十、DHCN [2021]
- 三十一、TiSASRec [2020]
- 推荐算法(综述)
- 多任务学习
- 系统架构
- 实践方法论
- 深度强化学习 1
- 自动代码生成
工具
- CRF
- lightgbm
- xgboost
- scikit-learn
- spark
- numpy
- matplotlib
- pandas
- huggingface_transformer
- 一、Tokenizer
- 二、Datasets
- 三、Model
- 四、Trainer
- 五、Evaluator
- 六、Pipeline
- 七、Accelerate
- 八、Autoclass
- 九、应用
- 十、Gradio
Scala
- 环境搭建
- 基础知识
- 函数
- 类
- 样例类和模式匹配
- 测试和注解
- 集合 collection(一)
- 集合collection(二)
- 集成 Java
- 并发
十七、NGCF [2019]
个性化推荐无处不在,已广泛应用于电商、广告、社交媒体等众多在线服务。个性化推荐的核心是根据购买和点击等历史交互
historical interaction
来估计用户接受某个item
的可能性。协同过滤
collaborative filtering: CF
通过假设行为相似的用户对item
表现出相似的偏好来解决这个问题。为了实现这个假设,一个常见的范式paradigm
是参数化parameterize
用户和item
以重建历史交互,并根据参数parameter
来预估用户偏好。一般而言,可学习的
CF
模型有两个关键组件key component
:embedding
:将用户和item
转换为向量化的representation
。- 交互建模:基于
embedding
重建历史交互。
例如:
- 矩阵分解
matrix factorization: MF
直接将user id / item id
映射到embedding
向量,并使用内积对user-item
交互进行建模。 - 协同深度学习
collaborative deep learning
通过整合从item
的丰富的辅助信息side information
中学到的deep representation
来扩展MF embedding function
。 - 神经协同过滤模型
neural collaborative filtering model
用非线性神经网络代替MF
的内积交互函数。 translation-based CF model
使用欧氏距离作为交互函数。
尽管这些方法很有效,但是我们认为它们不足以为
CF
产生令人满意的embedding
。关键原因是embedding
函数缺乏关键协同信号collaborative signal
的显式编码,这种编码隐藏在user-item
交互中从而揭示用户(或item
)之间的行为相似性。更具体而言,大多数现有方法仅使用描述性特征(例如ID
和属性)来构建embedding
函数,而没有考虑user-item
交互。因此,由此产生的embedding
可能不足以捕获协同过滤效果effect
。user-item
交互仅用于定义模型训练的目标函数。因此,当embedding
不足以捕获CF
时,这些方法必须依靠交互函数来弥补次优suboptimal
的embedding
的不足。虽然将
user-item
交互集成到embedding
函数中在直观上很有用,但是要做好并非易事。特别是在实际应用中,user-item
交互的规模很容易达到数百万甚至更大,这使得提取所需要的的协同信号变得困难。在论文《Neural Graph Collaborative Filtering》
中,作者通过利用来自user-item
交互的高阶连通性high-order connectivity
来应对这一挑战,这是一种在交互图结构interaction graph structure
中编码协同信号的自然方式。下图说明了高阶连通性的概念。待推荐的用户是 $ u_1 $ ,在
user-item
交互图的左子图中用双圆圈来标记。右子图显示了从 $ u_1 $ 扩展的树结构。高阶连通性表示从任何节点到达 $ u_1 $ 的、路径长度 $ l \gt 1 $ 的路径。这种高阶连通性通常包含丰富的语义,而这些语义携带了协同信号。例如:- 路径 $ u_1\leftarrow i_2 \leftarrow u_2 $ 表示 $ u_1 $ 和 $ u_2 $ 之间的行为相似度,因为这两个用户都和
item
$ i_2 $ 进行了交互。 - 更长的路径 $ u_1\leftarrow i_2\leftarrow u_2\leftarrow i_4 $ 表明 $ u_1 $ 很可能接受 $ i_4 $ ,因为 $ u_1 $ 相似的用户 $ u_2 $ 之前已经消费过
item
$ i_4 $ 。 - 此外,从 $ l=3 $ 的整体视角来看,
item
$ i_4 $ 比item
$ i_5 $ 更可能引起 $ u_1 $ 的兴趣,因为有两条路径连接 $$ ,而只有一条路径连接 $ $ 。
论文提出对
embedding
函数中的高阶连通性信息进行建模。论文没有将交互图扩展为实现起来很复杂的树,而是设计了一种神经网络方法在图上递归地传播embedding
。这是受到图神经网络最近发展的启发,可以将其视为在embedding
空间中构建信息流information flow
。具体而言,作者设计了一个embedding propagation layer
,它通过聚合交互的item
(或者user
)的embedding
来改进refine
用户(或者item
)的embedding
。通过堆叠多个embedding propagation layer
,模型可以显式强制embedding
来捕获高阶连通性中的协同信号。以上图为例,堆叠两层可以捕获 $ u_1\leftarrow i_2\leftarrow u_2 $ 的行为相似性,堆叠三层可以捕获 $ u_1\leftarrow i_2\leftarrow u_2\leftarrow i_4 $ 的潜在推荐。信息流的强度(层之间的可训练权重来估计的)决定了 $ i_4 $ 和 $ i_5 $ 的推荐优先级。论文在三个公共
benchmark
上进行了广泛的实验,验证了神经图协同过滤Neural Graph Collaborative Filtering: NGCF
方法的合理性和有效性。最后值得一提的是,尽管在最近的一种名叫
HOP-Rec
的方法中已经考虑了高阶连通性信息,但是它仅用于丰富训练数据。具体而言,HOPRec
的预测模型仍然是MF
,而且它是通过优化用高阶连通性增强的损失函数来训练的。和HOP-Rec
不同,NGCF
贡献了一种新技术将高阶连通性集成到预测模型中,从经验上讲,它比HOP-Rec
更好地嵌入CF
。总而言之,论文的主要贡献:
- 论文强调在基于模型的
CF
方法的embedding
函数中利用协同信号的重要性。 - 论文提出了
NGCF
,这是一种基于图神经网络的新推荐框架,它通过执行embedding
传播,以高阶连通性的形式对协同信号进行显式编码。 - 论文对三个百万规模的数据集进行实证研究。大量结果证明了
NGCF
的state-of-the-art
性能,以及通过神经embedding
传播来提高embedding
质量方面的有效性。
论文回顾了现有的
model-based CF
、graph-based CF
、基于图神经网络的方法的现有工作,这些方法和本文的工作最为相关。这里,论文强调这些方法和NGCF
的不同之处。Model-Based CF
方法:现代推荐系统通过向量化表示vectorized representation
来参数化parameterize
用户和item
,并基于模型参数重建user-item
交互数据。例如,MF
将每个user ID
和item ID
投影为embedding
向量,并在它们之间进行内积以预测交互。为了增强embedding
函数,已经付出了很多努力来融合诸如item content
、社交关系、item
关系、用户评论、外部知识图谱等辅助信息side information
。虽然内积可以迫使观察到的、交互的
user embedding
和item embedding
彼此接近,但是其线性不足以揭示用户和item
之间复杂的非线性关系。为此,最近的努力侧重于利用深度学习技术来增强交互函数,从而捕获用户和item
之间的非线性特征交互。例如,神经协同模型(如NeuMF
)采用非线性神经网络作为交互函数。同时,基于翻译的CF
模型,例如LRML
用欧氏距离来建模交互强度interaction strength
。尽管取得了巨大的成功,但我们认为
embedding
函数的设计不足以为协同过滤产生最佳的embedding
,因为协同过滤信号只能被隐式implicitly
地捕获。总结这些方法,embedding
函数将描述性特征descriptive feature
(如ID
特征和属性特征)转换为向量,而交互函数作为向量上的相似性度量。理想情况下,当user-item
交互被完美重建时,行为相似性的传递特性transitivity property
可以被捕获。然而,前面示例(高阶连通性概念的示例)中显示的这种传递效应transitivity effect
并没有被显式地编码,因此无法保证间接连接的用户和item
在embedding
空间中也是接近的。如果没有对协同信号进行显式编码,就很难获得满足所有特性的embedding
。即,传统的方法仅优化了
user-item
的一阶邻近性,并没有优化高阶邻近性。另外这种邻近性并不是在模型结构中显式编码的,而是通过目标函数来优化的。Graph-Based CF
方法:另一个研究方向利用user-item interaction graph
来推断用户偏好。早期的努力,如
ItemRank
和BiRank
采用标签传播的思想来捕获协同效应CF effect
。为了给一个用户在所有item
上打分,这些方法将用户历史交互的item
打上label
,然后在图上传播标签。由于推荐分是基于历史互动item
和目标item
之间的结构可达性structural reachness
(可以视为一种相似性)而获得的,因此这些方法本质上属于基于邻域neighbor-based
的方法。然而,这些方法在概念上不如基于模型的协同过滤方法,因为它们缺乏模型参数来优化推荐目标函数(既没有模型参数、又没有目标函数、更没有优化过程)。最近提出的
HOP-Rec
方法通过将基于图的方法和基于embedding
的方法相结合来缓解这个问题(缺乏模型参数来优化推荐目标函数的问题)。该方法首先执行随机游走以丰富用户和multi-hop
连接的item
之间的交互。然后它基于丰富的user-item
交互数据(通过高阶连通性增强的正样本)训练具有BPR
目标函数的MF
从而构建推荐模型。HOP-Rec
优于MF
的性能证明,结合连通性信息有利于在捕获CF
效应时获得更好的embedding
。然而,我们认为HOP-Rec
没有充分探索高阶连通性,它仅仅用于丰富训练数据,而不是直接有助于模型的embedding
函数(因为推断时不会用到正样本增强技术,而是用到embedding
函数)。此外,HOP-Rec
的性能在很大程度上取决于随机游走,这需要仔细地调优,例如设置合适的衰减因子。图卷积网络
Graph Convolutional Network
:通过在user-item
交互图上设计专门的图卷积运算,我们使NGCF
有效地利用高阶连通性中的CF
信号。这里我们讨论现有的、也采用图卷积运算的方法。GC-MC
在user-item
交互图上应用了图卷积网络graph convolution network: GCN
,但是它仅使用一个卷积层来利用user-item
之间的直接连接。因此,它无法揭示高阶连通性中的协同信号。PinSage
是一个工业解决方案,它在item-item
图中采用了多个图卷积层从而进行Pinterest
图像推荐。因此,CF
效应是在item
关系的层面上捕获的,而不是在集体collective
的用户行为的层面上。Spectral CF
提出了一种谱卷积操作来发现谱域中用户和item
之间的所有可能的连接。通过图邻接矩阵的特征分解,可以发现user-item pair
对之间的连接。然而,特征分解导致了很高的计算复杂度,非常耗时并且难以支持大规模的推荐场景。
17.1 模型
NGCF
模型的架构如下图所示(给出了用户 $ u_1 $ 和item
$ i_4 $ 之间的affinity score
),其中包含三个组件components
:- 一个
embedding
层:提供user embedding
和item embedding
。 - 多个
embedding
传播层:通过注入高阶连通性关系来refine embedding
。 - 一个
prediction
层: 聚合来自不同传播层的refined embedding
并输出user-item
的相似性得分affinity score
。
- 一个
17.1.1 Embedding Layer
遵循主流推荐模型,我们用
$ \mathbf E = \left[\underbrace{\mathbf{\vec e}_{u_1},\cdots,\mathbf{\vec e}_{u_N}}_\text{user embeddings},\underbrace{\mathbf{\vec e}_{i_1},\cdots,\mathbf{\vec e}_{i_M}}_\text{item embeddings}\right] $embedding
向量 $ \mathbf{\vec e}_u\in \mathbb R^d $ 来描述用户 $ u $ ,用embedding
向量 $ \mathbf{\vec e}_i\in \mathbb R^d $ 来描述item
$ i $ ,其中 $ d $ 为embedding
维度。这可以看做是将参数矩阵parameter matrix
构建为embedding look-up table
:其中 $ N $ 为用户数量, $ M $ 为
item
数量。值得注意的是,这个
embedding table
作为user embedding
和item embedding
的初始状态(refine
之前的状态),并以端到端的方式进行优化。在传统的推荐模型如
MF
和神经协同过滤中,这些ID embedding
直接输入一个交互层interaction layer
来实现分数预估。相比之下,在我们的
NGCF
框架中,我们通过在user-item
交互图上传播embedding
来refine embedding
。这导致了对推荐更有效的embedding
,因为embedding
的refinement
步骤显式地将协同信号注入到embedding
中。
17.1.2 Embedding Propagation
接下来我们基于
GNN
的消息传递框架,沿着图结构捕获协同信号并优化user embedding
和item embedding
。我们首先说明单层embedding
传播层Embedding Propagation Layer
的设计,然后将其推广到多个连续传播层。一阶传播
First-order Propagation
:直观地,交互的item
提供了关于用户偏好的直接证据。类似地,消耗一个item
的用户可以被视为item
的特征,并用于度量两个item
的协同相似性collaborative similarity
。我们在此基础上在连接connected
的用户和item
之间执行embedding
传播,用两个主要操作来形式化formulating
流程:消息构建message construction
和消息聚合message aggregation
。消息构建:对一个连接的
$ \mathbf{\vec m}_{u\leftarrow i} = f\left(\mathbf{\vec e}_i,\mathbf{\vec e}_u,p_{u,i}\right) $user-item pair
对 $ (u,i) $ ,我们定义从 $ i $ 到 $ u $ 的消息为:其中:
- $ \mathbf{\vec m}_{u\leftarrow i} $ 为
message embedding
。 - $ f(\cdot) $ 为
message encoding
函数,函数的输入为item embedding
$ \mathbf{\vec e}_i $ 、user embedding
$ \mathbf{\vec e}_u $ 、系数 $ p_{u,i} $ 。 - 系数 $ p_{u,i} $ 控制了
edge
$ (u,i) $ 上传播的衰减系数decay factor
。
在本文中,我们定义 $ f(\cdot) $ 为:
$ \mathbf{\vec m}_{u\leftarrow i} = \frac{1}{\sqrt{|\mathcal N_u|\times |\mathcal N_i|}}\left(\mathbf W_1\mathbf{\vec e}_i+\mathbf W_2\left(\mathbf{\vec e}_i\odot\mathbf{\vec e}_u\right)\right) $其中:
- $ \mathbf W_1,\mathbf W_2\in \mathbb R^{d^\prime \times d} $ 为可训练的权重参数从而为传播提取有用的信息, $ d^\prime $ 为变换后的维度。
- $ \odot $ 为逐元素乘积。
- $ \mathbf{\vec m}_{u\leftarrow i} $ 为
$ |\mathcal N_u| $ 为用户 $ u $ 的邻域大小(即直接连接的
item
数量), $ |\mathcal N_i| $ 为item
$ i $ 的邻域大小(即直接连接的用户数量)。
与仅考虑 $ \mathbf{\vec e}_i $ 贡献的传统图卷积网络
graph convolution network
不同,这里我们额外将 $ \mathbf{\vec e}_i $ 和 $ \mathbf{\vec e}_u $ 之间的交互通过 $ \mathbf{\vec e}_i\odot\mathbf{\vec e}_u $ 编码到被传递的消息中。这使得消息依赖于 $ \mathbf{\vec e}_i $ 和 $ \mathbf{\vec e}_u $ 之间的相似度affinity
,例如从相似的item
传递更多消息。这不仅提高了模型的表示能力representation ability
,还提高了推荐性能。遵循图卷积网络,我们将 $ p_{u,i} $ 设置为图拉普拉斯范数
graph Laplacian norm
$ 1/{\sqrt{|\mathcal N_u|\times |\mathcal N_i|}} $ ,其中 $ \mathcal N_u $ 为用户 $ u $ 的一阶邻居集合、 $ \mathcal N_i $ 为item
$ i $ 的一阶邻居集合。从
representation learning
的角度来看, $ p_{u,i} $ 反映了历史互动item
对用户偏好的贡献程度。从消息传递的角度来看,考虑到被传播的消息应该随着路径长度
path length
衰减, $ p_{u,i} $ 可以解释为折扣系数discount factor
。消息聚合:在这一阶段,我们聚合从用户 $ u $ 的邻居传播的消息来
$ \mathbf{\vec e}_u^{(1)} = \text{LeakyReLU}\left(\mathbf{\vec m}_{u\leftarrow u}+\sum_{i\in \mathcal N_u}\mathbf{\vec m}_{u\leftarrow i}\right) $refine
用户 $ u $ 的representation
。具体而言,我们定义聚合函数为:其中:
$ \mathbf{\vec e}_u^{(1)} $ 表示在第一个
embedding
传播层之后获得的用户 $ u $ 的representation
。LeakyReLU
激活函数允许消息对正positive
信号和小负negative
信号进行编码。除了从邻域 $ \mathcal N_u $ 传播的消息之外,我们还考虑了 $ u $ 的自连接
$ \mathbf{\vec m}_{u\leftarrow u} = \mathbf W_1 \mathbf{\vec e}_u $self-connection
:这个自连接保留了 $ u $ 的原始特征信息。
注意:这里的 $ \mathbf W_1 $ 和 $ \mathbf{\vec m}_{u\leftarrow i} $ 定义中的共享。即对于 $ \mathbf{\vec e}_u $ 和 $ \mathbf{\vec e}_i $ 我们都用 $ \mathbf W_1 $ 来映射、对于交叉特征 $ \mathbf{\vec e}_i\odot\mathbf{\vec e}_u $ 我们用 $ \mathbf W_2 $ 来映射。也可以使用独立的映射矩阵来分别映射 $ \mathbf{\vec e}_u $ 和 $ \mathbf{\vec e}_i $ 。
类似地,我们可以通过与
item
连接的用户传播的消息来获得item
$ i $ 的representation
$ \mathbf{\vec e}_i^{(1)} $ 。总而言之,
embedding
传播层的优势在于显式利用一阶连通性信息来关联user representation
和item representation
。在广告和推荐场景中,
item
$ i $ 的直接邻域(和item
$ i $ 有互动的用户集合)可能高达百万甚至千万级别,而用户 $ u $ 的直接邻域(用户 $ u $ 互动的历史item
集合)通常都比较小。如何处理这种非对称的、庞大的邻域是一个难点。高阶传播
High-order Propagation
:基于一阶连通性first-order connectivity
建模来增强representation
,我们可以堆叠更多embedding
传播层来探索高阶连通性high-order connectivity
信息。这种高阶连通性对于编码协同信号以估计用户和item
之间的相关性分数relevance score
至关重要。通过堆叠 $ L $ 个embedding
传播层,用户(或者item
)能够接收来自L-hop
邻居传播的消息。在第 $ l $ 步中( $ 1\le l\le L $ ),用户 $ u $ 的
$ \mathbf{\vec e}_u^{(l)} = \text{LeakyReLU}\left(\mathbf{\vec m}_{u\leftarrow u}^{(l)}+\sum_{i\in \mathcal N_u}\mathbf{\vec m}_{u\leftarrow i}^{(l)}\right) $representation
被递归地表示为:其中被传播的消息定义为:
$ \mathbf{\vec m}_{u\leftarrow i}^{(l)} = p_{u,i}\left(\mathbf W_1^{(l)}\mathbf{\vec e}_i^{(l-1)} + \mathbf W_2^{(l)}\left(\mathbf{\vec e}_i^{(l-1)}\odot \mathbf{\vec e}_u^{(l-1)}\right)\right)\\ \mathbf{\vec m}_{u\leftarrow u}^{(l)} = \mathbf W_1^{(l)} \mathbf{\vec e}_u^{(l-1)} $其中:
$ \mathbf W_1^{(l)},\mathbf W_2^{(l)}\in \mathbb R^{d_1\times d_{l-1}} $ 为可训练的参数矩阵, $ d_l $ 为变换后的维度。
注意:这里对于 $ \mathbf{\vec e}_u $ 和 $ \mathbf{\vec e}_i $ 我们都用 $ \mathbf W_1 $ 来映射、对于交叉特征 $ \mathbf{\vec e}_i\odot\mathbf{\vec e}_u $ 我们用 $ \mathbf W_2 $ 来映射。也可以使用独立的映射矩阵来分别映射 $ \mathbf{\vec e}_u $ 和 $ \mathbf{\vec e}_i $ 。
$ \mathbf{\vec e}_i^{(l-1)} $ 为前一层的
item representation
,它记住了(l-1) - hop
邻域的消息。$ \mathbf{\vec e}_u^{(l-1)} $ 为前一层的
user representation
,它也也记住了(l-1) - hop
邻域的消息。
类似地,我们也可以得到
item
$ i $ 在第 $ l $ 层的representation
。如下图所示为针对用户 $ u_1 $ 的三阶
embedding
传播,像 $ u_1\leftarrow i_2\leftarrow u_2\leftarrow i_4 $ 这样的协同信号可以在embedding
传播过程中捕获。即,来自 $ i_4 $ 的消息被显式编码在 $ \mathbf{\vec e}_{u_1}^{(3)} $ 中(由红线标识)。因此,堆叠多个embedding
传播层无缝地将协同信号注入到representation learning
过程。矩阵形式的传播规则
$ \mathbf E^{(l)} = \text{LeakyReLU}\left((\mathbf L + \mathbf I)\mathbf E^{(l-1)}\mathbf W_1^{(l)} + \mathbf L \mathbf E^{(l-1)}\odot \mathbf E^{(l-1)}\mathbf W_2^{(l)}\right) $Propagation Rule in Matrix Form
:为了提供embedding
传播的整体视图holistic view
,并便于batch
实现,我们提供了layer-wise
传播规则的矩阵形式:其中:
$ \mathbf E^{(l)}\in \mathbb R^{(N+M)\times d_l} $ 为第 $ l $ 层
embedding
传播层得到的用户representation
和item representation
。 $ \mathbf E^{(0)} = \mathbf E $ 为初始的representation
,即 $ \mathbf{\vec e}_u^{(0)} = \mathbf{\vec e}_u,\mathbf{\vec e}_i^{(0)} = \mathbf{\vec e}_i $ 。$ \mathbf I $ 为单位矩阵, $ \mathbf L $ 为
$ \mathbf L = \mathbf D^{-1/2}\mathbf A \mathbf D^{-1/2},\quad \mathbf A = \begin{bmatrix}\mathbf 0 & \mathbf R\\ \mathbf R^\top & \mathbf 0\end{bmatrix} $user-item graph
的拉普拉斯矩阵:其中 $ \mathbf R\in \mathbb R^{N\times M} $ 为
user-item
交互矩阵, $ \mathbf 0 $ 为全零矩阵; $ \mathbf A $ 为邻接矩阵, $ \mathbf D $ 为对角的degree matrix
( $ D_t = |\mathcal N_t| $ )。因此 $ \mathbf L $ 的非对角线元素为:
$ L_{u,i} = \frac{1}{\sqrt{|\mathcal N_u|\times |\mathcal N_i|}} $它就是 $ p_{u,i} $ 。
通过实现矩阵形式的传播规则,我们可以用一种相当有效的方式同时更新所有用户和所有
item
的representation
。这种方式允许我们抛弃节点采样过程(这个节点采样过程通常用于图卷积网络,使得图卷积网络可以应用于大规模的graph
)。对于工业场景海量用户(如十亿级)和海量
item
(如亿级),那么矩阵形式是不可行的,因为现有的计算资源无法处理如此规模的矩阵。
17.1.3 Model Prediction
经过 $ L $ 层传播,我们得到了用户 $ u $ 的多个
representation
,即 $ \left\{\mathbf{\vec e}_u^{(1)},\cdots,\mathbf{\vec e}_u^{(L)}\right\} $ 。由于在不同层中获得的representation
强调通过不同连通性传递的消息,因此它们在反映用户偏好方面有不同的贡献。因此,我们将这些representation
拼接起来,构成用户 $ u $ 的最终representation
。对于
$ \mathbf{\vec e}_u^* = \mathbf{\vec e}_u^{(0)}\|\cdots\|\mathbf{\vec e}_u^{(L)},\quad \mathbf{\vec e}_i^* = \mathbf{\vec e}_i^{(0)}\|\cdots\|\mathbf{\vec e}_i^{(L)} $item
$ i $ ,我们也进行同样的操作,即将不同层学到的item representaiton
$ \left\{\mathbf{\vec e}_i^{(1)},\cdots,\mathbf{\vec e}_i^{(L)}\right\} $ 拼接起来得到item
$ i $ 的最终representation
。最终我们得到user representation
和item representation
为:其中
||
表示向量拼接。通过这种方式,我们不仅用
embedding
传播层丰富了initial embeddings
(即embedding
层得到的初始embedding
),还允许通过调整 $ L $ 来控制传播范围。注意,除了拼接之外,还可以应用其它聚合方式,如加权平均、最大池化、
LSTM
等,这意味着在组合不同阶次的连通性时有不同的假设。使用拼接聚合的优势在于它的简单性,因为它不需要学习额外的参数,并且它已经在最近的图神经网络中证明非常有效。最后,我们使用内积来估计用户 $ u $ 对目标
$ \hat y_{\text{NGCF}}(u,i) = \mathbf{\vec e}_u^*\cdot \mathbf{\vec e}_i^* $item
$ i $ 的偏好:在这项工作中,我们强调
embedding
函数的学习,因此仅使用内积这种简单的交互函数。其它更复杂的选择,如基于神经网络的交互函数,留待未来的研究工作。
17.1.4 Optimization
为了学习模型参数,我们优化了在推荐系统中广泛应用的
pairwise BPR loss
。该损失函数考虑了观察到的和未观察到的user-item
交互之间的相对顺序。具体而言,
$ \text{Loss} = \sum_{(u,i,j)\in \mathcal O} -\ln \sigma\left(\hat y_{u,i} - \hat y_{u,j}\right) + \lambda \|\Theta\|_2^2 $BPR
假设观察到的user-item
交互更能够反映用户的偏好,因此应该比未观察到的交互分配更高的预测值。因此目标函数为:其中:
- $ \mathcal O = \left\{(u,i,j)\mid (u,i)\in \mathcal R^+,(u,j)\in \mathcal R^-\right\} $ 表示
pairwise
训练数据。 $ \mathcal R^+ $ 为观察到的交互的集合, $ \mathcal R^- $ 为未观察到的交互的集合。 - $ \sigma(\cdot) $ 为
sigmoid
函数。 - $ \Theta=\left\{\mathbf E,\left\{\mathbf W_1^{(l)},\mathbf W_2^{(l)}\right\}_{l=1}^L\right\} $ 为所有的训练参数集合, $ \lambda $ 为
L2
正则化系数。
我们使用
mini-batch
的Adam
优化算法来优化预估模型。具体而言,对于一个batch
的随机采样的三元组 $ (u,i,j)\in \mathcal O $ ,我们在L
步传播之后建立它们的representation
$ \left\{\mathbf{\vec e} ^{(1)},\cdots,\mathbf{\vec e} ^{(L)}\right\} $ ,然后利用损失函数的梯度来更新模型参数。- $ \mathcal O = \left\{(u,i,j)\mid (u,i)\in \mathcal R^+,(u,j)\in \mathcal R^-\right\} $ 表示
模型大小
Model Size
:值得指出的是,尽管NGCF
在每个传播层 $ l $ 获得了一个embedding
矩阵 $ \mathbf E^{(l)} $ ,但是它只引入了很少的参数:两个规模为 $ d_l\times d_{l-1} $ 的权重矩阵。具体而言,这些embedding
矩阵来自于embedding look-up table
$ \mathbf E^{(0)} $ ,并基于user-item
图结构和权重矩阵转换而来。因此,和最简单的、基于
embedding
的推荐模型MF
相比,我们的NGCF
只是多了 $ 2Ld_ld_{l-1} $ 个参数。考虑到 $ L $ 通常是小于5
的数,并且 $ d_l $ 通常设置为embedding size
(远小于用户数量和item
数量),因此这个额外的参数规模几乎可以忽略不计。例如,在我们实验的
Gowalla
数据集(20k
用户和40k item
)上,当embedding size = 64
并且我们使用3
个尺寸为64 x 64
的传播层时,MF
有450
万参数,而我们的NGCF
仅使用了2.4
万额外的参数。总之,
NGCF
使用很少的额外参数来实现高阶连通性建模。Message and Node Dropout
:虽然深度学习模型具有很强的表示能力,但通常会出现过拟合现象。Dropout
是防止神经网络过拟合的有效解决方案。遵从图卷积网络的前期工作,我们提出在NGCF
中采用两种dropout
技术:message dropout
和node dropout
。message dropout
:随机丢弃传出的消息outgoing message
。具体而言,我们以概率 $ p_1 $ 丢弃 $ \mathbf{\vec m}_{u\leftarrow i}^{(l)},\mathbf{\vec m}_{u\leftarrow u}^{(l)},\mathbf{\vec m}_{i\leftarrow u}^{(l)},\mathbf{\vec m}_{i\leftarrow i}^{(l)} $ 。因此在第 $ l $ 个传播层中,只有部分消息可用于refine representation
。node dropout
:随机阻塞一个节点并丢弃该节点传出的所有消息。对于第 $ l $ 个传播层,我们随机丢弃 $ (M+N)p_2 $ 个节点,其中 $ p_2 $ 为dropout ratio
。
注意,
dropout
仅用于训练并且必须在测试期间禁用。message dropout
使得representaion
对于user-item
之间单个连接具有更强的鲁棒性,而node dropout
则侧重于减少特定用户或特定item
的影响。我们在实验中研究message dropout
和node dropout
对于NGCF
的影响。
17.1.5 讨论
这里我们首先展示
NGCF
如何推广SVD++
,然后我们分析NGCF
的时间复杂度。NGCF
和SVD++
:SVD++
可以看做是没有高阶传播层的NGCF
的特例。具体而言,我们将 $ L $ 设置为
$ \hat y_{\text{NGCF-SVD}} = \left(\mathbf{\vec e}_u + \sum_{i^\prime \in \mathcal N_u}p_{u,i^\prime}\mathbf{\vec e}_{i^\prime}\right)^\top \left(\mathbf{\vec e}_i + \sum_{u^\prime \in \mathcal N_i}p_{i,u^\prime}\mathbf{\vec e}_{u^\prime}\right) $1
。在传播层中,我们禁用了转换矩阵和非线性激活函数。然后, $ \mathbf{\vec e}_u^{(1)} $ 和 $ \mathbf{\vec e}_i^{(1)} $ 分别被视为用户 $ u $ 和item
$ i $ 的最终representation
。我们把这个简化模型称作NGCF-SVD
,它可以表述为:显然,通过分别设置 $ p_{u,i^\prime} = 1/\sqrt{|\mathcal N_u|} $ 以及 $ p_{i,u^\prime}=0 $ ,我们可以准确地恢复
SVD++
模型。此外,另一个广泛使用的
item-based CF
模型FISM
也可以被视为NGCF
的特例,其中上式中 $ p_{i,u^\prime} = 0 $ 。时间复杂度:我们可以看到,逐层
layer-wise
传播规则是主要的操作。- 对于第 $ l $ 个传播层,矩阵乘法的计算复杂度为 $ O\left(|\mathcal R^+|d_ld_{l-1}\right) $ ,其中 $ |\mathcal R^+| $ 为拉普拉斯矩阵中的非零项数量, $ d_l $ 为当前层的维度, $ d_{l-1} $ 为前一层的维度。
- 对于预测层只涉及内积,它的时间复杂度为 $ O\left(\sum_{l=1}^L |\mathcal R^+|d_l\right) $ 。
因此,
NGCF
的整体复杂度为 $ O\left(\sum_{l=1}^L |\mathcal R^+|d_ld_{l-1}+\sum_{l=1}^L |\mathcal R^+|d_l\right) $ 。根据经验,在相同的实验设置下,MF
和NGCF
在Gowalla
数据集上的训练成本分别为20
秒左右和80
秒左右,在推断期间MF
和NGCF
的时间成本分别为80
秒和260
秒。
17.2 实验
我们在真实世界的三个数据集上进行实验,从而评估我们提出的方法,尤其是
embedding
传播层。我们旨在回答以下研究问题:RQ1
:和state-of-the-art
的CF
方法相比,NGCF
的表现如何?RQ2
:不同的超参数setting
(如,层的深度、embedding
传播层、layer-aggregation
机制、message dropout
、node dropout
)如何影响NGCF
?RQ3
:如何从高阶连通性中受益?
数据集:我们选择三个
benchmark
数据集Gowalla
、Yelp2018
、Amazon-book
。这些数据集可公开访问,并且在领域、规模、稀疏性等方面各不相同。Gowalla
数据集:这是从Gowalla
获得的check-in
数据集,用户通过checking-in
来共享他们的位置location
。为了确保数据集的质量,我们使用10-core setting
,即保留至少有十次交互的用户和item
。Yelp2018
:来自2018
年的Yelp
挑战赛的数据集,其中餐馆、酒吧等当地企业被视为item
。为了确保数据质量,我们也使用10-core setting
。Amazon-book
:Amazon-review
是一个广泛使用的产品推荐数据集,这里我们从中选择了Amazon-book
。同样地,我们使用10-core setting
来确保每个用户和每个item
至少有十次交互。
对于每个数据集,我们随机选择每个用户
80%
的历史交互构成训练集,其余的20%
历史交互作为测试集。在训练集中,我们随机选择10%
的交互作为验证集来调整超参数。对于每个观察到的
user-item
交互,我们将其视为一个正样本,然后进行负采样策略:将用户和历史没有互动的负item
构建pair
对。这些数据集的统计信息如下表所示。
评估指标:对于测试集中的每个用户,我们将用户未交互的所有
item
视为负item
。然后每个方法输出用户对所有item
(除了训练集中的正item
)的偏好分。为了评估top-K
推荐和偏好排序preference ranking
,我们采用了两种广泛使用的评估指标:recall@K
和ndcg@K
,默认情况下K=20
。我们报告测试集中所有用户的平均指标。baseline
方法:为了证明有效性,我们将NGCF
方法和以下方法进行比较:MF
:这是通过贝叶斯个性化排名Bayesian personalized ranking: BPR
损失函数优化的矩阵分解方法,它仅利用user-item
直接交互作为交互函数的目标值target value
。NeuMF
:这是state-of-the-art
的神经网络协同过滤模型。该方法拼接user embedding
和item embedding
,然后使用多个隐层从而捕获用户和item
的非线性特征交互。具体而言,我们采用两层的普通架构,其中每个隐层的维度保持不变。CMN
:这是state-of-the-art
的memory-based
模型,其中user representation
通过memory layer
有意地组合相邻用户的memory slot
。注意,一阶连接用于查找和相同item
交互的相似用户。HOP-Rec
:这是一个state-of-the-art
的graph-based
模型。该方法利用从随机游走得到的高阶邻居来丰富user-item
交互数据。PinSage
:该方法在item-item graph
上应用GraphSAGE
。在这里,我们将该方法应用于user-item
交互图。具体而言,我们采用了两层图卷积层,并且隐层维度设为embedding size
。GC-MC
:该模型采用GCN encoder
来生成user representations
和item representation
,其中仅考虑一阶邻居。具体而言,我们使用一层图卷积层,并且隐层维度设为embedding size
。
我们也尝试了
Spectral CF
,但是发现特征分解导致很高的时间成本和资源成本,尤其是当用户数量和item
数量很大时。因此,尽管该方法在小数据集上取得了不错的性能,但是我们没有选择和它进行比较。为了公平地比较,所有方法都优化了
BPR loss
。参数配置:我们在
Tensorflow
中实现了我们的NGCF
模型。所有模型的
embedding size
固定为64
。对于
HOP-Rec
,我们选择随机游走step
的调优集合为{1,2,3}
,学习率的调优集合为{0.025, 0.020, 0.015, 0.010}
。我们使用
Adam
优化器优化除了HOP-Rec
之外的所有模型,其中batch size
固定为1024
。在超参数方面,我们对超参数应用网格搜索:学习率搜索范围
{0.0001, 0.0005, 0.001, 0.005}
、L2
正则化系数搜索范围 $ \{10^{-5},10^{-4},\cdots,10^1,10^2\} $ 、dropout ratio
搜索范围{0.0, 0.1, ... , 0.8}
。此外,我们对
GC-MC
和NGCF
应用node dropout
技术,其中dropout ratio
搜索范围为{0.0, 0.1, ... , 0.8}
。我们使用
Xavier
初始化器来初始化模型参数。我们执行早停策略:如果在连续
50
个epoch
中,验证集的recall@20
指标没有提升,则提前停止训练。为了建模三阶连通性,我们将
NGCF L
的深度设置为3
。在没有特殊说明的情况下,我们给出了三层embedding
传播层的结果,node dropout ratio = 0.0
、message dropout ratio = 0.1
。
17.2.1 RQ1 性能比较
我们从比较所有方法的性能开始,然后探索高阶连通性建模如何提升稀疏环境下的性能。
下表报告了所有方法性能比较的结果。可以看到:
MF
在三个数据集上的表现不佳。这表明内积不足以捕获用户和item
之间的复杂关系,从而限制了模型性能。NeuMF
在所有情况下始终优于MF
,证明了user embedding
和item embedding
之间非线性特征交互的重要性。然而,
MF
和NeuMF
都没有显式地对embedding
学习过程中的连通性进行建模,这很容易导致次优suboptimal
的representation
。与
MF
和NeuMF
相比,GC-MC
的性能验证了融合一阶邻居可以改善representation learning
。然而,在
Gowalla
中,GC-MC
在ndcg@20
指标行不如NeuMF
。原因可能是GC-MC
未能充分探索用户和item
之间的非线性特征交互。大多数情况下,
CMN
通常比GC-MC
得到更好的性能。这种改进可能归因于神经注意力机制neural attention mechanism
,它可以指定每个相邻用户的注意力权重,而不是GC-MC
中使用的相同权重、或者启发式权重。PinSage
在Gowalla
和Amazon-Book
中的表现略逊于CMN
,但是在Yelp2018
中的表现要好得多。同时HOP-Rec
在大多数情况下总体上取得了显著的提升。这是讲得通的,因为
PinSage
在embedding
函数中引入了高阶连通性,HOP-Rec
利用高阶邻居来丰富训练数据,而CMN
只考虑相似的用户。因此,这表明了对高阶连通性或高阶邻居建模的积极影响。NGCF
始终在所有数据集上产生最佳性能。具体而言,NGCF
在Gowalla、Yelp2018、Amazon-Book
数据集中在recall@20
方面比最强baseline
分别提高了11.68%、11.97%、9.61%
。通过堆叠多个
embedding
传播层,NGCF
能够显式探索高阶连通性,而CMN
和GC-MC
仅利用一阶邻居来指导representation learning
。这验证了在embedding
函数中捕获协同信号的重要性。此外,和
PinSage
相比,NGCF
考虑多粒度表示multi-grained representation
来推断用户偏好,而PinSage
仅使用最后一层的输出。这表明不同的传播层在representation
中编码不同的信息。并且,对
HOP-Rec
的改进表明embedding
函数中的显式编码CF
可以获得更好的representation
。HOP-Rec
效果也不错,而且计算复杂度不高、简单易于实现。
我们进行
one-sample
的t-test
,p-value < 0.05
表明NGCF
对最强baseline
(下划线标明)的改进在统计上是显著的。稀疏性问题通常限制了推荐系统的表达能力,因为不活跃用户的少量交互不足以生成高质量的
representation
。我们考察利用连通性信息connectivity information
是否有助于缓解稀疏性问题。为此,我们对不同稀疏性水平的用户组user group
进行了实验。具体而言,基于每个用户的交互次数,我们将测试集分为四组,每组的用户具有相同的交互次数。以
Gowalla
数据集为例,每个用户的交互次数分别小于24、50、117、1014
。下图展示了
Gowalla、Yelp 2018、Amazon-Book
数据集的不同用户组中关于ndcg@20
的结果。背景的直方图表示每个分组中的用户量,曲线表示ndcg@20
指标。我们在recall@20
方面看到了类似的性能趋势,但是由于空间限制而省略了该部分。可以看到:
NGCF
和HOP-Rec
始终优于所有用户组的所有其它baseline
。这表明利用高阶连通性可以极大地促进非活跃用户的representation learning
,因为可以有效地捕获协同信号。因此,解决推荐系统中的稀疏性问题可能是有希望的,我们将其留待未来的工作中。- 联合分析图
(a),(b),(c)
,我们观察到前两组取得的提升(例如,在Gowalla
数据集中NGCF
对于< 24
和< 50
的最佳baseline
上分别提高了8.49%
和7.79%
)比其它组更为显著(例如,在Gowalla
数据集中NGCF
对于< 1014
的最佳baseline
提高了1.29%
)。这验证了embedding
传播有利于相对不活跃的用户。
17.2.2 RQ2 NGCF 研究
由于
embedding
传播层在NGCF
中起着举足轻重的作用,因此我们研究了它对于性能的影响。- 我们首先探索层数的影响,然后我们研究拉普拉斯矩阵(即用户 $ u $ 和
item
$ i $ 之间的折扣因子 $ p_{u,i} $ ) 如何影响性能。 - 此外,我们分析了关键因素的影响,例如
node dropout
和message dropout
。 - 最后,我们还研究了
NGCF
的训练过程。
- 我们首先探索层数的影响,然后我们研究拉普拉斯矩阵(即用户 $ u $ 和
层数的影响:为了研究
NGCF
是否可以从多个embedding
传播层中受益,我们改变了模型深度。具体而言,我们探索了层数为{1,2,3,4}
。下表给出了实验结果,其中NGCF-3
表示具有三层embedding
传播层的模型,其它符号类似。联合下表和上表(所有方法性能比较结果表)可以看到:增加
NGCF
的深度可以大大提升推荐效果。显然,NGCF-2
和NGCF-3
在所有方面都比NGCF-1
实现了一致的提升,因为NGCF-1
仅考虑了一阶邻居。我们将所有提升归因于
CF
效应的有效建模:协同用户相似性collaborative user similarity
和协同信号collaborative signal
分别由二阶连通性和三阶连通性承载carried
。当在
NGCF-3
之后进一步堆叠传播层时,我们发现NGCF-4
在Yelp 2018
数据集上过拟合。这可能是因为太深的架构会给representation learning
带来噪音。而其它两个数据集上的边际提升证明了三层传播层足以捕获
CF
信号。当传播层数变化时,
NGCF
在三个数据集上始终优于其它方法。这再次验证了NGCF
的有效性,从而表明显式建模高阶连通性可以极大地促进推荐任务。
embedding
传播层的效果和Layer-Aggregation
机制:为了研究embedding
传播层(即图卷积层)如何影响性能,我们考虑了使用使用不同layer
的NGCF-1
变体。具体而言,我们从消息传递函数中删除了节点及其邻居之间的
representation
交互,并将其设置为PinSage
和GC-MC
的representation
交互,分别称为 $ \text{NGCF-1}_{\text{PinSage}} $ 和 $ \text{NGCF}-1_{\text{GC-MC}} $ 。对于 $ \text{NGCF-1}_{\text{PinSage}} $ :
$ \mathbf{\vec m}_{u\leftarrow i}^{(l)} = \mathbf W_1^{(l)} \mathbf{\vec e}_i^{(l-1)},\quad \mathbf{\vec m}_{u\leftarrow u}^{(l)} = \mathbf W_2^{(l)}\mathbf{\vec e}_u^{(l-1)}\\ \mathbf{\vec e}_u^{(l)} = \sigma\left(\mathbf{\vec m}_{u\leftarrow u}^{(l)}+\sum_{i\in \mathcal N_u}\mathbf{\vec m}_{u\leftarrow i}^{(l)}\right) $其中 $ \sigma(\cdot) $ 为非线性激活函数。
$ \mathbf{\vec m}_{u\leftarrow i}^{(l)} $ 缺少 $ \mathbf{\vec e}_u^{(l-1)} $ 和 $ \mathbf{\vec e}_i^{(l-1)} $ 的交互,也缺少图拉普拉斯范数。
对于 $ \text{NGCF}-1_{\text{GC-MC}} $ :
$ \mathbf{\vec m}_{u\leftarrow i}^{(l)} = p_{u,i} \left(\mathbf W^{(l)} \mathbf{\vec e}_i^{(0)}\right)\\ \mathbf{\vec e}_u^* = \sigma\left(\mathbf W \sigma\left(\sum_{l=1}^K\sum_{i\in \mathcal N_u,l}\mathbf{\vec m}_{u\leftarrow i}^{(l)}\right)\right) $其中: $ \mathcal N_{u,l} $ 为节点 $ u $ 的第 $ l $ 阶邻域(每个节点和 $ u $ 的路径距离为 $ l $ ); $ \sigma(\cdot) $ 为非线性激活函数。
此外,基于
NGCF-SVD
,我们得到NGCF
的关于SVD++
的变体,称作 $ \text{NGCF-1}_{\text{SVD++}} $ 。我们在下表中显示了实验结果,并且可以发现:
NGCF-1
始终优于所有变体。我们将改进归因于representation
交互(即 $ \mathbf{\vec e}_u\odot \mathbf{\vec e}_i $ ),这使得消息的传播依赖于 $ \mathbf{\vec e}_i $ 和 $ \mathbf{\vec e}_u $ 之间的affinity
以及注意力机制等等函数。同时,所有变体仅考虑线性变换。因此,这验证了我们
embedding
传播函数的合理性和有效性。在大多数情况下, $ \text{NGCF-1}_{\text{SVD++}} $ 的性能不如 $ \text{NGCF-1}_{\text{PinSage}} $ 和 $ \text{NGCF-1}_{\text{GC-MC}} $ 。这表明节点本身传递的消息( $ \text{NGCF-1}_{\text{SVD++}} $ 没有
item
到用户的消息传递、只有用户到item
的消息传递)和非线性变换的重要性。联合下表和上表(所有方法性能比较结果表)可以看到:当将所有层的输出拼接在一起时, $ \text{NGCF-1}_{\text{PinSage}} $ 和 $ \text{NGCF-1}_{\text{GC-MC}} $ 分别比
PinSage
和GC-MC
获得更好的性能。这表明layer-aggregation
机制的重要性。
dropout
效果:遵从GC-MC
的工作,我们采用了node dropout
和message dropout
技术来防止NGCF
过拟合。下图给出了message dropout rate
$ p_1 $ 和node dropout rate
$ p_2 $ 在不同数据集上对评估指标的影响。在两种
dropout
策略之间,node dropout
提供了更好的性能。以Gowalla
为例,设置 $ p_2=0.2 $ 将导致最好的recall@20
(0.1514
),这优于message dropout
得到最好的recall@20
(0.1506
) 。一个可能的原因是:丢弃来自特定用户和特定
item
的所有outgoing message
使得representation
不仅可以抵抗特定边的影响,还可以抵抗节点的影响。因此,node dropout
比message dropout
更有效,这和GC-MC
工作的发现相一致。我们认为这是一个有趣的发现,这意味着
node dropout
可以成为解决图神经网络过拟合的有效策略。Epoch
对测试性能影响:下图给出了MF
和NGCF
在每个epoch
的测试性能(recall@20
)。由于空间限制,我们省略了ndcg@20
指标,因为该指标的性能趋势和recall@20
是类似的。可以看到:
NGCF
在三个数据集上表现出比MF
更快的收敛速度。这是合理的,因为在
mini-batch
中优化交互pair
对时,涉及间接相连的用户和item
。这样的观察证明了NGCF
具有更好的模型容量,以及在embedding
空间中执行embedding
传播的有效性。
17.2.3 RQ3 高阶连通性的效果
这里我们试图了解
embedding
传播层如何促进embedding
空间中的representation learning
。为此,我们从Gowalla
数据集中随机选择了6
个用户及其相关的item
。我们观察他们的representation
如何受到NGCF
深度的影响。下图
(a)
和(b)
分别显示了来自MF
(即NGCF-0
)和NGCF-3
的representation
的可视化(通过t-SNE
)。每个星星代表Gowalla
数据集中的一个用户,和星星相同颜色的点代表相关的item
。注意,这些
item
来自测试集,并且这些item
和用户构成的pair
对不会出现在训练过程中。可以看到:
用户和
item
的连通性很好地反映在embedding
空间中,即它们嵌入到空间中相近的位置。具体而言,
NGCF-3
的representation
表现出可识别的聚类,这意味着具有相同颜色的点(即相同用户消费的item
)倾向于形成聚类。联合分析图
(a)
和图(b)
中的相同用户(例如12201
黄色星星和6880
蓝色星星),我们发现:当堆叠三层embedding
传播层时,他们历史item
的embedding
往往更加靠近。这定性地验证了所提出的embedding
传播层能够将显式的协同信号(通过NGCF-3
)注入到representation
中。
将来的工作:
- 结合注意力机制进一步改进
NGCF
,从而在embedding
传播过程中学习邻居的可变权重,以及不同阶连接性的可变权重。这将有利于模型的泛化和可解释性。 - 探索关于
user/item embedding
和图结构的对抗学习,从而增强NGCF
的鲁棒性。这项工作代表了在基于模型的CF
中利用消息传递机制开发结构知识的初步尝试,并开辟了新的研究可能性。
- 结合注意力机制进一步改进
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论