数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
四十二、AutoEmb [2020]
deep learning based recommender systems: DLRSs
的架构通常主要由三个关键部分组成:embedding layer
:将高维空间中的原始的user/item
特征映射到低维embedding
空间中的稠密向量。hidden layer
:进行非线性变换以转换输入特征。output layer
:根据hidden layer
的representation
对特定的推荐任务进行预测。
大多数现有的研究都聚焦在为
hidden layer
和output layer
设计复杂的神经网络架构,而embedding layer
并没有获得太多的关注。然而,在拥有海量user
和item
的大规模真实世界推荐系统中,embedding layer
在准确推荐中发挥着巨大的关键作用。embedding
最典型的用途是将一个ID
(即user ID
或item ID
)转换成一个实值向量。每个embedding
都可以被认为是一个latent representation
。与手工制作的特征相比,经过良好学习的embedding
已经被证明可以显著提高推荐性能。这是因为embedding
可以降低categorical
变量的维度(如one-hot id
),并有意义地在潜空间中代表user/item
。大多数现有的
DLRSs
在其embedding layer
中往往采用统一的固定维度。换句话说,所有的user
(或item
)共享相同的、固定的embedding size
。这自然引起了一个问题:我们是否需要为不同的user/item
采用不同的embedding size
?为了研究这个问题,论文
《AutoEmb: Automated Embedding Dimensionality Search in Streaming Recommendations》
对movielens-20m
数据集进行了初步研究。对于每个用户,作者首先选择该用户的固定比例的评分作为测试集,然后选择 $ x $ 个评分作为训练集。下图展示了当改变 $ x $ 时,一个典型的、embedding
维度为2/16/128
的DLRS
的推荐性能在mean-squared-error: MSE
和准确率方面的变化。更低的MSE
(或更高的准确率)意味着更好的性能。注意,作者在这项工作中把user/item
的交互次数称为popularity
。从图中可以看到:随着popularity
$ x $ 的增加:- 不同
embedding size
的模型的性能增加,但较大的embedding size
获益更多。 - 较小的
embedding size
首先工作得更好,然后被较大的embedding size
所超越。
这些观察结果是非常符合预期,因为
embedding size
通常决定了待学习的模型参数的数量、以及由embedding
所编码信息的容量。- 一方面,较小的
embedding size
往往意味着较少的模型参数和较低的容量。因此,当popularity
小的时候,它们可以很好地工作。然而,当随着popularity
的增加,embedding
需要编码更多的信息,较低的容量会而限制其性能。 - 另一方面,更大的
embedding size
通常表示更多的模型参数和更高的容量。它们通常需要足够的数据从而被良好地训练。因此,当popularity
小的时候,它们不能很好地工作;但随着popularity
的增加,它们有可能捕获更多的信息。
鉴于
user/item
在推荐系统中具有非常不同的popularity
,DLRSs
应该允许不同的embedding size
。这一特性在实践中是非常需要的,因为现实世界的推荐系统是popularity
高度动态的streaming
。例如,新的交互会迅速发生,新的用user/item
会不断增加。在论文
《AutoEmb: Automated Embedding Dimensionality Search in Streaming Recommendations》
中,作者的目标是在streaming setting
下,在embedding layer
为不同的user/item
实现不同的embedding size
。这里面临着巨大的挑战:- 首先,现实世界的推荐系统中的
user/item
的数量非常大,而且popularity
是高度动态的,很难为不同的user/item
手动选择不同的embedding size
。 - 其次,在现有的
DLRSs
中,first hidden layer
的输入维度通常是统一的和固定的,它们很难接受来自embedding layer
的不同维度。
作者试图解决这些挑战,从而建立了一个基于端到端的可微的
AutoML
框架(即,AutoEmb
),它可以通过自动的、动态的方式利用各种embedding size
。论文通过现实世界的电商数据中的实验来证明了所提出的框架的有效性。相关工作:
deep learning based recommender system
:近年来,一系列基于深度学习技术的神经推荐模型被提出,性能提升明显(如,NCF, DeepFM, DSPR, MV-DNN, AutoRec, GRU4Rec
)。然而,这些工作大多集中在设计复杂的神经网络架构上,而对embedding layer
没有给予过多关注。AutoML for Neural Architecture Search
:《Neural input search for large scale recommendation models》
首次将NAS
用于大规模的推荐模型,并提出了一种新型的embedding
方式,即Multi-size Embedding: ME
。然而,它不能应用于streaming recommendation setting
,其中popularity
不是预先知道的而是高度动态的。
42.1 模型
Basic DLRS
架构:我们在下图中阐述了一个basic
的DLRS
架构,它包含三个部分:embedding layer
:将user ID/item ID
$ (u_i,v_j) $ 映射到密集的、连续的embedding
向量 $ (\mathbf{\vec u}_i, \mathbf{\vec v}_j) $ 。hidden layer
:是全连接层,将embedding
向量 $ (\mathbf{\vec u}_i, \mathbf{\vec v}_j) $ 非线性地转化为hierarchical feature representation
。output layer
:生成prediction
从而用于推荐。
给定一个
user-item
的交互,DLRS
首先根据user ID
和item ID
进行embedding-lookup
过程,并将两个embedding
拼接起来;然后DLRS
将拼接后的embedding
馈入hidden layer
并进行预测。 然而,它有固定的神经网络架构,不能处理不同的embedding size
。接下来,我们将加强这个basic
的DLRS
架构,以实现各种embedding size
。AutoEmb
仅聚焦于user id
和item id
的embedding size
优化,而没有考虑其他的categorical feature
。并且论文描述的算法仅应用streaming recommendation setting
。论文的思想比较简单:为每个
id
分配 $ N $ 个候选的embedding size
,然后用强化学习进行择优。难以落地,因为最终得到的模型,参数规模几乎增长到 $ N $ 倍。换一个思路:给定一个
baseline model
,我们可以将baseline model
的embedding size
划分为 $ N $ 个子维度(类似于NIS
),然后由控制器来选择需要横跨几个子维度。这种方法和NIS
的区别在于:NIS
的控制器是独立的自由变量,每个变量代表对应的概率。虽然控制器没有包含item
的popularity
信息,可以自由变量的update
次数就代表了item
出现的频次,因此隐式地包含了popularity
信息。- 而这个思路里,控制器的输入包含了
item
的popularity
信息,可以给予控制器一定的指导。
Enhanced DLRS
架构:正如前面所讨论的,当popularity
较低时,具有较少模型参数的shorter embedding
可以产生更好的推荐;而随着popularity
的增加,具有更多模型参数和更高容量的longer embedding
可以获得更好的推荐性能。在这个观察的激励下,为具有不同popularity
的user/item
分配不同的embedding size
是非常理想的。然而,basic DLRS
架构由于其固定的神经网络架构而无法处理各种embedding size
。解决这一挑战的基本思路是将各种
embedding size
转换为同一维度,这样DLRS
就可以根据当前user/item
的popularity
选择其中一个transformed embedding
。下图说明了embedding
的转换和选择过程。假设我们有 $ N $ 个embedding
空间 $ \left\{\mathbf E^{1},\mathbf E^{2},\cdots,\mathbf E^{N}\right\} $ ,每个空间的embedding
维度(即,embedding size
)分别为 $ d_1,d_2,\cdots,d_N $ ,且满足 $ d_1\lt d_2\lt\cdots\lt d_N $ 。对于给定的用户 $ u_i $ ,定义该用户在所有embedding
空间的embedding
集合为 $ \left\{\mathbf{\vec e}_i^1,\mathbf{\vec e}_i^2,\cdots,\mathbf{\vec e}_i^N\right\} $ 。为了统一embedding
向量 $ \left\{\mathbf{\vec e}_i^1,\mathbf{\vec e}_i^2,\cdots,\mathbf{\vec e}_i^N\right\} $ ,我们引入带有 $ N $ 个全连接层的组件从而将 $ \left\{\mathbf{\vec e}_i^1,\mathbf{\vec e}_i^2,\cdots,\mathbf{\vec e}_i^N\right\} $ 转化为相同的维度 $ d_N $ :其中:
$ \mathbf W_r\in \mathbb R^{d_r\times d_N} $ 为权重矩阵, $ \mathbf{\vec b}_r\in \mathbb R^{d_N} $ 为bias
向量。经过线性变换,我们将原始
embedding
向量 $ \left\{\mathbf{\vec e}_i^1,\mathbf{\vec e}_i^2,\cdots,\mathbf{\vec e}_i^N\right\} $ 映射为相同维度的 $ \left\{\tilde{\mathbf{\vec e}}_i^1,\tilde{\mathbf{\vec e}}_i^2,\cdots,\tilde{\mathbf{\vec e}}_i^N\right\}\in \mathbb R^{d_N} $ 。在实践中,我们可以观察到,转换后的embedding
$ \left\{\tilde{\mathbf{\vec e}}_i^1,\tilde{\mathbf{\vec e}}_i^2,\cdots,\tilde{\mathbf{\vec e}}_i^N\right\} $ 的向量长度magnitude
变化很大,这使得它们变得magnitude-incomparable
。为了解决这一难题,我们对转换后的embedding
$ \left\{\tilde{\mathbf{\vec e}}_i^1,\tilde{\mathbf{\vec e}}_i^2,\cdots,\tilde{\mathbf{\vec e}}_i^N\right\} $ 进行Batch- Norm
与Tanh
激活:其中:
$ \vec\mu_\mathcal B^r $ 为mini-batch
的均值, $ \left(\sigma_\mathcal B^r\right)^2 $ 为mini-batch
的方差, $ \epsilon $ 为一个很小的常数从而保持数值稳定性,Tanh
激活函数将embedding
归一化到0~1
之间。给定一个
item
$ v_j $ ,我们对其embedding
集合 $ \left\{\mathbf{\vec f}_j^1,\mathbf{\vec f}_j^2,\cdots,\mathbf{\vec f}_j^N\right\} $ 进行类似的操作,得到相同维度的、magnitude-comparable
的转换后的embedding
$ \left\{\hat{\mathbf{\vec f}}_j^1,\hat{\mathbf{\vec f}}_j^2,\cdots,\hat{\mathbf{\vec f}}_j^N\right\} $ 。根据
popularity
,DLRS
将选择一对转换后的embedding
$ \left(\hat{\mathbf{\vec e}}_i^*,\hat{\mathbf{\vec f}}_j^*\right) $ 作为user
$ u_i $ 和item
$ v_j $ 的representation
:embedding size
是由一个控制器controller
选择的,将在后面详细介绍。然后,我们将user representation
和item representation
拼接起来,即 $ \mathbf{\vec h}_0 = \left[\mathbf{\vec u}_i;\mathbf{\vec v}_j\right] $ ,并将 $ \mathbf{\vec h}_0 $ 馈入到 $ M $ 个全连接的隐层,而隐层的输出被馈入到output layer
从而生成user
$ u_i $ 对item
$ v_j $ 的交互的预测。为了获得理想的效果,
$ N $ 不能太小(否则,控制器选择的余地就不大)。embedding table
占据了模型的绝大部分参数,因此 $ N $ 个embedding table
使得模型的规模几乎翻了 $ N $ 倍。这对于模型训练、模型部署都是严重的挑战。因此,该方法不太适用。Controller
:我们提出了一种基于AutoML
的方法来自动确定embedding size
。具体而言,我们设计了两个控制器网络,分别决定user embedding size
和item embedding size
,如下图所示。对于一个特定的
user/item
,控制器的输入由两部分组成:user/item
的当前popularity
、上下文信息(如previous
超参数和loss
)。上下文信息可以被看作是衡量previously
分配给user/item
的超参数是否运作良好的信号。换句话说,如果previous
超参数工作得很好,那么这次生成的新的超参数应该有些类似。controller
的输入特征具体都是什么?论文并未说明。也不必深究,因为论文的应用价值不高。该控制器接收上述输入,通过几层全连接网络进行转换,然后生成
hierarchical feature representation
。output layer
是具有 $ N $ 个输出单元的Softmax layer
。在这项工作中,我们用 $ \{\alpha_1,\cdots,\alpha_N\} $ 来表示user controller
的 $ N $ 个输出单元、用 $ \{\beta_1,\cdots,\beta_N\} $ 表示item controller
的 $ N $ 个输出单元。 第 $ n $ 个输出单元表示选择第 $ n $ 个embedding
空间的概率。controller
自动选择最大概率的空间作为final embedding
空间,即:有了控制器,
embedding size
搜索的任务就简化为优化控制器的参数,从而根据user/item
的popularity
自动生成合适的 $ \{\alpha_n\} $ 或 $ \{\beta_n\} $ 。Soft Selection
:上面的控制器对embedding
空间进行了hard selection
,即:每次我们只从控制器中选择一个具有最大概率的embedding
空间。这种hard selection
使得整个框架不是端到端的可微的。为此,我们选择了一种soft selection
:有了
soft selection
,enhanced DLRS
是端到端的可微的。新的结构如下图所示,我们增加了transformed embedding layer
,它对embedding
空间进行soft selection
,选择过程由两个控制器(分别用于user
和item
)来决定。优化方法:优化任务是联合优化
DLRS
的参数(如 $ \mathbf W $ )和控制器的参数(如 $ \mathbf \Theta $ )。由于我们的框架是端到端的可微的,受可微分架构搜索(differentiable architecture search: DARTS
)技术概念的启发,我们为AutoEmb
框架采用了基于DARTS
的优化,通过梯度下降分别优化训练损失 $ \mathcal L_\text{train} $ 和验证损失 $ \mathcal L_\text{val} $ 来更新 $ \mathbf W $ 和 $ \mathbf \Theta $ 。注意,训练损失和验证损失不仅由DLRS
的参数 $ \mathbf W $ 决定,也由控制器的参数 $ \mathbf\Theta $ 来决定。embedding dimensionality search
的目标是找到使验证损失 $ \mathcal L_\text{val}(\mathbf W^∗, \mathbf \Theta^∗) $ 最小化的最佳参数 $ \mathbf \Theta^∗ $ ,其中DLRS
的参数 $ \mathbf W^∗ $ 是通过最小化训练损失 $ \mathbf W^∗= \arg\min_{\mathbf W} \mathcal L_\text{train}( \mathbf W, \mathbf \Theta^∗) $ 得到的。 这是一个bilevel
优化问题,其中 $ \mathbf \Theta $ 是外层变量, $ \mathbf W $ 是内层变量:因为优化内层的
$ \mathbf W $ 很昂贵,所以优化 $ \mathbf\Theta $ 很耗时。因此,我们利用DARTS
的近似方案:其中
$ \xi $ 是更新 $ \mathbf W $ 的学习率。近似方案通过更新 $ \mathbf W $ 一个training step
来估计 $ \mathbf W^* $ ,这就避免了完全优化 $ \mathbf W^* = \arg\min_\mathbf W \mathcal L_\text{train}(\mathbf W, \mathbf\Theta^*) $ 。一阶近似(即, $ \xi = 0 $ ) 甚至会导致一定的加速,但根据经验,性能更差。值得注意的是,与计算机视觉任务上的
DARTS
不同,我们没有推导离散架构的阶段(即,DARTS
根据softmax
概率选择最可能的操作来生成离散的神经网络架构)。这是因为随着新的user-item
交互的发生,user/item
的popularity
是高度动态的,这使我们无法为user/item
选择一个特定的embedding size
。DARTS based Optimization for AutoEmb
算法:输入:
user-item
交互、以及ground-truth
标签输出:训练好的
DLRS
参数 $ \mathbf W^* $ 、训练好的控制器参数 $ \mathbf\Theta^* $算法步骤:
迭代直到收敛,迭代步骤:
从
previous
的user-item
交互中随机采样一个mini-batch
的验证数据。基于梯度下降来更新
$ \mathbf\Theta $ :其中
$ \xi=0 $ 用于first-order approximation
。收集一个
mini-batch
的训练数据。基于当前参数
$ \mathbf\Theta $ 的控制器来生成 $ \{\alpha_n\} $ 和 $ \{\beta_n\} $ 。基于当前参数
$ \mathbf W $ 、 $ \{\alpha_n\} $ 和 $ \{\beta_n\} $ 来生成DLRS
的prediction
。评估
prediction
的效果并记录下来。通过梯度下降来更新
$ \mathbf W $ : $ \nabla_\mathbf W\mathcal L_\text{train}(\mathbf W, \mathbf\Theta) $ 。
值得注意的是,在
batch-based streaming recommendation setting
中,优化过程遵循"evaluate, train, evaluate, train..."
的方式。 换句话说,我们总是不断地收集新的user-item
交互数据。当我们有一个完整的mini-batch
的样本时,我们首先根据我们的AutoEmb
框架的当前参数进行预测,评估预测的性能并记录下来;然后我们通过最小化prediction
和ground truth label
之间的损失来更新AutoEmb
的参数。接下来我们收集另一个mini-batch
的user-item
交互,执行同样的过程。因此,不存在预先拆分的验证集和测试集。换句话讲:为了计算
$ \mathcal L_\text{val} $ ,我们从previous
的user-item
交互中采样一个mini-batch
,作为验证集。没有独立的测试阶段,即没有预先拆分的测试集。
遵循
《Streaming recommender systems》
中的streaming recommendation setting
,我们也有离线参数估计阶段和在线推理阶段:- 在离线参数估计阶段,我们使用历史上的
user-item
交互来预先训练AutoEmb
的参数。 - 然后我们在线启动
AutoEmb
,在在线推理阶段持续更新AutoEmb
参数。
- 在离线参数估计阶段,我们使用历史上的
42.2 实验
数据集:
Movielens-20m, Movielens-latest, Netflix Prize data
。统计数据如下表所示。对于每个数据集,我们使用
70%
的user-item
交互进行离线参数估计,其他30%
用于在线学习。为了证明我们的框架在embedding selection
任务中的有效性,我们消除了其他的上下文特征(如,用户的年龄、item
的category
)从而排除其他特征的影响。但为了更好地推荐,将这些上下文特征纳入框架是很简单的。实现细节:
对于
DLRS
:embedding layer
:选择 $ N=3 $ 个embedding size
$ [2, 16, 128] $ ,因此转换后的embedding
维度为128
。我们将每个user/item
的三个embedding
拼接起来,这大大改善了embedding
的lookup
速度。hidden layer
:我们有两个隐层,大小为256*512
和512*512
。output layer
:我们做两类任务:- 对于
rating regression
任务,输出层为512*1
。 - 对于
rating classification
任务,输出层为512*5
,采用Softmax
激活,因为有5
类评级。
- 对于
对于控制器:
input layer
:输入特征维度为38
。hidden layer
:我们有两个隐层,大小为38*512
和512*512
。output layer
:形状为512*3
,采用Softmax
激活函数,并输出 $ N=3 $ 个单元的权重。
batch-size = 500
,DLRS
和控制器的学习率分别为0.01
和0.001
。AutoEmb
框架的所有超参数都通过交叉验证来调优。相应地,我们也对baseline
进行了超参数调优,以进行公平的比较。
评估指标:
对于回归任务,我们首先将评分二元化为
{0, 1}
,然后通过最小化mean-squared-error: MSE
损失来训练框架。性能可以通过MSE
损失和准确率来评估(我们使用0.5
作为阈值来分配标签)。如何二元化,作者并未说明。读者猜测是用当前评分除以最大评分(如,
5
分)从而得到0 ~ 1
之间的浮点数。对于分类任务,评分
1~5
被视为5
个类,框架通过最小化交叉熵损失(CE loss
)进行训练。性能由交叉熵和准确率来衡量。
baseline
方法:Fixed-size Embedding
:为所有的user/item
分配了一个固定的embedding size
。为了公平比较,我们将embedding size
设定为146 = 2 + 16 + 128
。换句话说,它占用的内存与AutoEmb
相同。Supervised Attention Model: SAM
:它具有与AutoEmb
完全相同的架构,同时我们通过端到端的监督学习的方式,在同一个batch
的训练数据上同时更新DLRS
的参数和控制器的参数。Differentiable architecture search: DARTS
:它是标准的DARTS
方法,为三种类型的embedding
维度训练 $ N=3 $ 个实值权重。
值得注意的是,
Neural Input Search model
和Mixed Dimension Embedding model
不能应用于streaming recommendation setting
,因为它们假设user/item
的popularity
是预先知道的和固定的,然后用大的embedding size
来分配高popularity
的user/item
。然而,在现实世界的streaming recommender system
中,popularity
不是预先知道的,而是高度动态的。在线阶段的比较结果如下表所示。可以看到:
SAM
的表现比FSE
好,因为SAM
根据popularity
在不同维度的embedding
上分配注意力权重,而FSE
对所有user/item
都有一个固定的embedding
维度。这些结果表明,推荐质量确实与user/item
的popularity
有关,而引入不同的embedding
维度并根据popularity
调整embedding
上的权重可以提高推荐性能。DARTS
优于SAM
,因为像DARTS
这样的AutoML
模型在验证集上更新控制器的参数,可以提高泛化能力,而像SAM
这样的端到端模型在同一个batch
训练数据上同时更新DLRS
和控制器的参数,可能导致过拟合。这些结果验证了AutoML
技术比传统的监督学习在推荐中的有效性。我们提出的模型
AutoEmb
比标准DARTS
模型有更好的性能。DARTS
在三种embedding
维度上为每个user/item
分别训练了 $ N=3 $ 个实值权重。一个特定的user/item
的这些权重可能不会被很好地训练,因为这个user/item
的交互有限。AutoEmb
的控制器可以纳入大量的user/item
交互,并从中捕获到重要的特征。另外,控制器有一个显式的
popularity
输入,这可能有助于控制器学习popularity
和embedding
维度之间的依赖关系,而DARTS
则不能。这些结果证明了开发一个控制器而不仅仅是实值权重的必要性。在离线参数估计阶段之后,在线阶段的大多数
user/item
已经变得非常popular
。换句话说,AutoEmb
对热门user/item
有稳定的改进。
综上所述,所提出的框架在不同的数据集和不同的指标上都优于
baseline
。这些结果证明了AutoEmb
框架的有效性。我们将调查所提出的控制器是否能根据各种
popularity
产生适当的权重。因此,我们比较了没有控制器的FSE
、有监督注意力控制器的SAM
、以及有基于AutoML
的控制器的AutoEmb
。Figure 6
显示了Movielens-20m
数据集的结果,其中x
轴是popularity
,y
轴对应的是性能。由于篇幅有限,我们省略了其他数据集的类似结果。可以看到:当
popularity
较小时,FSE
的表现比SAM
和AutoEmb
差。这是因为较大维度的embedding
需要足够的数据才能很好地学习。参数较少的小型embedding
可以快速捕捉一些high-level
的特性,这可以帮助冷启动预测。随着
popularity
的提高,FSE
的表现超过了SAM
。这个结果很有趣,但也很有启发性,原因可能是,SAM
的控制器过拟合少量的训练样本,这导致了次优的性能。相反,
AutoEmb
的控制器是在验证集上训练的,这提高了它的泛化能力。这个原因也将在下面的小节中得到验证。AutoEmb
总是优于FSE
和SAM
,这意味着所提出的框架能够根据popularity
自动地、动态地调整不同维度的embedding
的权重。为了进一步探究
AutoEmb
的控制器根据popularity
产生的权重,我们在Figure 7
中画出了不同popularity
的权重分布。我们可以观察到:在小的popularity
下,分布倾向于小维度的embedding
;而随着popularity
的增加,分布倾向于大维度的embedding
。这一观察验证了我们的上述分析。
综上所述,
AutoEmb
的控制器可以通过自动的、动态的方式为不同的popularity
产生合理的权重。不同数据规模下的性能:训练基于深度学习的推荐系统通常需要大量的
user-item
交互数据。我们提出的AutoEmb
框架在DLRS
中引入了一个额外的控制器网络、以及一些额外的参数,这可能使它难以被很好地训练。我们在下图中展示了优化过程,其中x
轴是训练样本的数量,y
轴对应的是性能。可以看到:- 在早期训练阶段,
SAM
的表现最差,因为它的控制器对少量的训练样本过拟合。 - 随着数据的增加,
SAM
的过拟合问题逐渐得到缓解,SAM
的表现优于FSE
,这验证了在不同embedding
维度上加权的必要性。 AutoML
在整个训练过程中优于SAM
和FSE
。尤其是在训练样本不足的早期训练阶段,它能明显提高训练效果。
- 在早期训练阶段,
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论