数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
九、Caser [2018]
大多数推荐系统根据用户的一般偏好
general preference
来推荐item
,但是没有关注用户最近交互的item
。例如,一些用户总是更喜欢苹果的产品(而不是三星的产品),这反应了用户的一般偏好。一般偏好代表用户的长期long term
的、静态static
的行为。另一种类型的用户行为是序列模式
sequential pattern
,其中next item
或者next action
更可能取决于用户最近互动的item
或action
。序列模式代表了用户的短期short term
的、动态dynamic
的行为。序列模式源自在相近时间内互动的item
之间的某种关系relationship
。例如,用户可能会在购买iPhone
之后不久购买手机配件,但是通常而言用户是不会突然购买手机配件的(没有人会对手机配件产生长期兴趣)。在这种情况下,仅考虑一般偏好的推荐系统将错过在销售iPhone
之后向用户推荐手机配件的机会,因为购买手机配件不是长期的用户行为。top-N
序列推荐Sequential Recommendation
:令用户集合 $ \mathcal U=\{u_1,\cdots,u_{|\mathcal U|}\} $ 以及item
集合 $ \mathcal I=\{i_1,\cdots,i_{|\mathcal I|}\} $ ,每个用户 $ u $ 关联一个item
序列,记做 $ \mathcal S^u=\left\{S^u_1,\cdots,S^u_{|\mathcal S^u|}\right\}, S_t^u\in \mathcal I $ , $ S_t^u $ 的下标 $ t $ 代表该item
在用户行为序列 $ \mathcal S^u $ 中发生交互的次序order
。注意, $ t $ 并不是代表发生交互的绝对时间戳absolute timestamp
。给定所有用户的行为序列
$ \mathcal S = \left\{\mathcal S^u\right\}_{u\in \mathcal U} $ ,top-N
序列推荐的目标是:通过考虑一般偏好和序列模式,向每个用户推荐一个item list
,从而最大化用户的未来需求future need
。与传统的
top-N
推荐不同,top-N
序列推荐将用户行为建模为item
的序列sequence
,而不是item
的集合set
(序列是有序的,集合是无序的)。先前工作的局限性:基于马尔科夫链的模型是一种早期的
top-N
序列推荐方法,其中 $ L $ 阶马尔科夫链根据先前的 $ L $ 个action
进行推荐。- 一阶马尔科夫链使用最大似然估计
maximum likelihood estimation
来学习item-to-item
的转移矩阵transition matrix
。 Factorized personalized Markov chain: FPMC
及其变体通过将转移矩阵分解为两个潜在latent
的、低秩low-rank
的子矩阵来改进该方法。Factorized Sequential Prediction with Item Similarity Models: Fossil
通过对先前的item
的latent representation
进行加权的sum
聚合,从而将该方法推广到高阶马尔科夫链。
但是,现有方法受到两个主要限制:
无法建模
union-level
的序列模式。如下图(a)
所示,马尔科夫链仅建模point-level
序列模式,其中每个先前的action
(蓝色)独自地individually
(而不是协同地collectively
)影响target action
(黄色)。FPMC
和Fossil
就属于point-level
序列模式。尽管Fossil
考虑了一个高阶马尔科夫链,但是它的总体影响overall influence
是:从一阶马尔科夫转移矩阵分解的、先前的item latent representation
的加权和。这种point-level
影响不足以建模下图(b)
中的union-level
影响,其中若干个先前的action
以给定的顺序共同影响target action
。例如,同时购买牛奶和黄油之后再购买面粉的概率,要比单独购买牛奶(或者单独购买黄油)之后再购买面粉的概率更高。再例如,同时购买内存和硬盘之后再购买操作系统的概率,要比单独购买其中一个配件之后再购买操作系统的概率更高。假设同时购买牛奶和黄油之后再购买面粉的概率为
$ p_0 $ ,单独购买牛奶之后再购买面粉的概率为 $ p_1 $ ,单独购买黄油之后再购买面粉的概率为 $ p_2 $ 。假设加权的权重为 $ \alpha_1,\alpha_2 $ 且满足 $ 0.0\le \alpha_1,\alpha_2\le 1.0 $ 以及 $ \alpha_1+\alpha_2 = 1.0 $ 。假设采用point-level
的加权和的形式,则有:一种缓解方案是调整加权的权重范围,如选择
$ \alpha_1=1.0,\alpha_2=1.0 $ 。不允许
skip
行为behavior
。现有模型不考虑skip
行为的序列模式,如下图(c)
所示,其中过去的行为可能会skip
几个step
之后仍然产生影响。例如,游客在机场、酒店、餐厅、酒吧以及景点依次进行check-ins
。虽然机场check-ins
和酒店check-ins
并不是景点check-ins
的直接前驱,但是它们也与景点check-ins
密切相关。另一方面,餐厅check-ins
和酒吧check-ins
对景点check-ins
的影响很小(因为到访景点之前不一定需要到访餐厅或到访酒吧,但是几乎一定意味着到访机场和酒店)。 $ L $ 阶马尔科夫链没有显式地建模这种skip
行为,因为它假设前面的 $ L $ 个step
对紧接的next step
有影响。
为了提供关于
union-level
影响以及skip
行为的证据,论文《Personalized Top-N Sequential Recommendation via Convolutional Sequence Embedding》
从两个现实生活数据集MovieLens
和Gowalla
中挖掘了以下形式的序列关联规则sequential association rule
:对于上述形式的规则
$ X\rightarrow Y $ ,支持度统计support count
$ \text{sup}(XY) $ 是 $ X $ 和 $ Y $ 按照规则顺序出现的序列的数量。置信度confidence
$ \frac{\text{sup}(XY)}{\text{sup}(X)} $ 是在 $ X $ 出现的序列中, $ X $ 之后跟随着 $ Y $ 的序列的占比。该规则表示 $ X $ 中所有item
对于 $ Y $ 的联合影响。通过将右侧调整为
$ S^u_{t+1} $ 或 $ S_{t+2}^u $ ,该规则还可以进一步捕获skip 1 step
或者skip 2 step
的影响。下图总结了找到的有效规则数量(过滤掉无效的规则)与马尔科夫阶次
$ L $ 、以及skip
步数的关系。过滤条件为:支持度>= 5
、置信度>= 50%
(作者还尝试了最小置信度为10%, 20%, 30%
,但是这些趋势是相似的)。可以看到:大多数规则的阶次为
$ L=2 $ 和 $ L=3 $ ,并且 $ L $ 越大则规则的置信度越高。可以看到
$ L=1 $ 阶的规则数量最少,主要是因为大量的 $ L=1 $ 阶的规则被置信度所过滤。 $ L=1 $ 阶的规则就是point-level
规则, $ L\gt 1 $ 阶的规则就是union-level
规则。该图还表明,相当多的规则是
skip
一步或两步的。
这些发现支持
union-level
以及skip
行为的影响。注意,这里并不意味着
$ L=1 $ 阶的规则不重要。下图的一个迷惑之处在于:它仅保留置信度>= 50%
的规则。通常而言, $ L=1 $ 阶的规则噪音更大(即置信度更低),因此绝大多数 $ L=1 $ 阶的规则被置信度阈值所过滤掉。但是,即使 $ L=1 $ 阶的规则包含更少的有效信息,考虑到庞大的数量(过滤前的), $ L=1 $ 阶的规则也是相当重要的。因此下图仅能说明
union-level
和skip
行为比较重要,但是并不能说明point-level
行为不重要,更不能说明union-level
和skip
行为比point-level
行为更重要。事实上,在现实世界的数据集中,point-level
行为才是占据统治地位。从论文后面的实验部分(
Caser
组件分析)也能验证这一点:point-level
行为比union-level
行为更重要。- 一阶马尔科夫链使用最大似然估计
为了解决现有工作的上述限制,论文
《Personalized Top-N Sequential Recommendation via Convolutional Sequence Embedding》
提出了一个ConvolutionAl Sequence Embedding Recommendation Model: Caser
模型 作为top-N
序列推荐的解决方案。Caser
利用卷积神经网络,其创新之处在于:将前面 $ L $ 个item
表示为一个embedding
矩阵 $ \mathbf E\in \mathbb R^{L\times d} $ ,其中 $ d $ 为embedding
的维度,并且矩阵的行保留了item
之间的次序order
。论文将这个embedding
矩阵视为潜在空间中由 $ L $ 个item
构成的image
,并使用各种卷积filter
来搜索序列模式从而作为该image
的局部特征。然而,与图像识别不同的是,这个image
并不是通过input
直接给出的,而是必须与所有filter
同时学习。论文主要贡献:
Caser
使用水平卷积filter
和垂直卷积filter
来捕获point-level
、union-level
、以及skip
行为的序列模式。Caser
同时建模一般偏好以及序列模式,并在单个统一框架中概括了几种现有的state-of-the-art
方法。- 在现实生活的数据集上,
Caser
优于state-of-the-art
的top-N
序列推荐方法。
相关工作:
传统的推荐方法,如协同过滤、矩阵分解、以及
top-N
推荐,都不适合捕获序列模式,因为它们没有建模action
的顺序。序列模式挖掘的早期工作基于统计共现来找到显式的序列关联规则
sequential association rule
。这种方法依赖于模式的显式表示explicit representation
,因此可能会错过未观察到的状态unobserved state
下的模式。此外,这种方法还存在:过大的搜索空间、阈值设置的敏感性(置信度阈值)、大量的规则(大多数规则是冗余的)等等问题。observed state
下的模式指的是训练数据中已经观察到的序列模式,unobserved state
下的模式指的是所有可能的序列模式。受限玻尔兹曼机
Restricted Bolzmann Machine: RBM
是首个成功应用于推荐问题的2
层神经网络。自编码器autoencoder
框架及其变体降噪自编码器denoising autoencoder
也产生了良好的推荐性能。卷积神经网络已用于从用户的评论中提取用户的偏好。这些工作都不是用于序列推荐的。循环神经网络
RNN
已被用于session-based
推荐。虽然RNN
在序列建模方面已展示出卓越的能力,但是其顺序地连接的网络结构在序列推荐setting
下可能无法正常工作。因为在序列推荐的问题中,并非所有相邻的action
都有依赖关系,例如,用户在购买item
$ i_1 $ 之后购买了item1
$ i_2 $ 仅仅是因为用户喜欢 $ i_2 $ (而不是因为 $ i_2 $ 和 $ i_1 $ 之间存在依赖关系)。我们将在实验部分验证这一点:当数据集中包含相当多的序列模式时,RNN-based
方法表现更好。这也意味着,如果数据集中包含的序列模式较少,那么
RNN-based
方法的表现会很差。所以应用RNN-based
方法之前首先需要评估数据集中序列模式的占比。然而我们提出的方法没有将序列模式建模为邻接
adjacent
的action
,我们的方法采用了来自CNN
的卷积filter
,并将序列模式建模为先前 $ L $ 个item
的embedding
的局部特征local feature
。这种方法在单个统一框架中提供了灵活性,从而同时建模point-level
序列模式、union-level
建模序列模式、以及skip
行为。事实上,我们将展示Caser
概括了几种state-of-the-art
方法。一个相关的、但是不同的问题是时间推荐
temporal recommendation
,例如应该在早晨而不是在晚上推荐咖啡。而我们的top-N
序列推荐会在用户购买iPhone
后不久推荐手机配件,这与时间无关。显然,这两个问题是不同的,需要不同的解决方案。
9.1 模型
我们提出的
ConvolutionAl Sequence Embedding Recommendation: Caser
模型结合了卷积神经网络Convolutional Neural Network: CNN
来学习序列特征、以及Latent Factor Model: LFM
来学习user specific
特征。Caser
网络设计的目标是多方面的:同时捕获一般偏好以及序列模式、同时在union-level
和point-level
进行捕获、捕获skip
行为、所有一切都在unobserved space
中进行。如下图所示,
Caser
由三个组件构成:Embedding Look-up
、Convolutional Layers
、Fully-connected Layers
。为了训练CNN
,对于每个用户 $ u $ ,我们从用户的action
序列 $ \mathcal S^u $ 中提取每 $ L $ 个连续的item
作为输入,并将它们的next T items
作为target
(如下图左侧所示)。这是通过在用户的action
序列上滑动一个大小为 $ L+T $ 的窗口来完成的。每个窗口为用户 $ u $ 生成一个训练实例,该实例以三元组(u, previous L items, next T items)
来表示。
9.1.1 Embedding Look-up
Caser
通过将前面 $ L $ 个item
的embedding
馈入神经网络中来捕获潜在空间中的序列特征。item
$ i $ 的embedding
$ \mathbf{\vec e}_i\in \mathbb R^d $ 是类似于latent factor
的概念,这里 $ d $ 为embedding
维度。embedding look-up
操作检索前面 $ L $ 个item
对应的item embedding
,并将它们拼接在一起,从而为用户 $ u $ 生成在time step
$ t $ 的embedding matrix
$ \mathbf E^{(u,t)}\in \mathbb R^{L\times d} $ : $ \mathbf E^{(u,t)} $ 的第 $ l $ 行代表这 $ L $ 个item
中的第 $ l $ 个item
的embedding
。除了
item embedding
之外,我们还为用户 $ u $ 提供了一个embedding
向量 $ \mathbf{\vec P}_u\in \mathbb R^d $ ,它表示潜在空间中的user feature
。item embedding
和user embedding
分别由上图中Embedding Look-up
方框中的蓝色圆圈和紫色圆圈来表示。
9.1.2 卷积层
参考在文本分类中使用
CNN
的思想,我们的方法将embedding
矩阵 $ \mathbf E\in \mathbb R^{L\times d} $ 视为潜在空间中由前面 $ L $ 个item
组成的image
,并将序列模式视为该image
的局部特征。这种方法可以使用卷积filter
来搜索序列模式。下图展示了两个
horizontal filter
(不同颜色的方块代表不同的参数值,颜色越深则数值越大),它们捕获两个union-level
的序列模式。这些filter
(表示为 $ h\times d $ 的矩阵),高度为 $ h=2 $ ,宽度 $ d $ 等于embedding
维度(称作full width
)。它们通过在 $ \mathbf E $ 的行row
上滑动从而筛选序列模式的信号。例如,第一个filter
通过在潜在维度中具有更大的值(其中酒店和机场具有更大的值)来选择序列模式(Airport, Hotel) -> Great Wall
。Latent Space
给出的是embedding
矩阵,颜色越深则数值越大。Horizontal FIlters
给出的是filter
矩阵,颜色越深则数值越大。第一个filter
主要捕获前面3
个维度(filter
末尾2
个维度的取值几乎为零),而Airport
和Hotel
的embedding
在前面3
个维度取值较大、末尾2
个维度取值几乎为零。类似地,
vertical filter
是一个 $ L\times 1 $ 的矩阵,将在 $ \mathbf E $ 的列上滑动。更多细节将在后面解释。与图像识别不同,这里的
image
$ \mathbf E $ 并不是直接提供,因为所有item
$ i $ 的embedding
向量 $ \mathbf{\vec e}_i $ 必须与所有filter
一起同时学习。水平卷积层
Horizontal Convolutional Layer
:该层有 $ K $ 个horizontal filter
$ \mathbf F^{(k)}\in \mathbb R^{h\times d},1\le k\le n $ , $ h\in \{1,\cdots,L\} $ 为filter
的高度。例如,如果 $ L=4 $ ,首先可以选择 $ K=8 $ 个filter
,然后可以选择 $ h\in \{1,2,3,4\} $ 。 $ \mathbf F^{(k)} $ 将在 $ \mathbf E $ 上从上到下滑动,并且与 $ \mathbf E $ 的所有水平维度horizontal dimension
(每个水平的行表示一个item
的embedding
)交互。第 $ i $ 次交互的结果得到第 $ i $ 个卷积值:其中:
$ \odot $ 表示内积算子inner product operator
, $ \phi_c(\cdot) $ 为卷积层的激活函数,第 $ i $ 次交互覆盖了第 $ i $ 个item
到第 $ i+h-1 $ 个item
的embedding
。卷积值是
$ \mathbf F^{(k)} $ 与 $ \mathbf E $ 的子矩阵 $ \mathbf E_{i:i+h-1} $ (这个子矩阵是由 $ \mathbf E $ 的第 $ i $ 行到第 $ i-h+1 $ 行构成)的内积。 $ \mathbf F^{(k)} $ 的最终卷积结果是向量:然后我们对
$ \mathbf{\vec c}^{(k)} $ 应用最大池化max pooling
操作,从而从该特定filter
产生的所有卷积值中提取最大值。这个最大值捕获了filter
抽取的最重要的特征。因此,对于卷积层的 $ K $ 个filter
,它们最终总的输出为 $ \mathbf{\vec o}\in \mathbb R^K $ :horizontal filter
通过embedding
$ \mathbf E $ 从而与每连续的 $ h $ 个item
交互。模型同时学习embedding
和filter
从而最小化目标函数,这个目标函数编码了target item
的预测误差prediction error
。通过滑动不同高度的
filter
,模型将会接收到重要的信号,无论这些信号处在什么位置。因此,可以训练horizontal filter
从而捕获具有多种union size
的union-level
序列模式。这
$ K $ 个filter
可以采用不同的高度,因此这些filter
的 $ h $ 是很重要的超参数。垂直卷积层
Vertical Convolutional Layer
:我们用tilde
符号 $ \sim $ 来表示垂直卷积层。假设垂直卷积层有 $ \tilde K $ 个filter
$ \tilde{\mathbf F}^{(k)}\in \mathbb R^{L\times 1}, 1\le k\le \tilde K $ 。每个filter
$ \tilde{\mathbf F}^{(k)} $ 通过在 $ \mathbf E $ 上从左到右滑动 $ d $ 次从而与 $ \mathbf E $ 的列交互,最终产生垂直卷积结果 $ \tilde{\mathbf{\vec c}}^{(k)} $ :其中:
$ \odot $ 表示内积算子inner product operator
, $ \mathbf E_{:,j}\in \mathbb R^L $ 表示 $ \mathbf E $ 的第 $ j $ 列。由于内积算子的性质,可以很容易地证明:
$ \tilde{\mathbf{\vec c}}^{(k)} $ 等于 $ \mathbf E $ 各行的加权和,权重为 $ \tilde F^{(k)}_i $ ,即:其中
$ \mathbf{\vec e}_i\in \mathbb R^d $ 为 $ \mathbf E $ 的第 $ i $ 行,代表第 $ i $ 个item
的embedding
。因此,通过vertical filter
我们可以学习聚合前面 $ L $ 个item
的embedding
,类似于Fossil
的加权sum
来聚合前面 $ L $ 个item
的latent representation
。不同之处在于每个filter
$ \tilde{\mathbf F}^{(k)} $ 扮演了不同的聚合器。因此,与Fossil
类似,这些vertical filter
通过对前面item
的latent representation
的加权和来捕获point-level
序列模式。然而Fossile
对每个用户使用a single weighted sum
,我们的方法使用 $ \tilde K $ 个全局vertical filter
为所有用户生成 $ \tilde K $ 个加权和 $ \tilde{\mathbf{\vec o}}\in \mathbb R^{(d\tilde K)} $ :其中
$ \cdot||\cdot $ 表示向量拼接(因此 $ \tilde{\mathbf{\vec o}} $ 向量的长度为 $ d\tilde K $ )。注:
- 原始论文中,垂直卷积层没有使用激活函数,理论上也可以添加激活函数。
- 垂直卷积层并没有使用最大池化,而是直接将不同
filter
产生的卷积结果进行拼接。
虽然
vertical filter
和horizontal filter
的用途都是聚合,但是二者稍有不同:- 每个
vertical filter
的尺寸固定为 $ L\times 1 $ (而不是 $ L\times s $ , $ s\gt 1 $ 为宽度)。这是因为 $ \mathbf E $ 的每一列对我们来说都是潜在latent
的,单次与多个连续的列进行交互是没有意义的。 - 不需要对垂直卷积的结果应用最大池化操作,因为我们希望对每个潜在维度
latent dimension
保留聚合结果。
9.1.3 全连接层
我们将两个卷积层的输出拼接起来,并将它们馈入一个全连接层,从而获得更
high-level
、更抽象的特征:其中:
$ \cdot||\cdot $ 表示向量拼接, $ \mathbf W\in \mathbb R^{d\times (K+ d\tilde K)} $ 为待学习的投影矩阵(将被拼接的向量投影到一个 $ d $ 维的潜在空间), $ \mathbf{\vec b}\in \mathbb R^d $ 为对应的bias
向量, $ \phi_a(\cdot) $ 为全连接层的激活函数。 $ \mathbf{\vec z}\in \mathbb R^d $ 也就是我们所说的convolutional sequence embedding
,它对前面 $ L $ 个item
的各种序列特征进行编码。为了捕获用户的一般偏好,我们还
look-up
了user embedding
$ \mathbf{\vec P}_u $ ,并将它与 $ \mathbf{\vec z} $ 拼接在一起,然后将它们投影到具有 $ |\mathcal I| $ 维输出的output layer
,即:其中:
$ \mathbf W_o\in \mathbb R^{|\mathcal I|\times 2d} $ 为输出层的权重矩阵, $ \mathbf{\vec b}_o\in \mathbb R^{|\mathcal I|} $ 为输出层的bias
向量。输出层的值
$ \mathbf{\vec y}^{(u,t)} $ 中第 $ i $ 个元素 $ y_i^{(u,t)} $ 代表了用户 $ u $ 在time step
$ t $ 与item
$ i $ 交互的可能性。 $ \mathbf{\vec z} $ 旨在捕获短期序列模式,而user embedding
$ \mathbf{\vec P}_u $ 捕获用户的长期一般偏好。这里我们将user embedding
$ \mathbf{\vec P}_u $ 放在最后一个隐层(而不是生成 $ \mathbf{\vec z} $ 的、第一个隐层),有几个原因:- 正如我们将在后文看到的,这使得我们的模型具有概括
generalize
其它模型的能力。 - 我们可以用其它被概括模型的参数来预训练
pre-train
我们模型的参数。正如《Neural collaborative filtering》
所述,这种预训练对模型性能至关重要。
- 正如我们将在后文看到的,这使得我们的模型具有概括
9.1.4 模型训练和推断
为了训练模型,我们将输出层的值
$ \mathbf{\vec y}^{(u,t)} $ 变换为概率:其中:
$ \sigma(x) = 1/(1+e^{-x}) $ 为sigmoid
函数。这里本质上是通过负采样技术将
softmax
输出转换变sigmoid
输出。令
$ \mathcal C^u = \left\{L+1,L+2,\cdots,|\mathcal S^u|\right\} $ 为我们需要对用户 $ u $ 执行预测的time step
的集合。数据集中所有序列的似然likelihood
为:其中
$ \Theta = \left\{\mathbf P,\mathbf E,\mathbf F,\tilde{\mathbf F},\mathbf W ,\mathbf{\vec b} ,\mathbf W_o,\mathbf{\vec b}_o\right\} $ 为模型参数。为进一步捕获
skip
行为,我们通过用 $ \mathcal D_t^u=\left\{S_t^u,S_{t+1}^u,\cdots,S_{t+T}^u\right\} $ 来替代上式中的next item
$ S_t^u $ 从而考虑next T target items
。采用负的对数似然之后,我们得到目标函数(即二元交叉熵损失):参考已有的工作,对于每个
target item
$ i $ ,我们随机负采样若干个负样本 $ j $ (在我们的实验中负采样数量为3
)。模型参数
$ \Theta $ 通过在训练集上最小化损失函数来学到,而超参数 $ \{d,K,\tilde K,L,T\} $ 等等是在验证集上通过grid search
调优得到。我们使用Adam
优化算法,batch size = 100
。为了控制模型复杂度并避免过拟合,我们使用了两种正则化方法:应用于所有参数的
$ L_2 $ 正则化、应用于全连接层的drop ratio = 50%
的Dropout
技术。我们使用
MatConvNet
实现了Caser
。整个训练时间与训练样本数量成正比。例如,在4-cores i7 CPU
和32 GB RAM
的机器上,MovieLens
数据大约需要1
小时、Gowalla
数据需要2
小时、Foursquare
数据需要2
小时、TMall
数据需要1
小时。这些时间与Fossil
的运行时间相当,并且可以通过使用GPU
进一步减少。在训练好模型之后,为了在
time step
$ t $ 为用户 $ u $ 提供推荐,我们获取用户 $ u $ 的latent embedding
$ \mathbf{\vec P}_u $ 、以及该用户前面 $ L $ 个item
的embedding
作为网络的输入。我们向用户 $ u $ 推荐在输出层 $ \mathbf{\vec y} $ 中取值最大的 $ N $ 个item
。向所有用户进行推荐的复杂度为 $ O(|\mathcal U|\times |\mathcal I|\times d) $ ,其中忽略了卷积运算的复杂度。注意,
target item
数量 $ T $ 是模型训练期间使用的超参数,而 $ N $ 是模型推断期间向用户推荐的item
数量。读者注:
Caser
模型的几个不足的地方:水平卷积虽然 “宣称” 捕获了
union-level
序列模式,但是卷积操作本身是non-sequential
的。更准确的说法是:水平卷积捕获了union-level
的局部模式local mode
。如果需要捕获序列模式,那么可以用
RNN
代替水平卷积。超参数
$ h $ 定义了水平卷积filter
的大小,它刻画了local mode
究竟有多local
。目前Caser
模型中, $ h $ 是一个超参数,在训练期间对所有样本都是fixed
。这使得模型不够灵活,因为不同的样本可能需要不同的 $ h $ 值。可以通过
self attention
机制自适应地选择相关的item
,从而得到自适应的、soft
的 $ h $ 值。超参数
$ T $ 决定了当前的local mode
影响到未来的第几个target item
。目前Caser
模型中, $ T $ 是一个超参数,在训练期间对所有样本都是fixed
。这使得模型不够灵活,因为不同的样本可能需要不同的 $ T $ 值。此外,
Caser
模型考虑 $ \mathcal D_t^u=\left\{S_t^u,S_{t+1}^u,\cdots,S_{t+T}^u\right\} $ 作为目标,这意味着当前的local mode
会影响未来的多个target item
。这会引入大量的噪声,因为很可能当前的local mode
仅与其中的某个(而不是连续的多个)target item
相关。可以通过
target attention
机制自适应地选择与target item
最相关的item
,从而过滤掉无关的item
。然后对剩下的item
应用CNN
或RNN
。
9.1.5 和现有模型的联系
Caser vs MF
:通过丢弃所有卷积层,我们的模型变成一个普通的LFM
,其中user embedding
作为user latent factor
,它们关联的权重作为item latent factor
。MF
通常包含bias
项,在我们的模型中为 $ \mathbf{\vec b}_o $ 。丢弃所有卷积层之后,得到的模型与MF
相同:其中:
$ y_i^{(u,t)} $ 为 $ \mathbf{\vec y}^{(u,t)} $ 的第 $ i $ 个元素, $ \mathbf{\vec w}_{o,i} $ 为 $ \mathbf W_o $ 的第 $ i $ 行, $ b_{o,i} $ 为 $ \mathbf{\vec b}_o $ 的第 $ i $ 个元素。Caser vs FPMC
:FPMC
将分解的一阶马尔科夫链与LFM
融合,并通过Bayesian personalized ranking : BPR
进行优化。尽管Caser
使用了不同的优化准则(即,交叉熵),但是它能够通过将前一个item
的embedding
复制到hidden layer
$ \mathbf{\vec z} $ (即,将 $ \mathbf{\vec z} $ 替换为 $ \mathbf{\vec e}_{S^u_{t-1}} $ )并且不使用任何bias
项来概括FPMC
:由于
FPMC
使用BPR
作为准则,因此我们的模型与FPMC
并不完全相同。然而,BPR
被限制为在每个time step
仅有一个target
样本和一个negative
样本。我们的交叉熵损失没有这些限制。Caser vs Fossil
:通过忽略水平卷积层并使用单个vertical filter
(即 $ \tilde K=1 $ )并将垂直卷积结果 $ \tilde{\mathbf{\vec c}} $ 复制到hidden layer
$ \mathbf{\vec z} $ ,我们得到:正如垂直卷积层中所讨论的那样,这个
vertical filter
将前面 $ L $ 个item
的embedding
进行加权和,就像在Fossil
中一样(然而Fossil
使用Similarity Model
而不是LFM
) ,并将其分解在与马尔科夫模型相同的潜在空间中。另一个区别是
Fossil
对每个用户使用一个局部权重,而我们通过vertical filter
使用多个全局权重。
9.2 实验
数据集:仅当数据集包含序列模式时,序列推荐才有意义。为了识别这样的数据集,我们对几个公共数据集应用了序列关联规则挖掘
sequential association rule mining
,并计算了它们的序列强度sequential intensity: SI
:分子是
$ \left(S_{t-L}^u,\cdots,S_{t-2}^u,S_{t-1}^u\right)\rightarrow S_t^u $ 形式的规则总数,该规则是基于 $ L $ 阶马尔科夫链( $ L $ 从1
到5
)找到的,并对支持度(最小支持度为5
)和置信度(最低置信度为50%
)进行过滤。分母是用户总数。我们使用SI
来估计数据集中序列信号sequential signal
的强度。下表描述了四个数据集及其
SI
。MovieLens
是广泛使用的电影评分数据集。Gowalla
和Foursquare
包含通过user-venue check-ins
得到的隐式反馈。Tmall
是从IJCAI 2015
竞赛中获得的用户购买数据,旨在预测重复的购买者buyer
。
根据前人的工作,我们将所有数字评分转换为取值为
1
的隐式反馈。我们还删除了冷启动cold-start
的用户和item
(反馈数量少于 $ n $ 的用户和item
) ,因为处理冷启动推荐通常在文献中被视为一个单独separate
的问题。对于MovieLens, Gowalla, Foursquare, Tmall
, $ n $ 的取值分别为5, 16, 10, 10
。前人的工作所使用的的
Amazon
数据集由于其SI
太小(Office Products
的SI
为0.0026
,Clothing, Shoes, Jewelry
和Video Games
的SI
为0.0019
)而未被使用。换句话讲,该数据集的序列信号远远低于前面的四个数据集。我们将每个用户序列中前
70%
的action
作为训练集,使用接下来的10%
的action
作为验证集来调优所有模型的最佳超参数,使用最后的20%
的action
作为测试集来评估模型性能。评估指标:
Precision@N
和Recall@N
:给定一个用户的、长度为 $ N $ 的推荐列表,记做 $ \hat{\mathcal R}_{1:N} $ 。该用户测试集中的action
记做 $ \mathcal R $ (即,action
序列中最后20%
的action
)。则Precision@N
、Recall@N
定义为:我们报告所有用户的平均
Precision@N
和平均Recall@N
,并且选择 $ N\in \{1,5,10\} $ 。Mean Average Precision: MAP
:给定用户的、全量item
的推荐列表,记做 $ \hat {\mathcal R} $ ,则:其中:如果
$ \hat {\mathcal R} $ 中第 $ N $ 个item
位于 $ \mathcal R $ 中 则 $ \mathbb I(N) = 1 $ 否则 $ \mathbb I(N) = 0 $ 。也有文献移除了
$ \mathbb I(N) $ 这个系数。MAP
是所有用户的AP
均值。
baseline
方法:POP
:根据item
的流行度popularity
进行推荐,而流行度取决于item
的交互次数。BPR
:结合了矩阵分解模型的Bayesian personalized ranking: BPR
是对隐式反馈数据进行非序列推荐的state-of-the-art
方法。FMC
和FPMC
:FMC
将一阶马尔科夫转移矩阵分解为两个低维子矩阵,而FPMC
是FMC
和LFM
的融合。它们都是state-of-the-art
的序列推荐方法。FPMC
在每一步都允许推荐一个basket
的若干个item
。对于我们的序列推荐问题,每个basket
都只有一个item
。Fossil
:Fossil
对高阶马尔科夫链进行建模,并使用Similarity Model
而不是LFM
来建模一般用户偏好。GRU4Rec
:GRU4Rec
使用RNN
来捕获序列依赖性并进行预测。
配置:对每种方法,都在验证集上使用
grid search
调优最佳超参数。调优的超参数包括:- 对所有模型(除了
POP
):潜在因子维度 $ d\in \{5,10,20,30,50,100\} $ ,正则化超参数,学习率(取值范围 $ \{1,0.1,0.01,0.001,0.0001\} $ ) 。 - 对
Fossil, Caser, GRU4Rec
:马尔科夫链阶次 $ L\in \{1,\cdots,9\} $ 。 - 对于
Caser
:horizontal filter
的高度 $ h\in \{1,\cdots,L\} $ ,target
数量 $ T\in \{1,2,3\} $ ,激活函数 $ \phi_a,\phi_c $ 来自于{identity, sigmoid, tanh, relu}
。对于每个高度 $ h $ ,horizontal filter
的数量 $ K\in \{4,8,16,32,64\} $ 。vertical filter
的数量 $ \tilde K\in \{1,2,4,8,16\} $ 。
我们报告每种方法在其最佳超参数
setting
下的结果。- 对所有模型(除了
实验结果:下表总结了所有方法的最佳结果。每一行中表现最好的结果以粗体突出显式。最后一列是
Caser
相对于最佳baseline
的改进,定义为(Caser-baseline)/baseline
。结论:- 除了
MovieLens
之外,Caser
在所有指标上相对于最佳baseline
都取得了大幅提升。 - 在
baseline
方法中,序列推荐器(如FPMC
和Fossil
)通常在所有数据集上都优于非序列推荐器(即BPR
),这表明考虑序列信息sequential information
的重要性。 FPMC
和Fossil
在所有数据集上的表现都优于FMC
,这表明个性化的有效性。- 在
MovieLens
上,GRU4Rec
的性能接近于Caser
,但在其它三个数据集上的性能要差得多。 - 事实上,
MovieLens
比其它三个数据集具有更多的序列信号,因此RNN-based
的GRU4Rec
可以在MovieLens
上表现良好,但是在其它三个数据集上效果不佳。此外,GRU4Rec
的推荐是session-based
的,而不是个性化的,这在一定程度上扩大了泛化误差。
- 除了
接下来我们研究超参数
$ d,L,T $ 的影响,每次仅研究一个超参数并将剩余的超参数保持在之前调优的最佳setting
。我们聚焦于MAP
超参数,因为它是一个整体的性能指标,并且与其它指标一致。维度
$ d $ 的影响:- 在更稠密的
MovieLens
数据集上,更大的 $ d $ 并不总能带来更好的模型性能。当 $ d $ 选择合适大小时,模型会达到最佳性能;当 $ d $ 较大时,模型会因为过拟合而变得更糟。 - 但是对于其它三个更稀疏的数据集,每个模型都需要更大的
$ d $ 才能达到最佳效果。 - 对于所有数据集,
Caser
通过使用较小的 $ d $ 来击败最强的baseline
方法。
- 在更稠密的
马尔科夫阶次
$ L $ 和target
数量 $ T $ 的影响:Caser-1, Caser-2, Caser-3
表示target
数量 $ T=1,2,3 $ 的Caser
,从而研究skip
行为的影响。- 在更稠密的
MovieLens
数据集上,Caser
较好地利用了较大 $ L $ 提供的额外信息( $ L $ 越大效果越好)。而且Caser-3
表现最好,这表明skip
行为的好处。 - 然而,对于稀疏的数据集,并非所有模型都始终受益于较大的
$ L $ 。这是合理的,因为对于稀疏的数据集,更高阶的马尔科夫链往往会引入额外的信息和更多的噪声。 - 在大多数情况下,
Caser-2
在这三个稀疏数据集上的表现略优于Caser-1
和Caser-3
。
- 在更稠密的
Caser
组件分析:现在我们评估Caser
每个组件,水平卷积层(即 $ \mathbf{\vec o} $ )、垂直卷积层(即 $ \tilde{\mathbf{\vec o}} $ )、个性化(即 $ \mathbf{\vec P}_u $ ),对于整体性能的贡献。这里我们保持所有超参数为它们的最佳setting
。MovieLens
和Gowalla
的结果如下表所示,其它两个数据集的结果是类似的因此没有列出。对于 $ \text{x}\in \text{p,h,v,vh,ph,pv,pvh} $ ,Caser-x
表示启用了组件x
的Caser
,其中h
表示水平卷积层,v
表示垂直卷积层,p
表示个性化。任何缺失的组件都通过将其对应的位置填充零向量来解决。例如,vh
表示采用垂直卷积层和水平卷积层,同时将 $ \mathbf{\vec P}_u $ 置为全零。结论:
Caser-p
表现最差,而Caser-h
、Caser-v
、Caser-vh
显著提高了性能,这表明将top-N
序列推荐视为传统的top-N
推荐将丢失有用的信息(如序列信息),并且同时在union-level
和point-level
建模序列模式有助于改进预测。- 对于这两个数据集,通过联合使用
Caser
的所有组件(即Caser-pvh
)可以获得最佳性能。
Caser-pvh
与Caser-pv
之间的gap
刻画了水平卷积层的收益,Caser-pvh
与Caser-ph
之间的gap
刻画了垂直卷积层的收益。可以看到,垂直卷积层要远比水平卷积层更重要,这也间接说明了point-level
序列模式要比union-level
序列模式更重要。网络可视化:我们仔细研究了一些训练好的网络及其预测。
vertical filter
:下图显示了在MovieLens
数据集上训练 $ L=9 $ 的Caser
之后,四个vertical filter
的值(指的是卷积核的权重)。在微观上四个filter
被训练为多元化diverse
的,但是在宏观上它们遵循从过去位置past position
到最近位置recent position
的上升趋势。由于每个vertical filter
都是作为对前面action
的embedding
进行加权的一种方式,这一趋势表明Caser
更加重视最近的action
,这与传统的top-N
推荐有很大不同(传统的top-N
推荐认为每个action
的重要性是相同的)。horizontal filter
:为了查看horizontal filter
的有效性,下图(a)
显示了Caser
针对一名用户推荐的、排名top N = 3
的电影,即: $ \hat R_1 $ (疯狂麦克斯(Mad Max
)、 $ \hat R_2 $ (星球大战Star War
)、 $ \hat R_3 $ (星际迷航Star Trek
)。该用户的前面 $ L=5 $ 部电影为: $ S_1 $ (第十三勇士13th Warrior
)、 $ S_2 $ (美国女士American Beauty
)、 $ S_3 $ (星际迷航二Star Trek II
)、 $ S_4 $ (星际迷航三Star Trek III
)、 $ S_5 $ (星际迷航四Star Trek IV
)。 $ \hat R_3 $ 是ground truth
(即用户序列中的next movie
)。注意, $ \hat R_1 $ 和 $ \hat R_2 $ 与 $ \hat R_3 $ 非常相似,都是动作片和科幻片,因此也推荐给用户。下图
(b)
显示了将该用户前面 $ L=5 $ 部电影中的某些电影的embedding
屏蔽为全零之后(即item mask
),模型预测 $ \hat R_3 $ 的新的排名。屏蔽
$ S_1 $ 和 $ S_2 $ 实际上将 $ \hat R_3 $ 的排名提升到第2
(从排名第3
)。事实上 $ S_1 $ 和 $ S_2 $ 是历史电影或爱情电影,并且在推荐 $ \hat R_3 $ 时表现得像是噪音。既然如此,为什么不屏蔽
$ S_1 $ 和 $ S_2 $ 呢?论文并未提出讨论。读者认为,一种比较好的方法是通过target attention
机制对历史action
序列过滤掉与target item
无关的action
。屏蔽
$ S_3,S_4,S_5 $ 中的每一个都会降低 $ \hat R_3 $ 的排名,因为这些电影与 $ \hat R_3 $ 属于同一类别。当同时屏蔽
$ S_3,S_4,S_5 $ 之后, $ \hat R_3 $ 的排名下降得最多。
这项研究清晰地表明:我们的模型正确地捕获到了
$ \hat R_3 $ 对相关的电影 $ \{S_3,S_4,S_5\} $ 的依赖,并且 $ \{S_3,S_4,S_5\} $ 作为推荐 $ \hat R_3 $ 的union-level
序列特征。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论