数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
二十六、NextItNet [2019]
Introduction
:RNN
模型的问题:依赖于包含了整个历史信息的一个hidden state
,无法充分利用序列中的并行计算。因此,它们的速度在训练和评估中都受到限制。相比之下,训练
CNN
不依赖于前一个time step
的计算,因此允许多序列中的每个元素进行并行化。Caser
:一个卷积序列embedding
模型,其基本思想是:将 $ \mathbb R^{t\times k} $ 的embedding
矩阵视为前面 $ t $ 次交互在 $ k $ 维潜在空间中的image
,并将序列模式sequential patten
视为image
的局部特征。Caser
执行最大池化操作来仅仅保留卷积层的最大值,从而增加感受野以及处理输入序列的可变长度。下图描述了Caser
的关键架构。Caser
的缺陷:计算机视觉中安全使用的最大池化方案在建模长距离序列数据时,可能会丢弃重要的位置信号
position signal
和循环信号recurrent signal
。仅为目标
item
生成softmax
分布无法有效地使用完整的集合的依赖性set of dependency
。NextItNet
建模的是item
序列的联合分布(即,集合的依赖性),而Caser
建模的是单个item
的分布。
随着
session
个数和session
长度的增加,这两个缺点变得更加严重。Caser
缺陷的解决方案:《A Simple Convolutional Generative Network for Next Item Recommendation》
引入了一个简单的但是完全不同的CNN-based
序列推荐模型NextItNet
,该模型对复杂的条件分布进行建模。具体而言:首先,
NextItNet
被设计为显式编码item
相互依赖关系,这允许在原始item
序列上直接估计输出序列的分布(而不是目标item
)。这不是
NextItNet
的独有优势,很多RNN-based
模型都可以做到(通过拆分为subsession
的方式)。NextItNet
的优势在于速度(训练速度、推断速度)。其次,
NextItNet
没有使用低效的大滤波器,而是将一维空洞卷积层1D dilated convolutional layer
堆叠在一起,从而在建模远程依赖时增加感受野。因此在NextItNet
的网络结构中可以安全地删除池化层。值得注意的是,虽然空洞卷积
dilated convolution
是为图像生成任务中的稠密预测dense prediction
任务而发明的,并已被应用于其它领域(如,声学任务,翻译任务),但是它在具有大量稀疏数据的推荐系统中尚未得到探索。此外,为了更容易优化
deep generative architecture
,NextItNet
使用残差网络通过残差块residual block
来wrap
卷积层。据作者所知,这也是采用残差学习来建模推荐任务的首个工作。
贡献:一个新颖的推荐生成模型
recommendation generative model
、一个完全不同的卷积网络架构。
相关工作:
序列推荐的早期工作主要依赖于马尔科夫链和
feature-based
矩阵分解方法。- 与神经网络模型相比,基于马尔科夫链的方法无法建模序列数据中的复杂关系。例如,在
Caser
中,作者表明马尔科夫链方法无法建模union-level
的序列模式,并且不允许item
序列中的skip behavior
。 - 基于分解的方法(如分解机),通过
sum
序列的item vector
来建模序列。然而,这些方法不考虑item
的顺序,也不是专门为序列推荐而发明的。
- 与神经网络模型相比,基于马尔科夫链的方法无法建模序列数据中的复杂关系。例如,在
最近,与传统模型相比,深度学习模型展示出
state-of-the-art
的推荐准确性。此外,RNN
几乎在序列推荐领域占据主导地位。例如,GRU4Rec
提出了一个带ranking loss
的GRU
架构,用于session-based
推荐。在后续论文中,人们设计了各种RNN
变体来适应不同的应用场景,如:- 添加个性化:
《Personalizing Session-based Recommendations with Hierarchical Recurrent Neural Networks》
。 - 添加内容特征:
《Learning to refine text based recommendations》
。 - 添加上下文特征:
《Contextual Sequence Modeling for Recommendation with Recurrent Neural Networks》
。 - 添加注意力机制:
《A Hierarchical Contextual Attention-based GRU Network for Sequential Recommendation》
、《Neural Attentive Session-based Recommendation》
。 - 使用不同的
ranking loss
函数:《Recurrent Neural Networks with Top-k Gains for Session-based Recommendations》
。
- 添加个性化:
相比之下,
CNN-based
序列推荐模型更具挑战性并且探索较少,因为卷积不是捕获序列模型的自然方式。据我们所知,迄今为止仅提出了两种类型的、CNN-based
的序列推荐架构:标准二维CNN
的Caser
、旨在建模高维特征的三维CNN
(《3D Convolutional Networks for Session-based Recommendation with Content Feature》
)。与上述例子不同,我们计划使用有效的空洞卷积滤波器和残差块来研究一维
CNN
的效果,从而构建推荐架构。
26.1 模型
Top-N session-based
推荐:令 $ \{x_0,x_1,\cdots,x_{t-1},x_t\} $ 为user-item
交互序列(或session
),也可记做 $ \mathbf x_{0:t} $ ,其中 $ x_i\in \mathbb R,0\le i\le t $ 是被点击的item
在长度为 $ t+1 $ 的序列中的索引。序列推荐的目标是:寻找一个模型,使得对于给定的前缀
item
序列prefix item sequence
$ \mathbf x_{0:i}=\{x_0,\cdots,x_i\},0\le i\lt t $ ,该模型为所有候选item
生成ranking
或分类分布classification distribution
$ \mathbf{\vec y}=[y_1,\cdots,y_n]\in \mathbb R^n $ 从而预测第 $ i+1 $ 个item
。其中: $ y_j $ 可以为一个分数、概率、或排名,它表示第 $ j $ 个候选item
作为该session
的第 $ i+1 $ 个出现的item
的可能性。 $ n $ 为所有候选item
的规模。
在实践中,我们通常从
$ \mathbf{\vec y} $ 中选择top-N
个item
来提供推荐,称作top-N session-based
的推荐。Caser
的局限性:Caser
的基本思想是:通过embedding look-up
操作将前面的 $ t $ 个item
嵌入为一个矩阵 $ \mathbf E\in \mathbb R^{t\times k} $ ,如下图(a)
所示。矩阵的每个行向量对应一个item
的潜在特征。embedding
矩阵可以视为 $ t $ 个item
在 $ k $ 维潜在空间中的image
。直观而言,在计算机视觉中成功应用的各种
CNN
模型都可以用于对item
序列构建的image
进行建模。但是,序列建模和图像处理有两方面的区别,这使得CNN-based
模型的使用不是很直接:- 首先,现实世界场景中的可变长度的
item
序列可能会产生大量不同大小的image
,而传统的具有固定大小滤波器的卷积架构可能会失败。 - 其次,用于图像的最有效的滤波器,例如
3 x 3
和5 x 5
,不适用于序列image
,因为这些小的滤波器(就行方向而言)无法捕获full-width embedding vector
的representation
。
为了解决上述限制,
Caser
中的滤波器通过大滤波器滑过序列image
的完整列。也就是说,滤波器的宽度通常与输入image
的宽度相同。高度通常是一次滑动2 ~ 5
个item
。不同大小的滤波器在卷积后会生成可变长度的feature map
(如下图(b)
)。为了确保所有feature map
具有相同的大小,Caser
对每个feature map
执行最大池化(仅保留每个feature map
的最大值),产生一个1 x 1
的feature map
(如下图(c)
)。最后,这些来自所有滤波器的1 x 1
的feature map
被拼接起来构成一个特征向量,然后是一个softmax layer
(如下图(d)
)。注意,我们省略了垂直卷积,因为它无助于解决下面讨论的主要问题。
基于以上对
Caser
中卷积的分析,我们发现可能存在的几个缺陷:- 首先,最大池化算子有明显的缺陷。它无法区分
feature map
中的重要特征是仅出现一次还是出现多次,并且忽略了重要特征出现的位置。在图像处理中安全使用的最大池化算子可能对建模远程序列有害。 - 其次,
Caser
中的仅适用于一个hidden
卷积层的浅层网络结构在建模复杂关系或远程依赖时可能会失败。 - 最后一个重要的缺陷来自于
next item
的生成过程。我们将在后文中详细描述。
- 首先,现实世界场景中的可变长度的
为了解决上述局限性,我们引入了一种新的概率生成模型,该模型由堆叠的一维卷积层组成。一般而言,我们提出的模型在几个关键方面与
Caser
有根本的不同:- 我们的概率估计器一次性地显式地建模序列中每个
item
的分布,而不仅仅是last item
的分布。 - 我们的网络具有深层结构而不是浅层结构。
- 我们的卷积层是基于高效的一维空洞卷积而不是标准的二维卷积。
- 我们的网络移除了池化层。
- 我们的概率估计器一次性地显式地建模序列中每个
26.1.1 一个简单的生成模型
这里介绍一个简单的、但是非常有效的生成模型
generative model
,该模型直接对先前交互item
的序列进行操作。我们的目标是估计原始item
交互序列上的联合概率分布。令
$ p(\mathbf x_{0:t}) $ 为item
序列 $ \mathbf x_{0:t} = \{x_0,x_1,\cdots,x_{t-1},x_t\} $ 的联合概率分布。为了建模 $ p(\mathbf x_{0:t}) $ ,我们可以通过链式法则将其分解为条件分布的乘积:其中:
$ p(x_0) $ 为选择 $ x_0 $ 为session
中第一个item
的概率。 $ p\left(x_i\mid \mathbf x_{0:i-1},\theta\right) $ 是第 $ i $ 个item
$ x_i $ 以所有先前item
$ \mathbf x_{0:i-1} $ 为条件的条件概率, $ \theta $ 为模型参数。
NADE
,PixelRNN/CNN
在生物领域和图像领域都探索了类似的设置。因为
$ p(\mathbf x_{0:t}) $ 建模联合概率,因此它是生成模型。而GRU4Rec
建模条件概率,因此它是判别模型。我们通过堆叠一维卷积网络来建模
user-item
交互的条件分布。具体而言,网络接收 $ \mathbf x_{0:t-1} $ 作为输入,并输出可能的 $ \mathbf x_{1:t} $ 上的分布,其中 $ x_t $ 的分布是我们最终想要的。这是一个典型的
seq-to-seq
的自回归模型。注意,虽然网络接收 $ \mathbf x_{0:t-1} $ 作为输入,但是在预测位置 $ i $ 的输出时,只能看到位置 $ i $ 之前的输入。例如,如下图所示,
$ x_{15} $ 的输出分布由 $ \mathbf x_{0:14} $ 决定,而 $ x_{14} $ 的输出分布由 $ \ \mathbf x_{0:13} $ 决定。值得注意的是,在之前的序列推荐文献中(如Caser, GRU4Rec
),它们仅建模单个条件分布 $ p(x_i\mid \mathbf x_{0:i-1},\theta) $ (即,判别模型),而不是建模联合分布 $ p(\mathbf x_{0:t}) $ (即,生成模型)。假设给定 $ \{x_0,\cdots,x_{14}\} $ ,像Caser
这样的模型仅估计next item
$ x_{15} $ 的概率分布(即softmax
),而我们的生成方法估计 $ \{x_1,\cdots,x_{15}\} $ 中每个item
的分布。生成过程的对比如下:
其中:
$ \Rightarrow $ 表示predict
。显然,我们的模型在捕获所有序列关系的集合方面更有效,而
Caser
和GRU4Rec
未能显式地建模 $ \{x_0,x_1,\cdots,x_{14}\} $ 之间的内部序列特征。在实践中,为了解决这个缺点,
Caser
和GRU4Rec
这类模型通常会生成很多子序列subsession
,用于通过数据增强技术(如,填充、拆分、或移位input
序列)进行训练,如以下公式所示(NARM
、HRNN
、Caser
、3D-CNN
):虽然有效,但是由于每个
subsession
的单独优化,上述生成subsession
的方法无法保证最佳结果。此外,单独优化这些subsession
将会导致相应的计算成本。本文实验部分也进行了详细的比较。 $ \log p(\mathbf x_{0:t}) = \sum_{i=1}^t \log p\left(x_i\mid \mathbf x_{0:i-1},\theta\right) + \log p(x_0) $ ,因此可以将session
的联合概率的最大似然,分解为每个subsession
的条件概率的最大似然。由于线性关系,因此每个subsession
是可以单独优化的。NextItNet
是CNN-based
,因此可以在所有subsession
中并行地、共享地利用卷积计算结果,所以它的优势在于计算效率,而不是作者提到的联合优化。
26.1.2 网络架构
Embedding Look-up Layer
:给定一个item
序列 $ \mathbf x_{0:t}=\{x_0,\cdots,x_t\} $ ,模型通过一个lookup table
检索前面 $ t $ 个item
$ \{x_0,\cdots,x_{t-1}\} $ 中的每一个,并将这些item embedding
堆叠在一起。假设embedding
维度为 $ 2k $ ,其中 $ k $ 为卷积网络中的inner
通道数,这将导致大小为 $ t\times (2k) $ 的矩阵 $ \mathbf E\in \mathbb R^{t\times (2k)} $ 。第 $ i $ 个item
对应于embedding
向量 $ \mathbf{\vec e}_i\in \mathbb R^{2k} $ ( $ \mathbf E $ 的第 $ i $ 行)。注意,与
Caser
在卷积期间将输入矩阵视为二维image
不同,我们提出的架构通过一维卷积滤波器来学习embedding layer
,我们将在后面描述。Dilated layer
:如上图(a)
所示,标准滤波器只能通过以网络深度呈线性关系的感受野来进行卷积。这使得处理long-range
序列变得困难。与WaveNet
类似,我们使用空洞卷积来构建所提出的生成模型。空洞卷积的基本思想是:通过使用零值的空洞来将卷积滤波器应用于大于其原始长度的区域。因此,由于使用更少的参数所以它更高效。另一个好处是,空洞卷积可以保留输入的空间维度,这使得卷积层和残差结构的堆叠操作更加容易。
常规卷积通过
padding
也可以保留输入的空间维度。因此,保留输入空间维度并不是空洞卷积的优势。上图展示了所提出的序列生成模型在标准卷积和空洞卷积上实现时,模型之间的对比。
(b)
中的空洞因子dilation factor
是:1 / 2 / 4 / 8
。令感受野大小为
$ r $ ,空洞因子为 $ l $ 。假设卷积滤波器的宽度为 $ K $ ,则对于第 $ j $ 层卷积层:- 如果卷积为标准卷积,则感受野是线性的,即
$ r=j\times(K-1)+1 $ 。 - 如果卷积为空洞卷积,则感受野是指数的,即
$ r=(K-1)^{j+1}-1 $ 。
- 如果卷积为标准卷积,则感受野是线性的,即
给定空洞因子
$ l $ 和卷积滤波器的宽度为 $ K $ ,来自location
$ i $ 的滤波器窗口为:则
item
序列 $ \mathbf x_{0:t} $ 上的一维空洞卷积算子 $ *_l $ 定义为:为了防止信息泄露,这里仅使用左侧的数据点来进行卷积。
其中:
$ \mathbf{\vec e}_i^\prime\in \mathbb R^{2k} $ 为location
$ i $ 的卷积后的结果, $ \mathbf E^\prime $ 构成了卷积后的embedding
矩阵。 $ \mathbf g = [g_0,\cdots,g_{K-1}]\in \mathbb R^{K} $ 为一维空洞卷积核。
显然,空洞卷积结构更有效地建模
long-range
的item
序列,因此在不使用更大的滤波器或模型变得更深的情况下更有效。如果把
$ g_i $ 替换为注意力系数,那么一维空洞卷积就变成了传统的attention-based
聚合操作(并且使用长度为 $ K $ 的截断)。在实践中,为了进一步增加模型容量和感受野,需要堆叠多次一维空洞卷积层,如
$ l = 1 / 2 / 4 / 8 $ 。
一维变换
One-dimensional Transformation
:尽管我们的空洞卷积算子依赖于二维输入矩阵 $ \mathbf E $ ,但是所提出的网络架构实际上是由所有一维卷积层组成的。为了对二维embedding
输入进行建模,我们执行了一个简单的reshape
操作,这是执行一维卷积的先决条件。具体而言,将二维矩阵
$ \mathbf E $ 从 $ t\times (2k) $reshape
为大小为 $ 1\times t\times (2k) $ 的三维张量 $ \mathbf T $ ,其中 $ 2k $ 被视为image
的通道,而不是Caser
中标准卷积滤波器的宽度。下图
(c)
说明了reshape
的过程。
26.1.3 Masked Convolutional Residual Network
虽然增加网络层的深度有助于帮助获得
higher-level feature representation
,但是也容易导致梯度小的问题,这使得学习过程变得更加困难。为了解决退化问题degradation problem
,深度网络引入了残差学习。残差学习的基本思想是将多个卷积层作为一个
block
堆叠在一起,然后采用skip connection
将前一层的特征信息传递到后一层。skip connection
允许显式拟合残差映射(而不是原始的恒等映射),这可以维持输入信息从而增大传播的梯度。假设所需要的映射为
$ \mathcal H(\mathbf E) $ ,我们让残差block
拟合另一个映射:所需要的映射现在通过逐元素加法重写为:
$ \mathcal H(\mathbf E) = \mathcal F(\mathbf E) + \mathbf E $ ,其中假设 $ \mathcal F(\mathbf E) $ 和 $ \mathbf E $ 具有相同的维度。正如ResNet
中所证明的,优化残差映射 $ \mathcal F(\mathbf E) $ 要比优化原始的映射 $ \mathcal H(\mathbf E) $ 容易得多。受到
《Identity mappings in deep residual networks》
和《Neural machine translation in linear time》
的启发,我们在下图(a)
和(b)
中引入了两个残差模块。在
(a)
中我们用一个残差块residual block
来wrap
每个空洞卷积层(即,Masked 1 x 3
),而在(b)
中我们用一个不同的残差块来wrap
每两个空洞卷积层。也就是说,对于(b)
中的block
的设计,输入层和第二个卷积层通过skip connection
来连接。具体而言,每个
block
都由归一化层、激活(例如ReLU
)层、卷积层、skip connection
以特定的顺序组成。在这项工作中,我们在每个激活层之前采用了state-of-the-art
的layer normalization
,因为与batch normalization
相比,它非常适合序列处理和在线学习。(a)
中的residual block
由三个卷积滤波器组成:一个大小为1 x 3
的空洞卷积滤波器和两个大小为1 x 1
的常规滤波器。引入1 x 1
滤波器主要是改变feature map
的通道数,从而减少1 x 3
卷积要学习的参数。- 第一个
1 x 1
滤波器(靠近图(a)
中的输入 $ \mathbf E $ )是将通道数从 $ 2k $ 变为 $ k $ 。 - 第二个
1 x 1
滤波器进行相反的变换从而保持下一次堆叠操作的空间维度。
- 第一个
(b)
中的residual block
包含两个卷积滤波器,它们都是1 x 3
的空洞卷积滤波器。这里没有1 x 1
的常规滤波器。并且input
之后没有跟随Normalization
。
为了展示
(a)
中的1 x 1
滤波器的有效性,我们计算了(a)
和(b)
中的参数数量。为简单起见,我们忽略了激活层和归一化层。正如我们所见:- 在
(b)
中,由于没有1 x 1
滤波器,所以1 x 3
滤波器的参数数量为: $ 1\times 3\times (2k)\times (2k)=12k^2 $ 。 - 而在
(a)
中,要学习的参数数量为: $ 1\times 1\times (2k)\times k + 1\times 3\times k\times k + 1\times 1\times k\times (2k)=7k^2 $ 。
- 在
(a)
和(b)
中的残差映射的公式为:其中:
$ \sigma(\cdot) $ 为ReLU
层, $ \mathbf\Psi(\cdot) $ 为layer-normalization
。 $ \mathbf W_1,\mathbf W_3 $ 表示标准的1 x 1
卷积的权重权重函数。 $ \mathbf W_2,\mathbf W_2^\prime,\mathbf W_4^\prime $ 表示1 x 3
大小的l-dilated
卷积滤波器的权重函数。
注意,为了简化公式,这里省略了偏置项。
Dropout-mask
:为了避免未来信息泄露的问题,我们为一维空洞卷积提出了一种masking-based
的dropout
技巧,从而防止网络看到未来的item
。具体而言,在预测 $ p(x_i\mid \mathbf x_{0:i-1}) $ 时,不允许卷积滤波器使用来自 $ \mathbf x_{i:t} $ 的信息。下图展示了执行卷积的几种不同方法。因为默认的卷积操作会以当前位置为中心,同时使用左侧和右侧的数据点。
如图所示,我们的
dropout-masking
操作有两种方式(假设卷积核大小为 $ K $ ):padding & masking
:如图(d)
所示,在输入序列左侧填充 $ (K-1)\times l $ 个位置(类似于CNN
的padding
填充),并在卷积时masking
卷积窗口右侧部分。shifting & padding
:如图(e)
所示,将输出序列左移 $ (K-1)\times l $ 个位置,并在输入序列右侧填充 $ (K-1)\times l $ 个位置。这种方法
(e)
中的方法很可能导致序列中的信息丢失,特别是对于短序列。因此,在这项工作中我们在(d)
中应用填充策略。
26.1.3 训练和预测
如前所述,卷积架构的最后一层中的矩阵(由
$ \mathbf E^{(o)} $ 表示),保留了输入 $ \mathbf E $ 的相同维度大小,即 $ \mathbf E^{(o)}\in \mathbb R^{t\times (2k)} $ 。但是,输出应该是一个矩阵或张量,其中包含输出序列 $ \mathbf x_{1:t} $ 中所有item
的概率分布,其中 $ x_t $ 的概率分布就是我们想要的并且用于生成top-N
推荐。为此,我们可以简单地在最后一个卷积层之上再使用一个
1 x 1
卷积层,滤波器大小为 $ 1\times 1\times(2k)\times n $ ,其中 $ n $ 为item
总数。遵从一维变换过程,我们得到想要的输出矩阵 $ \mathbf E^{(p)}\in \mathbb R^{t\times n} $ ,其中经过softmax
操作之后的每个行向量表示 $ x_i $ 上的categorical distribution
, $ 0\lt i\le t $ 。优化的目标是最大化训练数据关于
$ \theta $ 的对数似然。显然,最大化 $ \log p(\mathbf x_{0:t}) $ 在数学上等价于最小化 $ \mathbf x_{1:t} $ 中每个item
的二元交叉熵损失之和。对于具有数千万个item
的实际推荐系统,可以应用负采样策略来绕过full softmax
分布的生成,其中1 x 1
卷积层被一个具有权重矩阵 $ \mathbf E^{(g)}\in \mathbb R^{(2k)\times n} $ 的全连接层所替代。例如,我们可以应用sampled softmax
或kernel based sampling
。经过适当调优的采样大小,这些负采样策略的推荐准确性与full softmax
方法几乎相同。这里,
1 x 1
卷积层和全连接层几乎是等价的,所以替代的意义是什么?读者认为这里表述有误,应该是 $ \mathbf E^{(g)}\in \mathbb R^{(2k)\times s} $ ,其中 $ s $ 为负采样的规模。但是,这种负采样方法是一种全局负采样,即每个output
都采样相同的一组负样本。另外,这里没有把
input emebdding
$ \mathbf E $ 和output embedding
$ \mathbf E^{(g)} $ 进行共享,导致模型可能发生过拟合。预测阶段:为了与现有模型进行比较,我们仅预测
next item
,然后停止生成过程。然而,该模型能够简单地通过将预测的next item
(或序列)输入网络来预测下一个,从而生成一个预测序列,因此是序列生成模型。这与大多数现实世界的推荐场景相匹配。在这些场景中,当观察到当前action
时,紧跟着next action
。但是在训练和评估阶段,所有
time step
的条件预测都可以并行进行,因为完整的输入item
序列 $ \mathbf x_{0:t} $ 已经可用。出于比较的目的,我们没有在我们的模型或
baseline
中考虑其它上下文。然而,我们的模型可以灵活地结合各种上下文信息。例如,如果我们知道user id
$ u $ 和location
$ p $ ,则 $ p(\mathbf x_{0:t}) $ 分布可以修改为:其中:
$ \mathbf{\vec u} $ 为用户 $ u $ 的user embedding
, $ \mathbf P $ 为location
的location matrix
。我们可以通过逐元素操作(如乘法、加法、或拼接)将
$ \mathbf E $ (卷积前)或 $ \mathbf E^{(o)} $ (卷积后)与 $ \mathbf {\vec u} $ 和 $ \mathbf P $ 结合起来。我们将评估工作留待未来。
26.2 实验
数据集:
Yoochoosebuys: YOO
:来自RecSys Challenge 2015
。我们使用购买数据集进行评估。对于预处理,我们过滤掉长度小于3
的session
。同时,我们发现在处理后的YOO
数据中,96%
的session
长度小于10
,因此我们简单地删除了长度大于等于10
的session
(占比4%
),并将其称作short-range
序列数据。Last.fm
:我们从该数据集中分别随机抽取20000
和200000
首歌曲,分别称作MUSIC_M
数据集和MUSIC_L
数据集。在
Last.fm
数据集中,我们观察到大多数用户每周听音乐数百次,而有的用户甚至一天内听了一百多首歌曲。因此,我们能够通过切分这些long-range
的听歌session
来测试我们的模型在short-range
和long-range
序列上的性能。在
MUSIC_L
中,我们定义最大session
长度 $ t $ 为5 / 10 / 20 / 50 / 100
(每种长度定义一个数据集),然后提取每 $ t $ 个连续的item
作为我们的输入序列。这是通过在整个数据集上滑动一个大小和步长为 $ t $ 的窗口来完成的。我们忽略了最后两个item
之间的时间跨度超过2
小时的session
。这样,我们创建了5
个数据集,称之为RAW-SESSIONS
。此外,MUSIC_M5
和YOO
也是RAW-SESSIONS
。我们将这些RAW-SESSIONS
数据随机划分为训练集、验证集、测试集,划分比例为50%-5%-45%
。是否要根据时间跨度来切分?这种滑动窗口的方法会导致一些
session
内部的item
之间,存在较大的时间跨度。此外,这里训练集太小,测试集太大?
如前所述,
Caser
和GRU4Rec
的性能对于长序列输入应该会显著降低,例如当 $ t=20 / 50 / 100 $ 时。例如,当设置 $ t=50 $ 时,Caser
和GRU4Rec
将使用 $ \mathbf x_{0:48} $ 来预测 $ x_{49} $ ,但是不会显式建模 $ x_0 $ 和 $ x_{48} $ 之间的item
相互依赖关系。为了弥补这个缺陷,当 $ t\gt 5 $ 时,我们遵循通用方法NARM
和《Improved recurrent neural networks for session-based recommendations》
,通过从RAW-SESSIONS
的训练集中手动创建额外的session
,以便Caser
和GRU4Rec
可以在很大程度上利用full dependency
。假设 $ t=50 $ ,那么每个训练session
将通过填充头部和移除尾部从而创建45
个sub-session
,即:关于
MUSIC_M
,我们仅展示 $ t=5 $ 的结果。我们在下表中展示了
RAW-SESSIONS
和SUB-SESSIONS
(即SUB-SESSIONS-T
)的训练数据集的统计信息。为什么对于
YOO, MUSIC_M5, MUSIC_L5
,SUB-SESSIONS-T
反而要比RAW-SESSIONS
更少?读者猜测,这里SUB-SESSIONS-T
不包含原始的RAW-SESSIONS
,因此真实训练集是二者的并集。配置:
所有模型均使用
TensorFlow
在GPU(TITAN V)
上进行训练。baseline
方法的学习率和batch size
是根据验证集中的性能手动设置的。对于所有数据集,
NextItNet
使用0.001
的学习率和batch size = 32
。如果没有特别的说明,那么所有模型的
embedding
大小 $ 2k=64 $ 。我们报告了使用残差块
(a)
和完整softmax
的结果,我们也独立地验证了 残差块(b)
的性能结果。残差块
(a)
:每个残差块来wrap
每个空洞卷积层。残差块
(b)
:每个残差块来wrap
每两个空洞卷积层。为了进一步评估两种残差块的有效性,我们还在另一个数据集中测试了我们的模型,即
Weishi
。与没有残差块的相同模型相比,improvement
大约是两倍。
评估指标:
Mean Reciprocal Rank: MRR@N
、Hit Ratio: HR@N
、Normalized Discounted Cumulative Gain: NDCG@N
。 $ N $ 设置为5
和20
。我们评估测试集中每个序列的
last item
的预测准确性。论文这里省略了
baseline
的介绍。所有方法的总体性能如下表所示。可以看到:神经网络模型(即,
Caser, GRU4Rec, NextItNet
)在top-N
序列推荐任务中获得了非常有前景的准确性。例如,在
MUSIC_M5
数据集中,三个神经网络模型在MRR@5
上的表现比广泛使用的baseline MostPop
好120
倍以上。在这个数据集中,我们通过NextItNet
获得的最佳MRR@20
结果是0.3223
,这大致意味着目标item
在20000
个候选item
中平均排名第3
位(1/0.3223
大致等于3
)我们发现,在这些基于神经网络的模型中,
NextItNet
在很大程度上优于Caser
和GRU4Rec
。我们认为有几个原因促成了这个state-of-the-art
的结果。首先,正如前文所强调的那样,
NextItNet
充分利用了完整的序列信息。这可以在下表中轻松地验证,我们观察到没有subsession
的Caser
和GRU4Rec
在long session
中的表现非常糟糕。此外,即使使用
subsession
,Caser
和GRU4Rec
仍然展示出比NextItNet
差得多的结果。因为与NextItNet
利用完整session
相比,每个subsession
的独立优化显然是次优suboptimal
的。“每个
subsession
的独立优化显然是次优suboptimal
的” 个人觉得不成立,因为本质上由于 $ \log p(\mathbf x_{0:t}) = \sum_{i=1}^t \log p\left(x_i\mid \mathbf x_{0:i-1},\theta\right) + \log p(x_0) $ ,因此联合概率分布的最大化等价于每个subsession
单独优化的最大化。其次,与
Caser
不同的是,NextItNet
没有池化层,尽管它也是CNN-based
模型。因此,NextItNet
保留了原始embedding
矩阵 $ \mathbf E $ 的整个空间分辨率,而不会丢失任何信息。第三,
NextItNet
可以通过使用残差学习来支持更深的层,这更适合建模复杂的关系和长期依赖关系。我们独立地验证了残差块(b)
的性能,并将结果展示在下表中。可以观察到:通过残差块设计可以显著提高NextItNet
的性能。
下表展示了
embedding size
的影响。除了推荐准确性的优势,我们还在下表中评估了
NextItNet
的效率。可以看到:首先,
NextItNet
和Caser
在所有三个数据集中都需要比GRU4Rec
更少的训练时间。CNN-based
模型可以更快训练的原因是由于卷积的完全并行机制。显然,具有训练速度优势的CNN
模型更受现代并行计算系统的青睐。其次,
NextItNet
与Caser
相比,其训练效率得到进一步的提升。更快的训练速度主要是因为NextItNet
在训练期间利用了完整的序列信息,然后通过更少的训练epoch
来更快地收敛。个人觉得
NextItNet
训练速度快的其中一个原因是:卷积运算的结果在多个subsession
之间共享,所以节省了大量的计算。
为了更好地理解收敛行为,我们在下图中展示了它们。可以看到:在具有相同数量的训练
session
的情况下, 和Caser, GRU4Rec
相比,NextItNet
的收敛速度更快。这证实了我们前面的观点,因为Caser
和GRU4Rec
无法充分利用session
中的内部序列信息。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论