数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
二十五、LINet(2019)
在电商和流媒体等许多在线服务中,用户的行为通常是序列
sequential
的,例如,被查看的item
之间具有时间相关性temporal correlation
。此外,可以将序列动作sequential action
分组到session
中。每个session
由在特定时间段内发生的action
组成。session-based
推荐的任务是:给定用户在session
中的previous actions
,预测用户在同一个session
中的next action
。由于
session-based
推荐在许多application
中具有很高的实用价值,它越来越受到研究人员的关注,并提出了许多有趣且有效的方法。大多数state-of-the-art
方法都遵循encoder-predictor
架构,其中encoder
将previous actions
编码到session embedding
中,并且predictor
根据session embedding
来生成在所有可能的action
集合上的概率分布。很容易理解:在
session-based
推荐中,排序信息ordering information
对于预测next action
很有用,因为session data
本质上是序列的。然而,并非所有排序信息都很重要。具体而言,论文《Session-based Recommendation with Local Invariance》
认为:有些时候只有通用general
的high-level
的排序信息很重要,而sub-sessional level
(称作detailed ordering
)并不重要。例如,当用户想在电商网站上购买手机和一些配件时,用户可能需要针对手机及其配件比较不同品牌的多个商品。在这种情况下,用户查看不同手机或不同品牌配件的顺序并不重要,因为用户只是在比较商品,而无意按照一个特定顺序查看商品。论文《Session-based Recommendation with Local Invariance》
把短时间内查看item
时顺序无所谓的属性称作局部不变性local invariance
,这在现实世界中很容易找到。此外,high-level ordering
,即用户查看每种类别商品的排序,对next item
有影响。例如,假设用户购买了手机之后需要一个耳机:- 如果用户首先搜索手机,那么该用户可能还想购买耳机,因为该用户可能还没有耳机。
- 另一方面,如果用户首先搜索耳机,那么该用户可能只想购买耳机(而不会考虑再买一个手机)。
因此,一个好的
session-based recommender
应该考虑不同粒度level
的排序信息。然而,现有的研究并没有很好地解决这种局部不变性。关于
session-based
推荐的现有研究有两个分支:第一个分支包括以严格顺序对
action
进行编码的方法。具体而言,最近的研究在encoder
组件中应用了RNN
并取得了可喜的成果。使用RNN
的主要优点是:session
的序列属性sequential property
很自然地由网络结构来建模。因此,RNN-based
方法显著优于以前的non-RNN based
方法。但是,这些方法仍然强制执行严格的顺序。此外,这些方法更关注用户的近期actions
,不擅长在long session
中捕获依赖关系。第二个分支包括完全丢弃排序信息的方法。具体而言,受到计算机视觉和
NLP
中注意力机制的成功的启发,STAMP
设计了纯粹的attention-based
的session encoder
,并获得了state-of-the-art
的性能。与RNN-based
方法相比,STAMP
能够通过注意力机制有效地捕获同一个session
中任意两个item
之间的依赖关系。但是,session
中的high-level
的序列属性被忽略了,这在某些情况下可能会出现问题。item-level
的注意力机制 +high-level
的RNN
机制是否可行?
上述两种设计
encoder
组件的方法是两个极端,因为它们要么假设session
内用户action
之间的严格顺序,要么完全丢弃排序信息。很容易理解,排序信息很有用,因为session
数据是序列的。但是,在session
的某些局部区域(称作sub-session
)中,item
的顺序可能并不重要,因为用户不打算按照严格的顺序来点击item
。换句话讲,有些时候,在sub-session level
,重要的是item
出现,而不是顺序。为了应对上述挑战,论文
《Session-based Recommendation with Local Invariance》
提出了一个叫做LINet
的新模型,该模型通过对不同level
的序列信息给予不同程度的注意力从而考虑局部不变性。具体而言,忽略某些sub-session
中无关紧要的detailed ordering information
,而保留整个session
的high-level sequential information
。基本思想是:- 首先,使用具有高斯加权的
full self-attention layer
在sub-session
中抽取position-invariant feature
(作为sub-session
的representation
)。 - 然后,使用具有注意力机制的
RNN
(作用在sub-session representation
上)来捕获通用的序列信息。
论文的主要贡献如下:
- 论文在
session-based
推荐中识别和研究局部不变性。据作者所知,该论文是第一个在session-based
推荐的背景下考虑这一点的人。 - 论文提出了一种新颖的、基于深度学习的模型,该模型考虑了局部不变性。与以前的模型不同,这些模型要么假设
session
中item
之间的严格顺序,要么完全丢弃排序信息,而论文提出的模型通过遵循item
的通用顺序general order
来自动学习生成不受sub-session
中细微位置变化影响的session representation
。 - 在现实世界数据集上进行的大量实验表明,论文提出的模型优于
state-of-the-art
方法,并且所提出的、捕获序列信息的具有局部不变性的机制起着重要作用。
25.1 模型
令
$ \mathcal V=\{v_1,v_2,\cdots,v_{|\mathcal V|}\} $ 为包含在所有session
中的unique item
的集合。session
$ s=[v_{s,1},v_{s,2},\cdots,v_{s,|s|}] $ 为根据时间戳排序的item
序列,其中 $ v_{s,t}\in \mathcal V $ 表示在session
$ s $ 中time step
$ t $ 时刻被点击的item
。session-based
推荐任务是预测next item
,即:对于每个time step
$ t $ , $ 1\le t\le |s| $ ,给定先前点击item
的序列 $ s_t=[v_{s,1},v_{s,2},\cdots,v_{s,t}] $ 时预测next item
$ v_{s,t+1} $ 。一个典型的
session-based
推荐模型通常计算整个item
集合 $ \mathcal V $ 上的概率分布 $ p(v\mid s_t) $ ,其中top-k
概率的item
将作为推荐列表。类似于先前的
state-of-the-art
方法,我们的模型遵从encoder-predictor
架构。令
$ \mathbf V = \left\{\mathbf{\vec v}_1,\mathbf{\vec v}_2,\cdots,\mathbf{\vec v}_{|\mathcal V|}\right\} $ 表示 $ \mathcal V $ 中每个item
的embedding
向量,其中 $ \mathbf{\vec v}_i\in \mathbb R^d $ 为 $ v_i $ 的embedding
向量。给定一个session
序列 $ s_t=[v_{s,1},v_{s,2},\cdots,v_{s,t}] $ ,我们模型的输入是item embedding
列表 $ \left[\mathbf{\vec x}_1,\mathbf{\vec x}_2,\cdots,\mathbf{\vec x}_t\right] $ ,其中 $ \mathbf{\vec x}_i $ 为item
$ v_{s,i} $ 的embedding
向量。局部编码器
local encoder
将item embedding list
作为输入,并生成group representation
的一个序列,该序列对short sub-session
中的位置变动是不变invariant
的。全局编码器
global encoder
是一个序列模型,它从group representation
的序列中抽取session representation
$ \mathbf{\vec c}_h $ 。由于
NARM
和STAMP
已经证明了考虑最近兴趣的重要性和有效性,因此我们将 $ \mathbf{\vec c}_h $ 和一个表示最近点击item
的向量 $ \mathbf{\vec m}_t $ 拼接起来,构成一个hybrid representation
$ \mathbf{\vec c} $ 。在论文中,
$ \mathbf{\vec m}_t = \mathbf{\vec x}_t $ 。最后,
predictor
根据item embedding
和session hybrid representation
来在 $ \mathcal V $ 上计算next item
的概率分布。
接下来,我们将详细讨论我们模型的每个组件。
25.1.1 Local Encoder
局部编码器的目标是,抽取对每个
group
内的位置变动position change
不变的group feature
。理想情况下,每个
group
都是由group embedding
来表达,其中group embedding
是group
内item embedding
的加权和。例如,一个group
$ g $ 的group embedding
为:其中:
$ \mathcal G $ 为group
$ g $ 中的item
集合, $ w_{g,v} $ 为item
$ v $ 对group
$ g $ 的贡献, $ \mathbf{\vec v} $ 为item
$ v $ 的embedding
。然而,由于
group
数量未知,因此无法实现这一理想目标。此外,这些group
可能没有硬边界hard border
。因此,我们为每个原始item
抽取一个group embedding
。第 $ i $ 个item
对应的group embedding
定义为:这个
group emebdding
只是所有item
的加权和。即,为每个
item
构造一个group
,这有点类似于一个滑动窗口,每个窗口一个group
。 $ w_{i,j} $ 是最重要的部分,这里我们重点详述。直观而言,
group
是由相似的相邻item
而形成的。这意味着对于item
$ v_{s,i} $ 而言,如果 $ v_{s,j} $ 更相似且在时间上更接近 $ v_{s,i} $ ,那么 $ w_{i,j} $ 更大。因此,我们将 $ w_{i,j} $ 定义如下:其中:
$ \alpha_{i,j}^{(l)} $ 是使用注意力机制定义的 $ \mathbf{\vec x}_j $ 的重要性得分,可以看做是某种相似性。这里
$ l $ 表示local
, $ \mathbf{\vec p}_l,\mathbf W_l $ 为局部编码器的参数。 $ || $ 表示向量拼接。 $ f_i(\cdot) $ 为均值为零、方差为 $ \sigma_i^{2} $ 的高斯分布的概率密度函数,其中方差控制了group size
。观察到,
group
由相似的item
组成,而方差控制了group size
。相邻的item
与 $ \mathbf{\vec x}_i $ 越相似,则group size
越大,方差越大。换句话讲,方差与 $ \mathbf{\vec x}_i $ 和它的相邻item
之间的平均相似度正相关。为简单起见,我们假设是线性关系。因此,方差定义如下:其中:
$ k $ 是参数,sim()
为相似性函数(如,余弦相似度)。这里
sim()
也可以考虑使用 $ e_{i,j}^{(l)} $ 。我们在大小为
$ m $ 的context
中估计平均相似度。 $ m $ 应该足够大从而进行准确的估计。但是,较大的 $ m $ 会引入一个风险:包含了不太可能位于这个group
内的item
。根据我们的实验,我们建议将 $ m $ 设置为 $ 1 \sim 3 $ 。 $ k,m $ 是非常关键的超参数,影响LINet
的效果。
考虑
$ w_{i,j}\propto \alpha_{i,j}^{(l)}\times f_i(|i-j|) $ 。- 单独使用
$ \alpha_{i,j}^{(l)} $ (即, $ w_{i,j} = \alpha_{i,j}^{(l)} $ ),那么 $ w_{i,j} $ 实际上与一个full self-attention layer
的注意力权重相同。因此, $ \alpha_{i,j}^{(l)} $ 使得 $ \mathbf{\vec x}_i^\prime $ 成为 $ \mathbf{\vec x}_i $ 的contextualized embedding
。 - 通过添加
$ f_i(|i-j|) $ ,我们使得 $ \mathbf{\vec x}_i^\prime $ 聚焦于一个局部区域。因此, $ \mathbf{\vec x}_i^\prime $ 也可以视为一个local context embedding
,并且它关注的局部区域是由group size
动态决定的。
- 单独使用
从信号处理的角度来看,局部编码器也可以看做是一个平滑滤波器
smoothing filter
。类似的思想可以在《Making convolutional networks shift-invariant again》
中找到,其中卷积网络中的平移不变性shift invariance
通过使用平滑滤波器得到改善。我们通过根据上下文动态调整滤波器的权重(即, $ w_{i,j} $ )来实现局部位置不变性local position invariance
。
25.1.2 Global Encoder
全局编码器将
group feature
$ \left[\mathbf{\vec x}_1^\prime,\mathbf{\vec x}_2^\prime,\cdots,\mathbf{\vec x}_t^\prime\right] $ 编码到session embedding
从而表达用户在当前session
中的兴趣。由于group
的顺序暗示了用户当前关注点的变化,因此这个相对顺序relative order
包含了用于预测next item
的有用信息。因此,我们使用RNN
来生成session representation
。令
RNN
的输出状态为 $ \left[\mathbf{\vec h}_1,\mathbf{\vec h}_2,\cdots,\mathbf{\vec h}_t\right] $ ,其中 $ \mathbf{\vec h}_i $ 可以视为前面 $ i $ 个group
的representation
。为了更好地捕获用户兴趣,我们应用item-level
注意力机制来动态选择和线性选择前面的group
的representation
。具体而言,我们将
RNN
输出状态的加权和作为抽取到的session representation
$ \mathbf{\vec c}_h $ :其中,加权的权重
$ \alpha_i^{(g)} $ 使用注意力机制来计算:这里
$ g $ 表示global
, $ \mathbf{\vec p}_l,\mathbf W_l $ 为全局编码器的参数。 $ || $ 表示向量拼接。通过结合局部编码器和全局编码器,
session representation
$ \mathbf{\vec c}_h $ 包含整个session
的通用序列信息general sequential information
,并且对于一些sub-session
中不重要的局部位置变动是不变invariant
的。LINet
采用了attention(叠加高斯分布) -> RNN -> attention
的架构。它本质上是修改了RNN
的输入。实际上我们也可以考虑更多的方法来修改RNN
的输入。
25.1.3 Predictor
predictor
评估next item
的概率分布。由于STAMP
已经证明:显式考虑用户最近的兴趣对于预测next item
是有效的。因此,我们将session representation
$ \mathbf{\vec c}_h $ 与用户最近的兴趣 $ \mathbf{\vec m}_t $ 结合成为当前session
的hybrid representation
$ \mathbf{\vec c} $ 。为简单起见,我们设置 $ \mathbf{\vec m}_t = \mathbf{\vec x}_t $ 。那么,候选item
$ v_i\in \mathcal V $ 的得分定义为:其中:
$ \mathbf{\vec v}_i $ 为item
$ v_i $ 的embedding
, $ F(\cdot) $ 为一个神经网络用于将 $ \mathbf{\vec c} $ 映射到 $ \mathbf{\vec v}_i $ 相同的embedding
空间。 $ \mathbf{\vec c} $ 是如何得到的?论文并没有解释。可能是直接拼接得到,即 $ \mathbf{\vec c} = \left[\mathbf{\vec c}_h||\mathbf{\vec m}_t\right] $ 。然后使用
softmax
函数对分数进行归一化,从而获得 $ \mathcal V $ 中所有item
的概率分布:其中:
$ \mathbf{\vec z} = (z_1,z_2,\cdots,z_{|\mathcal V|})\in \mathbb R^{|\mathcal V|} $ 。训练:对于每个
session
序列 $ s_t $ ,损失函数定义为预测值 $ \hat{\mathbf{\vec y}} $ 和ground truth
$ \mathbf{\vec y} $ 的交叉熵:其中:
$ \mathbf{\vec y} $ 是表示next item
真实分布的一个one-hot
向量。然后,我们端到端地通过反向传播来训练所有参数以及
item embedding
。
25.2 实验
数据集:
YooChoose
数据集:来自于RecSys Challenge 2015
,包含用户在电商网站上6
个月内的点击stream
。Diginetica
数据集:来自于CIKM Cup 2016
,我们仅使用它的交易数据transactional data
。
模型需要根据用户在当前
session
中的click/buy
历史来预测用户想要click/buy
的next item
。正如《Improved recurrent neural networks for session-based recommendations》
中所验证的,由于YooChoose
训练集非常大,并且相较于训练整个数据集,训练最近的数据能够产生更好的结果,因此我们仅使用最近的1/64
和1/4
的训练数据。因此,我们从YooChoose
数据集生成了两个数据集。我们对数据集应用了与
NARM, RepeatNet, STAMP
中相同的预处理步骤。baseline
方法:传统方法:
Item-KNN
:推荐与当前session
中previous items
相似的item
,其中相似度定义为session
向量之间的余弦相似度。session
向量:该向量长度为session
个数。对于某个item
$ i $ ,如果它在第 $ j $ 个session
中出现,则session
向量的第 $ j $ 位为1
,否则为0
。BPR-MF
:通过随机梯度下降来优化pairwise ranking
目标函数。FPMC
:用于next basket
推荐的state-of-the-art
的混合模型。
神经网络方法:
GRU4Rec
:在session-parallel
的mini-batch
训练过程中采用ranking-based
的损失函数。NARM
:使用RNN
来捕获用户的主要意图main purposes
和序列行为sequential behavior
。STAMP
:纯粹使用注意力机制来捕获用户的通用兴趣general interest
和最近的焦点recent focus
。RepeatNet
:使用repeat-explore
机制来考虑重复消费现象。SR-GNN
:将session
转换为graph
,并使用GNN
来学习session representation
。
评估指标:
Hit@20
:next item
的ground truth
位于预测结果的top 20
中的case
,占所有test case
的占比。Mean Reciprocal Rank: MRR@20
:是ground truth
的排名倒数reciprocal rank
的均值。如果排名差于20
,则排名倒数置为零。
所有方法的实验结果如下表所示。
与神经网络模型相比,传统方法表现不佳,这证明传统方法不再适用于
session-based
推荐。传统方法表现不佳的一个原因是:它们没有考虑、或者仅考虑有限的序列信息。GRU4Rec
是一种简单的单层RNN
,可以利用整个session
的序列信息,已经优于所有传统方法。因此,利用session
的完整序列信息对于session-based
推荐至关重要。然而,我们不必遵循严格的排序。
STAMP
完全忽略了session
中除了last item
之外的排序信息,SR-GNN
在将session
编码为graph
时可能会丢弃一些排序信息(例如session
的开始和结束),但是这两种方法仍然产生竞争力的结果。然而,这些方法的性能仍然不如
LINet
。- 三种
RNN-based
的方法GRU4Rec, NARM, RepeatNet
在每个session
的item
之间都假定了严格的次序,这意味着它们很容易被局部区域中细微的次序所误导。 STAMP
和SR-GNN
盲目地丢弃了一些重要的序列信息。
相反,
LINet
可以自动地在遵循严格次序和完全忽略次序之间寻求良好的平衡。如下表所示,LINet
在YooChoose 1/64
和YooChoose 1/4
数据集中优于所有state-of-the-art
的方法,并且在所有数据集中的Hit@20
指标上都有显著提高。这证明了所提出模型的有效性。- 三种
消融研究:为了测试所提出模型中的核心模块(即,
local encoder
和global encoder
)的有效性,我们提出并评估以下四个模型:LINet-No-LE
:移除local encoder
的LINet
。此时
$ \mathbf{\vec x}^\prime = \mathbf{\vec x} $ 。LINet-No-GE
:移除global encoder
的LINet
。group feature
的均值作为context embedding
$ \mathbf{\vec c}_h $ 。LINet-No-AW
:没有注意力权重的LINet
,即: $ w_{i,j} = f_i(|i-j|) $ 。LINet-No-GW
:没有高斯权重的LINet
,即: $ w_{i,j} = \alpha_{i,j}^{(l)} $ 。如果没有高斯权重,那么
LINet
完全退化为attention + RNN + attention
的三层架构,它的效果好于RNN + attention
的两层架构(如NARM
)也就不足为奇了。这是不公平的比较(三层网络vs
两层网络)。
实验结果如下表所示。可以看到:
与完整模型相比,移除
local encoder
或global encoder
的两个不完整模型在两个数据集上的性能都有显著下降,这证明了local encoder
和global encoder
在LINet
中都发挥了重要作用。- 移除
local encoder
之后,LINet-No-LE
通过遵循严格的次序获取序列信息,不考虑局部不变性,因此可能会被一些无用的局部次序误导并产生错误的预测。 - 移除
global encoder
之后,LINet-No-GE
仅捕获局部区域的上下文信息,无法考虑item
之间的长期依赖关系并利用有价值的序列信息。
因此,
session-based
推荐器有必要既捕获session
中的序列属性sequential property
,又考虑局部不变性属性local invariance property
。- 移除
与完整模型相比,移除注意力权重或高斯权重的其它两个不完整模型的性能也更差,尽管
gap
相比移除local encoder/global encoder
更小。- 如果没有注意力权重,
LINet-No-AW
在计算相邻item
的权重分 $ w_{i,j} $ 时不会考虑相似性,因此group embedding
很容易受到异常值的影响。 - 如果没有高斯权重,
LINet-No-GW
只是计算item
的contextualized embedding
,而不是聚焦于局部区域。
因此,在计算
group embedding
时,local encoder
具有注意力权重和高斯权重这两种权重是很重要的。- 如果没有注意力权重,
考虑局部不变性的能力:我们设计了一个额外的实验来测试模型考虑局部不变性的能力。这个想法是:评估模型在相似的
session
组成的pair
上的表现。我们首先定义相似的session
。首先,我们仅使用
training session
来定义两个item
之间的相似性,即:其中:
$ n_d^{(i,j)} $ 是 $ v_i $ 与 $ v_j $ 距离为 $ d $ 的training session
的数量。 $ \log_2(d+1) $ 是一个针对长距离的惩罚项,这借鉴了discounted cumulative gain: DCG
的思想。
背后的直觉是:
$ \text{sim}(v_i,v_j) $ 度量 $ v_i $ 和 $ v_j $ 在同一个group
中的概率。两个item
越靠近,那么概率越高。一个特殊情况是:当
$ v_i $ 和 $ v_j $ 在同一个session
中彼此相邻时。如果我们假设它们之间的相对次序在这种情况下不再重要,那么 $ v_i $ 和 $ v_j $ 以概率1
属于同一个group
。然后,我们仅选择基于神经网络的方法进行比较,因为如前所示,基于神经网络的方法在所有数据集的所有评估指标上始终优于传统方法。此外,我们排除了
GRU4Rec
和STAMP
,因为NARM
可以被视为GRU4Rec
的改进版本,而STAMP
不考虑session
内部的任何次序。因此,我们测试的方法包括:NARM
、RepeatNet
、SR-GNN
、LINet
。给定一个
session
序列 $ s_i $ ,令 $ s_{i,k} $ 表示 $ s_i $ 中的第 $ k $ 个item
, $ s_{i,1:k} $ 表示 $ s_i $ 的前面 $ k $ 个item
组成的前缀。我们从满足以下条件的测试集中抽取所有session
序列的pair
$ (s_i,s_j) $ : $ s_i $ 和 $ s_j $ 的长度相同,记做 $ l $ 。 $ s_i $ 和 $ s_j $ 具有相同的last item
,即: $ s_{i,l} = s_{j,l} = v $ ,因此模型需要在给定输入序列 $ s_{i,1:l-1} $ 或 $ s_{j,1:l-1} $ 的情况下预测next item
为 $ v $ 。 $ s_{i,1:l-1} $ 和 $ s_{j,1:l-1} $ 组成的二部图 $ \mathcal G $ 中存在一个完美匹配 $ \mathcal M $ 。具体而言, $ s_{i,1:l-1} $ 和 $ s_{j,1:l-1} $ 中的item
是 $ \mathcal G $ 中的两组节点,并且对于每个item pair
$ (u,v) $ 存在一条权重为 $ \text{sim}(u,v) $ 的边,其中 $ u\in s_{i,1:l-1},v\in s_{j,1:l-1} $ , $ \text{sim}(u,v) $ 的定义如前所示。此外,我们要求 $ \text{sim}(u,v) $ 大于一个阈值 $ \theta $ ,并且 $ u $ 和 $ v $ 的索引之差小于另一个阈值 $ \beta $ 。原因如下所述。这里的索引指的是
item
在各自序列中出现的序号。
给定一个满足所有条件的
pair
$ (s_i,s_j) $ ,我们可以重新排列一个序列(如, $ s_i $ )的前面 $ l-1 $ 个item
,使得匹配的item
具有相同的索引。例如,如果 $ s_{i,1} $ 和 $ s_{j,2} $ 相匹配,那么 $ s_{i,1} $ 被放置在position = 2
。令重新排列的序列为 $ s^\prime_{i,1:l-1} $ 。如果
$ \theta $ 很大,则 $ s_{i,1:l-1}^\prime $ 和 $ s_{j,1:l-1} $ 在相同索引下对应的item
非常相似,因此 $ s_{i,1:l-1}^\prime $ 和 $ s_{j,1:l-1} $ 是非常相似的。由于 $ s_{j,1:l-1} $ 的next item
为 $ s_{j,l} $ ,因此很可能 $ s_{i,1:l-1}^\prime $ 的next item
也是 $ s_{j,l} $ 。这里
$ s_{i,1:l-1}^\prime $ 是通过对 $ s_{i,1:l-1} $ 进行重新排列来人工构造的,它的label
是否还是 $ s_{i,l} $ ?这里没有保证。如果
$ \beta $ 很小,那么 $ s_{i,1:l-1}^\prime $ 和 $ s_{j,1:l-1} $ 之间的唯一区别是sub-sessional level
的一些细微的位置变化。我们可以得出结论:这些变化对于next item
没有影响。因此,我们可以说 $ s_i $ (或者 $ s_j $ )具有很大的局部不变性。
因此,抽取到的
session
的pair
构成了具有较大局部不变性的数据集。此外, $ \mathcal M $ 中的平均权重可以作为 $ s_i $ 或 $ s_j $ 的局部不变性的一个很好的量化指标。 $ \mathcal M $ 的平均权重越大,则局部不变性越大。然后,我们评估在所有
pair
中,有多少百分比的pair
被模型预测为:pair
中每个session
的next item
都是位于top-k prediction
。例如,给定一个pair
$ (s_i,s_j) $ ,对于这两个序列,仅当ground-truth netxt item
都在预测的top-k
时,我们才纳入百分比的计算。因此,为了获得良好的性能,模型需要对两个序列都产生一致且准确的预测。与之前的实验一样,本实验中的
k = 20
。结果如下图所示。- 我们可以看到,这些模型具有相似的性能,并且
LINet
在两个数据集中始终优于其它模型。这进一步证明了我们的模型在处理session
中局部不变性方面具有更强的能力。 - 观察到当
$ \theta $ 很大时,所有模型的性能都会下降。一个可能的原因是序列长度。对于一个长序列,由于涉及的item
较多,满足上述最后一个条件(即, $ s_{i,1:l-1} $ 和 $ s_{j,1:l-1} $ 组成的二部图 $ \mathcal G $ 中存在一个完美匹配 $ \mathcal M $ )的可能性较小。因此,以较大 $ \theta $ 抽取的pair
中的序列长度较短,这意味着它们包含的序列信息较少,因此更难预测。
- 我们可以看到,这些模型具有相似的性能,并且
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论