数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
三十四、FGCNN [2019]
CTR
预测任务的关键挑战是如何有效地建模特征交互。FM
及其变体将pairwise
特征交互建模为潜在向量的内积,并显示出有前景的结果。最近,一些深度学习模型被用于CTR
预测,如PIN
、xDeepFM
等。这类模型将原始特征馈入深度神经网络,以显式或隐式的方式学习特征交互。理论上,DNN
能够从原始特征中学习任意的特征交互。然而,由于与原始特征的组合空间相比,有用的特征交互通常是稀疏的,要从大量的参数中有效地学习它们是非常困难的。为解决这个困难,
Wide & Deep
利用wide
组件中的特征工程来帮助deep
组件的学习。在人工特征的帮助下,deep
组件的性能得到了显著的提高。然而,特征工程可能是昂贵的,并且需要领域知识。如果我们能通过机器学习模型自动生成复杂的特征交互,它将更加实用和鲁棒。因此,如下图所示,论文
《Feature Generation by Convolutional Neural Network for Click-Through Rate Prediction》
提出了一个自动生成特征的通用框架。原始特征被馈入到机器学习模型(右图中的红框),从而识别和生成新的特征。之后,原始特征和新特征被结合起来,并馈入一个深度神经网络。被生成的特征能够通过提前捕获稀疏的但重要的特征交互来降低深度模型的学习难度。自动生成特征的最直接的方法是进行多层感知机
Multi-Layer Perceptron: MLP
,并使用隐层的神经元作为生成的特征。然而,如前所述,由于有用的特征交互通常是稀疏的,MLP
很难从巨大的参数空间中学习这种交互。作为一种
SOTA
的神经网络结构,卷积神经网络Convolutional Neural Network: CNN
在计算机视觉和自然语言处理领域取得了巨大成功。在CNN
中,共享权重、池化机制的设计大大减少了寻找重要局部模式所需的参数数量,它将缓解随后的MLP
结构的优化困难。因此,CNN
为实现作者的想法(识别稀疏的但重要的特征交互)提供了一个潜在的良好解决方案。然而,直接应用CNN
可能会导致不满意的性能。在CTR
预测中,原始特征的不同排列顺序并没有不同的含义。例如,特征的排列顺序是(Name, Age, Height, Gender)
还是(Age, Name, Height, Gender)
对描述样本的语义没有任何区别,这与图像和句子的情况完全不同。如果只使用CNN
抽取的邻居模式neighbor pattern
,许多有用的global feature interaction
就会丢失。这也是为什么CNN
模型在CTR
预测任务中表现不佳的原因。为了克服这一局限性,作者采用了CNN
和MLP
,两者相互补充,学习global-local
特征交互来生成特征。在论文中,作者为
CTR
预测任务提出了一个新的模型,即Feature Generation by Convolutional Neural Network: FGCNN
,它由两个部分组成:特征生成Feature Generation
、深度分类器Deep Classifier
。- 在特征生成中,作者设计了一个
CNN+MLP
的结构用来从原始特征中识别和生成新的重要特征。更具体地说,CNN
被用来学习neighbor feature interaction
,而MLP
被用来重新组合它们从而提取global feature interaction
。在特征生成之后,特征空间可以通过结合原始特征和新特征来进行扩充。 - 在深度分类器中,几乎所有
SOTA
网络结构(如PIN
、xDeepFM
、DeepFM
)都可以被采用。因此,论文的方法与推荐系统中SOTA
的模型具有良好的兼容性。为了便于说明,作者将采用IPNN
模型作为FGCNN
的深度分类器,因为它在模型的复杂性和准确性之间有很好的权衡。
在三个大规模数据集上的实验结果表明,
FGCNN
明显优于九个SOTA
的模型,证明了FGCNN
的有效性。在深度分类器中采用其他模型时,总是能取得更好的性能,这表明了所生成的特征的有用性。逐步分析表明,FGCNN
中的每个组件都对最终的性能做出了贡献。与传统的CNN
结构相比,论文提出的CNN+MLP
结构在原始特征的顺序发生变化时表现得更好、更稳定,这证明了FGCNN
的鲁棒性。综上所述,论文贡献如下:
- 确定了
CTR
预测的一个重要方向:通过提前自动生成重要的特征来降低深度学习模型的优化难度,这既是必要的,也是有益的。 - 提出了一个新的模型
FGCNN
用于自动生成特征和分类,它由两个部分组成:Feature Generation
、Deep Classifier
。特征生成利用CNN
和MLP
,它们相互补充,以识别重要的但稀疏的特征。 此外,几乎所有其他的CTR
模型都可以应用在深度分类器中,从而根据生成的特征、以及原始的特征进行学习和预测。 - 在三个大规模数据集上的实验证明了
FGCNN
模型的整体有效性。当生成的特征被用于其他模型时,总是能取得更好的性能,这表明FGCNN
模型具有很强的兼容性和鲁棒性。
- 在特征生成中,作者设计了一个
相关工作:
CTR
预测的浅层模型:- 由于鲁棒性和效率高,
Logistic Regression: LR
模型(如FTRL
)被广泛用于CTR
预测中。为了学习特征交互,通常的做法是在其特征空间中手动设计pairwise
特征交互。 Poly-2
建模所有pairwise
特征交互以避免特征工程。Factorization Machine: FM
为每个特征引入了低维向量,并通过特征向量的内积来建模特征交互。在数据稀疏的情况下,FM
提高了建模特征交互的能力。FFM
对每个特征使用多个潜在向量,从而建模与不同field
特征的交互。
LR
、Poly-2
、以及FM
变体被广泛用于工业界的CTR
预测中。- 由于鲁棒性和效率高,
CTR
预测的深层模型:FNN
使用FM
来预训练原始特征的embedding
,然后将embedding
馈入全连接层。一些模型采用
DNN
来改善FM
,如Attentional FM
、Neural FM
。Wide & Deep
联合训练一个wide
模型和一个deep
模型,其中wide
模型利用人工特征工程,而deep
模型学习隐式特征交互。尽管wide
组件很有用,但特征工程很昂贵,而且需要专业知识。为了避免特征工程,
DeepFM
引入了FM Layer
(建模二阶交互)作为wide
组件,并使用deep
组件来学习隐式特征交互。与
DeepFM
不同,IPNN
(也被称为PNN
)将FM Layer
的结果和原始特征的embedding
都馈入MLP
,从而得到相当好的结果。PIN
没有像DeepFM
和IPNN
那样使用内积来建模pairwise
特征交互,而是使用一个Micro-Network
来学习每个feature pair
的复杂特征交互。xDeepFM
提出了一种新颖的Compressed Interaction Network: CIN
,以显式地建模vector-wise level
的特征交互。有一些使用
CNN
进行CTR
预测的模型:CCPM
应用多个卷积层来探索邻居特征的相关性。CCPM
以一定的排列方式对neighbor field
进行卷积。由于特征的顺序在CTR
预测中没有实际意义,CCPM
只能学习邻居特征之间有限的特征交互。《Convolutional Neural Networks based Click-Through Rate Prediction with Multiple Feature Sequences》
中显示,特征的排列顺序对CNN-based
模型的最终性能有很大影响。因此,作者提出生成一组合适的特征序列,为卷积层提供不同的局部信息。然而,CNN
的关键弱点并没有得到解决。
在本文中,我们提出了
FGCNN
模型,它将CTR
预测任务分成两个阶段:特征生成和深度分类器。特征生成阶段通过生成新的特征来增强原始特征空间,而深度分类器可以采用大多数SOTA
模型从而在增强的特征空间中学习和预测。与传统的CNN
模型预测CTR
不同,FGCNN
可以利用CNN
的优势来提取局部信息,并通过引入重组层来重新组合CNN
学到的不同局部模式的信息来生成新的特征,从而大大缓解了CNN
的弱点。在
CTR
预测任务中,是否混洗特征的排列顺序,对于CNN-based
模型会更好?
34.1 模型
如下图所示,
FGCNN
模型由两部分组成:特征生成、深度分类器:- 特征生成侧重于识别有用的局部模式和全局模式,以生成新的特征作为原始特征的补充。
- 深度分类器则通过深度模型在增强的特征空间的基础上进行学习和预测。
除了这两个组件,我们还有
feature embedding
。根据实验部分的结果,通过
CNN
生成的新特征虽然有效果,但是提升不显著(平均而言不到0.1%
的AUC
提升)。如果将
CNN
替换为MLP
,那么特征生成组件就是一个MLP
结构,同时将每一层的输出再投影为新的特征向量。
34.1.1 Feature Embedding
embedding layer
应用于所有原始特征的输入,将原始特征压缩为低维向量。在我们的模型中:- 如果一个
field
是univalent
的(例如,Gender=Male
),它的embedding
就是该field
的feature embedding
。 - 如果一个
field
是multivalent
的(例如,Interest=Football, Basketball
),该field
的embedding
是feature embeddings
之和。
正式而言,在一个样本中,每个
field
$ i $ ( $ 1\le i \le n_f $ , $ n_f $ 为field
数量)被表示为一个低维向量 $ \mathbf{\vec e}_i\in \mathbb R^k $ ,其中 $ k $ 为embedding size
。因此,每个样本可以表示为一个embedding
矩阵 $ \mathbf E = \left(\mathbf{\vec e}_1,\mathbf{\vec e}_2,\cdots,\mathbf{\vec e}_{n_f}\right)^\top\in \mathbb R^{n_f\times k} $ 。在FGCNN
模型中,embedding
矩阵 $ \mathbf E $ 可以在特征生成和深度分类器中得到利用。为了避免更新参数时梯度方向的不一致,我们将为深度分类器引入另一个
embedding
矩阵 $ \mathbf E^\prime\in \mathbb R^{ n_f\times k} $ ,而 $ \mathbf E $ 用于特征生成。这意味着需要引入两套
embedding table
,模型的参数要翻倍(模型参数被embedding table
所主导)。如果
$ \mathbf E $ 和 $ \mathbf E^\prime $ 共享,性能会下降多少?- 如果一个
34.1.2 Feature Generation
如前所述,从原始特征中生成新的特征有助于提高深度学习模型的性能。为了实现这一目标,特征生成组件设计了一个适当的神经网络结构来识别有用的特征交互,然后自动生成新的特征。
正如前面所论证的,由于以下原因,单独使用
MLP
或CNN
无法从原始特征中生成有效的特征交互:- 首先,在原始特征的组合空间中,有用的特征交互总是稀疏的。因此,
MLP
很难从大量的参数中学习它们。 - 其次,虽然
CNN
可以通过减少参数的数量来缓解MLP
的优化困难,但它只产生neighbor feature interaction
,可能会失去许多有用的global feature interaction
。
为了克服单独应用
MLP
或CNN
的弱点,我们将CNN
和MLP
相互补充从而进行特征生成。下图显示了一个CNN + Recombination
结构的例子,以捕捉global feature interaction
。可以看到:CNN
用有限的参数学习有用的neighbor feature pattern
,而重组层(这是一个全连接层)根据CNN
提供的neighbor pattern
生成global feature interaction
。因此,通过这种神经网络结构可以有效地生成重要的特征。相比直接应用MLP
生成特征,这种方法的参数更少。纵向为不同的
field
,横向为不同的embedding
维度,卷积核为 $ K\times 1 $ ,这会在每个embedding
维度上聚合相连的 $ K $ 个field
。最后一步的结果是说明:
Recombination
会把卷积结果进行投影并减少通道数。- 首先,在原始特征的组合空间中,有用的特征交互总是稀疏的。因此,
卷积层:每个样本通过
feature embedding
被表示为embedding
矩阵 $ \mathbf E\in \mathbb R^{n_f\times k} $ 。为方便起见,将embedding
矩阵reshape
为 $ \mathbf E^1\in \mathbb R^{n_f\times k\times 1} $ 作为第一个卷积层的输入矩阵,即通道数为1
。为了捕获neighbor feature interaction
,用非线性激活函数的卷积层对 $ \mathbf E^1 $ 进行卷积,卷积层的输出记做 $ \mathbf C^1\in \mathbb R^{n_f\times k\times m^1_c} $ 。其中,卷积核的尺寸为 $ h^1\times 1 $ 、输出通道数为 $ m^1_c $ 、输入通道数为1
,激活函数为tanh()
, $ h^1 $ 为卷积核的高度(代表对相连的多少个field
进行卷积)。池化层:在第一个卷积层之后,应用一个
maxpooling
层来捕获最重要的特征交互,从而减少参数的数量。令 $ h_p^1 $ 为池化层的高度(池化层的宽度为1
),那么第一个池化层的输出为 $ \mathbf S^1\in \mathbb R^{(n_f/h_p^1)\times k\times m_c^1} $ 。第 $ i $ 个池化层的池化结果将是第 $ (i+1) $ 个卷积层的输入: $ \mathbf E^{i+1} = \mathbf S^i $ 。Recombination Layer
: $ \mathbf S^1 $ 包含了neighbor feature
的模式。由于CNN
的性质,如果 $ \mathbf S^1 $ 被视为生成的新特征,全局性非邻接的特征交互将被忽略。因此,我们引入了一个全连接层来重新组合局部的neighbor feature pattern
并生成重要的新特征。我们将
$ \mathbf S^1 $ 展平为一维向量 $ \mathbf {\vec s}^1\in \mathbb R^{n_fk/h_p^1m_c^1} $ ,那么全连接层的权重矩阵为: $ \mathbf W^1\in \mathbb R^{(n_fk/h_p^1\times m_r^1)\times (n_fk/h_p^1\times m_c^1 )} $ ,bias
向量为 $ \mathbf{\vec b}^1\in \mathbb R^{(n_fk/h_p^1\times m_r^1)} $ 。生成的新特征为:其中
$ m_r^1 $ 为重组层的输出通道数。注意,这里是把全连接层的结果又
reshape
回来。拼接:新的特征可以通过多次执行
CNN+Recombination
来产生。假设有 $ n_c $ 组卷积层、池化层、以及重组层。通过Feature Generation
生成的所有的新特征为:注意,这里也有
reshape
操作。原始特征和新特征的拼接为:
其中
$ \mathbf E^\prime $ 是用于深度分类器的原始特征的embedding
矩阵。令
$ N_i = n_f\times (m_r^i/h_p^i) $ 为第 $ i $ 个重组层得到的新embedding
的数量,它等于 $ n_f $ 乘以一个系数,该系数为重组层的输出通道数除以池化层的高度。令 $ N=\sum_{i=1}^{n_c} N_i $ ,则 $ N $ 表示所有新生成的特征数量。
34.1.3 Deep Classifier
$ \mathbf E_\text{concat} $ 被馈入深度分类器中,其目的是进一步学习原始特征和新生成特征之间的交互。这里我们采用IPNN
模型作为深度分类器的网络结构,因为它在模型复杂性和准确性之间有很好的权衡。事实上,任何先进的网络结构都可以被采用,这表明FGCNN
与现有工作的兼容性。网络结构:
IPNN
模型结合了FM
和MLP
的学习能力。它利用一个FM layer
,通过内积运算从embedding
向量中抽取pairwise
特征交互。之后,input feature
的embedding
和FM layer
的结果被拼接起来,并馈入MLP
进行学习。根据IPNN
原始论文的评估,IPNN
的性能比PIN
略差,但IPNN
的效率更高。我们将对IPNN
模型的网络结构进行说明。如下图所示,增强的
embedding
矩阵 $ \mathbf E_\text{concat} $ 的pairwise
特征交互由FM layer
来建模。 $ \mathbf R_\text{all} $ 的embedding
向量个数为 $ N $ , $ \mathbf E^\prime $ 有 $ n_f $ 个特征向量,因此 $ \mathbf E_\text{concat} $ 有 $ N+n_f $ 个特征向量。FM layer
的输出维度为 $ (N+n_f)(N+n_f-1)/2 $ ,因为embedding
向量之间两两内积。假设
FM layer
的输出为 $ \mathbf {\vec e}_\text{fm}\in \mathbb R^{(N+n_f)(N+n_f-1)/2} $ ,则我们将它和展平后的 $ \mathbf E_\text{concat} $ 进行拼接,然后馈入MLP
:其中
$ [\cdot||\cdot] $ 表示向量拼接。BN
层:在FGCNN
中,Batch Normalization
应用在每个激活函数之前从而加速模型训练。目标函数:最小化交叉熵:
其中:
$ y $ 为ground-truth
, $ \hat y $ 为预测的点击率。
34.1.4 复杂度分析
空间复杂度:空间复杂度由三部分组成,即
Feature Embedding
、Feature Generation
、Deep Classifier
。Feature Embedding
:包含两个embedding
矩阵(一个用于feature generation
、一个用于deep classifier
),总的参数规模为 $ s_0 = 2t_f\times k $ ,其中 $ t_f $ 为总的vocab size
。Feature Generation
:第 $ i $ 个卷积层有 $ h^i m_c^{i-1}m_c^i $ 个参数,其中 $ h^i $ 为卷积核的高度;第 $ i $ 个重组层有 $ (n_fk/h_p^i)^2m_c^im_r^i $ 个参数。因此,这里的参数数量为:Deep Classifier
:令 $ T=N+n_f $ 表示Feature Generation
之后所有的embedding
数量(包括原始的、以及新生成的)。那么Deep Classifier
的空间复杂度为:其中
$ H_i $ 为第 $ i $ 层MLP
的隐层维度, $ n_h $ 为层数。
最终的空间复杂度大约为
$ O(t_fk+N_1^2k^2 + T^2H_1 + \sum_{i=1}^{n_h} H_iH_{i-1}) $ ,其中 $ N_i = n_f/h_p^im_r^i $ 为第 $ i $ 个重组层得到的新embedding
的数量。(具体推导见原始论文)。时间复杂度:
Feature Generation
:时间复杂度约为 $ O(N_1k\sum_{i=1}^{n_c} m_c^{i-1}h^i + N_1^2k^2) $ 。具体推导见原始论文。Deep Classifier
:时间复杂度约为 $ O(T^2H_1) + \sum_{i=2}^{n_h} O(H_iH_{i-1}) $ 。具体推导见原始论文。
最终的时间复杂度约为
$ O(N_1k\sum_{i=1}^{n_c} m_c^{i-1}h^i + N_1^2 k^2 + T^2H_1 + \sum_{i=2}^{n_h} H_iH_{i-1}) $ 。超参数太多了,不太好调优。
34.2 实验
数据集:
Criteo, Avazu, Huawei App Store
。- 对于
Criteo
数据集,我们选择"day 6-12"
作为训练集,同时选择"day 13"
进行评估。由于巨大的数据量和严重的类不平衡(即只有3%
的样本是正样本),我们采用了负采样来保持正负比例接近1:1
。我们通过分桶从而将13
个numerical field
离散化。field
中出现少于20
次的特征被设置为dummy
特征"other"
。 - 对于
Avazu
数据集,我们以4:1
的比例随机拆分为训练集和测试集。同时,我们删除了出现少于20
次的特征以降低维度。 - 对于
Huawei App Store
数据集,我们用20180617 ~ 20180623
的日志用于训练,20180624
的日志用于测试。为了减少数据量并调整正负样本的比例,采用了负采样。
数据集的统计结果如下表所示。
- 对于
baseline
:LR, GBDT, FM, FFM, CCPM, DeepFM, xDeepFM, IPNN, PIN
。Wide & Deep
未参与比较,因为一些SOTA
的模型(如xDeepFM
、DeepFM
、PIN
)在各自的原始论文中显示了更好的性能。我们分别使用XGBoost
和libFFM
作为GBDT
和libFFM
的实现。在我们的实验中,其他baseline
模型是用Tensorflow
实现的。评估指标:
AUC, log loss
。配置:下表给出了每个模型的超参数。
注意,在
Criteo
和Avazu
上进行实验时,我们观察到FGCNN
在深度分类器中使用的参数比其他模型多。为了进行公平的比较,我们也进行了实验,增加其他深度模型的MLP
中的参数。然而,所有这些模型都不能达到比原始设置更好的性能。原因可能是过拟合的问题,这类模型只是简单地使用原始特征的embedding
进行训练,但使用的是复杂的结构。另一方面,由于我们的模型增强augment
了特征空间并丰富了输入,因此在深度分类器中更多的参数可以提高我们模型的性能。在
FGCNN
模型中,new
表示 $ m_r $ 。生成的特征数量可以计算为 $ \sum_{i=1}^{n_c} n_f/h_p^im_r^i $ 。对于
FGCNN
和best baseline model
,我们改变随机数种子并重复实验10
次。我们进行wo-tailed pairwise t-test
来检测FGCNN
和best baseline model
之间的显著差异。整体性能:不同模型在测试集上的表现如下,其中下划线数字是
baseline
模型的最佳结果,粗体数字是所有模型的最佳结果。可以看到:首先,在大多数情况下,非神经网络模型的表现比神经网络模型差。原因是深度神经网络可以学习复杂的特征交互,比没有特征交互建模的模型(即
LR
),或通过简单的内积来建模特征交互的模型(即FM
和FFM
)要好得多。其次,
FGCNN
在三个被评估的数据集上取得了所有模型中最好的性能。它明显优于最佳baseline
模型,在Criteo, Avazu, Huawei App Store
数据集上的AUC
分别提高了0.05%, 0.14%, 0.13%
(logloss
分别改善了0.09%, 0.24%, 0.79%
),这表明了FGCNN
的有效性。第三,在
Criteo, Avazu, Huawei App Store
数据集上,在生成的新特征的帮助下FGCNN
在AUC
方面比IPNN
分别高出0.11%, 0.19%, 0.13%
(在logloss
方面分别改善了0.2%, 0.29%, 0.79%
)。这表明生成的特征是非常有用的,它们可以有效地减少传统DNN
的优化难度,从而导致更好的性能。第四,直接应用
CNN
的CCPM
在神经网络模型中取得了最差的性能。此外,CCPM
在Criteo
数据集和Avazu
数据集上的表现比FFM
差。这表明,直接使用传统的CNN
进行CTR
预测任务是不可取的,因为CNN
被设计为生成neighbor pattern
,而特征的排列顺序在推荐场景中通常没有意义。然而,在
FGCNN
中,我们利用CNN
的优势来提取local pattern
,同时辅以重组层来提取global feature interaction
并生成新的特征。因此,可以实现更好的性能。
FGCNN
与不同模型的兼容性:如前所述,FGCNN
的深度分类器可以采用任何高级深度神经网络。这里我们选择不同的模型作为Deep Classifeir
来验证特征生成的效果,结果如下表所示。可以看到:- 首先,在生成的新特征的帮助下,所有模型的性能都得到了提高,这表明了生成的特征的有效性,并显示了
FGCNN
的兼容性。 - 其次,我们观察到,当只使用原始特征时,
DeepFM
总是优于DNN
。但是当使用被增强的特征时,FGCNN+DNN
优于FGCNN+DeepFM
。可能的原因是DeepFM
将输入特征的内积加到了最后一个MLP
层,这可能会在embeddinng
上引起矛盾的梯度更新(与MLP
相比)。这可能是IPNN
(将乘积结果馈入MLP
)在所有数据集中都优于DeepFM
的原因之一。
总之,结果表明:
FGCNN
模型可以被视为一个通用框架,通过自动生成新的特征来增强现有的神经网络。平均而言,
FGCNN
对DeepFM
和IPNN
等先进模型的提升不显著。- 首先,在生成的新特征的帮助下,所有模型的性能都得到了提高,这表明了生成的特征的有效性,并显示了
FGCNN
变体的有效性:我们进行实验来研究FGCNN
中的每个组件对最终性能的贡献。每个变体都是通过移除或替换FGCNN
中的一些组件而产生的:Removing Raw Features
:在这个变体中,原始特征没有被馈入到深度分类器中,只有生成的新特征被馈入深度分类器。Removing New Features
:这个变体移除了特征生成。实际上,它等同于IPNN
。Applying MLP for Feature Generation
:在这个变体中,特征生成被MLP
取代,MLP
将每个隐层的输出作为新特征。这个变体使用相同的隐层,并在每一层生成与FGCNN
相同数量的特征。Removing Recombination Layer
:这个变体是为了评估重组层如何补充CNN
从而捕获global feature interaction
。重组层被从特征生成中移除,因此池化层的输出直接作为新特征。每层生成的新特征的数量与FGCNN
保持一致。
结果如下表所示。可以看到:
首先,仅有原始特征的
FGCNN
、或仅有新生成的特征的FGCNN
的性能比两者兼有的FGCNN
要差。这一结果表明,生成的特征是对原始特征的良好补充,这两者都很关键。移除原始特征时,效果下降不显著。此时馈入后续
Deep Classifier
的输入向量长度减少一半,可以大幅降低计算量。因此,仅用新生成的特征,是一个比较好的tradeoff
。其次,与
FGCNN
相比,应用MLP
进行特征生成的性能下降,表明MLP
在从大量的参数中识别稀疏的但重要的特征组合方面效果不佳。CNN
通过使用共享卷积核简化了学习的困难,它的参数少得多,可以得到所需的组合。此外,MLP
重新组合由CNN
提取到的neighbor feature interaction
,以产生global feature interaction
。第三,移除重组层将限制生成的特征为
neighbor feature interaction
。由于原始特征的排列顺序在CTR
预测任务中没有实际意义,这种限制会导致失去重要的nonneighbor feature interaction
,从而导致性能下降。
超参数研究:
FGCNN
模型有几个关键的超参数,即卷积核的高度 $ h^i $ 、卷积核的数量 $ m_c^i $ 、卷积层的数量 $ n_c $ 、以及用于生成新特征的核的数量 $ m_r^i $ 。在本小节中,为了研究这些超参数的影响,我们在Criteo
和Huawei App Store
数据集上,通过改变一个超参数而固定其他参数来研究FGCNN
模型的工作情况。卷积核的高度:卷积核的高度
$ h^i $ 控制卷积层的感知范围。高度越大,neighbor pattern
中涉及的特征就越多,但需要优化更多的参数。为了研究其影响,我们将高度从2
增加到数据集的field
数量 $ n_f $ 。结果如下图所示。可以看到:随着卷积核高度的增加,性能一般先升后降。结果表明,随着卷积核中涉及的特征越来越多,可以学习到更高阶的特征交互,从而使性能提高。然而,由于有用的特征交互通常是稀疏的,更大的高度会给有效学习它们带来更多的困难,从而导致性能下降。这一观察结果前面的发现一致,即应用
MLP
进行特征生成时,性能会下降。卷积层的数量:如下图所示,随着卷积层数量
$ n_c $ 的增加,FGCNN
的性能得到了提高。请注意,更多的层通常会导致更高阶的特征交互。因此,该结果也显示了高阶特征交互的有效性。用于生成新特征的核的数量:我们在不同重组层中使用相同的
$ m_r $ ,然后我们试验了 $ m_r $ 在各种取值下的性能,如下图所示。可以看到:随着生成的特征越多,性能就会逐渐提高。
这些结果验证了我们的研究思路,即:
- 首先识别稀疏的但重要的特征交互是有用的,这可以有效降低
DNN
的学习难度。 - 然而,有用的特征交互可能是稀疏的和有限的。如果产生了太多的特征,额外的新特征是有噪声的,这将增加
MLP
的学习难度,导致性能下降。
对原始特征的顺序进行混洗的效果:如前所述,
CNN
的设计是为了捕获local neighbor feature pattern
,所以它对原始特征的排列顺序很敏感。在我们的FGCNN
模型中,重组层的设计是基于CNN
提取的local pattern
来学习global feature interaction
。直观地说,如果原始特征的顺序被混洗,我们的模型应该比传统CNN
的结构有更稳定的性能。因此,为了验证这一点,我们比较了两种情况的性能:with/without Recombination Layer
。原始特征的排列顺序被随机地混洗多次,两个被比较的模型都是在相同的混洗后的排列顺序下进行的。如下图所示,有重组层的模型比没有重组层的模型取得了更好的、更稳定的性能。这表明,在重组层的帮助下,
FGCNN
可以大大减少改变原始特征排列顺序的副作用,这也证明了我们模型的鲁棒性。根据结果来看,似乎重组层的提升也不太明显?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论