数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
二十七、GCE-GNN [2020]
传统的推荐方法(如协同过滤)通常依赖于
user profile
的可用性、以及长期历史交互。在最近的许多现实世界场景中,当这类信息不可用(如,未登录用户)或可用信息有限(如,短期历史交互)时,这些方法表现不佳,如YouTube
和Tiktok
等移动流媒体。因此,session-based
推荐最近引起了人们的广泛关注,它根据给定的匿名序列按时间顺序来预测next interested item
。大多数关于
session-based
推荐的早期研究分为两类:similarity-based
和chain-based
。- 前者严重依赖于当前
session
中item
的共现信息co-occurrence information
,而忽略了序列行为模式sequential behavior pattern
。 - 后者推断所有
item
的所有可能的用户选择序列,对于item
数量很大的真实世界应用,这可能会遇到棘手的计算问题。
最近,人们针对该任务提出了许多
deep learning based
方法,这些方法利用pair-wise
的item-transition
信息来建模给定session
的用户偏好。这些方法取得了令人振奋的成果。但是仍然面临以下问题。首先,一些方法通过使用
RNN
(如GRU4Rec
、NARM
)和memory network
(如,STAMP
)按照时间顺序依次抽取session
的pairwise item-transition information
,从而推断匿名用户的偏好。然而,一个session
可能包含用户的多个选择甚至噪音,因此它们可能不足以生成所有正确的依赖关系,这使得我们无法在embedding
中建模item-transition pattern
的复杂的固有顺序。其次,还有一些方法基于具有自注意力机制的
GNN
(如SR-GNN
)。它们通过计算相对重要性来学习整个session
的representation
,其中相对重要性基于session
在每个item
和last item
之间的pairwise item-transition
来获得,因此性能在很大程度上取决于last item
与当前session
的用户偏好之间的相关性。此外,几乎所有先前的研究都仅基于当前的
session
来建模用户偏好,而完全忽略了其它session
中有用的item-transition pattern
。据我们所知,CSRM
是唯一一个结合了最近 $ m $ 个session
中的协同信息,从而以端到端方式丰富当前session representation
的工作。CSRM
将session
视为最小粒度,并测量当前session
和最近 $ m $ 个session
之间的相似性从而抽取协同信息。然而,不幸的是,它可能会将其它
session
的相关信息和不相关信息都编码到当前session embedding
中,这甚至可能会降低性能。我们以下图中的例子来说明这一点。不失一般性,假设当前session
为Session 2
,session-based
推荐旨在推荐与Iphone
有关的配件。从图中我们观察到:- 利用其它
session
的item-transition
可能有助于建模当前session
的用户偏好。例如,我们可以从Session 1
和Session 3
中找到Session 2
的relevant pairwise item-transition information
,例如一个新的pairwise item-transition
:[Iphone, Phone Case]
。 - 当在某个
session
中编码的部分item-transition
信息与当前session
无关时,直接利用整个那个session
的item-transition
信息可能会引入噪声。例如,如果Session 3
是最近的 $ m $ 个session
之一,CSRM
也可以考虑利用Session 3
来帮助建模Session 2
的用户偏好。并且它在学习Session 2
的embedding
时引入不相关的item
(即,衣服和裤子),因为它将Session 3
视为一个整体,而不区分相关的item-transision
和不相关的item-transision
。而如何实现这种区分,这是具有挑战性的。
- 利用其它
为此,论文
《Global Context Enhanced Graph Neural Networks for Session-based Recommendation》
提出了一种新颖的方法,以更精细的方式利用所有session
中的item-transition
,以便更好地推断当前session
的用户偏好从而进行session-based
推荐。该方法称作Global Context Enhanced Graph Neural Network: GCE-GNN
。在GCE-GNN
中,作者提出分别从session graph
和global graph
中学习两个level
的item embedding
:session graph
:通过在当前session
中建模pairwise item-transition
来学习session-level
的item embedding
。global graph
:通过在所有session
(包括当前session
)中建模pairwise item-transition
来学习global-level
的item embedding
。
在
GCE-GNN
中:- 作者提出了一种新颖的
global-level
的item representation learning layer
,它采用session-aware attention
机制递归地融合global graph
上每个节点的neighbor embedding
。 - 作者还设计了一个
session-level
的item representation learning layer
,它在session graph
上使用GNN
来学习当前session
中的session-level embedding
。 - 此外,
GCE-GNN
使用soft attention
机制聚合两个level
学到的item embedding
。
这项工作的主要贡献如下:
- 据作者所知,这是第一个利用所有
session
的global-level item-transition
来学习global-level
上下文信息的工作,用于session-based
推荐。 - 作者提出了一个统一模型,该模型通过有效利用来自两个
level
的图模型(即,session graph
和global graph
)的pair-wise item-transition information
来提高当前session
的推荐性能。 - 作者还提出了一种
position-aware attention
,将reversed position
信息融合到item embedding
中,这在session-based
推荐中显示了优异的性能。 - 作者对三个真实世界的数据集进行了广泛的实验,结果表明
GCE-GNN
优于包括state-of-the-art
方法在内的九个baseline
方法。
- 前者严重依赖于当前
相关工作:
基于马尔科夫链的
session-based
推荐:有几种传统方法可以用于session-based
推荐,尽管它们最初不是为session-based
推荐而设计的。例如,基于马尔科夫链的方法将当前session
映射到马尔科夫链中,然后根据previous action
来推断用户的next action
。《Factorizing personalized markov chains for next-basket recommendation》
提出FPMC
,通过结合了矩阵分解和一阶马尔科夫链,从而捕获序列模式sequential pattern
和长期用户偏好来进行推荐。它可以通过忽略用户latent representation
来适配session-based
推荐。然而,基于马尔科夫链的方法通常侧重于建模两个相邻
item
之间的序列转移sequential transition
。相比之下,我们提出的模型将序列的item-transition
转换为图结构数据,从而捕获session-based
推荐的item-transition pattern
的固有顺序inherent order
。基于马尔科夫链的方法仅捕获一阶转移关系,无法捕获高阶转移关系。
基于深度学习的
session-based
推荐:近年来,建模序列数据的基于神经网络的方法已被用于session-based
推荐。《Session-based recommendations with recurrent neural networks》
提出了一个叫做GRU4REC
的工作,将RNN
网络应用于session-based
推荐。GRU4REC
采用多层GRU
来建模item
交互序列。《Improved recurrent neural networks for session-based recommendations》
通过引入数据增强来扩展了GRU4REC
。《Neural attentive session-based recommendation》
提出了NARM
,它将注意力机制结合到堆叠的GRU encoder
中,从而为session-based
推荐捕获更具表达性的item-transition information
。《STAMP: short-term attention/memory priority model for session-based recommendation》
提出了一种基于注意力的短期记忆网络short-term memory network
(叫做STAMP
),从而在不使用RNN
的情况下捕获用户当前的兴趣。NARM
和STAMP
都通过使用注意力机制来强调last click
的重要性。收到
Transformer
的启发,SASRec
(《Self-attentive sequential recommendation》
)堆叠多个层从而捕获item
之间的相关性。ISLF
(《ISLF: Interest Shift and Latent Factors Combination Model for Session-based Recommendation》
) 考虑到用户的兴趣漂移interest shift
,并采用变分自编码器VAE
和RNN
来捕获用户的序列行为特征从而用于session-based
推荐。MCPRN
(《Modeling Multi-Purpose Sessions for Next-Item Recommendations via Mixture-Channel Purpose Routing Networks》
)提出通过使用混合通道模型来建模给定会话的多意图multi-purpose
从而用于session-based
推荐。
然而,与基于马尔科夫链的方法类似,基于
RNN
的方法侧重于建模相邻item
的序列转移 ,从而通过给定序列的时间顺序来推断用户偏好,因此无法建模复杂的item-transition pattern
(如,非相邻item
之间的转移)。最近,一些方法在从当前
session
构建的图上使用GNN-based
模型来学习item embedding
用于session-based
推荐。《Session-based recommendation with graph neural networks》
提出一个门控GNN
模型(称作SR-GNN
)来学习session graph
上的item embedding
,然后通过将每个学到的item embedding
与注意力结合从而获得一个有表达性的session embedding
。这个注意力是根据每个item
与the last item
之间的相关性来计算的。- 随着
SR-GNN
的成功,人们也提出了一些变体从而用于session-based
推荐,如GC-SAN
(《Graph Contextualized Self-Attention Network for Session-based Recommendation》
). 《Rethinking the Item Order in Session-based Recommendation with Graph Neural Networks》
提出FGNN
,通过聚合带有多头注意力的邻居的embedding
从而学习每个item representation
,并通过反复地将每个学到的embedding
和每个time
相关性(time
与session
之间的相关性)相结合从而生成final session representation
。
然而,所有这些方法都只对当前
session
上的item-transition
信息进行建模。相比之下,我们提出的模型在所有session
中学习item-transition
信息,从而增强对当前session
的学习。基于协同过滤的
session-based
推荐:尽管基于深度学习的方法取得了显著的性能,但是基于协同过滤的方法仍然可以提供有竞争力的结果。Item-KNN
(《Item-based collaborative filtering recommendation algorithms》
)可以通过推荐与当前session
的last item
最相似的item
来扩展,从而用于session-based
推荐。KNNRNN
(《When recurrent neural networks meet the neighborhood for session-based recommendation》
)利用GRU4REC
和基于共现的KNN
模型来提取序列模式sequential pattern
从而用于session-based
推荐。最近,
《A Collaborative Session-based Recommendation Approach with Parallel Memory Modules》
提出了一种名为CSRM
的端到端神经网络,该模型实现了state-of-the-art
性能。它首先在
item-transition
上利用NARM
来编码每个session
,然后通过探索最近的 $ m $ 个session
来丰富当前的session representation
,最后利用融合门控机制来学习不同特征源的组合。但是,在为当前
session
集成来自其它session
的embedding
时,它可能会受到噪音的影响。相比之下,我们提出的方法考虑了item-level
的协同信息:我们使用其它session
中的item embedding
来丰富当前session
的item embedding
,然后将它们集成到session representation
中从而用于session-based
推荐的。
27.1 模型
令
$ V=\{v_1,v_2,\cdots,v_{|V|}\} $ 为所有item
的集合。每个匿名session
$ \mathcal S=\left\{v_1^{(\mathcal S)},v_2^{(\mathcal S)},\cdots,v_l^{(\mathcal S)}\right\} $ 由根据时间顺序排列的一系列交互(即用户点击的item
)组成,其中 $ v_i^{(\mathcal S)} $ 表示在session
$ \mathcal S $ 内点击的第 $ i $ 个item
, $ l $ 为session
$ \mathcal S $ 的长度。给定一个
session
$ \mathcal S $ ,session-based
推荐的问题是:从 $ V $ 中推荐最可能是当前session
$ \mathcal S $ 的用户所点击的next item
(即,第 $ l+1 $ 个item
)的top N
个候选item
, $ 1\le N \ll |V| $ 。对于每个
item
$ v\in V $ ,定义 $ \mathbf{\vec h}_v\in \mathbb R^d $ 为它的initial item embedding
。
27.1.1 Session Graph and Global Graph
- 这里我们提出两种不同的图模型,从而为
item representation learning
在所有可用的session
中捕获不同level
的item transition
信息。
a. Session Graph Model
session-based graph
旨在通过对当前session
中pair-wise
的相邻item
的序列模式建模,从而学习session-level item embedding
。受到
SR-GNN
的启发,每个session
序列都会被转换为session graph
,用于通过GNN
来学习当前session
中item
的embedding
。给定session
$ \mathcal S=\left\{v_1^{(s)},v_2^{(s)},\cdots,v_l^{(s)}\right\} $ ,令 $ \mathcal G_{s} = (\mathcal V_{s},\mathcal E_{s}) $ 为对应的session graph
,其中 $ \mathcal V_{s}\sube V $ 是 $ \mathcal S $ 中item
的集合, $ \mathcal E_s=\left\{e_{i,j}^{(s)}\right\} $ 为边的集合。每条边 $ e_{i,j}^{(s)} $ 表示 $ \mathcal S $ 中的两个相邻item
$ \left(v_i^{(s)},v_j^{(s)}\right) $ ,这被称作session-level
的item-transition pattern
。通过遵循
FGNN
的工作,我们为每个item
添加了一个自循环,如下图所示。与
SR-GNN
和FGNN
不同,我们的session graph
根据item
$ v_i $ 和item
$ v_j $ 之间的关系有四种类型的边,分别表示为: $ r_\text{in},r_\text{out},r_\text{in-out},r_\text{self} $ 。对于边 $ e_{i,j}^{(s)} $ : $ r_\text{in} $ 表示仅有从 $ v_j^{(s)} $ 到 $ v_i^{(s)} $ 的转移transition
。 $ r_\text{out} $ 表示仅有从 $ v_i^{(s)} $ 到 $ v_j^{(s)} $ 的转移 。 $ r_\text{in-out} $ 表示既存在从 $ v_j^{(s)} $ 到 $ v_i^{(s)} $ 的转移,也存在从 $ v_i^{(s)} $ 到 $ v_j^{(s)} $ 的转移。 $ r_\text{self} $ 表示一个item
指向自身的转移。
由于考虑了边的方向信息,因此这里的
session graph
更精细,表达能力更强。
b. Global Graph Model
和专注于建模整个
session
序列模式的、传统的基于深度学习的方法(如,NARM
)相比,session graph
可以有效地捕获session
的复杂的graph pattern
从而学习session-level item embedding
。然而,我们还旨在从其它
session
中捕获item-transition
信息从而学习item representation
,这被称作global-level
的item transition
信息。Global-level Item Transition Modeling
:这里,我们通过集成在所有session
的所有pairwise item transition
,从而考虑global-level
的item transition
用于global-level
的item representation learning
。因此,我们提出了一种新的
global graph model
来学习global-level item embedding
。这个模型打破了session
独立性的假设,并基于所有session
(包括当前session
)的pairwise item transition
来链接所有的item pair
。接下来,我们首先提出一个用于建模
global-level item transition
的概念(即, $ \epsilon $ 邻域集合Neighbor Set
),然后给出全局图的定义。 $ \epsilon $ 邻域集合 $ \mathcal N_\epsilon(v) $ :对于session
$ \mathcal S_p $ 中的任意item
$ v_i^{(p)} $ , $ v_i^{(p)} $ 的 $ \epsilon $ 邻域集合表示一组item
,其中每个元素定义为:其物理意义为:为
$ v_i^{(p)} $ 找到位于其它session
的、在那个session
内距离在 $ \epsilon $ 以内的item
。其中:
$ i^\prime $ 是item
$ v_i^{(p)} $ 在另一个session
$ \mathcal S_q $ 中出现的位置。 $ \epsilon $ 是一个超参数,用于控制 $ v_i^{(p)} $ 和 $ \mathcal S^{(q)} $ 中的item
之间的item-transition
范围。注意,超参数
$ \epsilon $ 有利于在session
中对short-range
的item transition
进行建模,因为如果超过了范围 $ (\epsilon) $ ,那么捕获global-level
的item transition
信息是无益的(甚至是噪音,例如,不相关的依赖)。
根据定义,对于每个
item
$ v_i\in V $ ,global-level item transition
定义为: $ \{(v_i,v_j)\mid v_i,v_j\in V;v_j\in \mathcal N_\epsilon(v_i) \} $ 。值得注意的是,为了提高效率,我们没有区分global-level
的item transition
信息的方向。Global Graph
:global graph
旨在捕获global-level
的item transition
信息,该信息将用于学习所有session
中的item embedding
。具体而言,global graph
是基于所有session
中item
的 $ \epsilon $ 邻域集合来构建的。不失一般性,
global graph
定义如下:定义 $ \mathcal G_g = (\mathcal V_g, \mathcal E_g) $ 为global graph
,其中: $ \mathcal V_g $ 表示 $ V $ 中所有item
对应的graph node
集合。 $ \mathcal E_g = \left\{e_{i,j}^{(g)}\mid (v_i,v_j),v_i\in V,v_j\in \mathcal N_\epsilon(v_i)\right\} $ 表示边的集合,每条边对应于所有session
中的一对pairwise item
。
下图展示了构建
global graph
( $ \epsilon = 2 $ ) 的示例。此外,对于每个节点
$ v_i $ ,我们为它的边生成权重从而区分 $ v_i $ 邻居的重要性: 对于每条边 $ e_{i,j}^{(g)} $ ,我们使用它在所有session
中出现的频次作为它的权重。出于效率的考虑,我们仅保留 $ \mathcal G_g $ 上每个item
$ v_i $ 的权重最高的top-N
边。注意:图
$ \mathcal G_g $ 上item
$ v $ 的邻域(即 $ \mathcal N_v^{(g)} $ )的定义与 $ \mathcal N_\epsilon(v) $ 相同。因此, $ \mathcal G_g $ 是一个无向加权图,因为 $ \epsilon $ 邻域集合是无向的。在测试阶段,出于效率的考虑,我们不会动态更新global graph
的拓扑结构。注意:
$ V $ 中的每个item
在layer
$ t $ 被编码到一个统一的embedding
空间,即 $ \mathbf{\vec h}_i^t\in \mathbb R^d $ , $ d $ 表示item embeddign
的维度。其中初始化的embeddign
为 $ \mathbf{\vec h}_i^0\in \mathbb R^{|V|} $ ,这里我们使用基于one-hot
的embedding
,并通过使用可训练的参数矩阵 $ \mathbf W_0\in \mathbb R^{d\times |V|} $ 将其映射到 $ d $ 维潜在向量空间。注意,应用在
Global Graph
上的GNN
模型有多层。此外,这里的 $ \mathbf{\vec h}_i^0 $ 也可以结合item
的特征。
27.1.2 GCE-GNN
我们提出了一种新颖的
Global Context Enhanced Graph Neural Networks for Session-based Recommendation: GCE-GNN
。GCE-GNN
旨在同时利用session-level
和global-level
的pairwise item transition
来建模当前session
的用户偏好从而进行推荐。下图展示了
GCE-GNN
的架构,它包括四个主要组件:global-level
的item representation learning layer
:它通过使用session-aware attention
机制来基于global graph
$ \mathcal G_g $ 的结构递归地融合每个节点的neighbor embedding
,从而学习所有session
的global-level item embedding
。session-level
的item representation learning layer
:它在session graph
$ \mathcal G_s $ 上使用GNN
模型来学习当前session
中的session-level item embedding
。session representation learning layer
:它通过聚合session-level
和global-level
的、学到的item representation
,从而建模用户在当前session
的用户偏好。prediction layer
:它输出候选item
的预测概率从而进行推荐。
接下来,我们将详细介绍这四个组件。
a. Global-level Item Representation Learning Layer
接下来我们将介绍如何在
global graph
上传播特征从而对来自其它session
的item-transition
信息进行编码从而帮助推荐。我们的
layer
是基于GCN
的架构来构建的,我们利用GAT
的思想根据每个连接的重要性来生成注意力权重。这里,我们首先描述一下单个layer
,它由两个组件构成:information propagation
、information aggregation
。然后我们将展示如何将单个layer
推广到多个layer
。Information Propagation
:一个item
可能涉及多个session
,从这些session
中我们可以获得有用的item-transition
信息来有效地帮助当前session
的预测。为了获得
item
$ v $ 的一阶邻居的特征,一个直接的解决方案是使用均值池化。然而,并非 $ v $ 的 $ \epsilon $ 邻域集合中的所有item
都与当前session
的用户偏好相关,因此我们考虑利用session-aware attention
来区分 $ \mathcal N_\epsilon(v) $ 中item
的重要性。因此, $ \mathcal N_\epsilon(v) $ 中的每个item
都根据session-aware attention score,
来线性组合:如前所述,图
$ \mathcal G_g $ 上item
$ v $ 的邻域(即 $ \mathcal N_v^{(g)} $ )的定义与 $ \mathcal N_\epsilon(v) $ 相同。其中:
$ \pi(v_i,v_j) $ 估计不同邻居的重要性权重。直观而言,一个item
越接近当前session
的偏好,这个item
对推荐而言就越重要。因此,我们实现 $ \pi(v_i,v_j) $ 如下:其中:
$ \mathbf W_1\in \mathbb R^{(d+1)\times (d+1)} $ , $ \mathbf{\vec q}_1\in \mathbb R^{d+1} $ 都是可训练的参数。 $ \mathbf{\vec s}\in \mathbb R^d $ 可以视为当前session
的特征,它可以通过当前session
中item representation
的均值得到: $ \mathbf{\vec s} = \frac{1}{|\mathcal S|} \sum_{v\in \mathcal S} \mathbf{\vec h}_{v} $ 。构建
global graph
时, $ v_i $ 是基于 $ V $ 来遍历的,因此global graph
中不知道每个节点来自于哪个session
。而这里我们必须知道global graph
中每个节点对应的当前session
从而计算 $ \mathbf{\vec s} $ 。方法是:对于每个
$ v_i\in V $ ,我们对它出现过的每个session
计算一个 $ \pi(v_i,\cdot) $ 从而得到session-aware
的global-level item representation
。假设节点 $ v_i $ 在 $ M $ 个session
中出现过,则它得到 $ M $ 个(而不是一个)global-level item representation
。 $ w_{i,j}\in \mathbb R $ 为global graph
中的边 $ (v_i,v_j) $ 的权重。这里融合了两种相关性:
- 一种是
global graph
自身的边的权重 $ w_{i,j} $ ,它刻画当前节点 $ v_i $ 和邻居节点 $ v_j $ 之间的物理关系。 - 另一种是通过模型学到的相关性
$ \mathbf{\vec s}\odot \mathbf{\vec h}_{v_j} $ ,它刻画当前session
和邻居节点 $ v_j $ 之间的语义关系。
- 一种是
我们选择
LeakyRelu
作为激活函数, $ \odot $ 为逐元素乘积, $ || $ 表示向量拼接操作。
与均值池化不同,我们的方法使得信息的传播依赖于
$ \mathcal S $ 和 $ v_j $ 之间的亲和度affinity
,这意味着匹配当前session
偏好的邻居将得到更多的重视。然后我们通过
softmax
函数对 $ v_i $ 连接的所有邻居的系数进行归一化:因此,最终的注意力分数能够建议哪些邻居节点应该受到更多的关注。
Information Aggregation
:最后一步是聚合item representation
$ \mathbf{\vec h}_v $ 及其neighborhood representation
$ \mathbf{\vec h}_{\mathcal N_v^{(g)}} $ 。我们实现的聚合函数agg
如下:其中我们选择
relu
作为激活函数, $ \mathbf W_2\in \mathbb R^{d\times (2d)} $ 为参数矩阵。通过单个
aggregator layer
,item
的representation
依赖于自身及其直接邻域。我们可以通过将aggregator
从单层扩展到多层从而探索高阶邻域,这允许将与当前session
相关的更多信息融合到当前representation
中。例如,第 $ k $ 个step
中的item representation
为:其中:
$ \mathbf{\vec h}_v^{(g),k-1} $ 是item
$ v $ 的repersentation
,它是从前一个information propagation step
生成的。 $ \mathbf{\vec h}_v^{(g),0} $ 在初始的propagation
迭代中设置为 $ \mathbf{\vec h}_v $ 。通过这种方式,一个
item
的 $ k $ 阶representation
是它的初始representation
及其 $ 1\sim k $ 阶邻域的混合。这使得可以在当前session
的representation
中融合更有效的消息。
b. Session-level Item Representation Learning Layer
session graph
包含当前session
中的pairwise item-transition
。接下来我们介绍如何学习session-level
的item embedding
。由于
session graph
中item
的邻居对该item
具有不同的重要性,我们利用注意力机制来学习不同节点之间的权重。注意力系数可以通过逐元素乘积和非线性变换来计算:其中:
$ c_{i,j} $ 表示节点 $ v_j $ 的特征对于节点 $ v_i $ 的重要性,我们选择LeakyReLU
作为激活函数。 $ r_{i,j} $ 是 $ v_i $ 和 $ v_j $ 之间的关系类型。 $ \mathbf{\vec a}_{r_i,j}\in \mathbb R^d $ 为待学习的权重向量。对于不同的关系类型,我们训练了四个权重: $ \mathbf{\vec a}_\text{in},\mathbf{\vec a}_\text{out},\mathbf{\vec a}_\text{in-out},\mathbf{\vec a}_\text{self} $ 。
这里使用的双线性乘积来计算注意力系数,并没有采用向量拼接的方式或
MLP
的方式来计算。由于图中不是每两个节点都连接,因此我们仅计算节点
$ v_j\in \mathcal N_{v_i}^{(s)} $ 从而将图结构注入模型,其中 $ \mathcal N_{v_i}^{(s)} $ 为 $ v_i $ 在session
$ \mathcal S $ 中的一阶邻域。为了使得不同节点之间的系数具有可比性,我们通过
softmax
函数来对注意力权重进行归一化:在上式中,注意力系数
$ \alpha_{i,j} $ 是非对称的,因为 $ v_i $ 和 $ v_j $ 的邻域是不同的,这意味着它们对彼此的贡献是不相等的。接下来我们通过计算经过系数加权的线性组合来获得每个节点的输出特征:
session graph
中的item representation
由item
自身及其在当前session
中的邻域特征聚合而成。通过注意力机制,减少了噪声对session-level
的item representation learning
的影响。这里没有多层,因为是浅层的图。但是为什么不用深层的?这个可能需要通过实验来评估。
由于
session graph
包含self loop
,因此 $ v_i\in \mathcal N_{v_i}^{(s)} $ 。这里的聚合直接是线性加权,而并没有使用
$ \text{agg}(\cdot,\cdot) $ 聚合函数。
c. Session Representation Learning Layer
对于每个
item
,我们通过融合global context
和session context
来获得它的representation
,并且它的final representation
是通过sum
池化来计算的:这里我们在
global-level representation
上应用dropout
来避免过拟合。为什么不在
session-level representation
上应用dropout
?作者并未说明。读者猜测,这是因为:session-level
包含的信息远远没有global-level
包含的信息多。session-level
的模型是浅层的,而global-level
的模型是深层的。
此外,作者在实验部分评估了不同类型的融合操作(门控机制、最大池化、拼接机制),发现
sum
池化的效果最佳。基于学到的
item representation
,我们现在介绍如何获得session representation
。与主要关注last item
的先前的一些工作不同,这里我们提出了一种更全面的策略来学习session
的每个部分对于prediction
的贡献。在我们的方法中,
session representation
是基于session
中涉及的所有item
来构建的。注意,不同item
对于next prediction
的贡献是不同的。直觉而言,session
中靠后点击的item
更能代表用户当前的偏好,这表明这些item
对推荐的重要性更大。此外,在当前session
中找到用户的主要意图并过滤噪声也很重要。因此,我们结合了reversed position
信息和session
信息来作出更好的预测。reversed position
信息:将session
序列输入到GNN
之后,我们可以获得session
中涉及的item
的representation
,即: $ \mathbf H = \left[\mathbf{\vec h}_{v_1}^\prime,\mathbf{\vec h}_{v_2}^\prime,\cdots,\mathbf{\vec h}_{v_l}^\prime,\right]\in \mathbb R^{d\times l} $ 。我们还使用可学习的position embedding
矩阵 $ \mathbf P = \left[\mathbf{\vec p}_1,\mathbf{\vec p}_2,\cdots,\mathbf{\vec p}_l\right]\in \mathbb R^{d\times l} $ ,其中 $ \mathbf{\vec p}_i\in \mathbb R^d $ 是特定位置 $ i $ 的position embedding
, $ l $ 是当前session
序列的长度。位置信息通过拼接和非线性变换进行融合:其中:
$ \mathbf W_3\in \mathbb R^{d\times (2d)},\mathbf{\vec b}_3\in \mathbb R^d $ 都是可学习的参数。这里我们选择
reversed position embedding
,因为session
序列的长度不是固定的。与forward position
信息相比,当前item
与待预测的item
之间的距离包含了更多的有效信息。例如,在session
$ \{v_2\rightarrow v_3 \rightarrow ?\} $ 中, $ v_3 $ 是序列中的第二个,对预测的影响很大。但是在session
$ \{v_2\rightarrow v_3\rightarrow v_5\rightarrow v_6\rightarrow v_8\rightarrow ?\} $ 中, $ v_3 $ 的重要性会相对较小。因此,reversed position
信息可以更准确地暗示每个item
的重要性。reverse position
给出了序列中每个item
到next item
的空间距离。session
信息:session
信息是通过计算session
的item representation
的均值来获得的:
接下来,我们通过
soft-attention
机制学习每个item
的权重:其中:
$ \mathbf W_4,\mathbf W_5\in \mathbb R^{d\times d} $ 和 $ \mathbf{\vec q}_2,\mathbf{\vec b}_4\in \mathbb R^d $ 为待学习的参数。这里学习的是每个
item
和session
的关系,而不是和last item
的关系。最后,我们通过线性组合
item representation
来获得session representation
:session representation
$ \mathbf{\vec s}^* $ 由当前session
中涉及的所有item
构成,其中每个item
的贡献不仅取决于session graph
中的信息,还取决于序列中的时间顺序(由reversed position embedding
提供)。注意,
reversed position embedding
仅参与attention
的计算,它不会修改 $ \mathbf{\vec h}_{v_i}^\prime $ 。
d. Prediction Layer
基于获得的
session represntation
$ \mathbf{\vec s}^* $ ,每个候选item
的最终推荐概率为:其中:
$ \hat{\mathbf{\vec y}}\in \mathbb R^{|V|} $ 给出了每个候选item
作为next click
的概率分布。损失函数定义为预测结果的交叉熵:
其中
$ \mathbf{\vec y}\in \mathbb R^{|V|} $ 表示ground truth
的one-hot
编码向量。
27.2 实验
我们进行了广泛的实验,通过回答以下五个关键的研究问题来评估所提出的
GCE-GNN
方法的准确性:RQ1
:GCE-GNN
在现实世界的数据集中是否优于state-of-the-art
的session-based
推荐的baseline
?RQ2
:global graph
和global-level encoder
是否提高了GCE-GNN
的性能?GCE-GNN
在不同深度感受野 $ k $ 下的表现如何?RQ3
:reversed position embedding
是否有用?RQ4
:GCE-GNN
在不同聚合操作下的表现如何?RQ5
:不同的超参数设置(如node dropout
)如何影响GCE-GNN
的准确性?
数据集:
Diginetica
数据集:来自CIKM Cup 2016
,由典型的交易数据组成。Tmall
数据集:来自IJCAI-15
比赛,包含匿名用户在天猫在线购物平台上的购物日志。Nowplaying
数据集:来自《#now playingMusic Dataset: Extracting Listening Behavior from Twitter》
,包含用户的音乐收听行为。
遵从
SR-GNN
和GC-SAN
的工作,我们对三个数据集进行了预处理。具体而言:我们过滤掉长度为
1
的session
以及频次少于5
的item
。与
STAMP
类似,我们将最近一周的session
设置为测试数据,剩余的历史作为训练数据。此外,对于
session
$ \mathcal S =\left\{v_1^{(s)},v_2^{(s)},\cdots,v_l^{(s)}\right\} $ , 我们通过序列拆分来生成序列和相应的标签,即:
预处理后,数据集的统计数据如下表所示。
评估指标:
P@N
、MRR@N
。baseline
方法:POP
:推荐训练集的top-N
热门item
。Item-KNN
:根据当前session
的item
和其它item
之间的相似性来推荐item
。FPMC
:结合了矩阵分解和一阶马尔科夫链,用于捕获序列效应和用户偏好。遵循之前的工作,我们在计算推荐分时,也忽略了user latent representation
。GRU4Rec
:RNN-based
模型,使用GRU
来建模用户序列。NARM
:通过将注意力集成到RNN
中,从而对GRU4Rec
进行了改进并用于session-based
推荐。STAMP
:完全依靠当前session
中last item
的self-attention
来捕获用户的短期兴趣,从而使用attention layer
来替代之前工作中的所有RNN encoder
。SR-GNN
:采用门控GNN layer
来获得item embedding
,然后跟随last item
的self-attention
(就像STAMP
那样),从而为session-based
推荐来计算session level embedding
。CSRM
:利用memory network
来研究最近的 $ m $ 个session
,从而更好地预测当前session
的意图。FGNN
:通过设计一个加权的attention graph layer
来学习item embedding
,并且session
由graph level feature extractor
来学习。
参数配置:
遵从之前的方法(
NARM, STAMP, SR-GNN
),隐向量的维度 $ d $ 固定为100
。所有模型的
batch size
设为100
。我们保持每个模型的超参数一致从而进行公平地比较。
对于
CSRM
,我们将memory size
$ m $ 设为100
,和batch size
一致。对于
FGNN
,我们将GNN layer
设为3
,head
数量设为8
。对于我们的模型:
所有参数均使用均值为零、标准差为
0.1
的高斯分布进行初始化。我们使用初始学习率为
0.001
的Adam
优化器,每3
个epoch
后衰减0.1
(即,乘以0.9
)。 $ L_2 $ 正则化系数为 $ 10^{-5} $ ,并且在验证集上搜索dropout rate
$ \in \{0.1,0.2,\cdots,0.9\} $ 。此外,在
$ \mathcal G_g $ 中,我们将邻居的数量设置为12
、相邻item
的最大距离 $ \epsilon $ 设为3
。出于效率的考虑,我们仅保留
$ \mathcal G_g $ 上每个item
$ v_i $ 的权重最高的top 12
边。
27.2.1 Overall Comparison (RQ1)
下表报告了所有模型在所有数据集上的实验结果,其中每列的最佳结果以粗体突出显示。可以看到:
在这两个指标上,
GCE-GNN
在所有三个数据集上始终达到最佳性能(具有统计意义),这确定了我们所提出的方法的有效性。在传统方法中:
POP
的表现最差,因为它仅推荐top-N
热门item
。- 与
POP
相比,FPMC
在三个数据集上展示了其有效性,它利用了一阶马尔科夫链和矩阵分解。 Item-KNN
在Diginetica
和Nowplaying
数据集上,在传统方法中取得了最好的结果。注意,它仅应用了item
之间的相似性,不考虑session
中item
的时间顺序,因此它无法捕获item
之间的序列转移。
与传统方法相比,基于神经网络的方法对于
session-based
推荐通常具有更好的性能。尽管在
Diginetica
和Nowplaying
数据集上比Item-KNN
要差,GRU4Rec
作为第一个基于RNN
的session-based
推荐方法,仍然展示了RNN
在建模序列中的能力。然而,RNN
是为序列建模而设计的,session-based
的推荐问题不仅仅是一个序列建模任务,因为用户的偏好可能会在session
中发生变化。随后的方法,
NARM
和STAMP
显著优于GRU4REC
。NARM
结合了RNN
和注意力机制,并使用RNN
的last hidden state
作为用户的主要偏好。这个结果表明:对于
session-based
推荐而言,直接使用RNN
对session
序列进行编码可能还不够,因为RNN
仅对session
中相邻item
之间的单向的item-transition
进行建模。我们还观察到,
STAMP
是一种完全基于注意力的方法,在Tmall
数据集上取得了比NARM
更好的性能。STAMP
结合了对session
的last item
的self-attention
来建模短期兴趣。这个结果证明了为不同的item
分配不同的注意力权重从而编码session
的有效性。与RNN
相比,注意力机制似乎是一个更好的选择,尽管STAMP
忽略了session
中item
的时间顺序。CSRM
在Diginetica
和Tmall
数据集上的表现优于NARM
和STAMP
。它显示了使用来自其它session
的item transition
的有效性,也显示了CSRM
使用的、具有有限slot
的memory network
的缺陷。此外,CSRM
将其它session
视为一个整体,而不区分其它session
中所编码的相关的item-transition
和不相关的item-transition
。在所有
baseline
方法中,GNN-based
方法在Diginetica
和Nowplaying
数据集上表现良好。通过将每个session
序列建模为子图并应用GNN
来对item
进行编码,SR-GNN
和FGNN
证明了在session-based
推荐中应用GNN
的有效性。这表明graph
建模比序列建模、RNN
建模、set
建模、和attention
建模要更适合session-based
推荐。我们的方法
GCE-GNN
在所有三个数据集上都优于SR-GNN
和FGNN
。具体而言,GCE-GNN
在Diginetica
数据集上比SR-GNN
平均高出6.86%
、在Tmall
数据集上平均高出16.34%
、在Nowplaying
数据集上平均高出15.71%
。与
SR-GNN
和FGNN
不同,我们的方法融合了来自global context
(即,其它session
)和local context
(即,当前session
)的信息,并且还结合了相对位置信息,从而获得一致的更好的性能。
27.2.2 Impact of Global Feature Encoder (RQ2)
我们接下来对三个数据集进行实验,从而评估
global-level feature encoder
和session-level feature encoder
的有效性。具体而言,我们设计了四种对比的模型:GCE-GNN w/o global
:没有global-level feature encoder
的GCE-GNN
,它只有local feature
,即 $ \mathbf{\vec h}_v^\prime = \mathbf{\vec h}_v^{(\mathcal s)} $ 。GCE-GNN w/o session
:没有session-level feature encoder
的GCE-GNN
,它只有global feature
,即 $ \mathbf{\vec h}_v^\prime = \text{dropout}\left(\mathbf{\vec h}_v^{(g),k} \right) $ 。GCE-GNN-1-hop
:具有global-level feature encoder
的GNN
,并且将hop
数量设置为1
。GCE-GNN-2-hop
:具有global-level feature encoder
的GNN
,并且将hop
数量设置为2
。
下表展示了不同模型之间的比较。可以看到:
很明显,使用
global-level feature encoder
之后,GCE-GNN
可以获得更好的性能。与
GCE-GNN w/o global
相比,GCE-GNN with 1-hop
和GCE-GNN with 2-hop
能够探索来自其它session
的item-transition
信息,这有助于模型作出更准确的预测。此外,在
Diginetica
数据集上,GCE-GNN with 2-hop
要比GCEGNN with 1-hop
表现更好,这表明:high-level
的探索可能从global graph
中获得更有效的信息。另外,在
Tmall
数据集上,GCE-GNN with 1-hop
要比GCEGNN with 2-hop
表现更好,这表明:high-level
的探索也可能会引入噪音。
27.2.3 Impact of Position Vector (RQ3)
position embedding
用于驱使GCE-GNN
学习每个部分在当前session
中的贡献。尽管SASRec
已经将forward position embedding
注入模型来提高性能,但是我们认为forward position embedding
对session-based
推荐任务的影响非常有限。为了验证这一点,并评估在GCE-GNN
中提出的reverse position embedding
的有效性,我们设计了一系列对比模型:GCE-GNN-NP
:使用forward position embedding
代替GCE-GNN
中的reverse position embedding
。GCE-GNN-SA
:使用self attention
代替GCE-GNN
中的position-aware attention
(这意味着不考虑position
信息)。
下表展示了不同模型的性能。可以看到:
- 我们的带
reversed position embedding
的attention network
比其它两个变体表现更好。 GCE-GNN-NP
在所有数据集上都表现不佳。这是因为模型无法捕获到每个item
到被预测的item
之间的距离,这会在训练多种多样长度的session
时误导模型。GCE-GNN-SA
在Diginetica
和Nowplaying
数据集上的表现优于GCE-GNN-NP
,这表明session
中的last item
包含与推荐最相关的信息。但是,它在Tmall
数据集上表现不佳,因为它对每个item
的贡献缺乏全面的判断。- 与这两种变体相比,
reversed position embedding
证明了它的有效性。这证实了reversed position
信息可以更准确地暗示每个item
的重要性。此外,通过注意力机制,我们过滤了当前session
中的噪音,使得模型的表现更好。
27.2.4 Impact of Aggregation Operations (RQ4)
由于我们使用
local feature encoder
和global feature encoder
,因此这里我们比较在GCE-GNN
中使用不同的聚合操作(即,门控机制、最大池化、拼接机制)。对于门控机制,我们在
local feature representation
$ \mathbf{\vec h}^{(l)} $ 和global feature representation
$ \mathbf{\vec h}^{(g)} $ 之间使用线性差值:其中:
$ \sigma(\cdot) $ 是sigmoid
激活函数, $ \odot $ 为逐元素乘积,而 $ \mathbf{\vec r}_v $ 被学习从而平衡两个特征的重要性。对于最大池化,我们为每个特征取每个维度的最大值:
对于拼接操作,
final representation
是向量 $ \mathbf{\vec h}_v^{(g)} $ 和 $ \mathbf{\vec h}_v^{(s)} $ 之间的拼接:其中:
$ \mathbf M\in \mathbb R^{d\times (2d)} $ 为转换矩阵。
下表展示了三个数据集上不同聚合操作的性能。可以看到:
- 在
Diginetica
和Tmall
数据集的Recall@20
和MRR@20
指标上,具有sum
池化的GCE-GNN
优于其它聚合操作。 max
池化在Diginetica
和Nowplaying
数据集的所有指标上都是表现最差的,但是它在Tmall
数据集的MRR@20
指标上优于其它两个聚合器。- 尽管使用了额外的参数,但是门控机制和拼接操作的性能也比
sum
池化更差,可能是因为参数过多导致了过拟合。
27.2.5 Impact of Dropout Setting (RQ5)
为了防止
GCE-GNN
过拟合,我们采用了dropout
正则化技术,该技术已经被证明在包括GNN
在内的各种神经网络架构中是有效的。dropout
的关键思想是:在训练期间以概率 $ p $ 随机丢弃神经元,同时使用所有神经元进行测试。下图展示了
dropout
(作用在 $ \mathbf{\vec h}_v^{(g),k} $ 上)对Diginetica
和Tmall
数据集的影响。可以看到:- 当
dropout ratio
较小时,模型在两个数据集上的表现都不好,因为模型很容易过拟合。 - 当在
Diginetica
上设置dropout ratio = 0.4
、在Tmall
上设置为0.6
时,模型实现了最佳的性能。 - 然而,当
dropout ratio
很大时,模型的性能开始恶化,因为模型很难通过有限的可用神经元从数据中学习。
- 当
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论