数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
二十一、GC-SAN [2019]
推荐系统在帮助用户缓解信息过载问题、并在许多应用领域(如电商、音乐、社交媒体)中选择有趣的内容方面发挥着重要作用。大多数现有的推荐系统都是基于用户历史交互。然而,在许多应用场景中,
user id
可能是未知的。为了解决这个问题,人们提出了session-based
推荐,从而根据用户在当前session
中的previous behaviors
序列来预测用户可能采取的next action
(如点击一个item
)。由于
session-based
推荐的高度的实际价值,人们提出了多种session-based
的推荐方法。马尔科夫链
Markov Chain: MC
是一个经典的例子,它假设next action
是基于前一个action
。在如此强的假设下,历史交互的独立结合independent combination
可能会限制推荐的准确性。最近的研究强调了在
session-based
推荐系统中使用recurrent neural network: RNN
,并且取得了有前景的成果。例如:《Session-based recommendations with recurrent neural networks》
提出使用GRU
(RNN
的一种变体)来建模短期偏好。它的改进版本《Improved recurrent neural networks for session-based recommendations》
进一步提高了推荐性能。- 最近,
NARM
旨在通过采用全局RNN
和局部RNN
同时捕获用户的序列模式sequential pattern
和主要意图main purpose
。
然而,现有方法通常对
consecutive items
之间的单向转移transition
进行建模,而忽略了整个session
序列之间的复杂转移。最近,一种新的序列模型
Transformer
在各种翻译任务中实现了state-of-the-art
的性能和效率。Transformer
没有使用递归或卷积,而是利用由堆叠的self-attention
网络所组成的encoder-decoder
架构来描绘input
和output
之间的全局依赖关系。self-attention
作为一种特殊的注意力机制,已被广泛用于建模序列数据,并在许多应用中取得了显著成果,如机器翻译、情感分析、序列推荐。Transformer
模型的成功可以归因于它的self-attention
网络,该网络通过加权平均操作充分考虑了所有信号。尽管取得了成功,但是这种操作分散了注意力的分布,导致缺乏对相邻item
的局部依赖性local dependency
,并限制了模型学习item
的contextualized representation
的能力。而相邻item
的局部上下文信息local contextual information
已被证明可以增强建模neural representations
之间依赖关系的能力,尤其是对于注意力模型。self-attention
的注意力分布是作用在全局的,因此相对而言会忽略相邻item
的重要性。即,对self-attention
而言,通常难以学到一个相邻item
的重要性为1.0
、其它item
的重要性全零的注意力分布。在论文
《Graph Contextualized Self-Attention Network for Session-based Recommendation》
中,作者提出通过graph neural network: GNN
来增强self-attention
网络。- 一方面,
self-attention
的优势在于通过显式关注所有位置来捕获长期依赖关系long-range dependency
。 - 另一方面,
GNN
能够通过编码边属性或节点属性来提供丰富的局部上下文信息。
具体而言,论文引入了一个叫做
GC-SAN
的graph contextual self-attention network
用于session-based
的推荐。该网络得益于GNN
和self-attention
的互补的优势。- 首先,
GC-SAN
从所有历史的session
序列构建有向图(每个session
构建一个session graph
)。基于session graph
,GC-SAN
能够捕获相邻item
的转移 ,并相应地为图中涉及到的所有节点生成latent vector
。 - 然后,
GC-SAN
应用self-attention
机制来建模远程依赖关系,其中session embedding vector
由图中所有节点的latent vector
生成。 - 最后,
GC-SAN
使用用户在该session
的全局兴趣和该用户的局部兴趣的加权和作为embedding vector
,从而预测该用户点击next item
的概率。
GC-SAN
和SR-GNN
非常类似,主要差异在于:GC-SAN
采用attention
机制来建模远程依赖关系,而GC-SAN
采用self-attention
机制。除此之外,其它部分几乎完全相同。这项工作的主要贡献总结如下:
- 为了改进
session
序列的representation
,论文提出了一种新的、基于graph neural network: GNN
的graph contextual self-attention ntwork: GC-SAN
。GC-SAN
利用self-attention
网络和GNN
的互补优势来提高推荐性能。 GNN
用于建模separated
的session
序列的局部图结构依赖关系,而多层self-attention
网络旨在获得contextualized non-local representation
。- 论文在两个
benchmark
数据集上进行了广泛的实验。通过综合的分析,实验结果表明:与state-of-the-art
方法相比,GC-SAN
的有效性和优越性。
相关工作:
session-based
推荐是基于隐式反馈的推荐系统的典型应用,其中user id
是未知的,没有显式的偏好(如评分)而只仅提供positive observation
(如购买或点击)。这些positive observation
通常是通过在一段时间内被动跟踪用户记录而获得的序列形式的数据。在这种情况下,经典的协同过滤方法(如矩阵分解)会失效,因为无法从匿名的历史交互中构建user profile
(即用户的所有历史交互)。这个问题的一个自然解决方案是
item-to-item
推荐方法。在session-based
的setting
中,可以从可用的session
数据中,使用简单的item co-occurrence pattern
预计算pre-computed
一个item-to-item
相似度矩阵。《Item-based collaborative filtering recommendation algorithms》
分析了不同的item-based
推荐技术,并将其结果与基础的k-nearest neighbor
方法进行了比较。- 此外,为了建模两个相邻
action
之间的序列关系,《Factorizing personalized markov chains for next-basket recommendation》
提出了将矩阵分解和马尔科夫链Markov Chain: MC
的力量结合起来进行next-basket
推荐。
尽管这些方法被证明是有效的且被广泛使用,但是它们仅考虑了
session
的most recent click
,而忽略了整个点击序列的全局信息。最近,针对
session-based
推荐系统,研究人员转向神经网络和attention-based
模型。例如:《Session-based recommendations with recurrent neural networks》
最早探索Gated Recurrent Unit: GRU
(RNN
的一种特殊形式)用于预测session
中的next action
,《Improved recurrent neural networks for session-based recommendations》
后续提出了改进版本从而进一步提高推荐性能。如今,人们已经提出
Graph Neural Network: GNN
以RNN
的形式来学习图结构化的数据的representation
,并广泛应用于不同的任务,如图像分类、脚本事件script event
预测、推荐系统(《Session-based recommendation with graph neural networks》
)。另一方面,人们已经在各种应用(如,自然语言处理
natural language processing: NLP
和计算机视觉computer vision: CV
)中引入了几种attention-based
机制。标准的普通的注意力机制已经被纳入推荐系统(NARM
、STAMP
)。最近,《Attention is all youneed》
提出了完全基于self-attention
来建模单词之间的依赖关系,无需任何递归或卷积,并且在机器翻译任务上取得了state-of-the-art
的性能。基于简单的和并行化的self-attention
机制,SASRec
提出了一种基于self-attention
的序列模型,其性能优于MC/CNN/RNN-based
的序列推荐方法。《Csan: Contextual self-attention network for user sequential recommendation》
提出了一个在feature level
的、 统一的contextual self-attention network
,从而捕获异质用户行为的多义性polysemy
,从而进行序列推荐。大多数现有的序列推荐模型都用
self-attention
机制来捕获序列中的远距离item-item transition
,并且取得了state-of-the-art
性能。然而,在相邻item
之间建立复杂的上下文信息仍然具有挑战性。在本文中,我们通过GNN
来增强self-attention network
,同时保持模型的简单性和灵活性。据我们所知,这是对session-based
推荐的self-attention network
和GNN
的首次尝试,其中:self-attention network
可以建模session
的全局item-item
信息,GNN
可以通过对构建的图的属性特征进行编码从而学习局部上下文信息。
21.1 模型
这里我们介绍了基于
GNN
的contextualized self-attention
推荐模型GC-SAN
。我们首先公式化session-based
推荐问题,然后详细描述我们模型的架构(如下图所示)。GC-SAN
结合了GNN
和SASRec
,只是将SASRec
的embedding layer
替换为GNN
生成的embedding
。相比之下,
SR-GNN
和GC-SAN
都使用了GNN
,二者区别在于SR-GNN
使用了last click item embedding
作为query
的attention
,而GC-SAN
使用了self-attention
。session-based
推荐旨在仅基于用户当前的交互序列来预测用户接下来想点击哪个item
。这里我们给出session-based
推荐问题的公式如下。令
$ \mathcal V=\{v_1,v_2,\cdots,v_{m}\} $ 为所有session
中涉及的所有unique item
的集合。对于每个匿名session
,用户点击action
的序列记做 $ \mathcal S=\{v_{s_1},v_{s_2},\cdots,v_{s_n}\} $ ,其中 $ v_{s_t}\in \mathcal V $ 表示用户在time step
$ t $ 的点击item
。正式地,给定action
序列在时刻 $ t $ 的prefix
$ \mathcal S_t =\{v_{s_1},v_{s_2},\cdots,v_{s_{t-1}},v_{s_t} \} $ (即,被截断到时刻 $ t $ ),我们的模型旨在预测时刻 $ t+1 $ 的可能的点击。准确而言,我们的模型会生成一个包含所有候选item
的排序列表ranking list
。 $ \hat{\mathbf{\vec y}}=\left\{\hat y_1,\hat y_2,\cdots,\hat y_{m}\right\} $ 表示所有候选item
的输出概率,其中 $ \hat y_i $ 对应item
$ v_i $ 的推荐分。 由于推荐器通常会为用户做出多个推荐,因此我们从 $ \hat{\mathbf{\vec y}} $ 中选择top-N
个item
进行推荐。
21.1.1 动态图结构
图构建:
GNN
的第一部分是从所有session
中构建一个有意义的图。给定一个session
$ \mathcal S=\{v_{s_1},v_{s_2},\cdots,v_{s_n}\} $ ,我们将每个item
$ v_{s_i} $ 视为一个节点,将 $ (v_{s_{i-1}},v_{s_i}) $ 视为一条边,表示用户在session
$ \mathcal S $ 中点击item
$ v_{s_{i-1}} $ 之后点击了 $ v_{s_i} $ 。因此,每个session
序列都可以建模为有向图。可以通过促进不同节点之间的通信来更新图结构。具体而言,令
$ \mathbf M^I,\mathbf M^O\in \mathbb R^{n\times n} $ 分别表示session graph
中的入边incoming edge
加权链接、出边outgoing edge
加权链接。例如,考虑一个session
$ \mathcal S=\{v_1,v_3,v_2,v_4,v_3\} $ ,对应的graph
和矩阵(即 $ \mathbf M^I,\mathbf M^O $ )如下图所示。由于session
序列中可能会重复出现多个item
,因此我们为每条边分配归一化权重,其计算方法为:边的出现次数除以该边的起始节点的out-degree
。注意,我们的模型可以支持各种构建
session graph
的策略,并生成相应的链接矩阵connection matrix
。然后我们可以将两个加权的链接矩阵与图神经网络一起应用来捕获session
序列的局部信息。节点向量更新:接下来我们介绍如何通过
GNN
获得节点的潜在特征向量latent feature vector
。我们首先将每个item
$ v\in \mathcal V $ 映射到统一的低维潜在空间,节点向量 $ \mathbf{\vec v}\in \mathbb R^d $ 表示item
$ v $ 的 $ d $ 维实值潜在向量。对于graph session
中时刻 $ t $ 的每个节点 $ v_{s_t} $ ,给定链接矩阵 $ \mathbf M^I,\mathbf M^O $ ,不同节点之间的信息传播可以形式化为:其中:
$ \mathbf W_a^I,\mathbf W_a^O\in \mathbb R^{d\times d} $ 为参数矩阵, $ \mathbf{\vec b}^I,\mathbf{\vec b}^O\in \mathbb R^d $ 为偏置向量。 $ \mathbf {\vec m}_t^I,\mathbf{\vec m}_t^O\in \mathbb R^{n\times 1} $ 为 $ \mathbf M^I $ 和 $ \mathbf M^O $ 的第 $ t $ 行,对应于节点 $ v_{s_t} $ 。 $ \mathbf{\vec a}_t $ 抽取了节点 $ v_{s_t} $ 的邻域的上下文信息。
$ \left(\mathbf W_a^I\left[\mathbf{\vec v}_{s_1},\cdots,\mathbf{\vec v}_{s_n}\right]\right)\mathbf {\vec m}_t^I $ 的物理意义为:首先将节点embedding
经过 $ \mathbf W_a^I $ 投影,然后基于边的权重(由 $ \mathbf{\vec m}_t^I $ 定义)进行聚合。然后我们将
$ \mathbf{\vec a}_t $ 和previous state
$ \mathbf{\vec v}_{v_{s_{t-1}}} $ 一起作为GNN
的输入。因此,GNN layer
的final output
$ \mathbf{\vec h}_t $ 计算如下:其中:
$ \mathbf W_z,\mathbf W_r,\mathbf W_h\in \mathbb R^{d\times 2d} $ , $ \mathbf P_z,\mathbf P_r,\mathbf P_h\in \mathbb R^{d\times d} $ 都是可学习的权重矩阵。 $ \sigma(\cdot) $ 为sigmoid
函数, $ \odot $ 表示逐元素乘法。 $ \mathbf{\vec z}_t $ 为更新门,它决定保留哪些信息; $ \mathbf{\vec r}_t $ 为复位门,它决定丢弃哪些信息。
事实上这里是单层
GNN
的更新公式。在SR-GNN
中给出了多层GNN
的更新公式。在SR-GNN
中,GNN
不断迭代直到达到不动点。
21.1.2 自注意力层
self-attention
是注意力机制的一个特例,并已成功应用于许多研究主题,包括NLP
和QA
。self-attention
机制可以抽取input
和output
之间的全局依赖关系,并捕获整个input
序列和output
序列本身的item-item
转移,而不考虑它们的距离。Self-Attention Layer
:将session
序列输入GNN
之后,我们可以得到session graph
中所有节点的潜在向量,即: $ \mathbf H=\left[\mathbf{\vec h}_1,\mathbf{\vec h}_2,\cdots,\mathbf{\vec h}_n\right]\in \mathbb R^{d\times n} $ 。然后,我们将它们输入self-attention layer
从而更好地捕获全局session
偏好:其中:
$ \mathbf W^Q,\mathbf W^K,\mathbf W^V\in \mathbb R^{d\times d} $ 为投影矩阵。因为
attention
矩阵是 $ \mathbb R^{n\times n} $ ,而 $ \mathbf W^V\mathbf H\in \mathbb R^{d\times n} $ ,因此这里softmax
位于右侧。Point-Wise Feed-Forward Network
:之后,我们应用两个带ReLU
激活函数的线性变换来赋予模型非线性,并考虑不同潜在维度之间的交互。然而,在self-attention
操作中可能会发生transmission loss
。因此,我们在前馈网络之后添加了一个残差连接,这使得模型更容易利用low-layer
的信息。其中:
$ \mathbf W_1,\mathbf W_2\in \mathbb R^{d\times d} $ 为投影矩阵, $ \mathbf{\vec b_1},\mathbf{\vec b}_2\in \mathbb R^d $ 为偏置向量。此外,为了缓解深度神经网络中的过拟合问题,我们在训练期间应用了
Dropout
正则化技术。为简单起见,我们将上述整个self-attention
机制定义为:多层
self-attention
:最近的工作表明,不同的层捕获不同类型的特征。在这项工作中,我们研究了哪些level
的层从特征建模中受益最多,从而学习更复杂的item transition
。第一层定义为:
$ \mathbf E^{(1)} = \mathbf E $ 。第 $ k $ 个self-attention layer
( $ k\gt 1 $ )定义为:其中:
$ \mathbf E^{(k)}\in \mathbb R^{d\times n} $ 为multi-layer self-attention network
的final output
。
21.1.3 预测层
在若干个自适应地提取
session
序列信息的self-attention block
之后,我们实现了long-term
的self-attentive representation
$ \mathbf E^{(k)} $ 。为了更好地预测用户的next click
,我们将session
的长期偏好和当前兴趣结合起来,然后使用这种组合的embedding
作为session representation
。对于
session
$ \mathcal S=\{v_{s_1},v_{s_2},\cdots,v_{s_n}\} $ ,遵从SASRec
,我们将 $ \mathbf E^{(k)} $ 的最后一个embedding
作为global embedding
。local embedding
可以简单地定义为last clicked-item
的embedding
向量,即 $ \mathbf{\vec h}_n\in \mathbb R^d $ 。然后我们将它们加权在一起作为final session embedding
:其中:
$ \mathbf{\vec e}_n^{(k)}\in \mathbb R^d $ 为 $ \mathbf E^{(k)} $ 的最后一个embedding
, $ \omega $ 为加权系数。SR-GNN
使用的是投影矩阵来投影: $ \mathbf{\vec s}_h = \mathbf W_3\left[\mathbf{\vec h}_n, \mathbf{\vec e}^{(k)}_n\right] $ 。理论上讲,用投影矩阵的方式更灵活,模型容量更大。当 $ \mathbf W_3 $ 退化为 $ [(1-\omega),\omega] $ 时,就等价于线性加权。最后,在给定
session embedding
$ \mathbf{\vec s}_f $ 的情况下,我们预测每个候选item
$ v_i\in \mathcal V $ 作为next click
的概率为:其中:
$ \hat y_i $ 表示item
$ v_i $ 成为session
$ \mathcal S $ 中next click
的概率。注意:
$ \mathbf{\vec v}_i $ 是GNN
的output
,即它和 $ \mathbf{\vec h}_n $ 都是相同类型的embedding
。然后我们通过最小化以下目标函数来训练我们的模型:
其中:
$ \mathbf {\vec y} $ 为ground truth item
的one-hot encoding
向量, $ \theta $ 为所有的可学习的参数。
21.2 实验
我们进行实验来回答以下问题:
RQ1
:所提出的推荐模型GC-SAN
是否实现了state-of-the-art
的性能?RQ2
:关键的超参数(如权重因子、embedding size
)如何影响模型性能?
数据集:
Diginetica
:来自于CIKM Cup 2016
,这里仅使用交易数据。Retailrocket
:来自一家个性化电商公司,其中包含六个月的用户浏览记录。
对于这两个数据集,为了过滤噪音,我们过滤掉出现频次少于
5
次的item
,然后删除item
数量少于2
的所有session
。此外,对于session-based
的推荐,我们最后一周的session
数据设为测试集,剩余数据作为训练集。类似于
《Improved recurrent neural networks for session-based recommendations》
和《A simple convolutional generative network for next item recommendation》
,对于session
序列 $ \mathcal 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}) $ 用于训练和测试。预处理之后,数据集的统计数据如下表所示:
评估指标:为了评估所有模型的推荐性能,我们采用三个常见指标,即
Hit Rate
(HR@N
)、Mean Reciprocal Rank
(MRR@N
)、Normalized Discounted Cumulative Gain
(NDCG@N
)。HR@N
是对unranked
的检索结果进行评估,MRR@N
和NDCG@N
是对ranked list
进行评估。这里我们考虑top N
推荐, $ N=\{5,10\} $ 。baseline
方法:Pop
:一个简单的baseline
,它根据训练数据中的流行度来推荐排名靠前的item
。BPR-MF
:state-of-the-art
的non-sequential
的推荐方法,它使用一个pairwise ranking loss
来优化矩阵分解。IKNN
:一种传统的item-to-item
模型,它根据余弦相似度来推荐与候选item
相似的item
。item
向量的生成参考SR-GNN
的baseline
介绍部分。FPMC
:一个用于next-basket
推荐的经典的混合模型,结合了矩阵分解和一阶马尔科夫链。注意,在我们的推荐问题中,每个basket
就是一个session
。作者描述有误,应该是每个
basket
就是一个item
。GRU4Rec
:一种RNN-based
的深度学习模型,用于session-based
推荐。它利用session-parallel
的mini-batch
训练过程来建模用户行为序列。STAMP
:一种新颖的short-term memory priority
模型,用于从previous
点击中捕获用户的长期偏好、以及从session
中的last click
来捕获当前兴趣。SR-GNN
:最近提出的session-based
的GNN
推荐模型。它使用GNN
生成item
的潜在向量,然后通过传统的attention network
来表达每个session
。
性能比较(
RQ1
):为了展示我们的模型GC-SAN
的推荐性能,我们将其与其它state-of-the-art
方法进行比较。实验结果如下所示:非个性化的、基于流行度的方法(即,
Pop
)在两个数据集上的效果最差。通过独立地处理每个用户(即,个性化)并使用pairwise ranking loss
,BPR-MF
比Pop
表现更好。这表明个性化在推荐任务中的重要性。IKNN
和FPMC
在Diginetica
数据集上的性能优于BPR-MF
,而在Retailrocket
数据集上的性能差于BPR-MF
。实际上,IKNN
利用了session
中item
之间的相似性,而FPMC
基于一阶马尔科夫链。所有神经网络方法,如
GRU4Rec
和STAMP
,几乎在所有情况下都优于传统的baseline
(如:FPMC
和IKNN
),这验证了深度学习技术在该领域的实力。GRU4Rec
利用GRU
来捕获用户的通用偏好general preference
,而STAMP
通过last clicked item
来改善短期记忆。不出所料,STAMP
的表现优于GRU4Rec
,这表明短期行为对于预测next item
问题的有效性。另一方面,通过将每个
session
建模为图并应用GNN
和注意力机制,SR-GNN
在两个数据集上都优于所有其它baseline
。这进一步证明了神经网络在推荐系统中的强大能力。与
SR-GNN
相比,我们的方法GC-SAN
采用self-attention
机制自适应地为previous item
分配权重,而无论它们在当前session
中的距离如何,并捕获session
中item
之间的长期依赖关系。我们以线性方式将long-range self-attention representation
和short-term interest of the last-click
相结合,从而生成final session representation
。正如我们所看到的,我们的方法在HR, MRR, NDCG
指标在所有数据集上超越了所有baseline
。这些结果证明了GCSAN
对session-based
推荐的有效性。
模型分析(
RQ2
):这里我们深入分析研究GC-SAN
,旨在进一步了解模型。限于篇幅,这里我们仅展示HR@10
和NDCG@10
的分析结果。我们在其它指标上也获得了类似的实验结果:GNN
的影响:虽然我们可以从上表中隐式地推断出GNN
的有效性,但是我们想验证GNN
在GC-SAN
中的贡献。我们从GC-SAN
中移除GNN
模块,将其替代为随机初始化的item embedding
,并馈入self-attention layer
。下表展示了使用
GNN
和不使用GNN
之间的效果。可以发现:即使没有GNN
,GC-SAN
在Retailrocket
数据集上仍然可以超越STAMP
,而在Diginetica
数据集上被GRU4Rec
击败。事实上,
Retailrocket
数据集的最大session
长度几乎是Diginetica
数据集的四倍。一个可能的原因是:短序列长度可以构建更稠密的session graph
,提供更丰富的上下文信息,而self-attention
机制在长序列长度下表现更好。这进一步证明了self-attention
机制和GNN
在提高推荐性能方面发挥着重要作用。GNN
在短序列的session-based
推荐中的作用更大(相比长序列的session-based
推荐)。权重因子
$ \omega $ 的影响:权重因子 $ \omega $ 影响self-attention representation
和last-clicked action
之间的贡献,如下图(a)
。可以看到:- 仅将全局
self-attention
作为final session embedding
(即, $ \omega=1.0 $ ),通常要比仅考虑当前兴趣(即, $ \omega=0.0 $ ) 获得更好的性能。 $ \omega $ 的取值设置为0.4 ~ 0.8
之间的效果更好。
这表明:虽然带
GNN
的self-attention
机制可以自适应地分配权重从而关注长期依赖关系、或更近期的行为,但是短期兴趣对于提高推荐性能也是必不可少的。这个权重可以通过数据来自适应地学到。
- 仅将全局
self-attention block
数量 $ k $ 的影响:如前所述,我们研究了哪些level
的self-attention layer
从GC-SAN
中受益最多。下图(b)
展示了应用不同数量的self-attention block
的效果,其中 $ k $ 从1 ~ 6
。在这两个数据集上,我们可以观察到增加 $ k $ 可以提高GCSAN
的性能。然而,当
$ k $ 选择正确时,模型会获得最佳性能。而对于更大的 $ k $ 值,模型性能会变得更差。这可能是因为使用更多的block
( $ k\ge 4 $ )会使GC-SAN
更容易丢失low-layer
的信息。embedding size
$ d $ 的影响:下图中,我们研究了emebdding size
$ d $ 在两个数据集上的效果, $ d $ 从10 ~ 120
。在所有
baseline
中,STAMP
和SR-GNN
表现良好且稳定。因此,为了便于比较,我们使用STAMP
和SR-GNN
作为两个baseline
。从图中可以观察到:- 我们的模型
GC-SAN
在所有 $ d $ 上始终优于STAMP
。 - 当
$ d $ 小于某个值时,SR-GNN
的性能优于GC-SAN
。一旦超过这个值,GC-SAN
的性能仍然会增长并且最终在 $ d\ge 100 $ 时稳定,而SR-GNN
的性能会略有下降。这可能是因为相对较小的 $ d $ 限制了GC-SAN
捕获item
潜在因子之间的复杂transition
,而SR-GNN
可能会因为较大的 $ d $ 而过拟合从而受到影响。
- 我们的模型
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论