数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 MCMC 采样
- 机器学习方法概论
统计学习
- 线性模型
- 支持向量机
- 朴素贝叶斯
- 决策树
- knn
- 集成学习
- 梯度提升树
- 数据预处理
- 模型评估
- 降维
- 聚类
- 半监督学习
- EM 算法
- 最大熵算法
- 隐马尔可夫模型
- 概率图与条件随机场
- 边际概率推断
- 主题模型
深度学习
- 深度学习简介
- 深度前馈网络
- 反向传播算法
- 正则化
- 深度学习中的最优化问题
- 卷积神经网络
- 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
- CRF ++
- lightgbm
- xgboost
- xgboost 使用指南
- scikit-learn
- spark
- numpy
- matplotlib
- matplotlib 使用指南
- pandas
- huggingface_transformer
- 一、Tokenizer
- 二、Datasets
- 三、Model
- 四、Trainer
- 五、Evaluator
- 六、Pipeline
- 七、Accelerate
- 八、Autoclass
- 九、应用
- 十、Gradio
Scala
- 环境搭建
- 基础知识
- 函数
- 类
- 样例类和模式匹配
- 测试和注解
- 集合 collection(一)
- 集合collection(二)
- 集成 Java
- 并发
四十五、DeepLight [2021]
-
在
CTR
预测任务上,广义线性模型和factorization machine : FM
取得了巨大的成功。然而,由于缺乏学习更深层次特征交互的机制,它们的预测能力有限。为了解决这个问题,基于embedding
的神经网络提出同时包含浅层组件(来学习低阶特征交互)、DNN
组件(来学习高阶特征交互),如Wide&Deep, DeepFM, NFM, DCN, xDeepFM, AutoInt, AutoFIS
。尽管这些新颖的模型有所改进,但与诸如LR
或FM
的简单模型相比,预测速度慢了数百倍。随之而来的一个问题是:我们是否能够为高质量的深度模型提供令人满意的模型延迟和资源消耗,从而用于广告服务中的实时响应?为实现这一目标,实际解决方案需要应对以下挑战:
(C1)
高质量:用于服务的“瘦身”模型预期与原始的“臃肿”模型一样准确。(c2)
低延迟:服务延迟应该非常低,以保持高Query per second: QPS
、以及很少的超时。(C3)
低消耗:在在线广告服务中,pull
模型的checkpoint
并将其存储在内存中的内存成本应该很低。
然而,所有现有的基于
embedding
的神经网络,如DeepFM, NFM, xDeepFM, AutoInt
,仍然专注于增加模型复杂度以实现(C1)
,同时牺牲(C2)
和(C3)
。虽然人们提出了一些方法,如AutoCross
来提高模型效率,但它们没有采用DNN
框架,未能达到SOTA
。为了共同解决这些挑战,论文《DeepLight: Deep Lightweight Feature Interactions for Accelerating CTR Predictions in Ad Serving》
提出了一种有效的模型,即所谓的field-weighted embedding-based neural network: DeepFwFM
,通过field pair importance matrix
来改进FM
模块。DeepFwFM
在经验上与xDeepFM
一样强大,但效率更高。如下图所示,DeepFwFM
的每个组件都有一个approximately sparse structure
,这意味着结构剪枝的优势并可能导致更紧凑的结构。通过裁剪DeepFwFM
的DNN
组件并进一步压缩浅层组件,得到的深度轻量化结构(即,DeepLight
)大大减少了推理时间,仍然保持了模型性能。据作者所知,这是第一篇研究裁剪
embedding based
的DNN
模型以加速广告服务中的CTR
预测的论文。总之,所提出的DeepFwFM
在快速的、准确的推断方面具有巨大潜力。与现有的基于embedding
的神经网络相比,该模型具有以下优点:-
为了解决
(C1)
高质量的挑战,DeepFwFM
利用FwFM
中的field pair importance
的思想,以提高对低阶特征交互的理解,而不是探索高阶特征交互。值得注意的是,与SOTA
的xDepFM
模型相比,这种改进以非常低的复杂性达到了SOTA
,并且在深度模型加速方面仍然显示出巨大的潜力。(C1)
高质量的挑战并不是由DeepLight
解决的,而是由基础模型FwFM
解决的。 -
为了解决
(C2)
低延迟的挑战,可以对模型进行裁剪以进一步加速:- 裁剪深度组件中的冗余参数以获得最大的加速。
- 移除
FwFM
中的week field pair
以获得额外的显著加速。
由此产生的轻量化结构最终几乎达到一百倍的加速。
-
为了解决
(C3)
低消耗的挑战,可以促进embedding
向量的稀疏性,并保留最多的discriminant signal
,这会产生巨大的参数压缩。
通过克服这些挑战(
C1-C3
),由此产生的稀疏DeepFwFM
(即所谓的DeepLight
),最终不仅在预测方面,而且在深度模型加速方面取得了显著的性能。它在Criteo
数据集上实现了46
倍的速度提升,在Avazu
数据集上达到了27
倍的速度,而不损失AUC
。源代码参考https://github.com/WayneDW/sDeepFwFM
。
45.1 模型
注:这篇论文的核心是如何对
DeepFwFM
进行压缩,而不是提出DeepFwFM
。事实上,DeepFwFM
就是DNN
作为deep
组件、FwFM
作为wide
组件的神经网络,毫无新意 。此外,
DeepLight
的剪枝方法也是工程上的应用(把训练好的模型中的接近于零的权重裁剪掉),而没有多少创新点。实验部分提示了基于剪枝的模型设计方案:首先设计较大容量的模型从而提升模型的表达能力,然后执行剪枝从而降低
latency
、减少过拟合。这种方案的一个潜在缺点是:训练资源消耗更大。
45.1.1 DeepFwFM
-
给定数据集
$ \mathcal D = \left\{(y_i,\mathbf{\vec x}_i)\right\} $ ,其中 $ y_i $ 为label
, $ \mathbf{\vec x}_i $ 为 $ m $ 维的稀疏的特征向量。-
二阶多项式模型
$ \phi_\text{poly2} $ 为:其中:
$ \mathbf{\vec w} $ 为一阶交互权重, $ \mathbf W=\{W_{i,j}\} $ 为二阶交互权重。 -
FM
模型 $ \phi_\text{FM} $ 为:其中:
$ \mathbf e=\{\mathbf {\vec e}_i\}_{i=1}^m $ 为所有embedding
向量的集合; $ \mathbf{\vec e}_i\in \mathbb R^k $ 为第 $ i $ 个特征的embedding
向量; $ k $ 为embedding
向量的维度。可以看到,
FM
模型将参数规模从 $ O(m^2) $ 降低到 $ O(mk) $ 。 -
Deep & Cross
通过一系列的cross
操作来建模高阶交互:其中:
$ \mathbf{\vec w}_l, \mathbf{\vec b}_l $ 为待学习的参数; $ \left(\mathbf{\vec s}_0\mathbf{\vec s}_{l-1}^\top\right) $ 表示这两个向量之间的外积。 -
通过进一步组合
DNN
组件,我们可以获得xDeepFM
,这是CTR
预测中的SOTA
模型。尽管xDeepFM
在建模特征交互方面具有强大的性能,但众所周知,它比DeepFM
的成本要高得多,并增加了速度较慢。因此我们考虑FwFM
模型,并提出了Deep Field-weighted Factorization Machine: DeepFwFM
:其中:
-
$ \phi_\text{Deep} $ 为包含非线性变换的多层感知机,用于建模高阶特征交互。 $ \phi_\text{FwFM} $ 为FwFM
模型,用于建模二阶特征交互。 -
$ \mathbf w $ 为DNN
的参数(包括权重矩阵和bias
向量)。 -
$ \mathbf v = \left\{\mathbf{\vec v}_f\right\}_{f=1}^n $ 包含 $ n $ 个field
的embedding
向量, $ \mathbf{\vec v}_f\in \mathbb R^k $ 表示field
$ f $ 的embedding
向量。这就是
FwFM
原始论文中 的FwFM_FiLV
,用 $ \sum_{i=1}^m x_i <\mathbf{\vec e}_i, \mathbf{\vec v}_{F(i)}> $ 来建模线性项。a -
$ \mathbf e=\{\mathbf {\vec e}_i\}_{i=1}^m $ 包含 $ m $ 个特征的embedding
向量, $ \mathbf{\vec e}_i\in \mathbb R^k $ 。 -
$ \mathbf R\in \mathbb R^{n\times n} $ 为field pair
重要性矩阵,它建模field pair
的交互强度。 -
$ F(i) $ 为特征 $ i $ 的field
。
-
-
-
DeepFwFM
有两个创新:DeepFwFM
比xDeepFM
快得多,因为我们不试图通过浅层组件来建模高阶(三阶甚至或更高)的特征交互。尽管xDeepFM
包含强大的compressed interaction network: CIN
来逼近任意固定阶次的多项式,但主要缺点是CIN
的时间复杂度甚至高于xDeepFM
中的DNN
组件,导致了昂贵的计算。DeepFwFM
比DeepFM
更准确,因为它克服了矩阵分解中的稳定性问题,并通过考虑field pair importance
导致更准确的预测。
如下图所示,
DeepFM
通过FM
组件中每个hidden node
与输出节点之间的weight-1 connection
(即,feature embedding
之间内积的权重为1
)来建模低阶特征交互,然而,这无法适应局部几何结构,并牺牲了鲁棒性。 -
为了证明我们模型的优势,我们对
DeepFwFM
的计算复杂性进行了定量分析。给定embedding size
$ k $ 、层的数量 $ l $ 、每层的节点数量 $ h $ ,假设embedding layer
只有 $ n $ 个lookup
(即field
数量 为 $ n $ )并且计算开销很小。那么,DNN
组件的floating point operations: FLOPs
为 $ O(lh^2+nkh) $ ,FwFM
组件的FLOPs
为 $ O(n^2k) $ 。类似地,我们可以得到
DeepFM
和xDeepFM
的计算复杂度,如下表所示。可以看到:xDeepFM
的 $ l $ 个CIN
层需要 $ O(nkh_c^2l ) $ 个操作,这远远超过了DNN
组件的操作数量。FM
组件和FwFM
组件比DNN
组件快得多。
尽管
DeepFwFM
的计算复杂度较好,但是它仍然未能将延迟降低到一个良好的水平。事实上,由于包含DNN
组件,DeepFwFM
可能会慢数百倍,这会显著降低在线CTR
预测的速度。
45.1.2 DeepLight
-
DNN
组件无疑是导致高延迟问题并且无法满足在线要求的主要原因。因此,需要一种适当的加速方法来加速预测。 -
为什么采用结构剪枝:深度模型加速三种主要方法组成:结构剪枝
structural pruning
、知识蒸馏knowledge distillation
、量化quantization
,其中结构剪枝方法因其显著的性能而受到广泛关注。此外,DeepFwFM
的每个组件,如DNN
组件、field pair interaction matrix
$ \mathbf R $ 和embedding
向量,都具有高度稀疏的结构,如Figure 2
所示。这促使我们考虑结构剪枝以加速浅层组件和DNN
组件。对于其他选择:
-
量化在推断期间采用了定点精度。然而,它没有充分利用
DeepFwFM
每个组件的稀疏结构,甚至对模型性能有损。 -
知识蒸馏技术通过训练小网络(即
student model
)以模仿大网络(即teacher model
),但它存在以下问题:- 学生模型从教师模型学习的能力有限。
- 如果性能恶化,很难清楚这是由于教师模型导致、还是由于教学过程导致。
这就是我们在这项工作中采用结构剪枝的原因。
-
-
如何进行结构剪枝:
-
设计:我们建议裁剪以下三个组件(在
DeepFwFM
模型的背景下),而不是简单地以统一的稀疏率应用剪枝技术。这三个组件专门设计用于广告预测任务:-
剪枝
DNN
组件的权重(不包括bias
)从而移除神经元连接。 -
剪枝
field pair interaction matrix
$ \mathbf R $ 从而移除冗余的field interaction
。注意:移除冗余的
field interaction
,意味着建模时无需考虑对应field
之间的内积计算。 -
剪枝
embedding
向量中的元素,从而导致稀疏的embedding
向量。
结合以上努力,我们获得了所需的
DeepLight
模型,如下图所示。DeepLight
是一种稀疏的DeepFwFM
,它提供了一种整体方法,通过在推理期间修改训练好的架构来加速推理。注意,
DeepLight
是用于训练好的模型,是一种剪枝算法,而不是一种训练算法。 -
-
优点:通过实验表明:
- 与原始
DNN
组件相比,稀疏的DNN
组件的计算复杂度要低得多。它导致最大的计算加速。 sparse field pair interaction matrix
$ \mathbf R $ 进一步实现了FwFM
组件的显著加速。此外,裁剪 $ \mathbf R $ 实际上是在进行特征选择,或者更准确地说是field pair selection
。一旦裁剪了 $ R_{f,f^\prime} $ ,那么来自field pair
$ (f,f^\prime) $ 的所有feature pair
都将被丢弃。AutoFIS
也实现了类似类型的field pair selection
。sparse embedding
大大减少了内存使用,因为feature embedding
主导了CTR
预测深度学习模型中的参数数量。
- 与原始
-
实现:从过度参数化的模型中选择一个良好的稀疏网络是
NP
难的,并且无法保证最优算法能够解决它。在结构剪枝领域有大量的经验研究,包括权重剪枝、神经元剪枝、以及其他单元剪枝。考虑到我们的模型只包含一个标准的FwFM
组件和一个普通的DNN
组件,我们进行了权重剪枝,并寻求在不调用专用库的情况下实现高稀疏性和加速。定义稀疏率
$ S $ 为被裁剪的权重的比例,如 $ S\%=99\% $ 意味着99%
的权重都被裁剪。结构剪枝算法:
-
输入:
- 训练好的
target model
- 目标稀疏率
$ \{S_X\} $ (表示各组件 $ X $ 的目标稀疏率) - 阻尼因子
$ D $ ,剪枝轮次 $ \Omega $
- 训练好的
-
输出:剪枝后的模型
-
算法步骤:
-
剪枝:对于
$ k=1,2,\cdots,\Omega $ ,迭代步骤为:-
训练网络一个
iteration
。这是为了在每次裁剪之后,重新训练模型从而进行微调,以便错误修剪的权重有可能再次变得活跃。
-
对模型的每个组件
$ X $ :-
更新组件当前轮次的裁剪比例
$ s_X \leftarrow S_X(1-D^{k/\Omega}) $ 。这是设置自适应的裁剪比例,使得在早期剪枝的很快(裁剪比例较大)、在后期剪枝很慢(裁剪比例较小)。
注意:这种裁剪方式无法确保最终模型能够得到
$ S_X $ 的目标稀疏率,只能说尽可能地接近。 -
根据权重的
magnitude
,裁剪最小的 $ s_X\% $ 的权重。
-
-
-
-
-
-
降低计算复杂度:
DNN
组件是导致高推断时间的瓶颈。在DNN
组件的剪枝之后,FwFM
组件成为限制,这需要对field matrix
$ \mathbf R $ 进行进一步剪枝。embedding
层的剪枝对计算没有显著的加速。在对
DNN
组件的权重设置一个中等大小的 $ S_\text{dnn}\% $ 的目标稀疏率(不考虑bias
)的情况下,相应的加速可以接近理想的 $ 1/(1-S_\text{dnn}\%) $ 倍。当目标稀疏率 $ S_\text{dnn}\% $ 高于95%
时,我们可能无法达到理想的加速比,因为bias
的计算和稀疏结构(如compressed row storage: CRS
)的开销。关于field matrix
$ \mathbf R $ 的剪枝,当我们增加DNN
组件中的目标稀疏率 $ S_\text{dnn}\% $ 时,加速变得更加显著。 -
降低空间复杂度:在
embedding layer
中进行剪枝也显著减少了DeepFwFM
中的参数数量,因此节省了大量内存。在embedding layer
中, $ S_\text{emb}\% $ 的目标稀疏率将参数数量从 $ mk $ 减少到 $ (1-S_\text{emb}\%)mk $ 。至于
DNN
组件,权重参数的数量(不包括bias
)可以从 $ O(nkh+lh^2) $ 降低到 $ O((nkh+lh^2)(1-S_\text{emb}\%)) $ 。类似地,field matrix
$ \mathbf R $ 上的目标稀疏率 $ S_R\% $ 也相应比例地减少了参数。由于
DeepFwFM
中的总参数由embedding
向量参数所主导 ,embedding
向量上的 $ S_\text{emb}\% $ 的目标稀疏率导致总内存减少约 $ 1/(1-S_\text{emb}\%) $ 倍。
4.2 实验
-
数据集:
Criteo, Avazu
。-
对于
Criteo
数据集,我们采用由Criteo
竞赛获胜者提出的对数转换来归一化数值特征:此外,我们还将所有频次低于
8
的特征视为"unknown"
。我们将数据集随机分成两部分:90%
用于训练、剩下的10%
用于测试。 -
对于
Avazu
数据集,我们使用10
天的点击记录,并随机拆分80%
的样本用于训练、剩下的20%
用于测试。我们还将所有频次低于5
的特征视为"unknown"
。
数据集的统计信息如下表所示。
-
-
评估指标:
LogLoss, AUC
。 -
baseline
方法:在emebdding-based
神经网络模型中,我们选择DeepFM, NFM, xDeepFM
作为baseline
,因为它们具有与DeepFwFM
相似的架构,也是CTR
预测的SOTA
模型。最终,六个baseline
模型为:LR, FM, FwFM, DeepFM, NFM, xDeepFM
。 -
实现细节:我们使用
PyTorch
训练模型。-
Criteo
数据集:-
为了对
Criteo
数据集进行公平比较,我们遵循DeepFM
和xDeepFM
原始论文中的参数设置,并将学习率设置为0.001
。 -
embedding size
设为10
。 -
DeepFM, NFM, xDeepFM
的DNN
组件默认设置为:- 网络架构为
400 x 400 x 400
。 drooout rate
为0.5
。
此外,我们也将裁剪后的
DeepFwFM
与更小尺寸的DeepFwFM
进行比较。对于这些更小尺寸的DeepFwFM
,它们的DNN
组件分别为:25 x 25 x 25
(记做N-25
)、15 x 15 x 15
(记做N-25
)。原始尺寸的未裁剪DeepFwFM
记做N-400
。 - 网络架构为
-
对于
xDeepFM
,CIN
的架构为100 x 100 x 50
。 -
我们微调了
L2
惩罚,并将其设置为3e-7
。 -
我们在所有实验中使用
Adam
优化器,batch size = 2048
。
-
-
Avazu
数据集:保持了与Criteo
数据集相同的设置,除了embedding size
设为20
、L2
惩罚为6e-7
、DNN
网络结构为300 x 300 x 300
。
关于实践中的训练时间(而不是推理时间),所有模型之间没有太大的差异。
FwFM
和DeepFwFM
的速度略快于DeepFM
和xDeepFM
,这是由于FwFM
与DeepFwFM
在线性项上的创新(用内积代替线性项)。 -
-
DeepFwFM
和其它稠密模型的比较:对没有剪枝的密集模型的评估显示了过度参数化模型所表现出的最大潜力,如下表所示。可以看到:LR
在所有数据集上的表现都比其他模型都要差,这表明特征交互对于提高CTR
预测至关重要。- 大多数
embedding-based
神经网络的表现优于低阶方法(如LR
和FM
),这意味着建模高阶特征互动的重要性。 - 低阶的
FwFM
仍然胜过NFM
和DeepFM
,显示了field matrix
$ \mathbf R $ 在学习二阶特征交互的优势。 NFM
利用黑盒DNN
隐式地学习低阶特征交互和高阶特征交互,由于缺乏显式识别低阶特征交互的机制,可能会过拟合数据集。- 在所有
embedding-based
神经网络方法中,xDeepFM
和DeepFwFM
在所有数据集上效果最好。然而,xDeepFM
的推理时间远远超过DeepFwFM
。
-
稀疏化模型
DeepLight
:我们选择阻尼因子 $ \mathcal D=0.99 $ 、剪枝轮次 $ \Omega=100 $ ,模型首先训练2
个epoch
,然后训练8
个epoch
用于剪枝。我们每隔10
个iteration
剪枝一次从而降低计算代价。即:前
2
个epoch
训练好模型;后面的8
个epoch
执行剪枝。-
DNN
剪枝加速:仅裁剪DNN
组件的权重,DNN
的bias
、field matrix
$ \mathbf R $ 和embedding layer
的参数照常处理。我们尝试不同的剪枝率,并将不同稀疏率的网络与较小结构的网络进行比较。结果如Table 4
所示。可以看到:- 具有稀疏
DNN
组件的DeepFwFM
优于稠密DeepFwFM
,即使在Criteo
数据集上稀疏率高达95%
。在我们将Criteo
数据集上的稀疏率提高到99%
之前,这一现象保持不变。 - 相比之下,具有类似参数规模的相应小型网络,如
N-25
和N-15
,获得的结果比原始的N-400
要差得多,显示了裁剪过度参数化的网络相比从较小的网络训练更强大。
在
Avazu
数据集上,我们得到同样的结论。稀疏模型在90%
的稀疏率下获得了最好的预测性能,只有当稀疏率大于99.5%
时才会变差。关于模型加速,从下图中可以看到:较大的稀疏率总是带来较低的延迟。因此在这两个数据集上,稀疏模型在性能超越原始稠密模型的基础上,都实现了高达
16
倍的推理速度提升。这里获得的好处主要是更低的延迟。虽然模型性能略有提升,但是低于
0.1%
,因此效果不显著。但是,和
N-25, N-15
这两个更小的网络相比,DeepLight
的性能提升比较显著。然而DeepLight
的训练时间也更长。 - 具有稀疏
-
Field Matrix
$ \mathbf R $ 剪枝加速:在对DNN
组件进行高稀疏度化之后,我们已经获得了显著的加速,接近20
倍。为了进一步提高速度,增加DNN
组件的稀疏率可能会有降低性能的风险,并且由于矩阵计算的开销,不会产生明显的加速。从Figure 2
可以看出,field matrix
$ \mathbf R $ 拥有一个近似稀疏的结构。这促使我们进一步裁剪field matrix
$ \mathbf R $ 以获得进一步加速。我们根据
field matrix
$ \mathbf R $ 的不同稀疏率来研究稀疏模型的性能(在DNN
组件已经被剪枝的基础上),如下图所示。可以看到:我们可以在不牺牲性能的情况下对field matrix
$ \mathbf R $ 采用高达95%
的稀疏率,此外推断速度可以进一步加快2
到3
倍。因此,我们最终可以在不牺牲性能的情况下获得46
倍和27
倍的速度提升。 -
Embedding Vector
剪枝用于节省内存:关于embedding
的剪枝,我们发现为所有field
的embedding
设置一个全局阈值,比为每个field
的embedding
向量设置单独的阈值获得略好的性能。因此,我们在全局阈值的基础上进行了实验。如下图所示:
Criteo
数据集上可以采用较高的稀疏率,如80%
,并保持几乎相同的性能。- 相比之下,在
Avazu
数据集上比较敏感,当采用60%
的稀疏率时,性能开始低于稠密模型。
从下表可以看到,大多数模型优于较小的
embedding size
的baseline
模型(称为E-X
),这说明了使用大的embedding size
,然后在过度参数化的网络上应用剪枝技术以避免过拟合。剪枝
embedding
似乎并没有带来多少AUC
提升(0.03%
左右,非常微小)。
-
-
DeepFwFM
的结构剪枝:从上述实验中,我们看到DNN
组件和field matrix
$ \mathbf R $ 接受了更高的稀疏率以保持相同的预测性能,这启发我们对不同的组件应用不同的裁剪率。如下表所示:-
对于性能驱动的任务:
- 在
Criteo
数据集上,我们可以通过sparse DeepFwFM
将SOTA AUC
从0.8116
提高到0.8223
,其中DNN
组件和field matrix
$ \mathbf R $ 的剪枝率为90%
、embedding
向量中的剪枝率为40%
。该模型被称为D-90% & R-90% & F-40%
。 - 在
Avazu
数据集上,我们可以通过sparse DeepFwFM
将SOTA AUC
从0.7893
提高到0.7897
,其中DNN
组件和field matrix
$ \mathbf R $ 的剪枝率为90%
、embedding
向量中的剪枝率为20%
。该模型被称为D-90% & R-90% & F-20%
。
这里的剪枝对于性能提升非常微小,几乎可以忽略。因为太小的提升可能由于超参数配置、随机因素等等的影响,而观察不到。
- 在
-
对于内存驱动的任务:在
Criteo
数据集和Avazu
数据集上的内存节省分别高达10
倍和2.5
倍。 -
对于延迟驱动的任务:我们使用结构为
D-99% & R-95% & F-40%
的DeepLight
在Criteo
数据集上实现了46
倍的速度提升,使用结构为D-98% & R-90% & F-0%
的DeepLight
在Avazu
数据集上实现了27
倍的速度提升,而且没有损失准确性。
-
-
DeepLight
和其它稀疏模型的比较:对于其他模型,我们也尝试了在不牺牲性能的情况下加速预测的最佳结构。关于xDeepFM
中的CIN
组件,我们用C-99%
表示CIN
组件的99%
的稀疏率。结果如下表所示。可以看到:- 所有
embedding-based
的神经网络都采用高稀疏率来保持性能。 - 此外,
DeepLight
在预测时间上与sparse DeepFM
和sparse NFM
相当,但在Criteo
数据集上的AUC
至少提高了0.8%
,在Avazu
数据集上提高了0.4%
。 DeepLight
获得了与xDeepFM
相似的预测性能,但其速度几乎是10
倍。
- 所有
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论