数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
三十五、AutoCross [2019]
众所周知,机器学习方法的性能在很大程度上取决于特征的质量。由于原始特征很少产生令人满意的结果,因此通常进行手动
feature generation
从而更好地表达数据并提高学习性能。然而,这通常是一项乏味且task-specific
的工作。这促使了自动化的feature generation
,这也是AutoML
的一个主要话题。第四范式4Paradigm
是一家致力于让更多人使用机器学习技术的公司,并且也致力于这个主题。特征交叉,即稀疏特征的叉积
cross-product
,是捕获categorical feature
之间的交互的一种很有前途的方法,广泛用于增强从表格数据中的学习。表格数据中,每一行对应一个样本、每一列对应一个distinct
特征。- 特征交叉表示特征的共现,它可能与
target label
高度相关。例如,交叉特征"job x company"
表示一个人在特定公司从事特定工作,这是预测个人收入的一个强大特征。 - 特征交叉还增加了数据的非线性,这可能会提高学习方法的性能。例如,线性模型的表达能力受到其线性的限制,但可以通过交叉特征来扩展。
- 最后但并非最不重要的是,显式生成的交叉特征具有高度的可解释性,这是许多真实世界业务中的一个吸引人的特性,例如医疗和欺诈检测。
然而,枚举所有交叉特征可能会导致学习性能下降,因为它们可能是不相关的或冗余的,会引入噪声,并增加学习难度。因此,只应生成有用且重要的交叉特征,但它们通常是
task-specific
。在传统的机器学习应用中,人类专家大量参与特征工程,努力为每项任务生成有用的交叉特征,并以试错的方式使用其领域知识。此外,即使是经验丰富的专家,当原始特征的数量很大时也可能会遇到麻烦。人工特征交叉的人力需求和难度大大增加了应用机器学习技术的总成本,甚至阻碍了许多公司和组织充分利用其数据。这提出了对自动特征交叉的巨大需求,这是论文
《AutoCross: Automatic Feature Crossing for Tabular Data in Real-World Applications》
提出的工作目标。除了主要目标,即以高效率的、高效果的方式自动化特征交叉之外,论文还需要考虑其他几个要求:简单性要求:用户友好且易于使用。
大多数现有的自动特征生成方法的性能在很大程度上取决于一些超参数。如
ExploreKit
中的阈值、《Simple and scalable response prediction for display advertising》
中的降采样率、以及基于深度学习的方法中的网络架构。这些超参数应该由用户为每个specific task
正确确定或仔细调优,这需要用户有专业的机器学习知识。分布式计算:现实世界企业中的大量的数据和特征使得分布式计算成为必须。特征交叉方法应考虑计算成本、传输成本、以及存储成本。
实时推理需求:实时推理涉及许多真实世界的业务。在这种情况下,一旦输入了实例,就应该立即生成特征并进行预测。
总结上述需求,自动特征交叉工具需要具有高效果、高效率、简单性,能够针对分布式计算进行优化,并实现快速推理。为了解决这些挑战,论文提出了
AutoCross
。AutoCross
是一种自动特征交叉工具,专门为具有大量categorical feature
的表格数据设计。论文主要贡献如下:
- 提出了一种高效的
AutoML
算法,从而在广泛的搜索空间中显式地搜索有用的交叉特征。它能够构造高阶交叉特征,这可以进一步提高学习性能。 AutoCross
具有高度简单性和最小化的超参数暴露。论文提出successive mini-batch gradient descent
和多粒度离散化。它们提高了特征交叉的效率和效果,同时避免了仔细的超参数设置。AutoCross
针对分布式计算进行了充分优化。通过设计,这些算法可以降低计算成本、传输成本、和存储成本。- 在
benchmark
和真实世界数据集上进行大量实验,结果验证了AutoCross
的效率和效果。它可以显著提高广义线性模型的性能,同时保持较低的推理延迟。研究还表明,AutoCross
可以结合深度模型,这意味着可以结合显式特征生成和隐式特征生成的优势,进一步提高学习性能。
- 特征交叉表示特征的共现,它可能与
相关工作:这里简要回顾与
AutoCross
大致相关的一些工作,并说明它们不符合我们的目的的原因。FM
寻求原始特征的低维embedding
,并捕获它们的交互。然而,这种交互并不是显式地被构建的(通过embedding
被间接地构建)。此外,FM
可能过度泛化和/或引入噪声,因为FM
枚举了所有可能的交互,而不管该交互是否有用。- 还有一些
embedded feature selection/generation
方法,如group lasso
和gradient boost machine: GBM
,它们本质上伴随着模型训练来识别、或隐式地构建有用的特征。然而,这些方法通常难以处理large scale
问题(其中,从categorical feature
生成了高维稀疏数据),和/或计算问题(当特征数量很大时,如考虑高阶特征交叉)。 - 最后,
itemstes
在数据挖掘社区中得到了很好的研究。与交叉特征一样,它们也表示属性的共现。然而,不同之处在于itemsets
中的元素通常是相同的类型,例如,所有元素都是商品。此外,itemsets
主要用于rule-based
的机器学习技术,如frequent pattern
和association rule
。这些技术可能难以推广,并且在规则数量较大时推理速度较慢(因为检索成本高)。
35.1 模型
35.1.1 动机
通过对原始特征的叉积的结果进行向量化来构建交叉特征:
其中:
$ \mathbf{\vec f}_i $ 为二元的特征向量(通过one-hot encoding
或哈希技巧);vec()
函数把张量展平为向量; $ \otimes $ 为向量的叉积。交叉特征也是二元的特征向量。如果交叉特征使用三个或更多个原始特征,我们称它为高阶交叉特征。这里将陈述我们工作的动机。
虽然大多数早期的自动特征生成工作集中于原始特征的二阶交互,但是趋势表明:考虑更高阶(即,阶次高于两阶)的交互将使得数据更
informative
和discriminative
。与其他高阶交互一样,高阶交叉特征可以进一步提高数据质量,提高学习算法的预测能力。例如三阶交叉特征item x item x region
可以是在某些节日期间推荐区域性偏好的食物的一个强大特征。然而,在现有的工作中还没有发现高阶交叉特征的显式生成。接下来,我们将说明:现有的特征生成方法要么不能生成高阶交叉特征、要么不能满足我们的业务需求。一方面,基于搜索的
feature generation
方法采用显式搜索策略来构造有用的特征或特征集。许多这样的方法专注于数值特征,并且不生成交叉特征。至于现有的特征交叉方法,它们没有设计成执行高阶特征交叉。另一方面,存在基于深度学习的
feature generation
成方法,其中特征之间的交互由特定网络隐式地或显式地表达。人们提出了各种深度学习模型来处理categorical
特征,如FM
、PNN
等。还有一些工作将深度学习模型和额外的结构相结合,这些结构包括:- 手动设计的特征,如
Wide & Deep
。 FM
,如DeepFM, xDeepFM
。- 其它特征构建组件,如
Deep & Cross Network
。
其中,
xDeepFM
提出了一种compressed interaction network: CIN
来显式捕获embedded feature
之间的高阶交互,并证明优于上述其它基于深度学习的方法。这是通过对embedded feature
之间执行element-wise
乘积来实现的:其中:
$ \circ $ 表示逐元素乘积, $ \mathbf W_i $ 为embedding
矩阵, $ \mathbf W_i\mathbf{\vec f}_i\in \mathbb R^D $ , $ D $ 为emebdding size
。然而,如以下
Proposition
所述,上述方法得到的特征仅仅是embedded high-order cross feature
的特殊情况。此外,深度模型在推理方面相对较慢,这使得我们必须在实时推理系统中部署模型压缩或其他加速技术。- 手动设计的特征,如
Proposition
:存在无限多具有 $ D $ 行的embedding
矩阵 $ \mathbf C $ ,使得:对于任意的二元向量 $ \mathbf{\vec x},\mathbf{\vec y} $ 以及它们之间的叉积 $ \mathbf{\vec z} $ ,不存在任何embedding
矩阵 $ \mathbf A $ 和 $ \mathbf B $ 从而满足以下等式:证明见原始论文的附录。
受高阶交叉特征的有用性、以及现有工作的局限性的启发,在本文中,我们旨在提出一种新的自动特征交叉方法,该方法足够有效地、高效地自动生成高阶交叉特性,同时满足我们的业务需求(即简单、针对分布式计算进行优化,并实现快速推理)。下表比较了
AutoCross
和其他现有方法。
35.1.2 AutoCross
下图给出了
AutoCross
的概览,其中包括三个部分:通用工作流、组件算法、底层基础设施。从用户的角度来看,
AutoCross
是一个黑匣子,它将训练数据和特征类型(即categorical
、numerical
、时间序列等等)作为输入,并输出一个feature producer
。feature producer
可以快速执行AutoCross
学到的crossing
从而转换输入数据,然后用于模型训练或推理。feature producer
使用哈希技巧来加速特征生成。与基于深度学习的方法相比,feature producer
占用的计算资源明显更少,因此特别适合于实时推理。在黑匣子(下图中的
"Flow"
部分)内,数据将首先进行预处理,其中包括确定超参数、填充缺失值、数值特征离散化。然后,在由两个步骤组成的循环中迭代构建有用的特征集:- 特征集生成:生成具有新的交叉特征的候选特征集。
- 特征集评估:评估候选特征集并选择最佳的作为新的解决方案。
一旦满足某些条件,该迭代过程就终止。
从实现的角度来看(下图中的
"Infrastructures"
部分),AutoCross
的基础是基于参数服务器(parameter server: PS
)架构的分布式计算环境。数据按block
缓存在内存中,每个block
包含一小部分训练数据(这里指的是所有样本的一小部分特征,而不是一小部分样本的所有特征)。worker
访问缓存的data block
,生成相应的特征,并对其进行评估。特征管理器控制特征集的生成和评估。过程管理器控制特征交叉的整个过程,包括超参数适配、数据预处理、工作流控制、以及程序终止。连接工作流程和基础设施的算法是本文的主要重点(下图的
"Algorithms"
部分)。每种算法都对应于工作流程中的一部分:- 我们使用
beam search
来生成特征集,以探索广泛的搜索空间。 - 我们使用
field-wise
逻辑回归和successive mini-batch gradient descent
来评估特征集。 - 我们使用多粒度离散化来进行数据预处理。
这些算法的选择、设计和优化考虑了分布式计算的简单性和成本。
AutoCross
算法的原理比较简单明了,但是需要基础架构的支持,不太容易在实践中使用。此外,
AutoCross
仅能评估表格型数据,无法处理序列特征、也无法处理multi-set
特征(即,一个field
上取多个值),更无法处理图片和文本特征。- 我们使用
问题定义:为了便于讨论,首先我们假设所有原始特征都是
categorical
的。数据以multi-field categorical
的形式表示,其中每个field
是通过encoding
(one-hot encoding
或哈希技巧)从categorical feature
中生成的binary
向量。给定训练数据 $ \mathcal D_\text{TR} $ ,我们将它拆分为训练集 $ \mathcal D_\text{tr} $ 、验证集 $ \mathcal D_\text{vld} $ 。然后我们用特征集 $ \mathcal S $ 来表达 $ \mathcal D_\text{tr} $ ,并用学习算法 $ \mathcal L $ 来学习模型 $ \mathcal L(\mathcal D_\text{tr}, \mathcal S) $ 。为了评估该模型,我们用相同的特征集 $ \mathcal S $ 来表达验证集 $ \mathcal D_\text{vld} $ ,并最大化指标 $ \mathcal E(\mathcal L(\mathcal D_\text{tr},\mathcal S), \mathcal D_\text{vld}, \mathcal S) $ 。现在,我们定义
feature crossing problem
为:其中:
$ \mathcal F $ 为 $ \mathcal D_\text{TR} $ 的原始特征集, $ \mathcal A(\mathcal F) $ 为包括原始特征和所有可能交叉特征的特征集。特征集生成:假设原始特征集的大小为
$ d $ ,这也是交叉特征的最高阶次。 $ \mathcal A(\mathcal F) $ 的大小为:所有可能的特征集合为
$ 2^{(2^d-1)} $ 。显然,在如此广泛的空间中搜索全局最优特征集是不切实际的。为了在有限的时间和计算资源下找到一个适度的解决方案,我们采用贪婪的方法迭代地构造一个局部最优特征集。在
AutoCross
中,我们考虑下图所示的树结构空间 $ \mathcal T $ ,其中每个节点对应于一个特征集,根是原始特征集 $ \mathcal F $ 。为了简单起见,在本示例中,我们将两个特征A
和B
的交叉表示为AB
,更高阶的交叉特征也是类似的表示方式。对于一个节点(一个特征集),它的每个子节点都是通过在当前节点的基础上添加自身元素的一个pair-wise crossing
来构造的。交叉特征之间(或交叉特征和原始特征之间、原始特征和原始特征之间)的pair-wise
交互将导致高阶特征交叉。树结构空间
$ \mathcal T $ 考虑 $ \mathcal A(\mathcal F) $ 中的所有可能特征,但排除了一部分子集。使用 $ \mathcal T $ ,搜索特征集等同于识别从 $ \mathcal T $ 的根节点到特定节点的路径。这可以通过迭代地将交叉特征添加到维护的特征集中来实现。然而, $ \mathcal T $ 的大小是 $ O\left((d^2/2)^k\right) $ ,其中 $ k $ 是生成的交叉特征的最大数量。 $ \mathcal T $ 的大小随着 $ k $ 呈指数增长。因此,遍历 $ \mathcal T $ 将非常昂贵。为了解决这个问题,我们使用beam search
来进一步提高效率。beam search
的基本思想是在搜索过程中只扩展最有前途的节点:- 首先,我们生成根节点的所有子节点,评估它们对应的特征集,然后选择性能最佳的子节点进行下一次访问。
- 在接下来的过程中,我们扩展当前节点并访问其最有希望的子节点。
当过程终止时,处于结束位置的节点就是我们得到的结果特征集。
通过这种方式,我们在大小为
$ O\left((d^2/2)^k\right) $ 的搜索空间中仅考虑 $ O(kd^2) $ 个节点,并且成本随着交叉特征的最大数量 $ k $ 线性增长。它使我们能够高效地构造高阶交叉特征。下图展示了一个搜索路径,该路径从原始特征集{A, B, C, D}
开始,到解决方案{A, B, C, D, AB, CD, ABC, ABCD}
结束。AutoCross
中特征集选择算法:输入:原始特征集
$ \mathcal F $ 、训练集 $ \mathcal D_\text{tr} $ 、验证集 $ \mathcal D_\text{vld} $输出:结果特征集
$ \mathcal S^* $算法步骤:
初始化当前节点:
$ \mathcal S^*\leftarrow \mathcal F $ 。迭代直到满足停止条件:
- 特征集生成:通过将
$ \mathcal S^* $ 的不同pair-wise crossing
添加到 $ \mathcal S^* $ 中,从而得到不同的子节点(每个子节点一个crossing
)。 - 特征集评估:对所有这些子节点进行评估,得到最佳子节点
$ \mathcal S^\prime $ 。 - 替换:
$ \mathcal S^*\leftarrow \mathcal S^\prime $ 。
- 特征集生成:通过将
这里的
beam size = 1
,也可以考虑beam size = s
, $ s $ 为超参数。特征集评估:特征集选择算法的关键步骤是评估候选特征集的性能。这里候选集
$ \mathcal S $ 的性能表示为 $ \mathcal E(\mathcal L(\mathcal D_\text{tr},\mathcal S), \mathcal D_\text{vld}, \mathcal S) $ ,简称 $ \mathcal E(\mathcal S) $ 。为了直接估计 $ \mathcal E(\mathcal S) $ ,我们需要在由 $ \mathcal S $ 表示的训练集上学习具有算法 $ \mathcal L $ 的模型,并评估模型在验证集上的性能。尽管这种方法很准确,但对特征集的直接评估通常相当昂贵。为了提高评估效率,我们在AutoCross
中提出了field-wise
逻辑回归和successive mini-batch
。field-wise
逻辑回归:我们加速特征集评估的第一个努力是field-wise
逻辑回归(field-wise LR
)。这里进行了两种近似:首先,我们使用用
mini-batch
梯度下降训练的逻辑回归来评估候选特征集,并使用相应的性能来近似实际使用的学习算法 $ \mathcal L $ 的性能。我们选择逻辑回归,因为它简单、可扩展、速度快、可解释。其次,在模型训练期间,我们只学习新添加的交叉特征的权重,而其他权重是固定的。因此,训练是
'field-wise'
的。例如,假设当前的特征集是 $ \mathcal S^*= \text{{A, B, C, D}} $ ,并且我们希望评估候选特征集 $ \mathcal S = \text{{A, B, C, D, AB}} $ ,那么只有新的AB
特征的权重需要被学习。具体而言,给定一个样本,假设
$ \mathbf{\vec x}_s $ 为当前特征集对应的特征向量, $ \mathbf{\vec x}_c $ 为新增交叉特征对应的特征向量。那么LR
模型为:其中:
$ \mathbf{\vec w}_s $ 是固定的, $ b_\text{sum} $ 是一个标量对应于 $ \mathbf{\vec x}_s\cdot \mathbf{\vec w}_s $ 。
下图展示了
field-wise LR
如何在参数服务器架构上工作。field-wise LR
从几个方面提高了特征集评估的效率:- 存储:
worker
只存储 $ \mathbf{\vec x}_c $ (以sparse
格式)和 $ b_\text{sum} $ ,而不是实例的完整representation
。在内存缓存中存储 $ b_\text{sum} $ 的开销可以忽略不计。 - 传输:内存缓存和
worker
之间的传输内容是 $ b_\text{sum} $ 、以及用于构造 $ \mathbf{\vec x}_c $ 的特征的哈希值。因此,不需要传输完整的实例representation
。 - 计算:只更新
$ \mathbf{\vec w}_c $ ,减少了worker
和parameter server
的计算负担。所有worker
都直接获取存储的 $ b_\text{sum} $ ,因此不需要为每个worker
的每个mini-batch
重复计算 $ b_\text{sum} $ 。
一旦
field-wise LR
完成,我们就在验证集 $ \mathcal D_\text{vsl} $ 上评估结果模型的性能。我们使用AUC, accuracy, negative logloss
等指标来评估 $ \mathcal S $ 的质量。显然,评估结果是 $ \mathcal E(\mathcal S) $ 的近似值,以更高的效率换取准确性。然而,由于特征集评估的目的是识别最有前景的候选,而不是准确地估计候选集的性能,因此,如果算法能够以高概率识别最佳候选,则准确性的降低是可接受的。实验部分报告的实验结果证明了field-wise LR
的有效性。Successive Mini-batch Gradient Descent
:在AutoCross
中,我们使用successive mini-batch gradient descent
方法来进一步加速field-wise LR
的训练。这是由最初针对multi-arm bandit
问题提出的successive halving
算法所推动的。successive halving
的特点是计算资源的高效分配和高度简单。在我们的例子中,我们将每个候选特征集视为一个
arm
,拉动手臂就是用数据块训练相应的field-wise LR
模型。拉动手臂的即时回报是partially trained model
的验证AUC
。训练数据平均分为 $ N\ge \sum_{k=0}^{\lceil\log_2n\rceil - 1} 2^k $ 个数据块,其中 $ n $ 是候选特征集的数量。然后我们调用下述算法来识别最佳候选特征集。successive mini-batch gradient descent
将更多的资源分配给更有前景的候选集。唯一的超参数 $ N $ (即,数据的数量),需要根据数据集的大小和工作环境来选择。用户不需要调优mini-batch size
和采样率。可以看到:
- 在训练的早期,数据块的数量较少,此时更多的候选特征集会被评估。
- 在训练的后期,数据块的数量较多,此时只有最优秀的候选特征集会被评估。
每次迭代之后,数据块翻倍、候选特征集的数量减半。
Successive Mini-batch Gradient Descent: SMBGD
算法:输入:所有的候选集
$ \mathbb S = \{\mathcal S_i\}_{i=1}^n $ ,训练数据平均分为 $ N $ 个数据块。输出:最佳候选集
$ \mathcal S^\prime $算法步骤:
迭代:
$ k=0,1,\cdots,\lceil \log2 n\rceil-1 $ ,迭代步骤为:- 使用
$ 2^k $ 个数据块来更新所有候选集 $ \mathcal S\in \mathbb S $ 的field-wise LR
模型。 - 在验证数据集上评估所有候选集
$ \mathcal S\in \mathbb S $ 的模型。 - 保留头部
50%
的候选集: $ \mathbb S \leftarrow \text{top-half}(\mathbb S) $ ,向下取整。 - 如果
$ \mathbb S $ 只有一个元素,则返回(作为最佳候选集 $ \mathcal S^\prime $ )。
- 使用
预处理:在
AutoCross
中,我们在数据预处理步骤中对数值特征进行离散化。为了实现离散化的自动化并避免对人类专家的依赖,我们提出了一种多粒度离散化方法。基本思想很简单:我们将每个数值特征离散化为几个categorical feature
而不是一个categorical feature
,每个categorical feature
具有不同的粒度,而不是微调粒度。下图给出了用四个级别的粒度来离散化数值特征的示例。由于考虑了更多级别的粒度,因此更可能获得有前景的结果。为了避免离散化导致的特征数量急剧增加,一旦生成了这些特征,我们就使用
field-wise LR
(不考虑 $ b_\text{sum} $ )来评估它们,只保留最好的一半。剩下的问题是如何确定粒度级别。经验丰富的用户可以人工设置一组值。如果未指定任何值,
AutoCross
将使用 $ \{10^p\}_{p=1}^P $ 作为默认值,其中 $ P $ 是基于规则(考虑可用内存、数据规模、特征数量等等)确定的整数。此外,
AutoCross
将在预处理步骤中调用超参数调优程序,以找到LR
模型的最佳超参数。它们将在随后涉及的所有LR
模型中使用。Termination
:AutoCross
使用三种终止条件:- 运行时条件:用户可以设置
AutoCross
的最大runtime
。时间过去后,AutoCross
终止并输出当前解决方案 $ \mathcal S^* $ 。此外,用户可以随时中断程序并获得当前时刻的结果。 - 性能条件:在生成新的特征集之后,用其所有特征训练
LR
模型。如果与前一组相比,验证集性能下降,则程序终止。 - 最大特征数:用户可以给出最大交叉特征数,这样当达到该数字时,
AutoCross
停止。
- 运行时条件:用户可以设置
35.2 实验
数据集:来自
benchmark
、以及真实世界商业数据集(来自第四范式的客户,经过脱敏),所有数据集都是二分类问题。数据集信息如下表所示。baseline
方法:AC + LR
:具有AutoCross
生成的交叉特征的逻辑回归。AC+W&D
:Wide & Deep
模型,其中wide
侧使用AutoCross
生成的交叉特征。LR (base)
:采用原始特征的逻辑回归,作为baseline
。CMI+LR
:具有交叉特征的逻辑回归,其中交叉特征通过《Simple and scalable response prediction for display advertising》
中提出的方法来生成,采用条件互信息(conditional mutual information : CMI
)用作评估特征的指标。Deep
:具有embedding layer
的深度模型,它隐式地生成特征交互。xDeepFM
:通过compressed interaction network: CIN
显式生成特征的、SOTA
的deeplearning-based
方法。
在这些方法中,
AC+LR
和AC+W&D
使用AutoCross
生成的交叉特征,并证明了其增强线性模型和深度模型的有效性。CMI+LR
使用了一种典型的基于搜索的特征交叉方法。xDepFM
是遵从Wide&Deep
框架的SOTA
方法。所有这些方法都旨在处理具有categorical feature
的表格数据。配置:特征以及模型在训练数据集、验证数据集(如果需要的话,为训练数据的
20%
)上学习,然后通过测试AUC
来评估不同方法的性能。AutoCross
配置:超参数包括数据块数量 $ N $ 、多粒度离散化的粒度数量、停止条件。- 对于相对较小的数据集,即
Bank, Adult, Credit, Employee
, $ N=2\sum_{k=0}^{\lceil \log_2n\rceil -1}2^k $ 。这表明,最多50%
的训练数据将用于连续小批量梯度下降。对于其他数据集, $ N=5\sum_{k=0}^{\lceil \log_2n\rceil -1}2^k $ ,这对应于最大20%
的采样率。 - 关于粒度级别,
AutoCross
对所有数据集使用 $ \{10^i\}_{i=1}^3 $ 。 - 至于终止条件,我们只调用性能条件,即只有在新添加的交叉特征导致性能下降时,
AutoCross
才会终止。
- 对于相对较小的数据集,即
逻辑回归配置:超参数包括学习率
$ \alpha\in [0.005, 1] $ 、L1
正则化系数 $ \lambda_1\in [10^{-4},10] $ 、L2
正则化系数 $ \lambda_2\in [10^{-4}, 10] $ 。在我们的实验中,我们在特征生成之前调用了一个超参数调优过程,采用
log-grid search
。找到的最佳超参数应用于所有LR
相关的模型。CMI+LR
配置:我们只在benchmark
数据集上测试CMI+LR
,因为CMI
无法处理多值categorical feature
。我们使用多粒度离散化来转换数值特征。为了确保特征评估的准确性,我们使用所有训练数据来估计CMI
,Criteo
数据集是一个例外,我们将其降采样比率设置为10%
。我们将最大交叉特征数设置为15
。深度模型配置:我们使用
xDeepFM
的开源实现并在AC+W&D
和Deep
方法中使用深度组件。我们使用0.001
学习率,Adam
优化器,batch size = 4096
,0.0001
的L2
正则化惩罚。深度组件的layer
的隐单元数量为400
。对于Criteo
数据集和其它数据集,CIN
组件分别采用200
和100
的隐单元数量。field embedding size = 10
。由于在
xDepFM
和Deep
中不需要验证数据,因此我们不拆分训练集,并将其全部用于模型训练。
效果:实验结果如下表所示,其中我们突出显示了每个数据集的前两个方法。可以看到:
AC+LR
在大多数情况下排名前二,并且通常优于基于深度学习的方法(Deep
和xDepFM
)。AC+W&D
还显示出具有竞争力的性能,展示了AutoCross
增强深度模型的能力。- 大多数情况下,
AC+LR
和AC+W&D
显示出比xDepFM
更好的结果。
下表显示了
AutoCross
带来的测试AUC
改善。可以看到:AC+LR
和AC+W&D
都实现了比LR(base)
显著的改进,并且AC+W&D
也显著提高了Deep
模型的性能。这些结果表明,通过生成交叉特征,AutoCross
可以使数据更informative
和discriminative
,并提高学习性能。AutoCross
取得的有前景的结果也证明了field-wise LR
识别有用交叉特征的能力。高阶特征的效果:下图显示了为每个数据集生成的二阶/高阶交叉特征的数量,其中后者占相当大的比例。
此外,在下表中,我们比较了仅生成二阶交叉特征的
CMI+LR
、以及考虑高阶交叉特征的AC+LR
。我们可以看到,AC+LR
稳定且持续地优于CMI+LR
。这一结果证明了高阶交叉特征的有用性。特征交叉的时间代价:下表报告了
AutoCross
在每个数据集上的特征交叉时间。下图显示了真实世界业务数据集上验证AUC
(AC+LR
)与运行时的关系。用户可以看到这些曲线,并随时终止AutoCross
以获得当前结果。是在什么硬件配置下测试的?论文提到,
AutoCross
采用PS
架构,因此这里用到了几个parameter server
、几个worker
?值得注意的是,由于
AutoCross
的高度简单性,不需要微调任何超参数,用户也不需要花费任何额外的时间来实现它。相比之下,如果使用基于深度学习的方法,则将在网络架构设计和超参数调优上花费大量时间。推断延迟:在线推理包括两个主要步骤:生成特征从而转换输入数据、推理以进行预测。深度学习方法结合了这些步骤。在下表中,我们报告了
AC+LR
、AC+W&D
、Deep
和xDepFM
的推断时间。可以看到:AC+LR
在推断方面比其他方法快几个数量级。这表明,AutoCross
不仅可以提高模型性能,还可以确保其feature producer
的快速推理。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论