数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
五、Improved GRU4Rec [2016]
传统的个性化推荐方法通常需要用户画像,至关重要的是,这些方法要求在推荐时识别用户。然而这可能是不可行的,例如:网站的新用户没有任何画像信息,或者用户没有登录,或者用户删除了他们的
tracking
信息。这导致了基于用户历史的推荐方法的冷启动问题。另一种替代方法依赖于历史数据,并提供
session-based
推荐。在这个setting
中,推荐系统仅根据用户在当前session
中的行为进行推荐。这避免了上述冷启动问题,但我们必须确保系统保持准确率和及时响应(即,预测不会耗费太长时间)。最近,《Session-based recommendations with recurrent neural networks》
提出了RNN
用于session-based
推荐。作者展示了RNN
相对于传统模型在session-based
推荐上的显著改进。在论文
《Improved Recurrent Neural Networks for Session-based Recommendations》
中,论文进一步研究了RNN
在session-based
推荐中的应用。具体而言,作者检查和采纳了文献中的各种技术来完成这项任务,包括:- 通过序列预处理
sequence preprocessing
和embedding dropout
来增强数据,从而提升训练并减少过拟合。 - 通过模型预训练,从而考虑数据分布的时间偏移
temporal shift
。 - 使用
privileged information
的蒸馏,从而从小数据集中学习。
此外,论文提出了一种新颖的替代模型,该模型通过直接预测
item embedding
来减少预测的时间成本和空间成本。这使得RNN
更容易在real-time setting
中部署 。论文在
RecSys Challenge 2015
数据集上进行了评估,并证明了作者所提出方法的有效性。- 通过序列预处理
相关工作:
矩阵分解和基于邻域的方法在文献中被广泛应用于推荐系统。
矩阵分解方法基于稀疏的
user-item
交互矩阵,其中推荐问题被公式化为矩阵补全任务matrix completion task
。在分解矩阵之后,每个用户都由一个潜在因子向量来表示,每个item
也都由一个潜在因子向量来表示。然后可以通过对应的user latent vector
和item latent vector
内积来补全user-item
矩阵的缺失值。由于这需要我们同时识别用户向量和
item
向量,因此矩阵分解方法无法直接适用于用户未知的session-based
推荐。解决这个冷启动问题的一种方法是使用成对偏好回归pairwise preference regression
。基于邻域的方法利用
target item
和用户购买历史item
之间的相似性。通过比较session similarity
,基于邻域的方法可以应用于session-based
推荐。
深度学习最近在图像识别、语音识别、自然语言处理等领域取得了非常成功的应用。在
《Session-based recommendations with recurrent neural networks》
中,作者提出RNN
来用于session-based
推荐。作者将RNN
(带有自定义的ranking loss
)与现有的session-based
预测方法进行比较,发现RNN-based
方法的性能相比baseline
要提升20% ~ 30%
。我们的工作与之密切相关,我们研究该RNN
模型的扩展。在
《Sequential click prediction for sponsored search with recurrent neural networks》
中,作者还使用RNN
进行点击序列预测。他们考虑了历史用户行为,也考虑了每个用户和每个item
的、手工设计的特征。在这项工作中,我们完全依赖于自动学习的feature representation
。也有许多工作提出了方法来提高
DNN
的预测性能。流行的方法包括:数据增强、dropout
、batch normalization
、残差连接。我们寻求应用其中一些方法来提升我们模型的训练。人们提出
learning using privileged information: LUPI
框架来利用一些额外的feature representation
,这些feature representation
仅在训练期间可用但是在测试期间不可用。当训练数据量有限时,人们发现使用此类信息是有益的。在广义蒸馏方法中,
student
模型从teacher
模型提供的soft label
中学习。如果我们在privileged dataset
上训练teacher
模型,那么这种方法可以应用于LUPI
。在这项工作中,我们提出使用LUPI
框架来用于点击序列的预测,其中我们使用每个点击序列的未来部分作为privileged information
。
5.1 模型
session-based
推荐的RNN
:session-based
推荐问题可以公式化为基于序列的预测问题:令所有item
集合的大小为 $ m $ ,令 $ [x_1,x_2,\cdots,x_{n-1},x_n] $ 为一个click session
,其中 $ x_i\in \mathbb R $ 为被点击item
的索引并且 $ 1\le x_i\le m $ 。我们寻求一个模型 $ \mathcal M $ ,使得对于click session
中的任何前导点击序列 $ \mathbf x =[x_1,x_2,\cdots,x_{r-1},x_r], 1\le r\lt n $ ,我们得到输出 $ \mathbf {\vec y} = \mathcal M(\mathbf x) $ ,其中 $ \mathbf{\vec y}=(y_1,\cdots,y_m)^\top\in \mathbb R^m $ , $ y_i $ 为item
$ i $ 是第 $ r+1 $ 个被点击item
的概率。我们将
$ \mathbf {\vec y} $ 视为每个item
成为session
中next click
的排序分。由于我们通常需要为用户选择一个以上的推荐,因此这里推荐top-k item
(根据 $ \mathbf {\vec y} $ 进行排名)。令 $ x_{r+1} $ 为前导点击序列 $ \mathbf x $ 的next click
,则我们用一个one-hot
编码 $ \mathbf{\vec e}_{r+1}\in \mathbb R^m $ 来表示它,然后计算它与 $ \mathbf {\vec y} $ 的交叉熵 $ \mathcal L\left(\mathbf{\vec y},\mathbf{\vec e}_{r+1}\right) $ 。也可以使用pairwise ranking loss
。我们遵循下图所示
RNN
模型的通用结构。对于recurrent layer
,我们使用Gated Recurrent Unit: GRU
,因为《Session-based recommendations with recurrent neural networks》
中发现它优于LSTM
单元。但是,我们没有使用stateful RNN
训练过程,在stateful RNN
训练过程中模型以session-parallel
、sequence-to-sequence
的方式进行训练。相反,我们的网络处理每个序列 $ [x_1,x_2,\cdots,x_r] $ ,并且训练用于预测该序列的next click
$ x_{r+1} $ 。我们还使用可训练的
embedding
来表示所有input
。我们的网络可以通过Back-Propagation-Through-Time: BPTT
算法在固定数量的time step
上,使用交叉熵损失来执行标准的mini-batch
随机梯度下降从而进行训练。如下图所示为一条序列的训练示意图,梯度沿着灰色箭头的反向传播,蓝色为input
序列,橙色为target output
。数据增强
data augmentation
:数据增强技术已被广泛应用于图像领域,这里我们提出两种方法来增强点击序列:第一个方法是
《Artificial neural networks applied to taxi destination prediction》
中提出的序列预处理方法的应用。原始input session
的所有前导prefix
都被视为新的训练序列。给定一个训练session
$ [x_1,x_2,\cdots,x_n] $ ,我们生成序列和对应的label
来用于训练:第二个方法是
dropout
,它是应用于input sequence
的正则化形式。对点击序列应用dropout
相当于随机删除部分click
的预处理步骤。直观而言,这使得我们的模型对noisy click
不太敏感,例如用户可能不小心点击了不感兴趣的item
。因此,dropout
使模型不太可能过拟合特定的noisy
序列。dropout
也可以被视为一种数据增强形式,它生成更短的、被裁剪的序列来用于模型训练。这里是
dropout
输入序列中原始的item id
,而不是dropout
对应的item embedding
。在本论文里二者是相同的,但是需要实验来验证?
我们将这两种方法应用于我们的所有模型。下图展示了一个示例:图中是一个包含了四个点击的
session
,虚线轮廓表示训练期间被dropout
的点击,灰色表示训练序列,橙色表示output label
,蓝色表示privileged information
(它们不用于标准的训练过程)。注意,相同序列在不同的训练
epoch
会丢弃不同的点击item
。适应时序变化
adapting to temporal changes
:许多机器学习模型的一个关键假设是:输入是独立且同分布的。这在item recommendation setting
中并非严格如此,因为新的商品只会出现在该商品发布之后的session
中,并且用户行为/偏好也可能随着时间而改变。此外,推荐系统的目标是对新序列进行预测,即那些来自用户最近行为的序列。因此,在整个数据集上学习推荐模型可能会导致性能下降,因为模型最终会关注一些与最近序列无关的过时属性。解决这个问题的一种方法是定义一个时间阈值,并在构建模型时丢弃早于该阈值的点击序列。但是,这种方法减少了可供模型学习的训练数据量。
我们提出了一个简单的解决方案:通过预训练获得两全其美的效果。我们首先在整个数据集上训练一个模型,然后使用训练好的模型来初始化一个新模型。这个新模型仅使用近期数据(整个数据集的子集)进行训练,例如从一年点击数据中使用最近一个月的数据来训练。这使得模型能够使用大量数据进行良好的初始化,并聚焦于近期的点击序列。通过这种方式,这类似于在图像领域中使用的
fine-tuning
过程。使用长期数据训练意味着学习用户的长期兴趣,使用短期数据训练意味着学习用户的短期兴趣。这里的方法通过初始化使得用户长期兴趣作为先验知识:当短期数据丰富时,学到的用户短期兴趣占主导;当短期数据匮乏时,初始的用户长期兴趣占主导。
使用
privileged information
:用户在某个item
之后点击的item
序列也可能包含有关该item
的信息,如下图所示的蓝色item
。这些信息不能用于执行预测,因为我们在进行推荐时无法查看到未来的序列。然而,我们可以利用这些未来的序列用作privileged information
,以便为我们模型的正则化和训练来提供soft label
。为此,我们使用广义蒸馏框架。形式上,给定一个序列
$ [x_1,x_2,\cdots,x_r] $ 和来自session
的label
$ x_{r+1} $ ,我们将privileged information
定义为: $ \mathbf x^*=[x_n,x_{n-1},\cdots,x_{r+2}] $ ,其中 $ n $ 为原始session
的长度。privileged sequence
仅仅是发生在第 $ r+1 $ 个item
之后的、逆序的未来序列。我们现在可以在privileged sequence
$ \mathbf x^* $ 上训练一个teacher
模型,它也具有相同的label
$ x_{r+1} $ 。接下来我们通过最小化以下形式的损失函数来调优我们的
student
模型 $ \mathcal M(\mathbf x) $ :其中:
$ \lambda\in [0,1] $ 为超参数用于平衡两个label
之间的重要性。注意:这里的
teacher
序列为未来序列的逆序,它提供soft label
。这使得
$ \mathcal M $ 既可以从真实label
中学习,也可以从teacher
$ \mathcal M^* $ 预测的label
(即soft label
)中进行学习。当可用的训练数据很小的时候,这种学习过程很有用。论文并未说明
teacher
模型 $ \mathcal M^* $ 的结构。它的输入是未来序列的逆序,理论上应该和 $ \mathcal M $ 有所不同。用于快速预测的
output embedding
:我们输出层需要输出所有item
的排序分,这不仅消耗内存,也使得预测很慢。在NLP
中也研究了类似的问题,典型的方法包括 使用hierarchical softmax layer
、以及采样最高频的item
。hierarchical softmax
并不适用于我们的场景,因为我们需要进行top-k
预测,而不仅仅是top-1
预测。相反,我们将item embedding
视为将item
从one-hot
编码空间到低维空间的投影。基于这个观点,我们建议训练模型直接预测next click
的embedding
。使用真实输出的embedding
和预测的embedding
之间的余弦损失来调优模型。该方法的灵感来自于word2vec
,其中相似的单词具有更接近的embedding
(以余弦距离来衡量)。同样地,我们预期用户在给定序列之后可能点击的item
应该在item embedding
空间中接近。使用这种类型的输出将
final layer
中的参数数量从 $ H\times m $ (输入为 $ H $ 维、输出为 $ m $ 维的全连接层)降低到 $ H\times d $ (输入为 $ H $ 维、输出为 $ d $ 维的全连接层),其中 $ H $ 为最后一个隐藏的维度, $ d $ 为embedding
的维度。这种方法的一个缺点是:它需要为每个
item
提供高质量的embedding
。获得这种embedding
的一种方法是从上述模型中抽取和重用经过训练的item embedding
。这种方式的
label
是一个embedding
向量,而不再是一个类别。还有一种解决方案:利用负采样技术,从而将
softmax layer
转换为一个双塔架构。
5.2 实验
数据集:
RecSys Challenge 2015
数据集,其中最后一天的session
为测试集(包含15234
个session
),其它天的session
作为训练集(包含7966257
个session
)。预测的候选item
数量为37483
。在预处理session
之后,我们有23670981
个训练序列。为了更好地评估我们的模型(如
privileged information
和预训练),我们按时间对训练序列进行排序,然后报告我们在训练序列的最近部分上( $ \left\{\frac{1}{256}, \frac{1}{64}, \frac{1}{16}, \frac{1}{4}, \frac{1}{1}\right\} $ )训练的模型的结果。评估方式:每个
session
被item-by-item
地输入到模型,计算模型在session
的next click
的排名。评估指标是Recall@20
和Mean Reciprocal Rank (MRR)@20
。对于
M1 ~ M3
,我们直接从softmax
输出中选取top 20
个最可能的item
。对于M4
,我们计算模型输出与item embedding
的余弦距离,然后选取top 20
个最接近的item
。最后,我们还报告了每个模型的模型大小和
batch
预测时间。如果模型要部署在真实的推荐系统中,那么这些都是重要的考虑因素。配置:
- 所有模型对
item
使用50
维的embedding
,embedding
的dropout rate
为25%
。 - 我们使用
Adam
优化器,batch size = 512
。 - 我们将
item
序列的长度截断为19
,因为99%
的原始训练session
的长度小于等于19
。为简单起见,短于19
个item
的序列用零填充,RNN
将忽略这些零。 - 我们使用
10%
的训练数据作为每个模型的验证集来早停,从而设置每个模型的epoch
数量。 - 我们在所有模型中都使用单层
recurrent layer
,因为我们发现更多的层并未提高性能。每个模型的GRU
设置为100
个隐单元或1000
个隐单元。
模型是在
GeForce GTX Titan Black GPU
上,在keras
和theano
中定义和训练的。每个模型的详细信息(以及它们的label
)如下:M1
:具有softmax
输出、序列预处理、embedding dropout
的RNN
模型。recurrent layer
全连接到输出层。M2
:与M1
相同,但是针对数据集的最近时间段的部分重新训练了模型。预训练是在整个数据集上进行的,重新训练是在最近部分上进行的(下图的
x
轴)。M3
:在每个数据中可用的privileged information
(未来序列)上训练的M1
模型。这用于为参数 $ T=1 $ (softmax
的温度超参数) 和 $ \lambda = 0.2 $ 的另一个M1
模型提供soft label
。我们并没有广泛调优这两个超参数。M4
:模型的输出直接预测item embedding
。我们在recurrent layer
和输出层之间添加了一个全连接的隐层,因为我们发现这提高了模型的稳定性。我们为这些模型使用了embedding
,这些embedding
是由M1
在整个训练数据集上训练得到的。
- 所有模型对
下图总结了每个模型在评估指标上的性能。
M1
和M2
比报告的baseline RNN
模型产生了显著的性能提升。从
M1
的结果中,我们看到使用整个数据集进行训练的结果,要比使用使用数据集最近部分重新训练的结果稍差。这表明我们的推荐模型确实需要考虑随时间变化的用户行为。下表还报告了我们表现最好的模型,我们还列出了
《Session-based recommendations with recurrent neural networks》
中报告的baseline
结果,包括他们最好的、基于RNN
的模型(即TOP1
和BPR
)以及两种传统算法(即S-POP
和Item-KNN
)。令人惊讶的是,从GRU 100
到GRU 1000
,我们模型的性能(M1 ~ M3
)并未显著提升。我们发现
privileged information
模型(M3
)的训练时间非常长。我们省略了GRU size 1000
的结果,因为它无法在合理的时间内进行训练。我们认为训练时间急剧增加的主要原因是:需要计算soft label
、以及为每个mini-batch
计算针对这些soft label
的相应交叉熵损失。当可能的soft label
数量很大时,这种扩展性很差,就像这里的情况一样。尽管如此,在最小的数据集上(即仅使用最近1/8
的训练数据),M3
相比M1
产生了适度的性能提升。这与《Unifying distillation and privileged information》
中privileged information
的使用是一致的,并且表明它在可用数据很少的环境中可能很有用。最后,与我们的其它模型相比,
M4
在预测准确性方面表现不佳(尽管它仍然比baseline
有所提高)。如果可以使用质量更好的embedding
作为目标,我们或许能够进一步提升M4
的准确性。例如我们没有使用item
的任何辅助信息,如类别、品牌。另一方面,
batch prediction
时间和模型大小如下表所示。对于M4
模型,仅使用基于分类的模型(M1 ~ M3
)的大约60%
的预测时间就可以在M4
中进行预测。M4
的参数也少得多,因此需要的内存更少。总之,这些都是使RNN
能够部署在真实推荐系统中的步骤。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论