数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
二十、SR-GNN [2019]
随着互联网上信息数量的快速增长,在许多互联网应用中(如搜索、电商、流媒体网站),推荐系统成为帮助用户缓解信息过载问题并选择有趣信息的基础。大多数现有的推荐系统都假设
user profile
和历史行为都被持续地记录。然而,在许多服务中,user id
可能是未知的,并且只有正在进行的session
期间的用户行为历史可用。因此,建模在一个session
中有限的行为并生成推荐是非常重要的。相反,在这种情况下,依赖于充足的user-item
交互的传统推荐方法无法实现很好的推荐。这里的
user profile
指的是用户历史行为记录,而不是指的是年龄性别等用户画像。由于具备很高的实用价值,人们对这个问题的研究兴趣越来越大,并且已经开发了多种
session-based
的推荐方法。基于马尔科夫链,一些工作根据前一个行为来预测用户的next action
。在强独立性假设下,历史行为的独立组合independent combination
限制了预测准确性。近年来,大多数研究将
Recurrent Neural Network: RNN
应用于session-based
的推荐系统,并获得了有前景的结果。《Session-based recommendations with recurrent neural networks》
首先提出了一种RNN
方法,然后通过数据增强和考虑用户行为的时间漂移temporal shift
来增强模型。- 最近,
NARM
设计了一个全局RNN
和局部RNN
推荐器,来同时捕获用户的序列行为sequential behavior
和主要意图main purpose
。 - 类似于
NARM
,STAMP
也通过使用简单的MLP
网络和注意力网络来捕获用户的通用兴趣general interest
和当前兴趣current interest
。
尽管上述方法取得了令人满意的结果并成为
state-of-the-art
的技术,但是它们仍然存在一些局限性。首先,如果在一个
session
中没有足够的用户行为,那么这些方法难以估计user representation
。通常,这些
RNN
方法的hidden vector
被视为user representation
,然后可以基于这些representation
来生成推荐,例如,NARM
的全局推荐器。然而,在session-based
的推荐系统中,session
大多是匿名的而且数量非常多,并且session
点击中涉及的用户行为通常是有限的。因此很难从每个session
中准确估计每个用户的representation
。其次,之前的工作表明(
NARM
和STAMP
),item transition
的模式很重要,可以用作session-based
推荐中的局部因子,但是这些方法总是建模连续item
之间的单向转移singleway transition
,而忽略了上下文之间的转移,即session
中的其它item
。因此,这些方法经常忽略远距离item
之间的复杂转移。RNN
网络仅建模单向转移,而attention
机制建模全局相关性而忽略了item
之间的关系。
为了克服上述限制,论文
《Session-Based Recommendation with Graph Neural Networks》
提出了一种新的Session-based Recommendation with Graph Neural Network: SR-GNN
方法,从而探索item
之间的丰富转移并生成准确的item
潜在向量。Graph Neural Network: GNN
被设计用于生成图的representation
。最近,
GNN
被广泛用于为natural language processing: NLP
和computer vision: CV
的应用构建图结构依赖关系,如脚本事件script event
预测、情景识别situation recognition
、图像分类。对于
session-based
推荐,论文首先从历史session
序列构建有向图。基于session graph
,GNN
能够捕获item
的转移并相应地生成准确的item embedding
向量,这是传统的序列方法(如MC-based
方法和RNN-based
方法)所难以揭示的。基于准确的item embedding
向量,SR-GNN
构造了可靠的session representation
,并可以推断出next-click item
。SR-GNN
的核心在于item embedding
的生成。传统的session-based
推荐方法中,item embedding
是自由变量并随机初始化。在SR-GNN
推荐方法中,item embedding
是根据GNN
计算得到的,因此包含了item
之间的转移关系。能否仅仅依赖于
GNN
来建模session-based
推荐?读者认为是不可行的。因为GNN
无法建模序列信息,而序列信息(尤其是last click item
)对于session-based
推荐至关重要。下图说明了所提出的
SR-GNN
方法的工作流程。首先,所有
session
序列都被建模为有向的session graph
,其中每个session
序列都可以视为一个子图。也可以将所有
session
序列建模为一张大的图,而不是每个session
一个session graph
。但是论文在实验部分对比了这两种方式的效果,实验表明:每个session
一个session graph
的效果更好。因为前者(建模为一张大图)会显著影响当前session
的完整性。然后,每个
session graph
依次被处理,并且可以通过gated graph neural network: GGNN
来获得每个子图中涉及的所有节点的潜在向量。之后,我们将每个
session
表达为该session
中该用户的全局偏好global preference
和当前兴趣current interest
的组合,其中这些全局session embedding
向量和局部session embedding
向量都由节点的潜在向量组成。session embedding
的计算方式类似于STAMP
,其中全局session embedding
向量通过注意力机制计算得到,局部session embedding
向量就是last click item
的embedding
向量。最后,对于每个
session
,我们预测每个item
成为next click
的概率。
论文在真实世界的代表性数据集上进行了大量实验,实验结果证明了所提出方法的有效性并达到了
state-of-the-art
。论文主要贡献总结如下:
- 论文将独立的
session
序列建模为图结构化数据,并使用GNN
来捕获复杂的item transistion
。据作者所知,该方法提出了在session-based
推荐场景中建模的新视角。 - 为了生成
session-based
推荐,论文不依赖于user representation
而是使用session representation
,它可以仅基于每个单一session
中涉及的item
的潜在向量来获得。 - 在真实世界数据集上进行的大量实验表明,
SR-GNN
显著优于state-of-the-art
的方法。
相关工作:这里我们回顾了
session-based
推荐系统的一些相关工作,包括:传统方法、基于马尔科夫链的序列方法、RNN-based
方法。然后我们介绍了图上的神经网络。传统的推荐方法:
矩阵分解是推荐系统的一种通用方法。矩阵分解的基本目标是将
user-item
评分矩阵分解为两个低秩矩阵,每个矩阵代表用户潜在因子或item
潜在因子。它不太适合session-based
推荐,因为用户偏好仅由一些positive
点击来提供。item-based
邻域方法是一种自然的解决方案,其中item
相似性是根据同一session
中的item co-occurrence
来计算的。这些方法难以考虑item
的顺序,并且仅基于the last click
来生成预测。然后人们提出了基于马尔科夫链的序列推荐方法,该方法根据用户的前一个行为来预测
next action
。《An mdp-based recommender system》
将推荐生成视为序列优化问题,并采用马尔科夫决策过程Markov decision process: MDP
来解决该问题。- 通过对用户的个性化概率转移矩阵进行分解,
FPMC
对每两次相邻点击之间的序列行为进行建模,并为每个序列提供更准确的预测。
然而,基于马尔科夫链的模型的主要缺点是:它们独立地组合了历史行为
combine past components independently
。这种独立性假设太强,从而限制了预测的准确性。
基于深度学习的方法:最近,一些基于神经网络的预测模型,尤其是
language model
被人们提出。在众多language model
中,recurrent neural network: RNN
在句子建模方面是最成功的模型,并且已被广泛应用于各种自然语言处理任务,例如机器翻译、对话机器人conversation machine
、图像字幕生成image caption
。RNN
也成功应用于许多application
,例如序列点击预测、位置预测location prediction
、以及next basket
推荐。对于
session-based
推荐,《Session-based recommendations with recurrent neural networks》
提出了RNN
的方法,然后《Parallel recurrent neural network architectures for feature-rich session-based recommendations》
扩展到具有并行RNN
的架构,该架构可以根据被点击的item
及其特征来建模session
。此后,人们基于这些RNN
方法提出了一些工作。《Improved recurrent neural networks for session-based recommendations》
通过使用适当的数据增强技术并考虑用户行为的时间漂移temporal shift
来提高RNN
模型的性能。《When recurrent neural networks meet the neighborhood for session-based recommendation》
将RNN
方法和neighborhood-based
方法结合起来,从而混合序列模式和共现信号co-occurrence signal
。《3d convolutional networks for session-based recommendation with content features》
将session
点击与item
描述和item
类别等内容特征相结合,通过使用三维卷积神经网络生成推荐。- 此外,
《Session-aware information embedding for e-commerce product recommendation》
通过list-wise
的深度神经网络来建模每个session
内的有限用户行为,并使用一个list-wise
的ranking model
来为每个session
生成推荐。 - 此外,具有一个
encoder-decoder
架构的神经注意力推荐机neural attentive recommendation machine: NARM
采用RNN
上的注意力机制来捕获用户的序列行为特征和主要意图。 - 然后,
《Stamp:Short-term attention/memory priority model for session-based recommendation》
提出了一种使用简单MLP
网络和注意力网络的short-term attention priority model
,即STAMP
,从而有效地捕获用户的通用兴趣和当前兴趣。
图上的神经网络:如今,神经网络已被用于生成图结构化数据(如社交网络、知识图谱)的
representation
。扩展自
word2vec
的无监督算法DeepWalk
旨在基于随机游走来学习图节点的representation
。继DeepWalk
之后,无监督网络嵌入算法LINE
和node2vec
是最具代表性的方法。另一方面,经典的神经网络
CNN
和RNN
也部署在图结构数据上。《Convolutional networks on graphs for learning molecular fingerprints》
引入了一个卷积神经网络,它直接对任意大小和形状的图进行操作。《Semi-supervised classification with graph convolutional networks》
是一种可扩展的方法,通过谱图卷积的局部近似来选择卷积架构。它是一种有效的变体,也可以直接对图进行操作。
但是,这些方法仅能在无向图上实现。
先前,人们提出了
《The graph neural network model》
来操作有向图。作为GNN
的修改,《Gatedgraph sequence neural networks》
提出了gated GNN
来使用GRU
并采用back-propagation through time: BPTT
来计算梯度。最近,
GNN
被广泛应用于不同的任务,例如脚本事件预测、情景识别、图像分类。
20.1 模型
在这里我们介绍了所提出的
SR-GNN
,它将图神经网络应用于session-based
的推荐。我们首先形式化问题,然后解释如何从session
构建图,最后描述SR-GNN
方法。形式化问题:
session-based
推荐旨在预测用户接下来会点击哪个item
,仅仅基于用户当前的序列session
数据,而无需访问用户的长期历史行为数据。这里我们给出该问题的形式化formulation
如下。在
session-based
的推荐中,令 $ \mathcal V=\{v_1,v_2,\cdots,v_m\} $ 表示由所有session
中涉及的所有unique item
组成的集合。一个匿名session
序列 $ s $ 可以表述为根据时间戳排序的一个列表 $ s=[v_{s_1},v_{s_2},\cdots,v_{s_n}] $ ,其中 $ v_{s_i}\in \mathcal V $ 表示用户在session
$ s $ 中点击的第 $ i $ 个item
。session-based
推荐的目标是预测next click
,即针对session
$ s $ 预测sequence label
$ v_{s_{n+1}} $ 。在
session-based
的推荐模型下,对于session
$ s $ ,我们输出所有可能item
的概率 $ \hat{\mathbf{\vec y}} $ ,其中 $ \hat{\mathbf{\vec y}} $ 的元素值是相应item
的推荐分。 $ \hat{\mathbf{\vec y}} $ 中的top-K
取值的item
就是被推荐的候选item
。构建
session graph
:每个session
序列 $ s $ 可以建模为有向图 $ \mathcal G_s = (\mathcal V_s,\mathcal E_s) $ 。在这个session graph
中,每个节点代表一个item
$ v_{s_i}\in \mathcal V $ 。每条边 $ (v_{s_{i-1}},v_{s_i}) \in \mathcal E_s $ 意味着用户在session
$ s $ 中点击item
$ v_{s_{i-1}} $ 之后紧接着点击了item
$ v_{s_i} $ 。由于序列中可能重复出现多个
item
,我们为每条边分配一个归一化的权重,权重的计算方法是:边的出现次数除以该边的起始节点的出度outdegree
。我们将每个
item
$ v \in \mathcal V $ 嵌入到一个统一的embedding
空间中,节点向量 $ \mathbf{\vec v}\in \mathbb R^d $ 表示通过GNN
学到的item
$ v $ 的潜在向量,其中 $ d $ 是维度。基于节点向量,每个session
$ s $ 可以由一个embedding
向量 $ \mathbf{\vec s} $ 表达,其中该向量由该图中使用的节点向量来生成。
20.1.1 学习 Item Embedding
然后我们介绍了如何通过
GNN
获得节点的潜在向量。普通的GNN
由《The graph neural network model》
提出,它扩展了神经网络方法从而用于处理图结构数据。《Gated graph sequence neural networks》
进一步引入门控循环单元gated recurrent unit
并提出gated GNN
。GNN
非常适合session-based
的推荐,因为它可以在考虑丰富的节点链接的情况下自动抽取session graph
的特征。我们首先演示
session graph
中节点向量的学习过程。形式上,对于图 $ \mathcal G_s $ 的节点 $ v_{s_i} $ ,更新函数为:其中:
$ \left[\mathbf{\vec v}_{s_1}^{(t-1)},\cdots,\mathbf{\vec v}_{s_n}^{(t-1)}\right]\in \mathbb R^{d\times n} $ 为session
$ s $ 中所有节点的node vector
。 $ \mathbf A_s\in \mathbb R^{n\times 2n} $ 为session graph
的connection matrix
,它决定了graph
中节点之间如何相互通信。 $ \mathbf A_{s,i:}\in \mathbb R^{1\times 2n} $ 为 $ \mathbf A_s $ 中对应于节点 $ v_{s,i} $ 的那一行。 $ \mathbf H\in \mathbb R^{2d\times d} $ 为投影矩阵, $ \mathbf{\vec b}\in \mathbb R^d $ 为偏置向量。 $ \mathbf{\vec z}_{s_i}\in \mathbb R^d $ 为复位门reset gate
, $ \mathbf{\vec r}_{s_i} \in \mathbb R^d $ 为更新门update gate
, $ \mathbf{\vec v}_{s_i}\in \mathbb R^d $ 为节点 $ v_{s_i} $ 的潜在向量。 $ \mathbf W_z,\mathbf U_z,\mathbf W_r,\mathbf U_r,\mathbf W_o,\mathbf U_o\in \mathbb R^{d\times d} $ 为投影矩阵。 $ \sigma(\cdot) $ 为sigmoid
函数, $ \odot $ 为 逐元素乘法。
这里
$ \mathbf A_s $ 定义为两个邻接矩阵 $ \mathbf A_s^\text{(out)} $ 和 $ \mathbf A_s^\text{(in)} $ ,分别对应于session graph
中出边outgoing edge
的邻接矩阵和入边incoming edge
的邻接矩阵。例如,考虑一个session
$ s=[v_1,v_2,v_3,v_2,v_4] $ ,对应的图 $ \mathcal G_s $ 和矩阵如下图所示。对于矩阵
$ \mathbf B\in \mathbb R^{n\times d} $ , $ \mathbf A_s \mathbf B $ 的矩阵乘法其实等价于: $ \mathbf A_s\mathbf B = \left[\mathbf A_s^\text{(out)} \mathbf B,\mathbf A_s^\text{(in)}\mathbf B\right]\in \mathbb R^{n\times 2d} $ 。注意,
SR-GNN
可以为各种类型的session graph
支持不同的connection matrix
$ \mathbf A_s $ 。如果使用不同的session graph
的构建策略,那么connection matrix
$ \mathbf A_s $ 将会相应改变。此外,当存在节点的内容特征,如描述信息和类别categorical
信息时,该方法可以进一步推广。具体而言,我们可以将节点的内容特征和节点向量拼接起来从而处理这些内容特征信息。对于每个
session graph
$ \mathcal G_s $ ,GGNN
同时处理所有节点。 $ \mathbf{\vec a}_{s_i}^{(t)} $ 用于在矩阵 $ \mathbf A_s $ 给出的限制之下,不同节点之间的信息传播。具体而言:- 首先,它抽取邻域的潜在向量并将它们作为
input
馈入到GNN
中。 - 然后,更新门和复位门分别决定保留哪些信息、丢弃哪些信息。
- 之后,我们通过前一个状态、当前状态、复位门来构造候选状态。
- 最后,在更新门的控制下,
final state
是前一个隐状态和当前候选状态的组合。
在更新
session graph
中的所有节点直到收敛之后,我们可以获得final
的节点向量。这里需要迭代
session graph
直到达到不动点fixed point
。然而,可以采用GraphSage, Semi-GCN
等方法,这些方法无需达到不动点,只需要迭代 $ K $ 次, $ K $ 为一个超参数。- 首先,它抽取邻域的潜在向量并将它们作为
20.1.2 生成 Session Embedding
之前的
session-based
的推荐方法总是假设每个session
存在用户的distinct latent representation
。相反,SR-GNN
方法不对该向量做任何假设。在SR-GNN
中,session
直接由该session
中涉及的节点来表达。为了更好地预测用户的next click
,SR-GNN
将session
的长期偏好和当前兴趣相结合,并将这种组合的embedding
作为session embedding
。引入
user embedding
需要直到user id
。而在session-based
推荐场景之下,通常是不知道user id
的,即匿名session
。在将所有
session graph
输入GGNN
之后,我们获得了所有节点的向量。然后,为了将每个session
表达为一个embedding
向量 $ \mathbf{\vec s}\in \mathbb R^d $ :我们首先考虑
session
$ s $ 的局部embedding
$ \mathbf{\vec s}_l $ 。对于session
$ s=[v_{s_1},v_{s_2},\cdots,v_{s_n}] $ ,局部embedding
可以简单地定义为last-clicked item
的embedding
,即: $ \mathbf{\vec s}_l = \mathbf{\vec v}_{s_n} $ 。然后,我们通过聚合所有节点向量来考虑
session graph
$ \mathcal G_s $ 的全局embedding
$ \mathbf{\vec s}_g $ 。考虑到这些embedding
中的信息可能具有不同level
的优先级,我们进一步采用soft-attention
机制来更好地表达全局session
偏好global session preference
:其中:
$ \mathbf{\vec q}\in \mathbb R^d $ 为attention
的参数向量。 $ \mathbf W_1,\mathbf W_2\in \mathbb R^{d\times d} $ 为投影矩阵, $ \mathbf{\vec c}\in \mathbb R^d $ 为偏置向量。
这里将局部
embedding
$ \mathbf{\vec s}_l $ 作为注意力机制的query
向量。最后,我们通过对局部
embedding
向量和全局embedding
向量拼接之后的线性变换来计算混合embedding
向量 $ \mathbf{\vec s}_h $ :其中:
$ \mathbf W_3\in \mathbb R^{d\times 2d} $ 为投影矩阵。这里对局部
embedding
向量和全局embedding
向量进行线性组合,组合权重由模型自动学到。
20.1.3 生成推荐以及模型训练
在获得每个
session
的embedding
之后,对于每个候选item
$ v_i\in \mathcal V $ ,我们将其embeddign
$ \mathbf{\vec v}_i\in \mathbb R^d $ 乘以session representation
$ \mathbf{\vec s}_h $ 从而得到候选item
$ v_i $ 的推荐分,即:然后我们应用一个
softmax
函数来得到模型的输出向量 $ \hat{\mathbf{\vec y}} $ :其中:
$ \hat{\mathbf{\vec z}}\in \mathbb R^m $ 表示所有候选item
的推荐分, $ \hat{\mathbf{\vec y}}\in \mathbb R^m $ 表示这些候选item
作为session
$ s $ 的next click
的概率。对于每个
session graph
,损失函数定义为预测值和ground truth
的交叉熵。即:其中:
$ \mathbf{\vec y} $ 为ground truth
, $ y_i $ 为 $ \mathbf{\vec y}_i $ 的第 $ i $ 个元素。最后,我们使用时间反向传播
Back-Propagation Through Time: BPTT
算法来训练所提出的SR-GNN
模型。注意。在session-based
的推荐场景中,大多数session
的长度相对较短。因此,建议选择相对较少的训练step
从而防止过拟合。
20.2 实验
数据集:
Yoochoose
:来自RecSys Challenge 2015
,包含一个电商网站6
个月内的用户点击流stream of user clicks
。Diginetica
:来自于CIKM Cup 2016
,这里仅使用交易数据。
为了公平比较,遵从
NARM
和STAMP
,我们过滤掉所有长度为1
的session
以及出现频次少于5
次的item
。Yoochoose
数据集剩下7981580
个session
和37483
个item
,而Diginetica
数据集剩下204771
个session
和43097
个item
。对于
Yoochoose
我们将最后几天的session
设为测试集,对于Diginetiva
我们将最后几周的session
设为测试集。遵从NARM
和STAMP
,我们还使用了Yoochoose
训练序列的最近1/64
和1/4
。此外,类似于
《Improved recurrent neural networks for session-based recommendations》
,我们通过拆分input
序列来生成序列和对应的label
。具体而言,对于session
序列 $ s=[v_{s_1},v_{s_2},\cdots,v_{s_n}] $ ,我们生成input
和相应的label
为: $ (\{v_{s_1}\},v_{s_2}),(\{v_{s_1},v_{s_2}\},v_{s_3}),\cdots,(\{v_{s_1},v_{s_2},\cdots,v_{s_{n-1}}\},v_{s_n}) $ 用于训练和测试。数据集的统计数据如下表所示。
baseline
方法:POP
和S-POP
:分别推荐训练集和当前session
中的top-N
流行的item
。Item-KNN
:推荐与session
中先前点击的item
相似的item
,其中相似性定义为session
向量之间的余弦相似度。session
向量:一个 $ N $ 维向量, $ N $ 为session
数量。如果item
在第 $ i $ 个session
中出现,那么该向量的第 $ i $ 个元素为1
,否则为0
。BPR-MF
:通过随机梯度下降优化pairwise
的排序目标函数。FPMC
:一种基于马尔科夫链的序列预测方法。GRU4REC
:使用RNN
为session-based
推荐来建模用户序列。NARM
:采用带注意力机制的RNN
来捕获用户的主要意图和序列行为。STAMP
:捕获用户对当前session
的通用兴趣general interest
、以及last click
的当前兴趣current interest
。
评估指标:
P@20
(Precision)
):一个广泛应用的准确性指标,它代表了top 20
个item
中,正确推荐item
的比例。MRR@20
(Mean Reciprocal Rank
):是正确推荐的item
的排名倒数reciprocal rank
的均值。当排名差于20
时,排名倒数置为零。MRR
指标考虑推荐的order
,其中MRR
值大则表示正确的推荐排在ranking list
的头部。
实验配置:
- 遵从之前的方法(
NARM
和STAMP
),我们将两个数据集上的潜在向量维度设置为 $ d=100 $ 。 - 此外,我们在验证集上选择其它超参数,其中验证集是训练集的随机
10%
子集。 - 所有参数均使用均值为零、标准差为
0.1
的高斯分布进行初始化。 - 我们使用
mini-batch
的Adam
优化器,其中学习率设置为0.001
,每3
个epoch
之后将衰减0.1
。 - 此外,
mini-batch size
设为100
,L2
正则化系数设为 $ 10^{-5} $ 。
- 遵从之前的方法(
和
baseline
的比较:为了展示所提出模型的整体性能,我们将SR-GNN
与其它state-of-the-art
的session-based
的推荐方法进行比较,比较结果如下表所示,其中最佳结果以粗体突出显示。注意,与《Neural attentive session-based recommendation》
一样,由于初始化FPMC
的内存不足,这里没有报告Yoochoose 1/4
上的性能。SR-GNN
将分离separated
的session
序列聚合为图结构数据。在这个模型中,我们共同考虑全局session
偏好以及局部兴趣。根据实验,很明显,所提出的SR-GNN
方法在P@20
和MRR@20
指标上在所有三个数据集上都实现了最佳性能。这验证了SR-GNN
的有效性。POP, S-POP
等传统算法的性能相对较差。这种简单的模型仅基于重复的共现item
、或者连续item
进行推荐,这在session-based
推荐场景中是有问题的。即便如此,
S-POP
的表现仍然优于POP, BPR-MF, FPMC
等竞争对手,这证明了session
上下文信息session contextual information
的重要性。Item-KNN
比基于马尔科夫链的FPMC
取得了更好的结果。注意,Item-KNN
仅利用item
之间的相似性,而不考虑序列信息。这表明传统的基于马尔科夫链的方法主要依赖的假设是不现实的,这个假设是:successive items
的独立性。基于神经网络的方法(如
NARM
和STAMP
)优于传统方法,这展示了在推荐领域应用深度学习的能力。短期/长期记忆模型,如GRU4REC
和NARM
,使用循环单元来捕获用户的通用兴趣general interest
,而STAMP
通过利用last-click item
来改善短期记忆short-term memory
。这些方法显式地建模用户的全局行为偏好,并考虑用户的previous actions
和next click
之间的转移transition
,从而获得优于传统方法的性能。但是,它们的性能仍然不如
SR-GNN
。与NARM
和STAMP
等state-of-the-art
方法相比,SR-GNN
进一步考虑了session
中item
之间的转移,从而将每个session
建模为一个graph
,这个graph
可以捕获用户点击之间更复杂、更隐式的链接。而在NARM
和GRU4REC
中,它们显式地建模每个用户,并通过separated
的session
序列来获得user representation
,忽略了item
之间可能的交互关系。因此,SR-GNN
对session
行为的建模能力更强大。RNN
网络显式建模单向转移,而attention
机制显式建模全局相关性而忽略了item
之间的关系。相比之下,SR-GNN
建模了item
之间更复杂、更隐式的关系(如一阶邻近性、高阶邻近性)。此外,
SR-GNN
采用soft-attention
机制生成session representation
,这可以自动选择最重要的item
转移,并忽略当前session
中噪音noisy
的、无效的用户action
。相反,STAMP
仅使用last click item
和previous actions
之间的转移,这可能还不够。SR-GNN
在soft-attention
机制中,也使用last click item
和previous actions
之间的关系。但是在SR-GNN
中,每个item embedding
考虑了session graph
中更复杂的、更隐式的转移。其它
RNN
模型,如GRU4REC
和NARM
,在传播过程中也无法选择有影响力的信息。它们使用所有previous items
来获得代表用户通用兴趣的向量。当用户的行为是漫无目的、或者用户的兴趣在当前session
中快速漂移时,传统模型无法有效地处理噪音的session
。NARM
在通过局部编码器计算当前session
的主要意图时,也使用注意力机制来自适应地关注更重要的item
。因此作者这里表述有误。
各种链接方案的比较:所提出的
SR-GNN
方法可以灵活地构建graph
中item
之间的链接关系。我们展示了另外两个链接变体,从而评估每个session graph
中item
之间的不同方式的关系。变体一:我们将所有
session graph
聚合在一起,并将它们建模为一个有向的、整体的item graph
,称之为global graph
。在global graph
中,每个节点表示一个unique item
,每条边表示从一个item
到另一个item
的有向转移。我们使用从
global graph
中提取的边权重代替connection matrix
,称之为:具有归一化的全局链接normalized global connection
的SR-GNN
(SR-GNNNGC
)。变体二:我们将一个
session
中item
之间的所有高阶关系显式建模为直接链接。我们使用布尔权重表示所有高阶关系,并将其对应的connection matrix
附加到SR-GNN
的connection matrix
,称之为:具有全连接的SR-GNN
(SR-GNN-FC
)。
不同链接方案的结果如下图所示,可以看到:
所有三种链接方案都实现了与
state-of-the-art
的STAMP
和NARM
方法更好或几乎相同的性能,证明了将session
建模为graph
的有用性。与
SR-GNN
相比,对于每个session
,SR-GNNNGC
除了考虑当前session
中的item
之外,还考虑了其它session
的影响,从而减少了当前session graph
中high degree
节点对应的边的影响。这种融合方法会显著影响当前session
的完整性,尤其是当graph
中边的权重差异较大时,从而导致模型性能下降。此外,
SR-GNNGC
需要构建一张大的global graph
,当节点数量非常多(如数十亿),此时对内存也是一个挑战。而session graph
小得多,也更容易处理。此外,即使
session graph
之间相互独立,但是item embedding
是共享的,因此每个item
可以从所有的session graph
中学习各种转移模式。对于
SR-GNN
和SR-GNN-FC
,前者仅对连续item
之间的确切关系进行建模,后者进一步显式地将所有高阶关系视为直接链接。结果表明,SR-GNN-FC
的性能要比SR-GNN
更差,尽管两种方法的实验结果差别不大。如此小的结果差异表明,在大多数推荐场景中,并非每个高阶转移都可以直接转换为直接链接,高阶
item
之间的intermediate stage
仍然是必需的。例如,考虑到用户在浏览一个网站时浏览了以下网页:A -> B -> C
,不适合直接在A
之后推荐网页C
而没有中间网页B
,因为A
和C
之间没有直接的联系。
不同
Session Embedding
的比较:我们将SR-GNN
的session embedding
生成策略与以下三种方法进行比较:- 仅
local embedding
(SR-GNNL
):即,仅考虑last-clicked item
的embedding
。 - 仅具有均值池化的
global embedding
(SR-GNNAVG
):即,仅考虑global embedding
并且 $ \mathbf{\vec s}_g = \sum_{i=1}^n \frac{1}{n}\mathbf{\vec v}_{s_i} $ 。 - 仅具有注意力机制的
global embedding
(SR-GNN-ATT
) :即,仅考虑global embedding
。
下图给出了三种不同
embedding
策略的方法的结果。可以看到:原始的
SR-GNN
在所有三个数据集上都取得了最佳结果,这验证了显式结合当前session
兴趣和长期偏好的重要性。此外,
SR-GNN-ATT
在三个数据集上的 性能优于SR-GNN-AVG
。这表明session
可能包含一些噪音的行为。此外,结果表明,注意力机制有助于从session
数据中抽取重要行为从而构建长期偏好。注意,
SR-GNN
的降级版本SR-GNN-L
仍然优于SR-GNN-AVG
,并达到与SR-GNN-ATT
几乎相同的性能,这表明:当前session
兴趣和长期偏好对于session-based
推荐都是至关重要的。仅使用
last-clicked item
的embedding
效果就很好,那么是否可以丢弃所有previous
行为而仅保留last-clicked item
?如果可以的话,那么会极大地简化推荐算法。读者认为是不可以的,因为还依赖于
session graph
来生成last-clicked item
的embedding
。
- 仅
session
序列长度分析:我们进一步分析了不同模型处理不同长度session
的能力。为了比较,我们将Yoochoose 1/64
和Diginetica
分为两组,其中:Short
组表示session
的长度小于或等于5
个,Long
组表示session
的长度超过5
个。之所以选择数字5
,是因为所有数据集中session
的平均长度最接近整数5
。Yoochoose
数据集上的session
中,属于Short
组和Long
组的比例分别为0.701
和0.299
,而Diginetica
数据集则为0.764
和0.236
。对于每种方法,我们在下表中报告了P@20
的指标。可以看到我们的
SR-GNN
及其变体在两个数据集上具有不同session
长度时表现稳定。这证明了SR-GNN
的优越性能、以及GNN
在session-based
推荐中的适应性adaptability
。相反,
NARM
和STAMP
的性能在Short
组和Long
组的性能变化很大。STAMP
解释这样的差异归因于重复的动作replicated actions
:这可能是因为重复点击可能会强调不重要item
的一些无效信息,并使其难以捕获到next action
相关的用户兴趣。与
STAMP
类似,NARM
在Short
组上获得了良好的性能,但是随着session
长度的增加,性能迅速下降。部分原因是RNN
模型难以处理长的序列。
然后我们分析了
SR-GNN-L, SR-GNN-ATT, SR-GNN
在不同session
长度下的性能:与
STAMP
和NARM
相比,这三种方法取得了有前景的结果。这可能是因为基于GNN
的学习框架,我们的方法可以获得更准确的节点向量。这种node embedding
不仅可以捕获节点的潜在特征,还可以全局地建模节点链接。此外,
SR-GNN
的性能是最稳定的,而SR-GNN-L, SR-GNN-ATT
的性能在Short
组和Long
组上波动很大。结论不成立,
SR-GNN-ATT
的波动与SR-GNN
一样都很小。此外,
SR-GNN-L
也可以取得良好的结果,尽管该变体仅使用local session embedding vector
。这可能是因为建模local session embedding vector
时还隐式地考虑了session graph
中一阶节点和高阶节点的属性。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论