数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
三十、DHCN [2021]
session-based recommendation: SBR
是一种新兴的推荐范式,其中无法获得长期的user profile
。一般而言,一个session
是一个在购物事件shopping event
中包含了很多购买的item
的交易transaction
,session-based
推荐专注于通过利用实时的用户行为来预测next-item
。session-based
推荐领域的大多数研究工作都将session
视为有序的序列,其中RNN-based
方法和GNN-based
方法已经展示出强大的性能。在
RNN-based
方法中,成功的关键是将session-based
数据建模为单向序列,因为数据通常是在短时间内生成的,并且可能具有时间依赖性。然而,这个假设也可能会限制住这些RNN-based
模型,因为它考虑不全面。实际上,与严格顺序的方式生成的语言序列不同,在用户行为序列中可能没有如此严格的时间顺序。例如,在
Spotify
上,用户可以选择随机播放专辑或按顺序播放,这会生成两个不同的收听记录。但是,这两种播放模式都对应同一组歌曲。换句话讲,在这种情况下打乱两个item
的顺序并不会导致用户偏好的扭曲。相反,严格且独立地建模item
的相对顺序可能会使得推荐模型容易过拟合。最近,
GNN
已被证明在session-based
推荐领域是有效的。与RNN-based
方法不同,GNN-based
方法将session-based
数据建模为有向子图,将item transition
建模为pairwise relation
,这稍微放松了连续item
之间的时间依赖性假设。然而,与
RNN-based
方法相比,现有的GNN-based
方法仅展示出微不足道的提升。潜在的原因是它们忽略了session-based
数据中复杂的item correlation
。在实际场景中,一个item
转移往往是由先前很多item clicks
的联合效果joint effect
来触发的,并且item
之间存在many-to-many
的高阶关系。显然,简单的图无法描述这种类似集合set-like
的关系。
为了克服这些问题,论文
《Self-Supervised Hypergraph Convolutional Networks for Session-based Recommendation》
提出了一种基于超图hypergraph
的新的session-based
推荐方法来建模session
中item
之间的高阶关系。从概念上讲,超图由节点集合和超边hyperedge
集合组成,其中每条超边可以连接任意数量的节点并用于编码高阶的数据相关性。作者还假设
session
中的item
是时间相关temporally correlated
的,但是不是严格顺序依赖的。超边的特性完全符合作者的假设,因为超边是set-like
的,它强调所涉及元素的一致性coherence
而不是相对顺序。因此,超边为我们提供了捕获session
中复杂交互的灵活性和能力。从技术上讲:
- 首先,论文将每个
session
建模为一个超边,其中所有item
相互链接。不同的超边通过共享的item
相互链接从而构成了超图,其中超图包含item-level
的高阶相关性。 - 然后,论文通过将每条超边建模为一个节点从而在超图的基础上构建一个线性图
line graph
,并且聚焦于超边之间的连通性,其中这种连通性刻画了session-level
的关系。 - 之后,论文开发了双通道超图卷积网络
Dual channel Hypergraph Convolutional Network: DHCN
从而分别从两个graph
中捕获复杂的item
相关性、以及cross-session
的信息。
下图说明了所提出方法的超图构造和
pipeline
。通过在两个通道中堆叠多个层,论文可以借助超图卷积的优势来生成高质量的推荐结果。然而,由于每条超边仅包含有限数量的
item
,固有的数据稀疏性问题可能会限制超图建模带来的好处。为了解决这个问题,论文创新性地将自监督集成到模型中,从而增强超图建模。直观而言,
DHCN
的两个通道可以看做是描述session
的intra-information
和inter-information
的两个不同视图,而它们中的每一个都对对方的信息知之甚少。利用自监督学习最大化通过两个通道学到的session representation
之间的互信息,这两个通道可以相互获取新的信息从而提高各自在item/session
特征抽取中的性能。然后,论文将推荐任务和自监督任务统一在一个primary & auxiliary learning
框架下。通过联合优化这两个任务,推荐任务的性能获得了不错的收益。总而言之,这项工作的主要贡献总结如下:
- 作者为
session-based
推荐提出了一种新颖的DHCN
,该模型可以通过超图建模来捕获item
之间的beyond pairwise relation
、以及cross-session information
。 - 作者创新地将自监督任务集成到模型训练中,从而增强超图建模并改进推荐任务。
- 大量实验表明,作者提出的模型比
state-of-the-art baseline
具有压倒性的优势,并且在benchmark
数据集上实现了统计显著的改进。
相关工作:
session-based
推荐:session-based
推荐的早期探索主要集中在序列建模上,其中马尔科夫决策过程是该阶段的首选技术。深度学习的发展为利用序列数据提供了替代方案。RNN
和CNN
等深度学习模型随后被用于session-based
推荐并取得了巨大成功,GRU4Rec
、GRU4Rec++
、NARM
、STAMP
是经典的RNN-based
模型。GNN
最近在session-based
推荐中的应用也展示出有前景的结果。与处理序列数据的RNN-based
方法不同,GNN-based
方法在session
导出的图上学习item transition
。SR-GNN
是一项开创性的工作,它使用gated GNN
从而将session
建模为图结构数据。GC-SAN
采用自注意力机制通过图信息聚合来捕获item
依赖关系。FGNN
构建session graph
来学习item transition pattern
,并重新思考session-based
推荐中item
的序列模式。GCE-GNN
对单个session graph
和global session graph
进行图卷积,从而学习session-level embedding
和global-level embedding
。
尽管这些研究表明
GNN-based
模型优于其它方法(包括RNN-based
方法),但是它们都未能捕获到复杂的、高阶的item
相关性。超图学习
Hypergraph Learning
:超图为复杂的高阶关系提供了一种自然的方式。HGNN
和HyperGCN
是首先将图卷积应用于超图的。《Dynamic hypergraph neural networks》
提出了一个动态超图神经网络,并且《Line Hypergraph Convolution Network: Applying Graph Convolution for Hypergraphs》
开发了线性超图卷积网络。还有一些研究将超图学习与推荐系统相结合。与我们最相关的工作是
HyperRec
,它使用超图来建模短期用户偏好从而用于next-item
推荐。然而,它没有利用超边之间的信息,并且也不是为session-based
场景而设计的。此外,该模型的高复杂度使得它无法在实际场景中部署。目前,还没有研究将超图神经网络和session-based
推荐相结合,我们是首个填补这一空白的人。自监督学习:自监督学习是一种新兴的机器学习范式,旨在从原始数据中学习
data representation
。由于自监督学习目前仍处于起步阶段,目前只有几项研究将其与推荐系统相结合。与我们工作最相关的是用于序列推荐的
S3-Rec
,它使用feature mask
来创建自监督信号。但是它不适用于session-based
推荐,因为session
数据非常稀疏,masking feature
不能产生强的自监督信号。目前,自监督学习在
hypergraph representation learning
和session-based
推荐方面的潜力尚未研究。我们是第一个将自监督学习集成到session-based
推荐和超图建模的场景中。
30.1 模型
令
$ \mathcal I=\{i_1,i_2,\cdots,i_N\} $ 为item
集合,其中 $ N $ 为item
数量。每个session
表示为 $ \mathbf s = [i_{s,1},i_{s,2},\cdots,i_{s,m_s}] $ ,其中 $ m_s $ 为session
$ \mathbf s $ 的长度, $ i_{s,k}\in \mathcal I, 1\le k\le m_s $ 表示session
$ \mathbf s $ 中的一个交互item
。我们将每个
item
$ i\in \mathcal I $ 嵌入到一个embedding
空间,记做 $ \mathbf{\vec e}_i $ 。令 $ \mathbf{\vec x}_i^{(l)}\in \mathbb R^{d_l} $ 为item
$ i $ 在深度神经网络中第 $ l $ 层的向量的representation
, $ d_l $ 为向量的维度。所有item
在第 $ l $ 层的向量的representation
记做 $ \mathbf X^{(l)}\in \mathbb R^{N\times d_l} $ 。每个
session
$ s $ 由一个向量 $ \mathbf{\vec s} $ 来表达。session-based
推荐的任务是:对于任意给定的session
$ \mathbf s $ 来预测next item
, 即 $ i_{s,m_s+1} $ 。超图:令
$ G=(V,E) $ 为一个超图,其中 $ V $ 为包含 $ N $ 个unique
节点的节点集合, $ E $ 为包含 $ M $ 条超边的超边集合。每条超边 $ \epsilon\in E $ 包含两个或多个节点并被分配一个正的权重 $ W_{\epsilon,\epsilon} $ ,并且所有权重构成一个对角矩阵 $ \mathbf W = \text{diag}(W_{\epsilon,\epsilon})\in \mathbb R^{M\times M} $ 。矩阵
$ \mathbf W $ 刻画的是超边之间的连接,这里用对角矩阵表示任意两个超边之间没有连接。超图可以用关联矩阵
incidence matrix
$ \mathbf H\in \mathbb R^{N\times M} $ 来表示,其中:如果超边 $ \epsilon\in E $ 包含节点 $ v_i\in V $ ,那么 $ H_{i,\epsilon} = 1 $ 否则 $ H_{i,\epsilon} = 0 $ 。对于每个节点和每个超边,它们的
degree
定义为:节点的度矩阵为
$ \mathbf D = \text{diag}(D_{i,i})\in \mathbb R^{N\times N} $ ,超边的度矩阵为 $ \mathbf B = \text{diag}(B_{\epsilon,\epsilon})\in \mathbb R^{M\times M} $ 。超图的线性图
line graph
:给定超图 $ G=(V,E) $ ,超图的线性图 $ L(G) $ 定义为这样的一个图:- 线性图
$ L(G) $ 中的每个节点对应于超图 $ G $ 中的一条超边。 - 如果超图
$ G $ 中的两条超边共享至少一个节点,那么位于线性图 $ L(G) $ 中对应于这两条超边的节点是相连的。
具体而言,
$ L(G) = (V_L,E_L) $ ,其中:我们为线性图的每条边
$ (v_{e_p},v_{e_q}) $ 赋予一个权重 $ W_{p,q} = \frac{|e_p\cap e_q|}{|e_p\cup e_q|} $ 。- 线性图
30.1.1 超图构建
为了在
session-based
推荐中捕获超越pairwise
的关系,我们采用超图 $ G=(V,E) $ 将每个session
表示为超边。具体而言,我们将每个超边表示为 $ [i_{s,1},i_{s,2},\cdots,i_{s,m_s}]\in E $ ,每个item
$ i_{s,k}\in V $ 。超图构建前后,数据结构的变化如下图所示。
- 原始的
session
数据组织为线性序列,其中两个item
$ i_{s,k-1},i_{s,k} $ 被连接起来当且仅当用户在交互了 $ i_{s,k-1} $ 之后紧接着交互 $ i_{s,k} $ 。 - 将
session
数据转换为超图之后,session
中的任意两个item
都将被连接起来。
需要注意的是,我们将
session
序列转换为无向图,这符合我们的直觉,即session
中的item
仅仅是时间相关temporally related
的而不是顺序依赖sequentially dependent
的。通过这种方式,我们具体化了many-to-many
的高阶关系。- 原始的
此外,我们进一步导出了超图的线性图。每个
session
被建模为一个节点,并且不同的session
通过共享item
来连接。与描述item-level
高阶关系的超图相比,线性图描述了session-level
关系,也称作cross-session
信息。
30.1.2 双通道超图卷积网络
- 在超图构建之后,我们开发了一个双通道超图卷积网络
Dual channel Hypergraph Convolutional Network: DHCN
,从而捕获item-level
高阶关系和session-level
关系。网络中的每个通道都负责从一个图/超图中抽取有用信息,从而通过图/超图卷积来改善session-based
推荐。
a. 超图通道和卷积
超图通道对超图进行编码。由于有两个通道,直接将完整的
basic item embedding
$ \mathbf X^{(0)}\in \mathbb R^{N\times d} $ 同时馈入两个通道是不明智的。为了控制流向每个通道的embedding
的幅度,我们使用带self-gating unit: SGU
的pre-filter
,它的定义为:其中:
$ \mathbf W_{c,g}\in \mathbb R^{d\times d},\mathbf{\vec b}_{c,g}\in \mathbb R^d $ 为待学习的gating
参数, $ c\in \{h,a\} $ 代表通道。 $ \odot $ 为逐元素乘积, $ \sigma(\cdot) $ 为sigmoid
函数。
self-gating
机制通过在各维度上重新加权从而以feature-wise
粒度来调节basic item embedding
。然后我们获得特定于超图通道的item embedding
$ \mathbf X_h^{(0)} $ 以及特定于线性图通道的item embedding
$ \mathbf X_a^{(0)} $ 。为什么直接将完整的
basic item embedding
$ \mathbf X^{(0)} $ 同时馈入两个通道是不明智的?作者并未给出理由。个人猜测的原因是:希望两个通道各司其职,从而得到更好的效果。但是,这里并没有监督信息使得两个通道的能力尽可能不同(因为如果两个通道的能力尽可能相同,那么只需要一个通道就够了)。在超图上定义卷积操作的主要挑战是如何传播
item embedding
。参考《Hypergraph neural networks》
中提出的谱超图卷积spectral hypergraph convolution
,我们将超图卷积定义为:其中:
$ \mathbf P^{(l)}\in \mathbb R^{d\times d} $ 为两个卷积层之间的可学习的参数矩阵。上式的括号内可以重新组织为:
$ \sum_{\epsilon=1}^{M}H_{i,\epsilon}W_{\epsilon,\epsilon}\sum_{j=1}^{N}\left(H_{j,\epsilon}\mathbf{\vec x}_{j}^{(l)}\mathbf P^{(l)}\right) $ 。 其中:- 内层:对于每条超边
$ \epsilon $ ,聚合它包含的所有节点representation
。其中权重为 $ H_{j,\epsilon} $ (这里设定为0/1
的二元值),并且节点representation
经过 $ \mathbf P^{(l)} $ 的线性投影。 - 外层:聚合节点
$ i $ 所属的所有超边,其中权重为 $ H_{i,\epsilon}\times W_{\epsilon,\epsilon} $ 。由于本文中 $ W_{\epsilon,\epsilon} $ 设置为1
,因此权重等于 $ H_{i,\epsilon} $ (为0/1
二元值)。
根据
《Simplifying graph convolutional networks》
的建议,我们不使用非线性激活函数。对于 $ W_{\epsilon,\epsilon} $ ,我们为每条超边分配相同的权重1
。因此,上述等式的行归一化row normalization
形式的矩阵方程为:超图卷积可以看做是对超图结构执行
node-hyperedge-node
特征变换的两阶段refinement
:- 乘法操作
$ \mathbf H^\top\mathbf X_h^{(l)} $ 定义了从节点到超边的信息聚合。 - 而在前者的基础上在左乘
$ \mathbf H $ 可以视为聚合从超边到节点的信息。 $ \mathbf W $ 用于对超边加权,而 $ \mathbf D $ 和 $ \mathbf B $ 用于归一化。
- 内层:对于每条超边
在将
$ \mathbf X_h^{(0)} $ 通过了 $ L $ 个超图卷积层之后,我们将每一层获得的item embedding
取平均,从而获得final item embedding
:这里直接取平均的优势是计算简单。但是,是否每一层都是同样地重要?可以考虑非均匀加权,通过模型自动学习权重(例如参数化的权重系数,或者
attention
机制)。可以通过聚合该
session
中item
的representation
来表达session embedding
。我们遵循SR-GNN
中使用的策略来refine
session
$ \mathbf s = [i_{s,1},i_{s,2},\cdots,i_{s,m_s}] $ 的embedding
:其中:
$ \mathbf{\vec x}_{m_s}^* $ 为session
$ \mathbf s $ 中last item
$ i_{s,m_s} $ 的embedding
,它表示当前用户意图。 $ \mathbf{\vec x}_t^* $ 为session
$ \mathbf s $ 中第 $ t $ 个item
的embedding
。 $ \tilde {\mathbf{\vec s}}_g $ 为用户在整个session
中的general interest embedding
,它通过soft-attention
机制聚合item embedding
来表示,其中item
具有不同的重要性。 $ \mathbf{\vec f}\in \mathbb R^d,\mathbf W_1\in \mathbb R^{d\times d},\mathbf W_2\in \mathbb R^{d\times d} $ 是用于学习item
权重 $ \alpha_t $ 的注意力机制的参数。hybrid session embedding
$ \mathbf{\vec s}_h $ 拼接了 $ \mathbf{\vec x}_{m_t}^* $ 和 $ \tilde {\mathbf{\vec s}}_g $ 从而表示从超图结构推断出的完整的用户偏好。 $ \mathbf W_3\in \mathbb R^{d\times (2d)} $ 将hybrid session embedding
转换到 $ \mathbb R^d $ 空间。
注意,根据我们在前面描述的动机,我们放弃了其它
session-based
推荐技术中使用的序列建模技术,如GRU
单元和self-attention
机制。当前意图是我们使用的唯一的时间因素temporal factor
,因此我们的模型非常高效且轻量级。
b. 线性图通道和卷积
线性图通道对超图的线性图进行编码。下图展示了我们如何将超图转换为它的线性图。线性图可以看做是一个简单的图,它包含
cross-session
信息并描述了超边的连通性。在卷积操作之前,类似地,我们通过将
$ \mathbf X^{(0)} $ 传入SGU
从而获得特定于线性图通道的item embedding
$ \mathbf X^{(0)}_a $ 。由于线性图通道中不涉及任何item
,我们首先通过查找属于每个session
的item
并取这些item embedding
的均值(从 $ \mathbf X^{(0)}_a $ 中取得),从而来初始化特定于线性图通道的session embedding
$ \mathbf S_a^{(0)} $ 。 $ L(G) $ 的关联矩阵incidence matrix
定义为 $ \mathbf A\in \mathbb R^{M\times M} $ ,其中 $ M $ 为线性图中的节点数量,并且根据前面的定义有: $ A_{p,q} = W_{p,q} $ 。令 $ \hat{\mathbf A} = \mathbf A + \mathbf I $ ,其中 $ \mathbf I $ 为单位矩阵。令 $ \hat{\mathbf D}\in \mathbb R^{M\times M} $ 为度矩阵,它是对角矩阵并且 $ \hat D_{p,p} = \sum_{q=1}^M \hat A_{p,q} $ 。那么线性图的卷积定义为:其中:
$ \mathbf Q^{(l)}\in \mathbb R^{d\times d} $ 为待学习的权重矩阵。在每个卷积层中,
session
都从它的邻居那里收集信息。通过这种方式,学到的 $ \mathbf S_a^{(l+1)} $ 可以捕获cross-session
信息。同样地,我们将 $ \mathbf S_a^{(0)} $ 通过 $ L $ 个图卷积层,然后将每一层获得的session embedding
取平均,从而获得final session embedding
:这里直接取平均的优势是计算简单。但是,是否每一层都是同样地重要?可以考虑非均匀加权,通过模型自动学习权重(例如参数化的权重系数,或者
attention
机制)。
30.1.3 模型优化和推荐生成
给定一个
session
$ \mathbf s $ ,我们对所有候选item
$ i\in \mathcal I $ 计算推荐分 $ \hat z_i $ :其中
$ \mathbf{\vec x}_i $ 来自于 $ \mathbf X^{(0)} $ 。拼接所有的 $ \hat z_i $ ,则我们得到推荐分的分布(未归一化的): $ \hat{\mathbf{\vec z}} = \left(\hat z_1,\cdots,\hat z_N\right)^\top\in \mathbb R^N $ 。这里假设每个通道都是同样重要,是否可以区分不同通道的重要性?
然后,我们使用一个
softmax
函数来计算每个item
成为session
中next item
的概率:我们的学习目标为交叉熵损失函数(单个样本):
其中:
$ \mathbf{\vec y} $ 是ground-truth
的one-hot
编码向量, $ y_i $ 为 $ \mathbf{\vec y} $ 的第 $ i $ 个分量。为简单起见,我们忽略了
L2
正则化项。我们通过Adam
优化器来优化该损失函数。
30.1.4 增强 DHCN 的自监督学习
超图建模使得我们的模型能够实现显著的性能。然而,我们认为
session
数据的稀疏性可能会阻碍超图建模,这将导致推荐性能次优suboptimal
。受到简单图上自监督学习成功实践的启发,我们创新地将自监督学习集成到网络中,从而增强超图建模。自监督学习通过以下两个步骤进行:
创建自监督信号:回想以下,在
DHCN
中,我们通过两个通道学习两组特定于通道的session embedding
。由于每个通道都编码一个图/超图,因此两组embedding
对彼此知之甚少但是可以相辅相成。简单而言,这两组embedding
可以作为彼此的ground truth
而用于自监督学习,并且这种one-to-one
映射被视为label augmentation
。如果两个session embedding
都表示同一个session
的不同视图,那么我们将这一对标记为ground-truth
,否则标记为negative
。对比学习:我们将
DHCN
中的两个通道视为刻画session
不同方面的两个视图。然后对比了通过两个视图学到的两组session embedding
。我们采用InfoNCE
,并使用来自ground-truth
样本(positive
)和negative
样本之间的二元交叉熵作为学习目标:其中:
$ \tilde{\mathbf {\vec s}}_h $ (或 $ \tilde{\mathbf {\vec s}}_a $ )是negative
样本,它是通过对 $ \mathbf S_h $ ( 或 $ \mathbf S_a $ ) 进行逐行和逐列随机混洗得到的。 $ f_D(\cdot,\cdot): \mathbb R^d\times \mathbb R^d\rightarrow \mathbb R $ 是一个判别器函数,它以两个向量作为输入,然后对它们之间的一致性进行评分。我们简单地将两个判别器实现为两个向量之间的内积。
这个目标函数被解释为最大化在不同视图中学到的
session embedding
之间的互信息(《Deep Graph Infomax》
)。通过这种方式, 它们可以从彼此获取信息,从而改善它们各自在item/session
特征抽取中的性能。尤其是那些仅包含几个item
的session
可以利用cross-session
信息来改善它们的embedding
。
最后,我们将推荐任务和自监督任务统一为一个
primary&auxiliary
学习框架,其中推荐任务是主任务、自监督任务是辅助任务。联合学习的目标函数为:其中
$ \beta $ 平衡了自监督任务的重要性。
30.2 实验
数据集:
Yoochoose
和Diginetica
。对于这两个数据集,我们遵循
SR-GNN
和NARM
从而删除仅包含一个item
的session
、以及删除出现次数少于5
次的item
,然后将数据集拆分为训练集和测试集。- 对于
Yoochoose
数据集,测试集由最近几天的session
组成。 - 对于
Diginetica
数据集,测试集由最近几周的session
组成。
然后我们通过序列拆分的方式来进行数据集增强,即对于
session
$ \mathbf s = [i_{s,1},i_{s,2},\cdots,i_{s,m_s}] $ ,我们生成多个标记序列:由于
Yoochoose
的训练集非常大,我们遵循SR-GNN
、STAMP
和NARM
仅利用整个训练序列中最近的1/64
和1/4
,从而形成两个新的训练集,并将它们命名为Yoochoose1/64
和Yoochoose1/4
。数据集的统计信息如下表所示。
- 对于
baseline
方法:item-KNN
:推荐与session
中先前点击的item
所相似的item
,其中相似度使用session
向量之间的余弦相似度。session
向量:长度为总的session
个数。如果item
出现在第 $ i $ 个session
中,则该向量的第 $ i $ 个元素为1
。FPMC
:是一种基于马尔科夫链的序列方法。GRU4REC
:利用session-parallel
的mini-batch
训练过程,并采用ranking-based
损失函数来建模用户行为序列。NARM
:一个RNN-based
模型来建模用户序列行为。STAMP
:采用自注意力机制来增强session-based
推荐。SR-GNN
:应用gated graph convolutional layer
来学习item transition
。FGNN
:将session
中的next item
推荐形式化为图分类问题。
此外,我们评估了
DHCN
的另一个变体 $ S^2\text{-DHCN} $ (其中 $ \beta = 3 $ ),表示自监督版本。没有和
HyperRec
的对比。毕竟相关工作里已经提到了HyperRec
。猜测原因是:HyperRec
是在不同数据集上评估的,因此作者这里没有把HyperRec
拿来对比。评估指标:
Precision: P@K
、Mean Reciprocal Rank: MRR@K
。超参数配置:
- 通用配置:
embedding size = 100
、batch size = 100
、L2
正则化系数为 $ 10^{-5} $ 。 - 对于
DHCN
:采用两层架构,初始学习率为0.001
。 - 对于
baseline
模型:我们参考了他们在原始论文中报告的最佳参数配置,并在可用时直接报告他们的结果,因为我们使用相同的数据集和评估设置。
- 通用配置:
实验结果:整体性能如下表所示。我们没有像
NARM
一样报告FPMC
的结果,因为在Yoochoose1/4
数据集上运行FPMC
的内存需求对于普通的深度学习计算平台而言太大了。可以看到:
GNNs-based
模型:SR-GNN
和FGNN
优于RNN-based
模型。这些改进可以归因于GNN
的巨大容量。但是,与DHCN
带来的改进相比,这些改进是微不足道的。DHCN
在所有数据集的所有baseline
上都展示出压倒性的优势,尤其是在Diginetica
数据集上。在分析了Diginetica
的数据模式之后,我们发现许多item
经常以item-set
的形式在不同的session
中共现,这是超图建模的理想选择。这可能是导致如此卓越结果的原因。与
SR-GNN
和FGNN
相比,我们的模型有两个优势:- 它使用超图来捕获超越
pairwise
的关系。通过将每个超边建模为团clique
(其中,团内的item
之间完全相互连接) ,可以利用远距离item
之间的关联。 - 线性图考虑了
cross-session
信息。
此外,需要注意的是,
MRR
的改进比Precision
的改进更为显著,这意味着DHCN
不仅可以成功命中groud-truth item
,而且在top-K
推荐列表中的排名也大大提升。- 它使用超图来捕获超越
虽然不如超图建模带来的效果那么可观,但是自监督学习带来的提升也还可以。具体而言,在两个平均
session
长度较短的数据集上,自监督学习发挥着更重要的作用,这与我们的假设一致:即session
数据的稀疏性可能会阻碍超图建模的好处。同时,通过自监督学习来最大化DHCN
中两个视图之间的互信息可以解决这个问题。
消融研究:为了研究
DHCN
中每个模块的贡献,我们开发了DHCN
的三个变体:DHCN-H
:仅使用超图通道。即:推荐分
$ \hat z_i = \mathbf{\vec s}_h^\top \mathbf{\vec x}_i $ 。DHCN-L
:仅使用线性通道。即:推荐分
$ \hat z_i = \mathbf{\vec s}_a^\top \mathbf{\vec x}_i $ 。DHCN-NA
:没有soft attention
机制的版本。即:
$ \tilde {\mathbf{\vec s}}_g = \frac{1}{m_s}\times \sum_{t=1}^{m_s} \mathbf{\vec x}_t^* $ 。
我们将它们在
Yoochoose1/64
和Diginetica
数据集上与完整的DHCN
进行比较。从下图可以看到:
- 每个组件都对最终性能有贡献。
- 超图通道贡献最大。当仅使用超图通道时(使用注意力机制),在这两个数据集上的效果远高于其它的两个变体。
- 相比之下,仅使用线性图通道会导致模型在这两个数据集上的性能大幅下降。这可以证明建模高阶
item
相关性的有效性,以及捕获cross-session
信息以捕获item-level
信息的必要性。 - 此外,移除超图通道中的
soft attention
也导致模型这两个数据集上的性能大幅下降,这与我们在前面的假设保持一致,即,session
中的item
是时间相关的。
根据这个消融实验,我们可以得出结论:一个成功的
session-based
推荐模型应该同时考虑时间因素temporal factor
和高阶的item
相关性。这里时间因素是通过
last click item
来表现的。超参数研究:
不同
session
长度的影响:遵从STAMP
,我们将Yoochoose1/64
和Diginetica
的session
分为两个不同长度的组,分别命名为Short
和Long
。Short
包含长度小于或等于5
的session
,而Long
包含长度大于5
的session
。我们选择切分点为5
,是因为它是所有session
中最常见的长度。然后我们比较了
DHCN, NARM, STAMP, SR-GNN
在Short
组和Long
组上的P@20
性能,结果如下表所示。可以看到:在这两个数据集上,在大多数情况下,DHCN
在不同session
长度的情况下稳定地优于所有其它baseline
模型,尤其是在Long
组。模型深度的影响:我们将
DHCN
的层数范围限制在{1, 2, 3, 4}
以内,结果如下图所示。可以看到:DHCN
对于层数不是很敏感。层数为2
时效果最好,但是层数大于2
时由于过度平滑导致模型性能略有下降。自监督学习的影响:我们向
$ S^2\text{-DHCN} $ 引入一个超参数 $ \beta $ 来控制自监督学习的重要性,其中 $ \beta\in \{0.1,1,3,5,10,20,50\} $ 。实验结果如下图所示。可以看到:- 当使用自监督任务时,推荐任务获得了不错的收益。
- 小的
$ \beta $ 可以在两个数据集上同时提升Prec@20
和MRR@20
。 - 随着
$ \beta $ 的增加,MRR@20
开始下降,但是Prec@20
仍然保持增加。目前,我们不知道为什么Prec@20
没有性能下降,希望我们在未来的工作中解决这个问题。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论