数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
二十三、MCPRN [2019]
在现实世界中,随着相应
context
的演变,用户需求会不断变化。这种context-sensitive demand
的性质激发了人们最近对于session-based recommender system: SBRS
的兴趣。session-based
推荐系统解决了静态推荐系统的空白, 其中静态推荐系统仅推荐homogeneous item
而不考虑跨session
的demand dynamic
。因此,SBRS
通过建模session
中item
之间的依赖关系,从而针对session
(作为context
)向用户推荐该用户可能感兴趣的next item
。大多数现有的
SBRS
通过形成forming
具有单一意图purpose
或目标goal
的session
来作出推荐(例如,在购物篮分析basket analysis
中购买食物和饮料之类的商品)。这通常违反了session
可能会涉及多种类型的item
的现实,其中每种类型对应于一个意图。以下图中第一行所示的session
为例:Janet
首先将培根放入购物车中作为早餐。- 然后她被一朵可爱的玫瑰饰品所吸引并将其添加到购物车中。
- 她还为早餐选择了鸡蛋和面包,还选择了一个花瓶来装玫瑰。
- 最后,她拿起一瓶牛奶结束了此次购物。
对于这个例子,现有的
SBRS
将采用单通道single-channel
建模方法,将session
中购买的商品隐式关联为同质的item
序列。如下图中的第二行所示。显然,当session
中的item
有多种意图时,这种方法无法区分purpose-specific
的item
依赖(如早餐item
和饰品item
)。这里 “通道” 指的就是意图。
上面的例子揭示了两种代表性类型的、
state-of-the-art
的SBRS
之间的显著gap
,即基于单通道RNN
的SBRS
和基于单通道注意力的SBRS
。RNN-based
模型假设session
中任何连续successive
的item
之间都具有严格的顺序依赖关系sequential dependency
,因此:gap 1
:很容易生成错误的依赖关系,因为在多意图multi-purpose
的session
中并非所有item
都存在顺序依赖。gap 2
:RNN-based
的SBRS
倾向于推荐最近的意图所对应的item
,其中最近的意图是通过最近的item
所指示的。这是因为:由于记忆
memory
随着time step
而衰减decay
,那些远离target item
的contextual item
将被target item
附近的item
所淹没。gap 3
:attention-based SBRS
倾向于推荐item
从而满足主要意图,对其它意图不利。为了减少无关
item
的干扰,人们将注意力机制纳入浅层网络、RNN
、以及memory network
从而构建SBRS
。注意力模型倾向于在极少数重要item
上分配突出的权重,这使得session
的意图由这几个item
所主导。
论文
《Modeling Multi-Purpose Sessions for Next-Item Recommendations via Mixture-Channel Purpose Routing Networks》
通过提出混合通道意图路由网络mixture-channel purpose routing network: MCPRN
来解决上述三个gap
。首先,
MCPRN
使用意图路由网络purpose routing network: PRN
自动地检测session
中可能的多个意图。然后,
MCPRN
使用混合通道循环网络mixture-channel recurrent network: MCRN
建模session
。其中,每个通道(即意图特定的循环网络purpose-specific recurrent network: PSRN
)建立在意图特定的循环单元purpose-specific recurrent unit: PSRU
之上,并为特定意图构建purpose-specific embedding
从而建模item
之间的依赖项。PSRU
是一种GRU
变体,它考虑了item
属于当前意图的权重。 而PSRN
由PSRU
构成。最后,通过集成所有通道来构建多意图
context embedding
(即,session embedding
),从而对候选item
进行排序,从而得到多样化的、purpose-sensitive
的推荐。
多亏了
PRN
和MCRN
,session
中的不同意图可以被检测到,然后这些不同意图的item
依赖关系分别在不同的同道中被建模。结果,item
依赖关系是针对特定意图的,而不是针对一个整体而粗糙的意图的,这使得MCPRN
能够更集中地捕获意图驱动purpose-driven
的用户行为。因此,MCPRN
以更有效、更鲁棒的机制来利用当前的单意图SBRS
来表达多意图session
。通过在session
中保留和建模多个意图,MCPRN
可以推荐满足不同意图的多样化的item
,而现有方法倾向于仅为单个意图推荐item
。这项工作的主要贡献如下:
- 论文提出了多意图建模,以更合理的方式捕获
sesion
中的用户行为从而适应实际情况。因此,论文提出了混合通道意图路由网络MCPRN
来实现这一点。 - 在
MCPRN
中,意图路由网络PRN
旨在推断每个item
的意图并将它们路由到特定的通道。此外,特定意图循环单元PSRU
是关键组件,它作为混合通道循环网络MCRN
关于每个通道的基本单元。
相关工作:人们已经开发了各种
SBRS
,包括:基于规则/模式的推荐系统(《Effective next-items recommendation via personalized sequential pattern mining》
)、基于邻域的推荐系统(《When recurrent neural networks meet the neighborhood for session-based recommendation》
)、基于马尔科夫链的推荐系统(《Personalized ranking metric embedding for next new poi recommendation》
)、以及基于分解机的推荐系统(《Factorizing personalized markov chains for next-basket recommendation》
)。我们简要回顾了两个具有代表性的state-of-the-art
的SBRS
:RNN-based
的SBRS
、attention-based
的SBRS
,因为它们与我们的工作最相关。RNN-based SBRS
:由于RNN
在处理序列数据方面的优势,RNN
是捕获SBRS
中复杂的intra-session
依赖性的直观选择。GRU4Rec
是第一个RNN-based
的SBRS
,它采用GRU
来捕获session
中的长期依赖关系。- 后来,
GRU4Rec
的改进版本(《Recurrent neural networks with top-k gains for session-based recommendations》
)通过引入针对RNN
量身定制的、创新性的ranking loss function
,从而显著提高模型性能。
由于采用了严格的次序假设
order assumption
,RNN
很容易产生错误的依赖关系。次序假设,即:假设session
中的任何相邻item
都是高度的顺序相关sequentially dependent
的。然而,在大多数实际情况下,这可能并非如此。此外,
RNN
通常会偏向于最近的item
,因为随着记忆衰退memory decay
,模型会在session
中丢失很多previous item
的信息。attention-based SBRS
:通过在session
上下文中强调那些相关的和重要的item
,注意力机制已被用于构建更鲁棒的SBRS
。《Neural attentive session-based recommendation》
提出了神经注意力推荐机Neural Attentive Recommendation Machine: NARM
,它采用具有注意力机制的混合编码器,通过区分更重要和更不重要的item
,从而在当前session
中建模用户的序列行为和用户的主要意图。《Attention-based transactional context embedding for next item recommendation》
设计了一种attention-based transaction embedding model: ATEM
,从而在没有次序假设的情况下在session
上下文中构建attentive context embedding
。- 此外,在
《Sequential recommendation with user memory networks》
中,注意力机制被用于memory-augmented
神经网络中,用于选择性地读出external memory matrix
从而进行next item
推荐。
然而,注意力机制试图在少数重要的
item
上分配更大的权重,同时淡化其它item
,导致偏向于由这些少数item
所指示的主要意图。因此,attention-based SBRS
通常仅满足主要意图,而忽略了session
中的其它意图。
综上所述,所有上述
SBRS
都是基于单通道的,它们对于单意图session
是有效的。其中,单意图指的是:session
中的所有item
都是相互依赖的。然而,这些方法无法很好地处理具有多种不同类型的item
(这些item
反应不同意图)的session
。受到混合模型在处理多种关系方面的巨大潜力的启发,我们为多意图session
设计了一个混合通道模型。
23.1 模型
给定一个
session
集合 $ \mathcal S=\{s_1,\cdots,s_{|\mathcal S|}\} $ ,其中每个session
$ s = \{v_{1},\cdots,v_{{|s|}}\} $ 由一个匿名用户在一个交易事件transaction event
中顺序交互(如点击、购买)的item
序列组成。这里 $ |\mathcal S| $ 为总的session
数量, $ s $ 中的下标表示item
出现的顺序(或时间戳)。所有
session
中出现的所有item
构成了universal
的item
集合 $ \mathcal V $ 。对于target item
$ v_{t}\in s $ ,所有发生在 $ v_t $ 之前的、位于 $ s $ 中的item
共同构成了 $ v_t $ 在 $ s $ 上的session context
(简称context
),记做 $ \mathcal C_{v_t} = \{v_1,\cdots,v_{t-1}\} $ 。 $ \mathcal C_{v_t} $ 中的每个item
都称作contextual item
。给定具有前面
$ t-1 $ 个item
的context
$ \mathcal C $ ,我们需要构建一个SBRS
来推荐第 $ t $ 个item
。因此,MCPRN
被训练为一个概率分类器模型,该模型学习预测条件概率分布 $ P(v_t\mid \mathcal C) $ 。一旦学到了模型的所有参数,MCPRN
就能够根据给定context
时的条件概率对所有候选item
来排序从而推荐next item
。MCPRN
的架构如下图(a)
所示。MCPRN
主要由两个模块组成:意图路由器Purpose Router
、混合通道循环网络Mixture-Channel Recurrent Network: MCRN
。Purpose Router
:意图路由器用于将每个item
路由到特定意图的通道。具体而言,我们采用软路由soft routing
策略,将每个item embedding
以不同的意图权重分配给所有通道,即所谓的混合通道网络mixture channel network
。软路由策略可以进行任何基于梯度的优化从而简化学习。与软路由对应的是硬路由
hard routing
,即每个item embedding
仅分配给某一个通道。MCRN
:在MCRN
中,每个通道都配备了一个基于意图特定循环单元PSRU
的意图特定循环网络PSRN
,用于为特定意图建模item
之间的依赖关系。
不同通道的
final hidden state
$ \mathbf{\vec h}_{t-1} $ 被选择性地集成从而作为multi-purpose context embedding
$ \mathbf{\vec v}_{\mathcal C} $ 。以 $ \mathbf{\vec v}_{\mathcal C} $ 作为条件的target item embedding
$ \mathbf{\vec v}_t $ 用于计算所选择的item
作为next item
的概率。接下来,我们将介绍这些组件的更多技术细节。这里的 ”选择性地“ 指的是:根据
$ \mathbf{\vec v}_t $ 的软路由来进行加权。因为我们只需要选择target item
所在的通道。
23.1.1 Purpose Router
给定
session context
中的所有item
,意图路由网络purpose routing network: PRN
在意图路由器Purpose Router
中使用,从而在没有任何人类先验知识的情况下抽取selecting item
$ v_i $ 的意图。首先,我们将每个
item
$ v $ 映射成一个 $ K $ 维embedding
向量 $ \mathbf{\vec v}\in \mathbb R^K $ ,所有item
的embedding
向量构成一个embedding
矩阵 $ \mathbf W_e\in \mathbb R^{K\times |\mathcal V|} $ ,其中embedding
矩阵的第 $ i $ 列 $ \mathbf{\vec v}_i=\mathbf W_e[:,i]\in \mathbb R^K $ 是第 $ i $ 个item
$ v_i $ 的embedding
向量。然后,我们将
item
$ v_i $ 的emebdding
$ \mathbf {\vec v}_i $ 输入到PRN
中,从而确定selecting
$ v_i $ 的意图。 $ \mathbf W_p\in \mathbb R^{K\times m} $ 表示所有意图的意图过滤参数purpose filtering parameter
的矩阵 ,其中 $ m $ 为意图数量(即,通道数), $ \mathbf W_p $ 的第 $ j $ 列 $ \mathbf{\vec p}_j=\mathbf W_p[:,j]\in \mathbb R^K $ 表示第 $ j $ 个意图 $ p_j $ 的过滤参数。 $ m $ 为超参数,可以通过交叉验证来确定。item
$ v_i $ 相对于第 $ j $ 个意图 $ p_j $ 的集中度得分concentration score
$ a_{i,j} $ 计算如下:此外,可以根据以下
softmax
函数获得关于 $ p_j $ 的归一化集中度权重normalized concentration weight
:其中
$ \tau $ 为需要调优的温度超参数。- 对于很高的温度(
$ \tau\rightarrow \infty $ ) ,所有的意图具有几乎相等的概率。 - 对于很低的温度 (
$ \tau\rightarrow 0^+ $ ),归一化集中度权重倾向于集中于单个权重(几乎是硬路由hard routing
)。
在实验中,我们使用
$ \tau=0.1 $ 可以产生最佳性能。意图数量
$ m $ 和温度 $ \tau $ 都是非常重要的超参数,它们对MCPRN
的效果产生关键性的影响。- 对于很高的温度(
23.1.2 Mixture-Channel Recurrent Network
然后,
item embedding
及其意图集中度权重被输入到MCRN
的每个通道中,如下图(a)
中的紫色(item embedding
)和绿色(意图集中度权重)箭头所示。- 每个通道都由一个
PSRN
来建模,PSRN
是由 $ t-1 $ 个PSRU
单元组成从而建模 $ t-1 $ 个item
的序列上的purpose-specific
序列依赖性sequential dependency
。 - 每个通道的工作机制类似于普通的
RNN
,而在PSRN
中这些cell
配备了我们设计的PSRU
。一个通道中的PSRU cell
都是相同的(包括结构和参数),而不同通道中的cell
具有相同的结构但是不同的参数。
接下来我们将详细介绍
PSRU
。- 每个通道都由一个
Purpose-Specific Recurrent Unit: PSRU
:像LSTM
或GRU
这样的RUU cell
不考虑序列中item
的degree of membership
。在MCRN
中,每个通道包含session
中的所有item
,但是这些item
的意图集中度权重(即,degree of membership
),在给定意图上是不同的。因此,在给定集中度权重的情况下,LSTM
和GRU
还没有准备好在通道中建模这种purpose-specific
依赖性。因此,我们设计了
PSRU
作为每个PSRN
的cell
。与GRU
或其变体通常仅使用当前输入和last hidden state
而不使用任何额外信息additional information
来计算gate value
不同,PSRU
引入了一个concentration gate
,从而根据特定意图来选择性地将item
信息集成到转移transition
中。上图
(b)
给出了PSRU cell
的结构。与传统的GRU cell
相比,增加了一个额外的gate
,即concentration gate
(见蓝色虚线方块),从而根据意图集中度权重 $ g_{i,j} $ 来决定当前状态在多大程度上应该参与到purpose-specific transition
。通道 $ c_j $ 的第 $ i $ 个time step
的PSRU cell
取last hidden state
$ \mathbf{\vec h}_{i-1} $ 、当前item
的embedding
$ \mathbf{\vec v}_i $ 、以及集中度权重 $ g_{i,j} $ 作为输入,并输出当前time step
的候选hidden state
$ \tilde{\mathbf{\vec h}}_i $ 。 $ g_{i,j}\ge 0 $ 控制了item embedding
$ \mathbf{\vec v}_i $ 多达程度上属于当前通道,那么一个核心设计是:如果 $ g_{i,j} =0 $ ,那么 $ \mathbf{\vec v}_i $ 对应的time step
不会被更新; $ g_{i,j} $ 越大,则该time step
更新越大。因此,单纯地将 $ g_{i,j}\times \mathbf{\vec v}_i $ 作为输入,无法满足这个设计需求(因为即使input
为零,RNN
也会更新状态)。这就是为什么需要引入额外的
concentration gate
的原因,同时这也是为什么 $ g_{i,j} $ 作用在updae gate
上的原因。更具体而言,候选
hidden state
$ \tilde{\mathbf{\vec h}}_i $ 的计算如下,其中 $ \mathbf{\vec r}_i $ 为reset gate
向量、 $ \mathbf{\vec z}_i $ 为update gate
向量:其中:
$ \sigma_s $ 为sigmoid
激活函数, $ \sigma_t $ 为tanh
激活函数。 $ \odot $ 为逐元素乘积。 $ || $ 为向量拼接。 $ \mathbf W_r,\mathbf W_z,\mathbf W_h $ 为待学习的权重矩阵。
此外,我们得到
concentration gate
向量 $ \mathbf{\vec u}_i $ 如下:其中:
$ \delta_c(\cdot) $ 为Delta
函数,其中 $ g_{i,j}\ge \epsilon $ 时 $ \delta_c=1 $ 否则 $ \delta_c = 0 $ 。 $ \epsilon $ 为阈值超参数,用于在session
中建模transition
时消除噪音noisy
的item
。即, $ \mathbf{\vec u}_i $ 会绕过集中度权重低于 $ \epsilon $ 的item
。我们在实验中根据经验设置 $ \epsilon = 0.01 $ 。
这里计算
$ \mathbf{\vec u}_i $ 时出现了 $ g_{i,j} $ 。事实上 $ j $ 代表通道,因此更准确的描述是:因为我们是针对第
$ j $ 个通道来计算 $ \mathbf{\vec u}_i $ 。因此,当前
step
的hidden state
$ \mathbf{\vec h}_i $ 可以由 $ \mathbf{\vec u}_i $ 根据previous state
$ \mathbf{\vec h}_{i-1} $ 和当前候选状态 $ \tilde{\mathbf{\vec h}}_i $ 来确定:这里
$ \mathbf{\vec u}_i $ 代替了update gate
的作用,并且它是update gate
乘以 $ g_{i,j} $ 得到(经过阈值过滤)。例如,如果
item
$ v_i $ 主要集中于单个意图 $ p_1 $ ,即: $ g_{i,1}\simeq 1, g_{i,j}\simeq 0, j\ne 1 $ 。由于 $ g_{i,j}\lt \epsilon, j\ne 1 $ ,因此对于除了通道1
以外的所有其它通道的transition
,item
$ v_i $ 将被忽略,即: $ \mathbf{\vec h}_i = \mathbf{\vec h}_{i-1} $ 。
21.1.3 概率选择
一旦
session context
$ \mathcal C $ 被输入到MCPRN
中,所有 $ m $ 个通道的final hidden state
$ \mathbf{\vec h}_{t-1}^{(j)} $ 被集成在一起,从而构建一个多意图context embedding
$ \mathbf{\vec v}_{\mathcal C} $ :其中:
$ \hat g_{t,j} $ 为target item
$ \hat v_t $ 相对于意图 $ p_j $ 的集中度权重。 $ \hat g_{t,j} $ 加权了目标意图target purpose
从而构建context embedding
$ \mathbf{\vec v}_{\mathcal C} $ 。注意,这里集中度权重用的是
target item
的,而不是last item
$ g_{t-1,j} $ 。因为我们最终希望选择target item
所在的通道。由于每个
$ v\in \mathcal V $ 都可以作为候选的target item
,因此我们需要对每个 $ v\in \mathcal V $ 计算一个 $ \mathbf{\vec v}_{\mathcal C} $ ,算法复杂度较高。然后,我们将
context embedding
$ \mathbf{\vec v}_{\mathcal C} $ 与候选item
的embedding
一起馈入输出层从而进行target item
预测。具体而言,我们使用内积计算target tiem
$ \hat v_t $ 相对于给定context
$ \mathcal C $ 的相关性得分relevance score
,从而捕获它们之间的交互:target item
$ \hat v_t $ 不仅参与了 $ \hat{\mathbf{\vec v}}_t $ ,也参与了 $ \mathbf{\vec v}_{\mathcal C} $ 。最后,根据相关性得分
$ \delta_t(\mathcal C) $ 获得item
$ \hat v_t $ 作为ground truth
的条件概率 $ q\left(\hat v_t\mid \mathcal C;\Theta\right) $ :其中:
$ \Theta $ 为所有session
上需要学习的模型参数集合。
21.1.4 优化和训练
我们通过对交叉熵损失使用
mini-batch
梯度下降来训练我们的模型。给定条件概率 $ q $ ,损失函数为:其中:
$ s^+ $ 为给定session context
$ \mathcal C $ 的positive sample
,即真正的next item
$ v_t $ 。 $ \mathcal N^- $ 为从item
集合 $ \mathcal V - \{v_t\} $ 中随机采样 $ n $ 个item
作为negative sample set
。positive sample
的损失为 $ \log q $ ,negative sample
的损失为 $ \log (1-q) $ ,它们一起构成了contrastive pair
$ \left(s^+,\mathcal N^-\right) $ 的损失。
模型参数
$ \Theta $ 通过最小化 $ \mathcal L\left(s^+,\mathcal N^-\right) $ 来学到的。具体而言,negative sampling
用于有效的训练。负采样策略对于模型效果影响很大,论文这里并未讲述如何负采样。
我们的模型是使用
TensorFlow
实现的。由于篇幅有限,以下算法仅列出了mini-batch
学习过程的简要方案,其中 $ \Gamma_\text{Adam} $ 表示Adam-based
梯度下降优化器,batch size
设置为50
。MCPRN
训练过程:输入:
session
集合 $ \mathcal S=\{s_1,\cdots,s_{|\mathcal S|}\} $- 优化器
$ \Gamma_\text{Adam} $ - 损失函数
$ \sum_{\left(s^+,\mathcal N^-\right)} \mathcal L\left(s^+,\mathcal N^-\right) $
输出:学好的模型参数
$ \Theta $算法步骤:
从所有
(context, target item) pair
获取mini-batch
$ \mathcal B $ 。为每个
target item
$ v_t\in \mathcal B $ 采样 $ n $ 个negative item
$ \mathcal N^-_{v_t} $ 。计算
mini-batch
损失:更新参数:
$ \Theta\leftarrow \Theta - \Gamma_{\text{Adam}}(\nabla_\Theta \mathcal L_\mathcal B) $ 。
23.2 实验
数据集:我们使用了真实世界的三个交易数据集:
Yoochoose-buy
:由RecSys Challenge 2015
发布,记录了Yoochoose.com
上每个session
购买的item
。Tmall
:由IJCAI-15 competition
发布,记录了天猫在线购物平台中每个transaction
购买的item
。Tafeng
:在Kaggle
上发布,记录了一家中国杂货店的交易数据。
首先,通过将一个
transaction
中的所有item
放在一起来形成一个会话,我们从每个原始数据集中抽取一组session
集合。我们删除少于三个item
的session
,因为至少需要两个item
作为context
从而形成多意图session context
、以及另外一个item
作为target item
。其次,我们通过随机选择过去
30
天的20%, 30%, 40%
的session
进行测试,从而对session
集合执行三种training-test
拆分。我们的方法在所有三种拆分上都取得了相似的性能,并且稳定地优于所有baseline
,因此这里仅展示了30%
拆分的结果。有的实验是将最后一天或最后一周的
session
作为测试集,那么随机选择的测试集和最近时间选择的测试集,二者评估结论是一致的吗?最后,为了构建格式为
$ (\mathcal C,v_t) $ 的training-test
实例,对于一个session
$ s $ ,我们每次从 $ s $ 中的第三个到最后一个item
之间选择一个item
作为target item
$ v_t $ ,并且 $ v_t $ 之前的所有这些item
构成对应的conetxt
$ \mathcal C $ 。因此,对于包含 $ |s| $ 个item
的session
,我们一共创建了 $ |s|-2 $ 个实例。数据集的统计结果如下表所示。
评估指标:
Mean Reciprocal Rank: MRR
、normalized Discounted Cumulative Gain: NDCG
、Recall
。此外我们还设计了一个新颖的多样性指标来评估推荐结果的多样性
diversity
。baseline
方法:iGRU4Rec-BPR
:典型的RNN-based SBRS
的改进版本,它使用GRU-based RNN
来建模session
,并且以Bayesian Personalized Ranking: BPR
作为损失函数(《Recurrent neural networks with top-k gains for session-based recommendations》
)。iGRU4Rec-CE
:与iGRU4Rec-BPR
类似,只是它使用交叉熵损失函数替代了BPR
损失函数。NARM
:一个具有注意力机制的混合编码器,它在session
中捕获用户的序列行为和主要意图。MANN
:一个memory-augmented
的神经网络,它采用注意力模型来读取显式存储在外部memory
矩阵中的历史信息。Caser
:一种卷积的序列embedding
模型,它将一个序列的item
嵌入到一个image
中,然后使用卷积滤波器将序列模式sequential pattern
学习为局部特征。ATEM
:一个浅而宽的网络,结合了注意力机制来学习session context
的attentive embedding
。
为了证明混合通道在多意图建模中的有效性,我们实现了我们方法的两个版本:
MCPRN
的完整模型、MCPRN
的单通道版本MCPRN-S
。单通道版本只需要将
$ m=1 $ 即可实现。实验设置:
- 我们使用相应论文中的参数配置来初始化所有的
baseline
模型,然后在我们的数据集上调优它们从而获得最佳性能以进行公平地比较。 PSRU
中的item embedding
和hidden state
尺寸均设置为128
。通过验证集调优从而将通道数 $ m $ 设置为3
。Adam
的初始学习率设置为0.001
。
- 我们使用相应论文中的参数配置来初始化所有的
MCPRN
与baselien
在准确性指标上的性能比较:我们在推荐准确性指标上比较了MCPRN
和baseline
方法。下表给出了MRR
和nDCG
指标。前两种方法建立在
GRU-based
的RNN
之上,由于过于严格的sequentially dependent-based
假设、以及对于最近意图的bias
,因此很容易生成错误的依赖。因此,它们在多意图session
数据上表现不佳。NARM
和MANN
通过将注意力机制分别纳入RNN-based SBRS
和memory network-based SBRS
来突出相关信息并抑制噪声,从而获得更好的性能。 但是,由于注意力加权机制,在session
中它们很容易偏向于主要意图。Caser
也表现不佳,因为CNN
中的池化操作很难捕获远程依赖关系。与其它
attention-based SBRS
一样,ATEM
通常偏向于主要意图。通过使用每个通道独立地建模每个意图,我们的
MCPRN
不仅平等地对待每个意图,而且还保持每个意图内的序列依赖关系。因此,MCPRN
在所有数据集上都取得了最佳性能。具体而言,在
Yoochoose-buy
和Tafeng
两个数据集上,MCPRN
在MRR@5, MRR@20, nDCG@5
指标上比现有最佳方法提高了20%
以上。
由于空间有限,下图给出了在两个数据集上的召回性能。可以看到,
MCPRN
以显著的优势领先于baseline
。混合通道与单通道的比较:为了证明混合通道结构的效果,我们将
MCPRN
与MCPRN-S
进行比较,结果如上图和上表所示。可以很清楚地看到:MCPRN
比MCPRN-S
实现了更高的准确性。MCPRN
的MRR@5, nDCG@5, Recall@5
至少比MCPRN-S
高20%
,这证明了混合通道架构的优越性。推荐多样性:人们在推荐系统中引入多样性评估,从而弥补准确性评估的缺陷。直观而言,推荐的
item
的类别分布越分散,则意味着模型可以产生更大的多样性。因此,根据信息论,推荐的类别分布可以通过熵来衡量多样性,即:其中:
$ k $ 为推荐列表长度(即,top-k
个item
)。 $ \text{Pr}_i $ 是item
$ v_i $ 所属类别在推荐列表中出现的概率,基于频率估计得到。假设推荐列表中,每个
item
对应的类别为 ”{服装,数码,服装,服装,母婴}“,那么 $ \text{Pr}_i $ 依次等于{0.6, 0,2, 0.6, 0.6, 0.2}
。因为服装出现的概率为0.6
。
下图展示了
MCPRN
与baseline
的多样性指标的对比。可以看到:MCPRN
实现了比baseline
方法更高的多样性。特别是在Tafeng
数据集上,MCPRN
实现了高达13.01%
的Diveristy@5
提升、11.61%
的Diveristy@10
提升 。原因是
baseline
方法通常推荐仅满足最近意图(如,RNN-based SBRS
)或主要意图(如,attention-based SBRS
)的item
,因为它们是基于单通道的设计。相比之下,MCPRN
通过以并行方式建模多个意图,很容易使得推荐列表多样化。多样性评估不适用于
Yoochoose-buy
,因为该数据集的类别信息不可用。意图集中度可视化
Purpose Concentration Visualization
:为了深入理解session
中用于不同意图的item
如何被检测、并相应地被路由到MCPRN
中的不同通道,我们从Yoochoose-buy
数据集的测试集中随机抽取两个session
,并在下图中可视化了它们的集中度权重。可以看到:
一个
session
中的item
通常用于多个意图,因此被放入不同的通道,如:不同的item
在所有这三个通道上都有不同的分布。真正的
target item
$ v_t $ 可能具有与session
中最近的意图、或主要意图所不同的意图。例如,第二个
session
所示。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论