数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
三十一、AutoFIS [2020]
-
显式的特征交互可以显著提高
CTR
模型的性能。早期的协同过滤推荐算法,如矩阵分解matrix factorization: MF
和分解机factorization machine: FM
,用一个bi-linear learning model
抽取二阶信息。然而,并非所有的交互都有利于性能。一些基于树的方法已经被提出来,以自动找到有用的特征交叉。
gradient boosting decision tree: GBDT
试图找到损失函数梯度较高的交互。AutoCross
在一个树状结构的空间中搜索有效的交互。但是树型模型在multi-field categorical data
的推荐系统中只能探索所有可能的特征交互中的一小部分,所以它们的探索exploration
能力受到限制。同时,深度神经网络
DNN
模型被提出。它们的表达能力更强,而且根据通用近似特性universal approximation property
,它们可以探索大多数的特征交互。然而,使用基于梯度的优化,并不能保证DNN
自然地收敛到任何预期的函数。简单的DNN
模型可能无法找到合适的特征交互。因此,人们提出了各种复杂的架构,如深度兴趣网络Deep Interest Network: DIN
、深度分解机Deep Factorization Machine: DeepFM
、Product-based Neural Network: PNN
、以及Wide & Deep
。因子分解模型Factorization Model
(如FM, DeepFM, PNN, Attention Factorization Machine: AFM, Neural Factorization Machine: NFM
),已被提出采用feature extractor
来探索显式的特征交互。然而,所有这些模型要么是简单地枚举所有的特征交互,要么是需要人为的努力来识别重要的特征交互。前者总是给模型带来巨大的内存和计算成本,并且难以扩展到高阶交互。此外,无用的特征交互可能带来不必要的噪音,使训练过程复杂化。后者,如在
Wide & Deep
中手动识别重要的特征交互,具有很高的人力成本,并有可能错过一些反直觉的(但重要的)特征交互。如果在这些因子分解模型中可以事先识别出有用的特征交互,那么模型就可以专注于对它们的学习而不必处理无用的特征交互。通过去除无用甚至有害的特征交互,我们期望模型能在降低计算成本的情况下表现得更好。
为了自动学习哪些特征交互是必要的,我们为每个特征交互引入了一个
gate
(处于打开或关闭状态),以控制其输出是否应该被传递到下一层。在以前的工作中,gate
的状态要么是由专家知识事先指定、要么是设置为全部打开。从数据驱动的角度来看,一个gate
是打开还是关闭,应该取决于每个特征交互对最终预测的贡献。显然,那些贡献小的特征交互应该关闭,从而防止给模型学习引入额外的噪音。然而,要找到模型性能的最佳open gate
集合是一个NP-Hard
问题,因为我们面临着一个巨大的空间(如果我们只考虑2
阶特征交互, 则搜索空间为 $ 2^{C_m^2} $ ,其中 $ m $ 为feature field
的数量)来搜索。受最近用于神经架构搜索的
DARTS
的启发,论文《AutoFIS: Automatic Feature Interaction Selection in Factorization Models for Click-Through Rate Prediction》
提出了一个两阶段的方法AutoFIS
,用于自动选择因子分解模型中的低阶特征交互和高阶特征交互:- 在搜索阶段,
AutoFIS
不是在一组离散的候选特征交互上进行搜索,而是通过引入一组架构参数architecture parameters
(每个特征交互一个)从而将choice
松弛为连续的,这样就可以通过梯度下降学习每个特征交互的相对重要性。架构参数与神经网络权重由GRDA
优化器(一种容易产生稀疏解的优化器)联合优化,这样训练过程可以自动丢弃不重要的特征交互(架构参数为零)而保留那些重要的特征交互。 - 之后,在
re-train
阶段,AutoFIS
选择架构参数值非零的特征交互,用选定的特征交互重新训练模型,同时将架构参数作为注意力单元attention unit
,而不是交互重要性的指标。
论文在三个大规模的数据集上进行了广泛的实验(两个公开的
benchmark
、一个是private
数据集)。实验结果表明:AutoFIS
可以显著提高所有数据集上因子分解模型的CTR
预估性能。由于AutoFIS
可以去除大约50%-80%
的二阶特征交互,原始模型总是可以实现效率的提升。通过学习每个三阶特征交互的重要性,论文还将AutoFIS
应用于三阶交互的选择。实验结果表明:在选择了大约1%-10%
的三阶交互之后,因子分解模型的AUC
可以提高0.1%-0.2%
,而不会引入很多计算成本。实验结果表明,使用
AutoFIS
进行高阶特征交互的自动选择是一个很有前景的方向。实验还表明,重要的二阶特征交互和三阶特征交互,通过在FM
中由AutoFIS
所识别,也可以大大提升目前SOTA
模型的性能,这意味着我们可以使用一个简单的模型进行交互选择interaction selection
,并将选择结果应用于其他模型。此外,论文在真实数据和人工合成数据上分析了AutoFIS
所选择的特征交互的有效性。此外,在华为应用商店的推荐服务中进行了为期十天的online A/B test
,其中AutoFIS
产生的推荐模型比DeepFM
实现了20.3%
的CTR
改善、以及20.1%
的CVR
改善,这为业务收入的增长做出了巨大贡献。综上所述,本文的主要贡献如下:
-
论文通过经验验证:在训练因子分解模型时,去除冗余的特征交互是有益的。
-
论文提出了一个两阶段的算法
AutoFIS
来自动选择因子分解模型中重要的低阶特征交互和高阶特征交互。- 在搜索阶段,
AutoFIS
可以在一个完整的训练过程中通过架构参数学习每个特征交互的相对重要性。 - 在重训练阶段,移除不重要的交互,作者重新训练得到的神经网络,同时保留架构参数作为注意力单元从而帮助模型的学习。
- 在搜索阶段,
-
在三个大规模数据集上的离线实验证明了
AutoFIS
在因子分解模型中的优越性能。此外,AutoFIS
还可以找到一组重要的高阶特征交互,以提升现有模型的性能,而没有引入太多的计算成本。一个为期十天的online A/B test
表明,AutoFIS
在CTR
和CVR
方面将DeepFM
模型平均提高了约20%
。
- 在搜索阶段,
-
相关工作:
-
factorization machine: FM
将每个特征投影到一个低维向量中,并通过内积来建模特征交互,这对于稀疏的数据来说效果很好。Field-aware factorization machine: FFM
进一步使每个特征有多个vector representation
从而与其他field
的特征进行交互。 -
最近,深度学习模型在一些公共
benchmark
上取得了SOTA
的性能。有几个模型使用MLP
来改进FM
,如Attention FM
、Neural FM
。-
Wide & Deep
联合训练了一个wide
模型(采用人工特征)、和一个deep
模型(采用原始特征)。 -
DeepFM
使用一个FM layer
来代替Wide & Deep
中的wide
组件。 -
PNN
使用MLP
来建模FM layer
和feature embeddings
的交互,而PIN
引入了network-in-network
架构来建模pairwise
特征交互,而不是PNN
和DeepFM
的内积操作。PNN
用内积/外积来建模feature embeddings
的交互。
需要注意的是:现有的因子分解模型都是简单地枚举所有二阶的特征交互,其中包含了许多无用的和噪音的交互。
-
-
gradient boosting decision tree: GBDT
是一种通过决策树算法进行特征工程和搜索交互的方法。然后,转换后的特征交互可以被送入逻辑回归或FFM
模型。在实践中,树状模型更适合于连续数据,但不适合推荐系统中的高维categorical data
,因为categorical feature
的使用率很低。 -
同时,也有一些工作使用
AutoML
技术来处理推荐系统中的问题。人们提出了AutoCross
在许多候选特征的子集上进行搜索,从而识别有效的交互。这需要训练整个模型来评估每一个所选择的特征交互,但候选集多得令人难以置信:例如,对于一个有 $ m $ 个field
的数据集,仅仅考虑二阶特征交互就有 $ 2^{C_m^2} $ 个候选集合。因此,AutoCross
通过两个方面的近似来加速:- 它通过树状结构中的
beam search
贪心地构建局部最优的特征集合。 - 它通过
field-aware LR
模型来评估新生成的特征集合。
由于这两种近似,从
AutoCross
中提取的高阶特征交互可能对深度模型没有用。与
AutoCross
相比,我们提出的AutoFIS
只需要执行一次搜索阶段来评估所有特征交互的重要性,这要高效得多。此外,AutoFIS
学到的有用的交互将改善深度模型,因为这些特征交互是在该深度模型中直接学习和评估的。 - 它通过树状结构中的
-
最近,
one-shot
架构搜索方法(如DARTS
)已经成为最流行的神经架构搜索neural architecture search: NAS
算法,以有效地搜索网络架构。在推荐系统中,这种方法被用来为协同过滤模型搜索适当的交互函数。《Efficient Neural Interaction Function Search for Collaborative Filtering》
中的模型主要是为特征交互识别适当的交互函数,而我们的模型主要是搜索和保留重要的特征交互。受最近用于神经架构搜索的
DARTS
工作的启发,我们将搜索有效特征交互的问题表述为一个包含架构参数architecture parameters
的连续搜索问题。与DARTS
使用two-level optimization
来交替优化架构参数和模型权重,并通过训练集和验证集进行迭代不同,我们使用one-level optimization
来联合训练这两类参数,并以所有数据作为训练集。
-
31.1 模型
31.1.1 Factorization Model: Base Model
-
因子分解模型是指:通过内积或神经网络等操作将来自不同特征的几个
embedding
的交互建模为一个实数。我们将FM
、DeepFM
和IPNN
作为实例来描述我们的算法,并探索在各种数据集上的性能。下图展示了FM
、DeepFM
和IPNN
模型的结构。FM
由一个feature embedding layer
和一个feature interaction layer
组成。DeepFM
和IPNN
模型除了feature embedding layer
、feature interaction layer
之外,还有一个额外的MLP layer
。DeepFM
和IPNN
的区别在于:在DeepFM
中,feature interaction layer
和MLP layer
是并行工作的,而在IPNN
中是堆叠排列的。
-
Feature Embedding Layer
:在大多数CTR
预测任务中,数据是以multi-field categorical form
收集的。一个典型的数据预处理是:通过one-hot encoding
或multi-hot encoding
将每个数据实例转化为高维稀疏向量。只有当一个field
是multivariate
的时候,它才被表示为multi-hot encoding vector
。一个数据样本可以被表示为:其中:
$ m $ 为field
数量, $ \mathbf{\vec x}_i $ 为第 $ i $ 个field
的one-hot/multi-hot encoding vector
。feature embedding layer
用于将encoding vector
转化为低维向量,即:其中:
$ \mathbf V_i\in \mathbb R^{d\times n_i} $ 为第 $ i $ 个field
的embedding
矩阵; $ n_i $ 为第 $ i $ 个field
的feature value
数量; $ d $ 为低维向量的维度。- 如果
$ \mathbf{\vec x}_i $ 为one-hot encoding vector
,其中第 $ j $ 个元素为1
,那么 $ \mathbf{\vec e}_i = \mathbf{\vec v}_i^{(j)} $ ,其中 $ \mathbf{\vec v}_i^{(j)}\in \mathbb R^d $ 为 $ \mathbf V_i $ 的第 $ j $ 列。 - 如果
$ \mathbf{\vec x}_i $ 为multi-hot encoding vector
,其中第 $ \{j_1,\cdots,j_{i_k}\} $ 个元素为1
,那么: $ \mathbf{\vec e}_i = \sum_{j\in \{j_1,\cdots,j_{i_k}\}}\mathbf{\vec v}_i^{(j)} $ (sum
池化)或者 $ \mathbf{\vec e}_i =\frac{1}{i_k} \sum_{j\in \{j_1,\cdots,j_{i_k}\}}\mathbf{\vec v}_i^{(j)} $ (均值池化)。
feature embedding layer
的输出为多个embedding
向量的拼接: $ \mathbf{\vec e} = \left[\mathbf{\vec e}_1,\mathbf{\vec e}_2,\cdots,\mathbf{\vec e}_m\right]\in \mathbb R^{md} $ 。 - 如果
-
Feature Interaction Layer
:将特征转换到低维空间后,可以用feature interaction layer
在这样的空间中建模特征交互。-
首先,计算
pairwise
特征交互的内积:其中:
$ \mathbf{\vec e}_i $ 为第 $ i $ 个field
的feature embedding
; $ <\cdot,\cdot> $ 为两个向量的内积。这里
pairwise
特征交互的数量为 $ C_m^2 $ 。可以根据
$ \sum x_ix_j=(\sum x_i)^2 - (\sum x_i^2) $ 进行简化,此时的计算复杂度降低到 $ O(m) $ 。 -
然后,在
FM
和DeepFM
模型中,feature interaction layer
的输出为:在这里,所有的特征交互以相同的贡献被传递到下一层。正如前面内容所指出的(并将在实验部分得到验证),并非所有的特征交互都具有同等的预测性,无用的特征交互甚至会降低性能。因此,我们提出了
AutoFIS
算法来有效选择重要的特征交互。 -
为了研究我们的方法是否可以用来识别重要的高阶特征交互,我们将具有三阶交互(即三个
field
的组合)的feature interaction layer
定义为:其中
$ <\mathbf{\vec a}, \mathbf{\vec b}, \mathbf{\vec c}> = \sum_{s=1}^d a_i\times b_i\times c_i $ 。
-
-
MLP Layer
:MLP Layer
由若干个带激活函数的全连接层组成,它学习特征的relationship
和combination
。单层MLP Layer
的输出为:其中:
$ \mathbf{\vec h}^{(l)} $ 为第 $ l $ 层的输入; $ \mathbf W^{(l)}, \mathbf{\vec b}^{(l)} $ 为第 $ l $ 层的权重和bias
;relu
为relu
激活函数。 -
Output Layer
:-
FM
模型没有MLP Layer
,它直接将feature interaction layer
和prediction layer
相连:其中:
$ \hat y_\text{FM} $ 为predicted CTR
。 -
DeepFM
以并行的方式将feature interaction layer
和MLP layer
进行组合: -
IPNN
以堆叠的方式将feature interaction layer
和MLP layer
进行组合:请注意,
IPNN
的MLP layer
也可以作为不同特征交互的re-weighting
,从而捕获其相对重要性。这也是IPNN
比FM
和DeepFM
有更高容量的原因。然而,在IPNN
的公式中,人们无法检索到对应于每个特征交互的相对贡献的精确值。因此,IPNN
中无用的特征交互既不能被识别、也不能被丢弃,这给模型带来了额外的噪声和计算成本。
-
-
Objective Function
:FM
、DeepFM
和IPNN
有着相同的目标函数,即最小化预测值和标签的交叉熵:其中:
$ y\in \{0,1\} $ 为label
; $ 0\le \hat y_M \le 1 $ 为预测 $ y=1 $ 的概率。
31.1.2 AutoFIS
-
AutoFIS
自动选择有用的特征交互,可以应用于任何因子分解模型的feature interaction layer
。AutoFIS
可以分为两个阶段:- 搜索阶段
search stage
:检测有用的特征交互 - 重训练阶段
re-train stage
:对具有选定特征交互的模型进行重训练。
核心思想:根据
data-driven
的权重 $ \alpha $ 来学习field
交互特征的重要性,并裁剪不重要的field
交互特征。AutoFIS
和AFM
很类似,它们都是学习每个交互特征的重要性,然而:AutoFIS
通过自由参数来描述交互特征的重要性,可以视为global-level
的建模。AFM
通过attention
机制来描述交互特征的重要性,可以视为sample-level
的建模。理论上而言,对于给定的field-pair
,我们可以统计所有样本在它上面的注意力权重,从而得到global-level
的重要性。- 此外,
AFM
用逐元素乘积来描述交互特征,而AutoFIS
用内积。
- 搜索阶段
a. 搜索阶段
-
为了便于介绍算法,我们引入了
gate
操作来控制是否选择一个特征交互:一个打开的gate
对应于选择一个特征交互,而一个关闭的gate
则导致丢弃一个特征交互。所有二阶特征交互对应的gate
的总数为 $ C_m^2 $ 。要想以暴力的方式找到最佳的open gate
的集合是非常具有挑战性的,因为我们面临着一个难以置信的巨大空间 $ O\left(2^{C_m^2}\right) $ 来搜索。在这项工作中,我们从不同的角度来处理这个问题:我们不是在一个离散的
open gate
的集合上进行搜索,而是通过引入架构参数 $ \vec {\boldsymbol\alpha} $ 将choice
放宽为连续的,这样就可以通过梯度下降学习每个特征交互的相对重要性。下图显示了所提出的AutoFIS
的概览。 -
这种通过梯度学习的架构选择方案受到
DARTS
的启发,其中,DARTS
的目标是从卷积神经网络架构的一组候选操作中选择一个操作。具体而言,我们将因子分解模型中的interaction layer
重新表述为:其中:
$ \vec {\boldsymbol\alpha} = \{\alpha_{(1,2)},\cdots,\alpha_{(m-1,m)}\} $ 为架构参数。在
AutoFIS
的搜索阶段,我们可以学习 $ \alpha_{(i,j)} $ 使得它代表每个特征交互对最终预测的相对贡献。然后,我们可以通过将那些不重要的特征交互(即 $ \alpha_{(i,j)} = 0 $ )关闭从而决定每个特征交互的gate
状态。如何确保
$ \vec {\boldsymbol\alpha} $ 的稀疏性?论文采用特殊的优化器GRDA Optimizer
来实现。此外,是否可以保留最重要的
field
,而不仅仅是最重要的field pair
?实际上,如果field
$ i $ 的线性项权重 $ w_i = 0 $ 、交互项权重 $ \{\alpha_{i,1},\cdots,\alpha_{i,m}\} $ 全部都接近零(或者等于零),那么field
$ i $ 就可以被裁剪掉。 -
Batch Normalization
:从整个神经网络的角度来看,特征交互的贡献由 $ \alpha_{(i,j)}\times <\mathbf{\vec e}_i, \mathbf{\vec e}_j> $ 来衡量。但是,完全相同的贡献可以通过重新缩放来实现: $ \left(\frac{\alpha_{(i,j)}}{\eta}\right)\times \left(\eta <\mathbf{\vec e}_i, \mathbf{\vec e}_j>\right) $ ,其中 $ \eta $ 为任意非零的实数。由于
$ <\mathbf{\vec e}_i, \mathbf{\vec e}_j> $ 的值是与 $ \alpha_{(i,j)} $ 共同学习的,它们的scale
耦合会导致对 $ \alpha_{(i,j)} $ 的不稳定估计,这样 $ \alpha_{(i,j)} $ 就不能再代表 $ <\mathbf{\vec e}_i, \mathbf{\vec e}_j> $ 的相对重要性。为了解决这个问题,我们对 $ <\mathbf{\vec e}_i, \mathbf{\vec e}_j> $ 应用Batch Normalization: BN
来消除其scale
问题。原始的
BN
采用mini-batch
统计量从而对activated output
进行标准化。具体而言:其中:
$ \mathbf{\vec z}_\text{in} $ 为BN
层的输入; $ \mathbf{\vec z}_\text{out} $ 为BN
层的输出; $ \vec\mu_\mathcal B $ 和 $ \vec \sigma_\mathcal B^2 $ 为 $ \mathbf{\vec z}_\text{in} $ 在mini-batch
$ \mathcal B $ 上的均值和标准差; $ \vec\theta,\vec\beta $ 为BN
层的可训练的scale/shift parameters
; $ \epsilon $ 为一个小的常数从而用于数值稳定性; $ \odot $ 以及除法都是逐元素进行的。为了获得对
$ \alpha_{(i,j)} $ 的稳定估计,我们将scale/shift parameters
分别设为1
和0
。对每个特征交互 $ <\mathbf{\vec e}_i, \mathbf{\vec e}_j> $ 的BN
操作计算如下:其中:
$ \mu_\mathcal B, \sigma_\mathcal B^2 $ 为 $ <\mathbf{\vec e}_i, \mathbf{\vec e}_j> $ 在mini-batch
$ \mathcal B $ 上的均值和标准差。 -
GRDA Optimizer
:generalized regularized dual averaging: GRDA
优化器旨在获得一个稀疏的深度神经网络。为了在每个梯度step
$ t $ 用数据 $ \mathbb Z_t $ 更新 $ \vec {\boldsymbol\alpha} $ ,我们使用以下公式:其中:
$ g(t,\gamma) = c\gamma^{1/2}(t\gamma)^u $ , $ \gamma $ 为学习率, $ c $ 和 $ u $ 为可调的超参数从而权衡准确性和稀疏度。在搜索阶段,我们使用
GRDA
优化器来学习架构参数 $ \vec {\boldsymbol\alpha} $ ,并得到一个稀疏的解决方案。那些不重要的特征交互(即具有零值的 $ \alpha_{(i,j)} $ )将被自动丢弃。除了
$ \vec {\boldsymbol\alpha} $ 之外的其他参数由Adam
优化器学习。 -
One-level Optimization
:为了在AutoFIS
的搜索阶段学习结构参数 $ \alpha_{(i,j)} $ ,我们建议将 $ \vec {\boldsymbol\alpha} $ 与所有其他网络权重共同优化。这与DARTS
不同。DARTS
将 $ \vec {\boldsymbol\alpha} $ 作为higher-level
决策变量、将网络权重 $ \Theta $ 作为lower-level
变量,然后用bi-level
优化算法对其进行优化。在DARTS
中,假设只有当网络权重被正确学习后,模型才能选择操作,从而使 $ \vec {\boldsymbol\alpha} $ 能够 "做出正确的决定"。在
AutoFIS
的公式中,这意味着我们可以在网络权重被正确训练后决定gate
应该打开还是关闭,这使我们回到了问题:完全训练 $ 2^{C_m^2} $ 个模型来做决策。为了避免这个问题,DARTS
建议只用一个梯度下降步来近似计算网络权重的最优值,并迭代地训练 $ \vec {\boldsymbol\alpha} $ 和 $ \Theta $ 。我们认为,这种近似的不精确性可能会降低性能。因此,我们建议不使用
bi-level
优化,而是用one-level
优化来联合优化 $ \vec {\boldsymbol\alpha} $ 和 $ \Theta $ 。具体而言,参数 $ \vec {\boldsymbol\alpha} $ 和 $ \Theta $ 使用训练集通过梯度下降一起更新,基于:在这种情况下,
$ \vec {\boldsymbol\alpha} $ 和 $ \Theta $ 可以自由地探索它们的设计空间,直到收敛,并且 $ \vec {\boldsymbol\alpha} $ 被学习作为单个特征交互的贡献。在实验部分中,我们将展示
one-level optimization
比two-level optimization
的优越性。
b. 重训练阶段
-
在搜索阶段的训练结束后,根据搜索阶段的架构参数
$ \vec {\boldsymbol\alpha}^* $ ,一些不重要的交互被自动丢弃。我们用 $ G_{(i,j)} $ 表示特征交互 $ <\mathbf{\vec e}_i, \mathbf{\vec e}_j> $ 的gate
状态,当 $ \alpha^*_{(i,j)}=0 $ 时,将 $ G_{(i,j)} = 0 $ ;否则 $ G_{(i,j)} = 1 $ 。在重训练阶段,这些不重要的特征交互的gate
状态被固定为永久关闭。在移除这些不重要的交互后,我们重新训练新的模型。具体来说,
feature interaction layer
被替换为:注意这里
$ \alpha(i,j) $ 不再作为决定一个特征交互是否应该包括在模型中的指标(如搜索阶段)。取而代之的是,它作为一个注意力单元,让架构学习被保留下来的特征交互的相对重要性。在这个阶段,我们不需要选择特征交互。因此,所有的参数都由Adam
优化器学习。这里
$ G_{i,j} $ 被初始化为0
或1
(根据特征交互的选择的结果),并且在训练过程中保持不变。重训练阶段,所有参数(包括
$ \vec {\boldsymbol\alpha} $ )都用Adam
优化器来优化。
31.2 实验
-
数据集:两个
public
数据集(Avazu, Criteo
)、一个private
数据集。-
Avazu
:在Kaggle
的CTR
预估竞赛中被发布。随机拆分80%
的数据作为训练和验证,剩余20%
用于测试。出现次数少于20
次的categories
将被删除从而进行降维。 -
Criteo
:包含一个月的点击日志,有数十亿的数据样本。我们选择"data 6-12"
作为训练集和验证集,同时选择"day-13"
进行评估。为了应对标签的不平衡,我们采用了负降采样的方法,使正样本比例大致保持在50%
左右。13
个数值字段通过分桶被转换为one-hot
特征,其中某个字段中出现少于20
次的特征被设置为dummy feature "other"
。如何分桶?论文并未说明。
-
Private
:从华为应用商店的游戏推荐场景中收集的。该数据集包含app
特征(如ID, category
),用户特征(如用户的行为历史)和上下文特征。
数据集统计结果如下表所示。
-
-
baseline
:我们将AutoFIS
应用于FM
和DeepFM
模型以显示其有效性(分别表示为AutoFM
和AutoDeepFM
)。baseline
方法为:GBDT-based
的方法(GBDT+LR, GBDT+FFM
),FM
模型(AFM, FwFM, FFM, IPNN
)。由于其巨大的计算成本和源代码的不可用,我们没有将我们的模型与
AutoCross
进行比较。 -
评估指标:
AUC, Log loss
。 -
超参数配置:
-
实现细节:
- 为
AutoFM
和AutoDeepFM
选择二阶特征交互:在搜索阶段,我们首先在所有训练数据上联合训练 $ \vec {\boldsymbol\alpha} $ 和 $ \Theta $ 。然后,我们删除无用的交互,重新训练我们的模型。 - 为
AutoFM
和AutoDeepFM
选择三阶特征交互:我们复用所选中的二阶交互,并在搜索阶段枚举三阶特征交互从而学习其重要性。最后,我们用选中的二阶交互和三阶交互来重新训练我们的模型。
注意,在搜索阶段,架构参数
$ \vec {\boldsymbol\alpha} $ 由GRDA
优化器优化,而其他参数 $ \Theta $ 由Adam
优化器优化。在重新训练阶段,所有参数都由Adam
优化器优化。 - 为
-
AutoFIS
选择的特征交互:Table 1
和Table3
总结了AutoFM
和AutoDeepFM
在Avazu, Criteo, Private
数据集上自动选择二阶重要交互和三阶重要交互的性能。可以看到:-
对于
Avazu
数据集,FM/DeepFM
分别可以移除71%/76%
的二阶交互。移除这些无用的交互:- 不仅可以使模型在推理时更快:
AutoFM(2nd)
和AutoDeepFM(2nd)
的推理时间明显少于FM
和DeepFM
。 - 而且可以明显提高预测准确性:从
AUC
来看,AutoFM(2nd)
比FM
的相对性能提高了0.49%
、AutoDeepFM(2nd)
比DeepFM
的相对性能提高了0.20%
。
类似的改进也可以从其他数据集中得出。
- 不仅可以使模型在推理时更快:
-
对于高阶特征交互的选择,只有
2%-10%
的三阶特征交互需要包含在模型中。-
AutoFM(3rd)
和AutoDeepFM(3rd)
的推理时间远远少于FM(3rd)
和DeepFM(3rd)
(与FM
和DeepFM
相当)。 -
同时,通过移除不重要的三阶特征交互,准确率得到了显著的提高。即在
Avazu
上的AUC
指标上,AutoFM(3rd)
比FM(3rd)
的相对性能提高了0.22%
、AutoDeepFM(3rd)
比DeepFM(3rd)
提高了0.20%
。对
Criteo
的观察也是如此。
-
-
所有这些性能提升都是以边际时间成本
marginal time cost
实现的。例如,AutoDeepFM(3rd)
在Avazu
和Criteo
用一块GPU
卡搜索重要的二阶特征交互和三阶特征交互需要24
分钟和128
分钟。同样的结果可能需要人类工程师花很多小时或几天的时间来手动识别这些重要的特征交互。
注意,在
FM
和DeepFM
中直接枚举三阶特征交互会使推理时间增加7
到12
倍,这在工业应用中是不可接受的。 -
-
所选特征的可迁移性:我们研究了由
AutoFM
(这是一个简单的模型)所学到的特征交互是否可以迁移到SOTA
的模型(如IPNN
)从而提高其性能。如下表所示:
- 使用
AutoFM
选择的二阶特征交互(即AutoIPNN(2nd)
)实现了与IPNN
相当的性能,在Avazu
和Criteo
的所有交互中约占30%
和50%
。 - 使用
AutoFM
选择的二阶特征交互和三阶特征交互(即AutoIPNN(3rd)
),性能得到明显改善。
这两个证据都验证了
AutoFM
所选择的特征交互的可迁移性。 - 使用
-
所选特征的效果:
-
在真实数据上:我们定义
statistics_AUC
来表示一个特征交互对最终预测的重要性。对于一个给定的特征交互。我们构建一个只考虑该交互的predictor
,其中prediction
为训练集中特定特征交互的statistical CTR
(#downloads/#impressions
)。然后,这个predictor
的AUC
是相对于这个给定的特征交互的statistics_AUC
。statistics_AUC
越高,表明该特征交互在预测中的作用越重要。然后,我们将statistics_AUC
和 $ \alpha_{(i,j)} $ 值之间的关系可视化。即,仅仅以这一对特征作为输入,
label
不变。这个predictor
如何构建?论文并未说明。可以选择LR
或FM
模型。如下图所示,我们可以发现,被我们模型选中的大多数特征交互(绝对值较高的
$ \alpha_{(i,j)} $ )都有较高的statistics_AUC
,但并非所有具有高statistics_AUC
的特征交互都被选中。这是因为这些交互中的信息也可能存在于其它交互中,而这些其它交互也被我们模型所选中。为了评估我们的模型所选择的特征交互的有效性,我们还根据
statistics_AUC
选择了top-N
特征交互(
-
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论