数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
四十四、PEP [2021]
基于深度学习的推荐模型利用
embedding
技术将这些稀疏的categorical feature
映射为实值的稠密向量,以抽取用户偏好和item
特性。embedding table
可能包含大量的参数,并花费巨大的内存,因为总是有大量的原始特征。因此,embedding table
的存储成本最高。一个很好的例子是
YouTube Recommendation Systems
。它需要数以千万计的参数用于YouTube video ID
的embedding
。考虑到当今服务提供商对即时推荐的需求不断增加,embedding table
的规模成为深度学习推荐模型的效率瓶颈。另一方面,具有uniform emebdding size
的特征可能难以处理不同特征之间的异质性。例如,有些特征比较稀疏,分配太大的embeddding size
很可能导致过拟合问题。因此,当所有特征的embedding size
是uniform
时,推荐模型往往是次优的。现有的关于这个问题的工作可以分为两类:
- 一些工作(
《Model size reduction using frequency based double hashing for recommender systems》
、《Compositional embedding susing complementary partitions for memory-efficient recommendation systems》
、《Learning multi-granular quantized embeddings for large-vocab categorical features in recommender systems》
)提出,一些密切相关的特征可以共享部分embedding
,从而减少整个成本。 - 另一些工作提出依靠人类设计的规则(
《Mixed dimension embeddings with application to memory-efficient recommendation systems》
)或神经结构搜索(《Neural input search for large scale recommendation models》
、《Automated embedding dimensionality search in streaming recommendations》
、《Differentiable neural input search for recommender systems》
)为不同特征分配size
灵活的embedding
。
尽管得到了
embedding size
减小的embedding table
,但这些方法在推荐性能和计算成本这两个最受关注的方面仍然不能有好的表现。具体来说,这些方法要么获得较差的推荐性能、要么花费大量的时间和精力来获得合适的embedding size
。在论文
《Learnable embedding sizes for recommender systems》
中,为了解决现有工作的局限性,作者提出了一个简单而有效的pruning-based
框架,名为Plug-in Embedding Pruning: PEP
,它可以插入各种embedding-based
的推荐模型中。论文的方法采用了一种直接的方式:一次性裁剪那些不必要的embedding
参数来减少参数数量。具体而言,
PEP
引入了可学习的阈值,可以通过梯度下降与emebdding
参数共同训练。请注意,阈值被用来自动确定每个参数的重要性。然后,embedding
向量中小于阈值的元素将被裁剪掉。然后,整个embedding table
被裁剪,从而确保每个特征有一个合适的embedding size
。也就是说,embedding size
是灵活的。在得到裁剪后的embedding table
后,作者在彩票假说(Lottery Ticket Hypothesis: LTH
)的启发下重新训练模型。彩票假说表明,与原始网络相比,子网络可以达到更高的准确性。基于灵活的embedding size
和LTH
,PEP
可以降低embedding
参数,同时保持甚至提高模型的推荐性能。最后,虽然推荐性能和参数数量之间总是存在
tradeoff
,但PEP
只需运行一次就可以获得多个裁剪后的embedding table
。换句话说,PEP
可以一次性生成多个memory-efficient
的embedding
矩阵,这可以很好地处理现实世界应用中对性能或内存效率的各种需求。PEP
至少训练两遍:第一遍用于裁剪、第二遍用于重训练。论文在三个公共基准数据集(
Criteo, Avazu, MovieLens-1M
)上进行了广泛的实验。结果表明,与SOTA
的baseline
相比,PEP
不仅可以达到最好的性能,而且可以减少97% ~ 99%
的参数。进一步的研究表明,PEP
在计算上是相当高效的,只需要一些额外的时间进行embedding size
的学习。此外,对所学到embedding
的可视化和可解释性分析证实,PEP
可以捕获到特征的固有属性,这为未来的研究提供了启示。- 一些工作(
相关工作:
Embedding
参数共享:这些方法的核心思想是使不同的特征通过参数共享来复用embedding
。《Learning multi-granular quantized embeddings for large-vocab categorical features in recommender systems》
提出了MGQE
,从共享的small size
的centroid embeddings
中检索embedding fragments
,然后通过拼接这些fragments
生成final embedding
。《Model size reduction using frequency based double hashing for recommender systems》
使用双哈希技巧double-hash trick
,使低频特征共享一个小的embedding-table
,同时减少哈希碰撞的可能性。即,对低频特征的
embedding space
分解为两个更小的embedding space
从而缓解过拟合、降低模型规模。《Compositional embeddings using complementary partitions for memory-efficient recommendation systems》
试图通过组合多个较小的embedding
(称为embedding fragments
),从一个小的embedding table
中为每个feature category
产生一个unique embedding vector
。这种组合通常是通过embedding fragments
之间的拼接、相加、或element-wise
相乘来实现的。
然而,这些方法有两个限制:
- 首先,工程师需要精心设计参数共享比例,以平衡准确性和内存成本。
- 其次,这些粗略的
embedding
共享策略不能找到embedding table
中的冗余部分,因此它总是导致推荐性能的下降。
在这项工作中,我们的方法通过从数据中学习,自动选择合适的
emebdding
用量。因此,工程师们可以不必为设计共享策略付出巨大努力,并且通过去除冗余参数和缓解过拟合问题来提高模型性能。Embedding Size Selection
:最近,一些方法提出了一种新的混合维度的embedding table
的范式。具体来说,不同于给所有特征分配统一的embedding size
,不同的特征可以有不同的embedding size
。MDE
(《Mixed dimension embeddings with application to memory-efficient recommendation systems》
)提出了一个人为定义的规则,即一个特征的embedding size
与它的popularity
成正比。然而,这种基于规则的方法过于粗糙,无法处理那些低频但是重要的特征。此外,MDE
中存在大量的超参数,需要大量的超参数调优工作。其他一些工作依靠神经架构搜索
Neural Architecture Search: NAS
为不同的特征分配了自适应的embedding size
。NIS
(《Neural input search for large scale recommendation models》
) 使用了一种基于强化学习的算法,从人类专家预先定义的候选集中搜索embedding size
。NIS
采用一个控制器来为不同的embedding size
生成概率分布。NIS
的控制器被DartsEmb
(《Autoemb: Automated embedding dimensionality search in streaming recommendations》
)进一步扩展,将强化学习搜索算法替换为可微的搜索。AutoDim
(《Memory-efficient embedding for recommendations》
)以与DartsEmb
相同的方式为不同的feature field
分配不同的embedding size
,而不是单个特征。DNIS
(《Differentiable neural input search for recommender systems》
)使候选embedding size
是连续的,没有预定义的候选尺寸。
然而,所有这些基于
NAS
的方法在搜索过程中需要极高的计算成本。即使是采用微分架构搜索算法的方法,其搜索成本仍然是无法承受的。此外,这些方法还需要在设计适当的搜索空间方面做出巨大努力。与这些工作不同的是,我们的
pruning-based
方法可以相当有效地进行训练,并且在确定embedding size
的候选集时不需要任何人工努力。
44.1 模型
一般来说,深度学习推荐模型将各种原始特征(包括用户画像和
item
属性)作为输入,预测用户喜欢某个item
的概率。具体而言,模型将用户画像和item
属性的组合(用 $ \mathbf{\vec x} $ 表示)作为其输入向量,其中 $ \mathbf{\vec x} $ 是所有field
的拼接:其中:
$ M $ 为feature field
数量; $ \mathbf{\vec x}_i $ 为feature representation
(通常为one-hot
向量);;
为向量拼接。对于
$ \mathbf{\vec x}_i $ ,embedding-based
推荐模型为它生成对应的embedding
向量:其中:
$ \mathbf V_i\in \mathbb R^{n_i\times d} $ 为第 $ i $ 个feature field
的embedding
矩阵, $ n_i $ 为第 $ i $ 个feature field
的unique
取值数量, $ d $ 为embedding size
。模型针对所有
feature field
的embedding
矩阵为:模型的预测得分为:
其中:
$ \phi(\cdot) $ 为prediction model
(如FM
), $ \Theta $ 为除了embedding
矩阵以外的参数。为了学习模型的参数(包括
embedding
矩阵),我们需要优化如下的训练损失:其中:
$ \mathcal D= \{(\mathbf{\vec x},y )\} $ 为数据集, $ y $ 为ground-truth label
, $ \mathcal L $ 为损失函数。通常而言,推荐任务中采用
logloss
损失函数:其中:
$ |\mathcal D| $ 表示训练集的样本总数。注意,为了简化讨论,这里忽略了正则化项。通过裁剪实现可学习的
embedding size
:如前所述,针对memory-efficient embedding learning
的可行方案是为不同的特征embedding
$ \mathbf{\vec v}_i $ 自动分配不同的embedding size
$ \tilde d_i $ ,这就是我们的目标。然而,由于其离散性和极其庞大的优化空间,直接学习 $ \tilde d_i $ 是不可行的。为了解决这个问题,我们提出了一个新的想法,即在 $ \mathbf V $ 上强迫column-wise sparsity
,这等于是缩小了embedding size
。如下图所示,
embedding
$ \mathbf{\vec v}_1 $ 的第一个值被裁剪并设置为零,导致在效果上等效于 $ \tilde d_1 = d_1-1 $ 的embedding size
。此外,一些不重要的feature embedding
,如 $ \mathbf{\vec v}_3 $ , 通过裁剪并设置所有的值为零从而被删除。因此,我们的方法可以大大减少embedding
参数。请注意,稀疏矩阵存储技术可以帮助我们大大节省内存用量。如果某一列被裁剪为零,则意味着该维度不重要;如果某一行被裁剪为零,则意味着该
feature value
不重要。在这种情况下,我们将
embedding size
的选择问题转换为学习embedding
矩阵 $ \mathbf V $ 的column-wise sparsity
。为了达到这个目的,我们对 $ \mathbf V $ 设计了一个稀疏性约束:其中:
$ \|\cdot\|_0 $ 表示L0
范数(即,非零元素的数量); $ k $ 为parameter budget
,它是对embedding
参数总数的约束。这里其实是
global sparsity
,而不仅仅是column-wise sparsity
。然而,由于
L0
范数约束的非凸性,上式的直接优化是NP-hard
的。为了解决这个问题,人们研究了L0
范数的凸松弛,即L1
范数。尽管如此,这类凸松弛方法仍然面临着两个主要问题:- 首先,计算成本太高,尤其是当推荐模型有数百万个参数时。
- 其次,参数预算
$ k $ 需要人类专家在全局水平上手动设置。考虑到不同特征对推荐有不同的重要性,这种操作显然是次优的。
为了解决这两个问题,受软阈值重参数化的启发(
《Soft threshold weight reparameterization for learnable sparsity》
),我们直接优化 $ \mathbf V $ 的投影,并通过可学习的阈值自适应地裁剪 $ \mathbf V $ ,这些阈值可以通过梯度下降更新。 $ \mathbf V $ 的重新参数化可以表述如下:其中:
$ \hat{\mathbf V}\in \mathbb R^{N\times d} $ 为重参数化后的embedding
矩阵。 $ \mathcal S(\cdot) $ 为裁剪函数,它是element-wise
的,定义为:裁剪函数的物理意义为:
- 如果
$ z $ 的绝对值较小(意味着接近零),使得 $ |z|\le g(s) $ ,那么裁剪之后的结果为零。 - 如果
$ z $ 的绝对值较大,那么裁剪之后的结果近似为 $ \text{sign}(z)\times |z| = z $ 。为什么说是“近似”,因为 $ z $ 的值向零的方向移动了 $ g(s) $ 个单位(被裁剪了)。
其中:
$ s $ 为可训练的裁剪参数pruning parameter
。函数
$ g(\cdot) $ 作为一个裁剪阈值,如sigmoid
函数。根据《Soft threshold weight reparameterization for learnable sparsity》
, $ g(\cdot) $ 应该满足三个属性:其中对于
unstructured sparsity
, $ g(\cdot) $ 采用sigmoid
函数;对于structured sparsity
, $ g(\cdot) $ 采用指数函数 $ \exp(\cdot) $ 。 $ \text{sign}(\cdot) $ 为符号函数,它将正数转换为1
、将负数转换为-1
、零保持不变。
- 如果
采用
$ \hat{\mathbf V} $ 之后,优化问题被重新定义为:然后,可训练的裁剪参数
$ s $ 可以与推荐模型的参数一起通过标准的反向传播进行联合优化。具体而言,第 $ t $ 步 $ \mathbf V $ 的梯度下降更新方程为:其中:
$ \eta_t $ 为 $ t $ 步的学习率, $ \odot $ 为Hadamard
积。为了解决
$ \mathcal S(\cdot) $ 不可微的问题,我们使用sub-gradient
来重新表述更新方程如下:其中:
$ \mathcal I(\cdot) $ 为示性函数,当满足条件为true
时返回1
、否则返回0
。然后,只要我们选择一个连续的函数
$ g(\cdot) $ ,那么损失函数 $ \mathcal L\left(\mathcal S\left(\mathbf V^{(t)},s\right),\mathcal D\right) $ 对于 $ s $ 来说是连续的。此外, $ \mathcal L $ 相对于 $ s $ 的sub-gradient
也可以用于 $ s $ 的梯度下降。裁剪阈值
$ g(s) $ 可以从训练数据中学习,以减少embedding
矩阵中的参数用量。然而,为什么我们的PEP
可以通过训练数据学习合适的 $ g(s) $ 呢?我们推断, $ g(s) $ 中 $ s $ 的增加可以减少训练损失。换句话说,我们的PEP
试图在优化过程中更新 $ s $ 以达到更低的训练损失。如下图所示,我们在
MovieLens-1M
和Criteo
数据集上绘制了with/without PEP
的FM
的训练曲线,以证实我们的假设。可以看到:我们的PEP
可以实现更低的训练损失。用彩票假说重新训练:在将
embedding
矩阵 $ \mathbf V $ 裁剪到目标参数预算 $ \mathcal P $ 之后,我们可以创建一个二元裁剪掩码 $ \mathbf M\in \{0,1\}^{\mathbf V} $ ,从而决定哪个embedding
参数应该保留或放弃。然后我们用裁剪后的embedding table
重新训练模型。彩票假说
Lottery Ticket Hypothesis
(《The lottery ticket hypothesis: Finding sparse, trainable neural networks》
)说明:随机初始化的稠密网络中的一个子网络可以与原始网络相匹配,当以相同的迭代次数进行隔离训练时。这个子网络被称为中奖票winning ticket
。因此,我们不是随机地重新初始化权重,而是重新训练基础模型,同时将权重重新初始化为原来(但是被掩码后的)的权重 $ \mathbf M\odot \mathbf V_0 $ 。注意,重训练阶段有三种初始化方式:
- 与第一轮训练独立的随机初始化。
- 把第一轮训练采用的随机初始化共享到重训练阶段。
- 把第一轮训练得到的训练好的权重作为重训练阶段的初始化。
LTH
和本文采用的是第二种方式。注意,重训练阶段需要把被
masked
的embedding element
固定为零,且在更新过程中不要更新梯度。为了验证重训练的有效性,我们对比了四种操作:
Without pruning
:base model
。Without retrain
:经过裁剪之后的模型,但是没有重训练。Winning ticket(random reinit)
:经过裁剪以及重训练之后的模型,但是重训练时采用与第一轮训练所独立的随机初始化。Winning ticket(original init)
:经过裁剪以及重训练之后的模型,并且共享第一轮训练的初始化权重来随机初始化重训练,即我们的PEP
。
可以看到:
- 在重训练时,与
random reinit
相比,original init
的winning ticket
可以使训练过程更快,并获得更高的推荐准确性。这证明了我们设计的再训练的有效性。 random reinit
的winning ticket
仍然优于未裁剪的模型。通过减少不太重要的特征的embedding
参数,模型的性能可以从对那些过度参数化的embedding
的降噪中受益。这可以解释为,当embedding size
统一时,它很可能会对那些过度参数化的embedding
进行过拟合。without retrain
的PEP
的性能会有一点下降,但它仍然优于原始模型。without retrain
和原始模型之间的gap
,要比with retrain
和without retrain
之间的gap
更大。这些结果表明,PEP
主要受益于合适的embedding size
选择。
我们猜测重训练的好处:在搜索阶段,
embedding
矩阵中不太重要的元素被逐渐裁剪,直到训练过程达到收敛。然而,在早期的训练阶段,当这些元素没有被裁剪时,它们可能对那些重要元素的梯度更新产生负面影响。这可能使这些重要元素的学习变得次优。因此,重训练步骤可以消除这种影响并提高性能。细粒度裁剪:上述方程中的阈值参数
$ s $ 被设置为一个标量,每个维度都是相同的阈值。我们把这个版本命名为global-wise pruning
。然而,embedding
向量 $ \mathbf{\vec v}_i $ 中的不同维度可能有不同的重要性,而不同field
的特征也可能有不同的重要性。因此,embedding
矩阵中的值需要不同的稀疏性预算,用全局阈值的裁剪可能不是最佳的。为了更好地处理 $ \mathbf V $ 中不同特征/维度之间的异质性,我们设计了以下不同粒度的阈值策略:Dimension-Wise
:阈值参数 $ s $ 被设定为一个向量 $ \mathbf{\vec s}\in \mathbb R^{d} $ 。一个embedding
中的每个值都将被独立地裁剪,不同field
的embedding
共享相同的 $ \mathbf{\vec s} $ 。Feature-Wise
:阈值参数 $ s $ 被设定为一个向量 $ \mathbf{\vec s}\in \mathbb R^{N} $ 。一个embedding
中的所有值采用相同的标量阈值,不同field
的embedding
采用不同的标量阈值。Feature-Dimension-Wise
:阈值参数 $ s $ 被设定为一个矩阵 $ \mathbf s\in \mathbb R^{N\times d} $ ,从而获得最细粒度的裁剪。
注意,这里的阈值参数并不是人工调优的超参数,而是从数据中学习的可训练参数。
如下图所示:
Feature-Dimension
粒度可以比其它粒度的embedding
参数减少得更多,并且在retrain
阶段获得了最好的性能。Dimension
粒度的裁剪可以在较少的训练周期内达到可比的AUC
。
PEP
算法:输入:初始
embedding
$ \mathbf V^{(0)} $ 、base model
$ \phi $ 、target parameter
规模 $ \mathcal P $ 、数据集 $ \mathcal D $输出:训练好的稀疏
embedding
$ \mathbf V $算法步骤:
迭代,直到满足
$ \mathcal P $ ,迭代步骤为:通过
$ \min \mathcal L(\mathcal S(\mathbf V,s),\Theta,\mathcal D) $ 来裁剪 $ \mathbf V $ 。获取二元
pruning mask
$ \mathbf M=\{0,1\}^{\mathbf V} $ 。将裁剪后的
embedding parameter
设置为初始值 $ \mathbf V^{(0)} $ 。重训练从而最小化
$ \mathcal L(\mathbf V^{(0)}\odot \mathbf M, \mathcal D) $ 。
44.2 实验
数据集:
MovieLens-1M, Criteo, Avazu
。MovieLens-1M
:遵从AutoInt
,我们将评分在1 or 2
的样本作为负样本、评分在4 or 5
的样本作为正样本。评分为3
的样本视为中性样本从而被移除。Criteo
:对于数值特征,我们使用log
变换从而进行归一化:Creteo/Avazu
:频次低于10
的特征被认为是'unknown'
。所有样本被随机拆分为训练集、验证集、测试集,比例为
80%/10%/10%
。
评估指标:
AUC, Logloss
。baseline
:Uniform Embedding: UE
:uniform embedding size
。MGQE
:从共享的small size
的centroid embeddings
中检索embedding fragments
,然后通过拼接这些fragments
生成final embedding
。MGQE
为不同item
学习不同容量的embedding
。该方法是embedding-parameter-sharing
方法中的最强baseline
。Mixed Dimension Embedding: MDE
:基于人工定义的规则,即一个特征的embedding size
与它的popularity
成正比。该方法是SOTA
的human-rule-based
方法。DartsEmb
:SOTA
的NAS-based
方法,它允许特征自动在一个给定的搜索空间中搜索embedding size
。
我们没有比较
NIS
,因为它没有开放源代码,并且它的基于深度学习的搜索方法在速度方面太慢。我们将
baseline
方法和我们的PEP
应用到三种feature-based
推荐模型上:FM, DeepFM, AutoInt
。实现细节:
在
pruning
和re-training
阶段,遵从AutoInt
和DeepFM
,我们采用学习率为0.001
的Adam
优化器。对于
$ g(s) $ ,我们选择 $ g(s) = \frac{1}{1+\exp(-s)} $ ,并且针对MovieLens-1M, Criteo, Avazu
数据集分别将 $ s $ 初始化为-15/-150/-150
。PEP
的粒度设置为:在
Criteo, Avazu
数据集上设置为Dimension-wise
从而用于PEP-2, PEP-3, PEP-4
。PEP-0, PEP-1, PEP-2, PEP-3, PEP-4
分别代表不同的稀疏度配置,根据PEP
算法中不同的 $ \mathcal P $ 超参数而来。然而,它们具体的配置,论文并没有提到。根据论文实验的图表,大概猜测分别代表0.05, 0.1, 0.2, 0.3, 0.4
这五个稀疏率。其它数据集上设置为
Feature Dimension-wise
。
在裁剪之前,所有模型的
base embedding dimension
$ d $ 被设置为64
。在重训练阶段,我们根据训练期间验证集的损失,利用了早停技术。
我们使用
PyTorch
来实现我们的方法,并在单块12G
内存的TITAN V GPU
上以mini-batch size = 1024
进行训练。baseline
方法的配置:对于
Uniform Embedding
,我们的embedding size
搜索空间为:MovieLens-1M
数据集为[8, 16, 32,64]
、Criteo
和Avazu
数据集为[4, 8, 16]
,因为当 $ d\gt 16 $ 时模型效果下降。对于其他
baseline
,我们首先调优超参数使得模型具有最高的推荐性能、或最高的参数缩减率。然后我们调优这些模型从而达到性能和参数缩减率之间的tradeoff
。MDE
的搜索空间:维度 $ d $ 从[4, 8, 16, 32]
中搜索,blocks
数量 $ K $ 从[8, 16]
中搜索, $ \alpha $ 从[0.1, 0.2, 0.3]
中搜索。MGQE
的搜索空间:维度 $ d $ 从[8, 16, 32]
中搜索,子空间数量 $ D $ 从[4, 8, 16]
中搜索,中心点数量 $ K $ 从[64, 128, 256, 512]
中搜索。DartsEmb
搜索空间:三组候选的embedding
空间:{1, 2, 8}
、{2, 4, 16}
、{4, 8, 32}
。
我们在
Figure 2, 3, 4
中展示了推荐性能和参数数量的曲线。由于推荐性能和参数数量之间存在tradeoff
,曲线是由具有不同稀疏性要求的点组成的。可以看到:我们的方法大大减少了参数的数量。在所有的实验中,我们的
PEP
实现了最高的参数缩减率 ,特别是在相对较大的数据集(Criteo
和Avazu
)中。具体而言,在Criteo
和Avazu
数据集中,与最佳baseline
相比,我们的PEP-0
可以减少99.90%
的参数用量(量级从 $ 10^6 $ 到 $ 10^3 $ ,这非常重要)。embedding
矩阵的参数使用率如此之低,意味着只有数百个embedding
是非零的。通过将不太重要的特征的embedding
设置为零,我们的PEP
可以打破现有方法中最小embedding size
为1
的限制(我们的方法可以实现embedding size = 0
)。我们后续对MovieLens
数据集进行了更多的分析,以帮助我们理解为什么我们的方法可以实现如此有效的参数缩减。我们的方法实现了强大的推荐性能。我们的方法一直优于基于
uniform embedding
的模型,并在大多数情况下取得了比其他方法更好的准确性。具体而言,对于Criteo
数据集上的FM
模型,在AUC
方面,PEP
比UE
相对提高了0.59%
、比DartsEmb
相对提高了0.24%
。从其他数据集和其他推荐模型的实验中也可以看到类似的改进。值得注意的是,我们的方法可以在极端的稀疏范围内保持强大的
AUC
性能。例如,当参数数量只有 $ 10^3 $ 量级时,PEP
推荐性能仍然明显优于线性回归模型。
PEP
的效率分析:PEP
将导致额外的时间成本从而为不同的特征找到合适的size
。这里我们研究了计算成本,并比较了PEP
和DartsEmb
在Criteo
数据集上的每个训练epoch
的运行时间。我们以相同的batch size
实现这两个模型,并在同一平台上测试它们。这里的比较很有误导性。因为
PEP
需要重训练,也就是training epoch
数量要翻倍。而这里仅仅比较单个epoch
的训练时间,这是不公平的比较。下表中给出了三种不同模型的每个
epoch
的训练时间。可以看到:- 我们的
PEP
的额外计算成本只有20% ~ 30%
,与基础模型相比,这是可以接受的。 DartsEmb
在其bi-level
优化过程中需要将近两倍的计算时间来搜索一个好的embedding size
。- 此外,
DartsEmb
需要多次搜索以适应不同的内存预算,因为每次搜索都需要完全重新运行。与DartsEmb
不同的是,我们的PEP
只需一次运行就可以获得多个embedding
方案,这些方案可以应用于不同的应用场景。因此,在现实世界的系统中,我们的PEP
在embedding size
搜索方面的时间成本可以进一步降低。
- 我们的
对裁剪后的
embedding
进行可解释的分析:在这一节中,我们通过可视化的特征交互矩阵进行可解释的分析,该矩阵由 $ \mathbf V\mathbf V^\top $ 来计算。矩阵中的每个值都是这两个field feature
点积结果的绝对值的归一化平均值,其中越高表示这两个field
有更强的相关性。可以看到:我们的PEP
可以减少不重要的特征交互之间的参数数量,同时保持那些有意义的特征交互的重要性。通过对那些不太重要的特征交互进行降噪,PEP
可以减少embedding
参数,同时保持或提高准确性。归一化怎么做的?
稀疏性和频次之间的相关性:如下图所示,不同特征之间的特征频次是高度多样化的。因此,使用统一的
embedding size
可能无法处理它们的异质性,这一特性在embedding size
的选择上起着重要作用。因此,最近的一些工作显式利用特征频次。与他们不同的是,我们的PEP
以端到端的自动方式缩减参数,从而规避了复杂的人工操作。然而,特征频次是决定一个特征是否重要的因素之一。因此,我们研究我们的方法是否能检测到频次的影响,以及学习到的embedding size
是否与频次有关。我们首先分析训练期间的稀疏度轨迹,如下图
(b)
所示,不同的颜色表示根据popularity
划分的不同的feature group
。对于每一组,我们首先计算每个特征的稀疏度,然后计算所有特征上的平均值。图片中的阴影代表一个组内的方差。我们可以看到:PEP
倾向于给高频特征分配更大的embedding size
,从而确保有足够的表达能力。而对于低频特征,其趋势则相反。这些结果符合这样的假设:高频特征应该有更多的
embedding
参数;而对于低频特征的embedding
,几个参数就足够了。然后,我们探究了裁剪后的
embedding
的稀疏度和每个特征的频次之间的关系,如下图(c)
所示。可以看到:大多数
relationship
与上述分析一致。一些低频特征被分配了较大的
embedding size
,而一些具有较大popularity
的特征被分配了较小的embedding size
。这说明:像以前的大多数工作那样简单地给高频特征分配更多的参数,并不能处理特征和它们的popularity
之间的复杂联系。我们的方法是基于数据进行裁剪,这可以反映出特征的固有属性,从而可以以一种更优雅和有效的方式缩减参数。
线性回归(
Linear Regression: LR
)模型是一个无embedding
的模型,只根据原始特征的线性组合进行预测。因此,值得将我们在极稀疏水平上的方法(PEP-0
)与LR
进行比较,如下表所示。可以看到:- 我们的
PEP-0
在所有情况下都明显优于LR
。这一结果证明,我们的PEP-0
并不依赖FM
和DeepFM
中的LR
部分来保持强大的推荐性能。因此,即使在极其稀疏的情况下,我们的PEP
在现实世界的场景中仍然具有很高的应用价值。 - 值得注意的是,
AutoInt
模型不包含LR
组件,所以在Criteo
和Avazu
数据集上AutoInt
的PEP-0
导致了性能的大幅下降。我们尝试在AutoInt
的PEP-0
中包含LR
,并测试其性能。我们可以看到,在Criteo
和Avazu
上的准确率超过了没有LR
的AutoInt
。这可以解释为LR
帮助我们的PEP-0
获得更稳定的性能。
- 我们的
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论