数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
二十四、RepeatNet [2019]
传统的推荐方法基于
last interaction
来处理session-based
推荐。《Using temporal data for making recommendations》
和《An MDP-based recommender system》
研究如何使用马尔科夫模型抽取序列模式sequential pattern
从而预测next item
。《Playlist prediction via metric embedding》
提出logistic Markov embedding
来学习歌曲的representation
从而进行playlist
预测。
这些模型的一个主要问题是:当试图在所有
item
上包含所有可能的潜在用户选择序列时,状态空间很快变得难以管理。RNN
最近被用于session-based
的推荐,并引起了人们的极大关注。《Session-based recommendations with recurrent neural networks》
引入了带GRU
的RNN
,从而用于session-based
推荐。《Parallel recurrent neural network architectures for feature-rich session-based recommendations》
引入了许多parallel RNN: p-RNN
架构来基于被点击item
的click
和feature
(如,图片、文本)来建模session
。《Personalizing session-based recommendations with hierarchical recurrent neural networks》
通过跨session
信息迁移来个性化RNN
模型,并设计了一个Hierarchical RNN
模型。这个Hierarchical RNN
模型在user session
中,中继relay
和演变evolve
RNN
的潜在状态。《Neural attentive session-based recommendation》
在session-based
推荐中引入了注意力机制并表现出色。
尽管将深度学习应用于
session-based
推荐的研究越来越多,但是没有人强调所谓的重复消费repeat consumption
,这是许多推荐场景(如电商、音乐、电视节目等等场景的推荐)中的普遍现象。重复消费的意思是:随着时间的推移,相同的item
被重复消费。重复消费之所以存在,是因为人们有规律性的习惯
regular habit
。例如,我们经常重复购买相同的东西,我们经常去相同的餐厅吃饭,我们经常听相同的歌曲和歌手。下表展示了相关研究中常用的三个benchmark
数据集的重复消费率。重复消费率占比不大,那么是否意味着在这方面的改进没有多大意义?毕竟
RepeatNet
是针对 “少数派” 进行的优化。RepeatNet
的效果严重依赖于具体的数据集,只有较高重复消费率的数据集的效果较好。因此使用之前需要先通过数据集来评估重复消费率。而这个重复消费率又依赖于
user ID
,因此也无法应用到匿名session
中。在论文
《RepeatNet: A Repeat Aware Neural Recommendation Machine for Session-Based Recommendation》
中,作者通过融合一个repeat-explore
机制到神经网络中从而研究重复消费,并提出了一个叫做RepeatNet
的、具有encoder-decoder
的新模型。与使用单个解码器来评估每个item
的分数的现有工作不同,RepeatNet
使用两个解码器分别在repeat mode
和explore mode
下评估每个item
的推荐概率。- 在
repeat mode
下,模型推荐用户历史记录中的old item
。 - 在
explore mode
下,模型推荐new item
。
具体而言:
首先,模型将每个
session
编码为一个representation
。然后,模型使用
repeat-explore
机制来学习repeat mode
和explore mode
之间的切换概率。之后,作者提出了一个
repeat recommendation decoder
来学习在repeat mode
下推荐old item
的概率,以及提出了一个explore recommendation decoder
来学习在explore mode
下推荐new item
的概率。两个
decoder
(相比较于传统的单个decoder
)会大幅度增加资源消耗以及inference time
。最后,作者将模式切换概率、以及两种模式下的每个
item
的推荐概率以概率性的方式结合起来,最终确定item
的推荐分。
mode prediction
和item
推荐在统一框架内以端到端的方式共同学习。论文对三个
benchmark
数据集进行了广泛的实验。结果表明:在MRR
和Recall
指标上,RepeatNet
在所有三个数据集上都优于state-of-the-art baseline
。此外,论文发现:随着数据集大小和重复率的增加,RepeatNet
相对于baseline
的改进也增加了,这证明了它在处理重复推荐场景方面的优势。综上所述,论文的主要贡献是:
- 论文提出了一种新的、基于深度学习的模型,叫做
RepeatNet
。该模型考虑了重复消费现象。据作者所知,该论文是第一个在使用神经网络的session-based
推荐背景下考虑重复消费现象的。 - 论文为
session-based
推荐引入了repeat-explore
机制,从而自动学习repeat mode
和explore mode
之间的切换概率。与使用单个解码器的现有工作不同,论文提出了两个解码器来学习两种模式下每个item
的推荐概率。 - 论文对三个
benchmark
数据集进行了广泛的实验和分析。结果表明:RepeatNet
通过显式建模重复消费来提高session-based
推荐的性能,从而超越了state-of-the-art
方法。
相关工作:
session-based
推荐:传统的
session-based
推荐方法通常基于马尔科夫链,这些方法在给定last action
的情况下预测next action
。《Using temporal data for making recommendations》
提出了一种基于马尔科夫链的序列推荐器,并研究如何使用概率性的决策树模型来抽取序列模式从而学习next state
。《Using sequential and non-sequential patterns in predictive web usage mining tasks》
研究了不同的序列模式sequential pattern
用于推荐,并发现连续contiguous
的序列模式比通用general
的序列模式更适合序列预测任务。《An MDP-based recommender system》
提出了一个马尔科夫链决策过程Markov decision process: MDP
从而以session-based
方式提供推荐。最简单的MDP
是一阶马尔科夫链,其中next recommendation
可以简单地通过通过item
之间的转移概率来计算。《Effective next items recommendation via personalized sequential pattern mining》
在个性化序列模式挖掘中引入了一种竞争力得分competence score
指标,用于next-item
推荐。《Playlist prediction via metric embedding》
将playlist
建模为马尔科夫链,并提出logistic Markov embedding
来学习歌曲representation
从而用于playlist
预测。
将马尔科夫链应用于
session-based
推荐任务的一个主要问题是:当试图在所有item
上包含所有可能的潜在用户选择序列时,状态空间很快变得难以管理。RNN
已被证明对序列点击预测很有用。《Session-based recommendations with recurrent neural networks》
将RNN
应用于session-based
推荐,并相对于传统方法取得了显著改进。他们利用session-parallel
的mini-batch
训练,并使用ranking-based
损失函数来学习模型。《Parallel recurrent neural network architectures for feature-rich session-based recommendations》
引入了许多parallel RNN: p-RNN
架构来基于被点击item
的click
和feature
(如,图片、文本)来建模session
。他们提出了比标准训练更适合的、用于p-RNN
的替代训练策略。《Improved recurrent neural networks for session-based recommendations》
提出了两种技术来提高其模型的性能,即:数据增强、以及一种考虑输入数据分布漂移shift
的方法。《When recurrent neural networks meet the neighborhood for session-based recommendation》
表明,在大多数测试的setup
和数据集中,针对session
的、基于启发式最近邻的方案优于GRU4Rec
。《Personalizing session-based recommendations with hierarchical recurrent neural networks》
提出了一种通过跨session
信息迁移来对RNN
模型进行个性化的方法,并设计了一个Hierarchical RNN
模型,该模型在user session
之间中继relay
和演变evolve
RNN
的潜在状态。《Neural attentive session-based recommendation》
探索了具有注意力机制的混合编码器以建模用户的序列行为和意图,从而捕获用户在当前session
中的主要意图。
与上面列出的研究不同,我们强调模型中的重复消费现象。
repeat recommendation
:《The dynamics of repeat consumption》
在多个领域研究了用户随着时间的推移重复消费同一个item
的模式,从同一个门店的重复check-in
到同一个视频的重复观看。他们发现:消费的新近程度recency
是重复消费的最强预测器predictor
。《Will you “reconsume” the near past? Fast prediction on short-term reconsumption behaviors》
得出了影响人们短期重复消费行为的四个一般特征。然后,他们提出了两种具有线性核和二次核的快速算法,从而预测在给定context
的情况下,用户是否会在特定时间执行短期重复消费。
推荐系统的一个重要目标是帮助用户发现
new item
。除此之外,许多现实世界的系统将推荐列表用于不同的目标,即:提醒用户他们过去查看或消费的item
。《On the value of reminders within e-commerce recommendations》
通过一个现场实验live experiment
对此进行了调查,旨在量化在推荐列表中此类提醒的价值。《Modeling user consumption sequences》
确定了重复消费的两种宏观行为模式:首先,在给定用户的生命周期
lifetime
中,很少有item
能够存活live
很长时间。其次,一个
item
的last consumption
表现出越来越大的inter-arrival gap
,这与如下概念保持一致:无聊递增导致最终放弃。即,用户消费相同
item
的周期越来越长,最终放弃消费该item
(因为越来越无聊,没有新的吸引力)。
我们的工作与之前关于重复推荐的工作之间的主要区别在于:我们是第一个提出神经推荐模型的人,从而显式强调传统的推荐任务以及
session-based
推荐任务中的重复消费。
24.1 模型
给定一个
action session
$ \mathcal I_S = \{i_1,i_2,\cdots,i_\tau,\cdots,i_t\} $ ,其中 $ i_\tau $ 表示一个item
,session-based
推荐尝试预测next event
是什么,如以下方程所示。不失一般性,本文以点击action
为例:其中:
$ P(i_{t+1}\mid \mathcal I_S) $ 表示在给定 $ \mathcal I_S $ 的情况下推荐 $ i_{t+1} $ 的概率。传统方法通常将 $ f(\mathcal I_S) $ 直接建模为判别式函数或概率函数。整体框架:我们提出
RepeatNet
从而从概率性的角度来建模 $ P(i_{t+1}\mid \mathcal I_S) $ ,并且显式考虑重复消费,如以下公式所示:其中:
$ r $ 表示重复模式repeat mode
, $ e $ 表示探索模式explore mode
。 $ P(r\mid \mathcal I_S) $ 表示执行repeat mode
的概率, $ P(e\mid \mathcal I_S) $ 表示执行explore mode
的概率。 $ P(i_{t+1}\mid r,\mathcal I_S) $ 表示给定 $ \mathcal I_S $ 的情况下,在repeat mode
中推荐 $ i_{t+1} $ 的概率; $ P(i_{t+1}\mid e,\mathcal I_S) $ 表示给定 $ \mathcal I_S $ 的情况下,在explore mode
中推荐 $ i_{t+1} $ 的概率。
如下图所示,
RepeatNet
由四个主要组件组成:一个session encoder
、一个repeat-explore
机制、一个repeat recommendation decoder
、一个explore recommendation decoder
。session encoder
:它将给定的session
$ \mathcal I_S $ 编码为潜在representation
$ \mathbf H=\left\{\mathbf{\vec h}_1,\mathbf{\vec h}_2,\cdots,\mathbf{\vec h}_\tau,\cdots,\mathbf{\vec h}_t\right\} $ ,其中 $ \mathbf{\vec h}_\tau $ 表示在timestamp
$ \tau $ 处的session representation
。 $ \mathbf{\vec h}_\tau $ 不是 $ i_\tau $ 的representation
,而是截止到 $ \tau $ 时刻的session representation
。repeat-explore
机制:它以 $ \mathbf H $ 为输入,预测执行repeat mode
或explore mode
的概率,对应于方程中的 $ P(r\mid \mathcal I_S) $ 和 $ P(e\mid \mathcal I_S) $ 。注意:
$ P(r\mid \mathcal I_S) + P(e\mid \mathcal I_S)=1.0 $ ,因此只需要预测其中之一即可。repeat recommendation decoder
:它以 $ \mathbf H $ 为输入,预测 $ \mathcal I_S $ 中被点击item
的重复推荐概率,对应于方程中的 $ P(i_{t+1}\mid r,\mathcal I_S) $ 。explore recommendation decoder
:它以 $ \mathbf H $ 为输入,预测 $ \mathcal I-\mathcal I_S $ 中未被点击item
的探索推荐概率,对应于方程中的 $ P(i_{t+1}\mid e,\mathcal I_S) $ ,其中 $ \mathcal I $ 表示所有item
。
session encoder
:遵从先前的工作,我们使用GRU
来编码 $ \mathcal I_S $ ,其中GRU
定义为:其中:
$ \mathbf W_z,\mathbf W_r,\mathbf W_h $ 为待学习的权重矩阵。 $ \text{emb}(i_\tau) $ 为 $ i_t $ 的embedding
向量。 $ \sigma(\cdot) $ 为sigmoid
函数, $ \tanh(\cdot) $ 为tanh
函数。 $ || $ 表示向量拼接, $ \odot $ 表示逐元素乘法。 $ \mathbf{\vec z} $ 为update gate
, $ \mathbf{\vec r} $ 为reset gate
。
GRU
的初始状态为零,即 $ \mathbf{\vec h}_0 = \mathbf{\vec 0} $ 。经过
session encoder
编码之后,每个session
$ \mathcal I_S $ 被编码到 $ \mathbf H=\left\{\mathbf{\vec h}_1,\mathbf{\vec h}_2,\cdots,\mathbf{\vec h}_\tau,\cdots,\mathbf{\vec h}_t\right\} $ 。repeat-explore
机制:repeat-explore
机制可以视为一个基于 $ \mathbf H $ 来预测推荐模式的二分类器。为此,我们首先将注意力机制应用于 $ \mathbf H $ 从而获得 $ \mathcal I_S $ 的固定长度的向量representation
。具体而言:我们首先使用
last hidden state
$ \mathbf{\vec h}_t $ 与每个hidden state
$ \mathbf{\vec h}_\tau\in \mathbf H $ 进行匹配,从而得到一个重要性分数:其中:
$ \mathbf{\vec v}_\text{re},\mathbf W_\text{re},\mathbf U_\text{re} $ 均为模型参数。然后我们归一化重要性分数,并获得
$ \mathcal I_S $ 中每个hidden state
的加权和从而作为context vector
:然后我们使用
softmax
回归将 $ \mathbf{\vec c}_{\mathcal I_S}^\text{re} $ 转换为模式概率分布,分别对应于 $ P(r\mid \mathcal I_S) $ 和 $ P(e\mid \mathcal I_S) $ :其中:
$ \mathbf W^c_\text{re} $ 为权重矩阵。这里的
softmax
其实可以退化为sigmoid
,因为这是个二分类问题。
repeat recommendation decoder
:repeat recommendation decoder
评估 $ \mathcal I_S $ 中的item
被重复点击的概率。受到CopyNet
的启发,我们使用一个修改的注意力模型来实现这一点。item
$ i_\tau\in \mathcal I_S $ 被重复点击的概率为:其中:
$ \mathbf{\vec v}_r, \mathbf W_r, \mathbf U_r $ 为模型参数。 $ \sum_i \exp\left(s_{\tau}^\text{r}\right) $ 表示item
$ i\in \mathcal I_S $ 所有出现的总和,因为同一个item
可能在 $ \mathcal I_S $ 的不同位置多次出现。
explore recommendation decoder
:explore recommendation decoder
评估那些不在 $ \mathcal I_S $ 中的new item
被点击的概率。具体而言:首先,为了更好地捕获用户对
session
$ \mathcal I_S $ 的兴趣,我们采用了item-level
注意力机制,允许解码器动态选择和线性组合输入序列中的不同部分:其中:
$ \mathbf{\vec v}_e,\mathbf W_e,\mathbf U_e $ 为模型参数。因子 $ \alpha_\tau^e $ 决定了在进行预测时应该强调或忽略输入序列中的哪一部分。在计算重要性分数
$ s_\tau^\text{re},s_\tau^\text{r},s_\tau^\text{e} $ 时,这里都是将 $ \mathbf{\vec h}_t $ 作为query
, $ \mathbf{\vec h}_\tau $ 作为key
。然后我们将
last hidden state
$ \mathbf{\vec h}_t $ 和attentive state
$ \mathbf{\vec c}_{\mathcal I_S}^\text{e} $ 组合成一个hybrid representation
$ \mathbf{\vec c}_{\mathcal I_S} $ :其中:
$ || $ 表示向量拼接。最后,
item
$ i\in \mathcal I - \mathcal I_S $ 被点击的概率为:其中:
$ \mathbf W_e^c $ 为权重矩阵, $ -\infty $ 表示负无穷。因为 $ \exp(-\infty) = 0 $ ,因此我们假设如果item
$ i\in \mathcal I_S $ ,那么在explore mode
下它被点击的概率为零。
目标函数:我们的目标是给定
input session
的情况下最大化ground truth
的预测概率。因此,我们优化负对数似然损失函数:其中:
$ \theta $ 为RepeateNet
的参数, $ \mathbb I_\mathbb S $ 为训练集中所有session
的集合, $ P(i_\tau\mid\mathcal I_S) $ 为ground truth item
的预测概率, $ \mathcal I_{S_{\tau-1}} $ 表示 $ \mathcal I_S $ 中截止到 $ \tau-1 $ (包含)的前缀部分。RepeatNet
包含了一个额外的repeat-explore
机制从而在repeat mode
和explore mode
之间软切换softly switch
。我们假设:如果next item
已经在 $ \mathcal I_S $ 中出现过,那么切换到repeat mode
,否则切换到explore mode
。因此,我们可以联合训练另一个损失,即mode prediction
损失,它也是负对数似然损失:其中:
$ \mathbb 1(i_\tau\in \mathcal I_{S_{\tau-1}}) $ 是一个指示器函数,当 $ i_\tau\in \mathcal I_{S_{\tau-1}} $ 时取值为1
,否则为0
。在联合训练的情况下,最终的损失是两种损失的线下组合:
注意:
这里可以考虑加权,如:
$ \mathcal L_\text{rec}(\theta) + \beta\times \mathcal L_\text{mode}(\theta) $ 。然后,作者在实验中表明,联合训练的效果要比单独训练
$ \mathcal L_\text{rec}(\theta) $ 更差。有两个原因:- 首先,
$ \mathcal L_\text{rec} $ 已经是学习模式预测的优秀监督器了。即,如果next item
已经完美地预测了,那么mode prediction
也百分之百正确。 - 其次,
RepeatNet
(仅使用 $ \mathcal L_\text{rec} $ )倾向于重复推荐(为什么?作者没有分析)。添加 $ \mathcal L_\text{mode} $ 进一步加剧了这种情况。
因此,实验部分主要采用
$ \mathcal L_\text{rec} $ 来训练。- 首先,
最后,为了缓解联合训练效果较差的问题,并同时利用模式预测的监督信息,可以考虑一种
warmup
训练策略:在前面 $ \rho $ 比例的epoch
(比如50%
的epoch
)优化 $ \mathcal L_\text{mode}(\theta) $ ,然后在后面的50%
比例的epoch
去优化 $ \mathcal L(\theta) $ 。这是因为预测
next item
是否重复点击的任务,要比预测next item
是哪个item
要更简单。那么我们把容易的任务作为warm up
从而先把模型预热到一个良好的状态,然后再去训练困难的任务。
RepeatNet
的所有参数及其item embedding
都是端到端通过反向传播来训练的。未来方向:
- 首先,可以结合人们的先验知识来影响
repeat-explore mechanism
。 - 其次,可以考虑更多的信息(如元数据、文本)和更多因子(如协同过滤)来进一步提高性能。
- 此外,
RepeatNet
的变体可以应用于其它推荐任务,如content-based
推荐。
- 首先,可以结合人们的先验知识来影响
读者点评:
RepeatNet
本质上是把困难的next item
预测任务拆分成两阶段的子任务:
- 第一阶段子任务:预测
next item
是否是重复购买。这个任务相对而言要更简单。- 第二阶段子任务:分别预测
repeat mode
或explore mode
下的next item
。这个任务相对而言更难。基于类似的原理,我们也可以把
next item
预测任务按照不同的维度拆分为:
- 第一阶段子任务:预测
next item
是属于哪个category
。- 第二阶段子任务:计算给定
next category
的条件下,预测next item
的概率。甚至我们可以拆分为三个阶段:
- 第一个阶段子任务:预测
next category
是否重复出现。- 第二个阶段子任务:基于
repeat mode
和explore mode
,预测next category
的概率。- 第三个阶段子任务:计算给定
next category
的条件下,预测next item
的概率。取决于具体的任务,我们还有更多的拆分方式。
这类拆分能提升效果的原因,读者觉得主要是:把困难的任务拆分成相对简单的子任务。
另外,这种拆分还引入了更多的监督信息。这些额外的监督信息来自于
next item
的属性。例如RepeatNet
中的额外监督信息来自于属性:next item
是否重复出现。而category
的例子中,监督信息来自于属性:next item
的category
。虽然论文的实验结果表明:这种监督信息的联合训练效果不佳。但是读者认为,这是因为作者没有很好地利用这种监督信息,理论上引入这种监督信息的效果更好。
这种方式是否有效,关键是评估:如果用传统的方法预测,那么
repeat mode
的概率是否接近ground truth
。如果传统的方法(如
BERT4REC
)预测的next item
中,计算到的repeat mode
预测概率等于repeat mode
真实出现的概率,那么说明传统方法已经能很好地捕获repeat mode
,此时无需使用RepeatNet
这种方法。否则,可以考虑使用RepeatNet
这种方法。
24.2 实验
数据集:
YOOCHOOSE
、DIGINETICA
、LASTFM
数据集,其中YOOCHOOSE
、DIGINETICA
是电商数据集,LASTFM
是音乐数据集。数据集的拆分与《Neural attentive session-based recommendation》
相同。YOOCHOOSE
数据集:是RecSys Challenge 2015
发布的公共数据集。我们遵循《Session-based recommendations with recurrent neural networks》
和《Neural attentive session-based recommendation》
,并过滤掉长度为1
的session
以及出现频次少于5
次的item
。他们注意到1/4
的数据集足以完成任务,增加数据量不会进一步提高性能。DIGINETICA
数据集:是CIKM Cup 2016
发布的公共数据集。我们再次遵循《Neural attentive session-based recommendation》
并过滤掉长度为1
的session
以及出现频次少于5
次的item
。LASTFM
:是Celma 2010
发布并广泛应用于推荐任务。我们将数据集用于音乐艺术家推荐。我们保留top 40000
名最受欢迎的艺术家,并过滤掉超长的session
(item
数量超过50
)、以及超短的session
(item
数量低于2
)。
数据集的统计结果如下表所示。
评估指标:
MRR@20
、MRR@10
、Recall@20
、Recall@10
。Recall@k
:ground truth item
位于top k
推荐列表的case
,占所有test case
的比例。MRR@k
:ground truth item
位于推荐列表的排名倒数reciprocal rank
的均值。如果排名落后于 $ k $ ,则设置排名倒数为零。
实验配置:
item embedding size
和GRU hidden state size
均设为100
。- 使用
dropout
,并且dropout rate = 0.5
。 - 使用
Xavier
方法来随机初始化模型参数。 - 使用
Adam
优化算法,其中学习率 $ \alpha = 0.001 $ ,两个动量参数 $ \beta_1=0.9,\beta_2=0.999 $ ,以及 $ \epsilon = 10^{-8} $ 。 - 我们每隔三个
epoch
将学习率 $ \alpha $ 减半。 - 我们还在训练期间应用范围为
$ [-5,5] $ 的梯度裁剪。 - 为了加快训练速度和快速收敛,我们通过
grid search
使用mini-batch size = 1024
。 - 我们对每个
epoch
在验证集上评估模型性能。 RepeatNet
是用Chainer
编写的,并在一个GeForce GTX TitanX GPU
上训练。
另外,这里没有采用联合训练,而是仅训练
$ \mathcal L_\text{rec} $ 。baseline
方法:传统的
session-based
推荐方法:POP
:推荐训练集中最流行的item
。它经常被用作推荐系统领域的baseline
。S-POP:
:推荐当前session
中最流行的item
。它使用session
粒度的流行度而不是全局流行度。Item-KNN
:推荐与session
中历史互动item
相似的item
。item
相似度定义为:其中还可以包括正则化项从而避免稀疏
item
的偶然的高度相似性。BPR-MF
:是一种常用的矩阵分解方法。我们使用当前session
中截至目前为止互动的item
的潜在因子的均值来表达一个session
,将其应用于session-based
推荐。FPMC
:用于next-basket
推荐的state-of-the-art
混合模型。为了使其适用于session-based
推荐,我们在计算推荐分时忽略了user latent representation
。PDP
:号称是第一个建模序列重复消费sequential repeat consumption
的方法。据我们所知,这是唯一考虑序列重复消费的推荐模型。
deep learning
的session-based
推荐方法:先前的研究工作都没有考虑建模序列重复消费。GRU4REC
:使用session-parallel mini-batch
的训练过程,并且还使用ranking-based
损失函数来学习模型。Improved-GRU4REC
:通过两种技术来改进GRU4REC
,即:数据增强、以及一种考虑输入数据分布漂移shift
的方法。GRU4REC-TOPK
:通过top-k based ranking loss
进一步改进了GRU4REC
。NARM
:通过神经注意力机制进一步改进了Improved-GRU4REC
。
所有方法的实验结果如下表所示。我们运行
GRU4REC
和NARM
发布的代码来报告GRU4REC
和NARM
的结果。可以看到:首先,
RepeatNet
优于传统方法和神经网络方法,包括最强的baseline
,即GRU4REC-TOPK
和NARM
。RepeatNet
对NARM
的改进甚至大于NARM
对Improved-GRU4REC
的改进。这些改进意味着显式建模重复消费是有帮助的,这使得
RepeatNet
在session-based
推荐中建模复杂情况的能力更强。其次,随着重复率的增加,
RepeatNet
的性能普遍提高。我们基于对YOOCHOOSE
和DIGINETICA
的不同改进得出这一结论。两个数据集都来自电商领域,但是YOOCHOOSE
的重复率更高。第三,
RepeatNet
的性能因领域而异。实验结果表明,RepeatNet
在音乐领域比电商领域具有更大的优势。我们认为这是由于不同领域的不同特性造成的。人们更愿意重复消费曾经听过的歌。
在
LASTFM
数据集上,S-POP
的表现要比Item-KNN
好得多,这意味着流行度在LASTFM
数据集上非常重要。但是,Item-KNN
在YOOCHOOSE
数据集上的表现要比S-POP
好得多,这意味着协同过滤在YOOCHOOSE
数据集上更重要。此外,神经网络模型在所有数据集的所有评估指标上都比传统方法有很大的进步。最近的其它研究也得出了类似的结论。
repeat mechanism
的分析:如上表所示,一般而言,RepeatNet with repeat
在所有数据集上都优于RepeatNet without repeat
。作者并未解释
no repeat
模型是如何实现的。个人猜测,是认为 $ P(r\mid \mathcal I_S)=0 $ ,即始终采用explore mode
来构建模型。RepeatNet (with and without repeat)
在repeated session
和non-repeated session
上的表现如下表所示。可以看到:
RepeatNet
的改进主要来自repeated session
。具体而言,在DIGINTICA
和LASTFM
数据集上,RepeatNet
在repeated session
上分别提高了33.91%
和24.16%
的Recall@20
。但是,RepeatNet
在non-repeated session
上的效果有所下降。实验结果表明,
RepeatNet
通过显式建模repeat mode
和explore mode
从而具有更大的潜力。但是,结果也显示了RepeatNet
的局限性:如果我们让它完全从数据中学习mode probability
,它似乎倾向于过多地重复推荐。应该增加一种机制来集成先验知识(即,不要过多地重复推荐)。因为
RepeatNet
在Non-Rep session
上的效果不佳,这表明它倾向于过多地重复推荐。attention mechanism
和repeat mechanism
的分析:我们在下表中比较了with and without attention
、with and without repeat
的RepeatNet
的结果。结果表明:attention mechanism
和repeat mechanism
都可以改善RepeatNet
。重要的是,attention mechanism
和repeat mechanism
的贡献是相辅相成的,因为这种组合在所有数据集的所有指标上都带来了进一步的提升,这证明了二者的必要性。- 此外,我们可以看到
attention mechanism
更有助于提高Recall
,而repeat mechanism
更有助于提高MRR
。
联合学习的分析:有趣的是,如果我们联合训练推荐损失
$ \mathcal L_\text{rec} $ 和模式预测损失 $ \mathcal L_\text{mode} $ ,则整体性能略有下降,如下表所示。我们认为这是由于以下原因:- 首先,
$ \mathcal L_\text{rec} $ 已经是学习模式预测的优秀监督器了。这个结论可以从前面实验结果中得出,其中表明RepeatNet
(仅使用 $ \mathcal L_\text{rec} $ )在repeated session
上取得了很大的改进。并且repeated session
的改善余地相对较小(因为重复购买的比例不高)。 - 其次,
RepeatNet
(仅使用 $ \mathcal L_\text{rec} $ )倾向于重复推荐。添加 $ \mathcal L_\text{mode} $ 进一步加剧了这种情况。
- 首先,
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论