数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
六、DCN [2017]
点击率
CTR
预估是一个大规模问题,对价值数十亿美金的在线广告行业至关重要。在广告行业中,广告主向媒体平台付费从而在媒体的网站上展示他们的广告。一种流行的付费方式是按点击付费cost-per-click: CPC
,其中仅发生点击的时候平台才向广告主收费。因此,平台的收入很大程度上依赖于准确预估点击率的能力。特征工程一直是许多预测模型成功的关键。识别常见的、预测性
predictive
的特征,并同时探索未见的unseen
或罕见的交叉特征cross feature
是做出良好预测的关键。然而,这个过程并不简单,而且通常需要手动特征工程或详尽的搜索exhaustive searching
。web-scale
推荐系统的数据大多数是不连续discrete
的、离散categorical
的,导致特征空间庞大而稀疏,这对特征探索带来了挑战。因此大多数大型系统限制为线性模型,如逻辑回归logistic regression
。线性模型简单
simple
、可解释interpretable
、且易于扩展scale
,然而它们的表达能力有限。另一方面,交叉特征cross features
已被证明在提高模型的表达能力方面具有重要意义。不幸的是,交叉特征通常需要手动特征工程或详尽的搜索exhaustive search
来识别 。此外,泛化到未见过unseen
的特征交互feature interactions
是困难的。DNN
模型能够自动学习特征交互feature interactions
,然而它们隐式地生成所有交互,并且在学习某些类型的交叉特征cross features
时不一定有效。在论文
《Deep & Cross Network for Ad Click Predictions》
中,通过引入一种新颖的神经网络结构,交叉网络cross network
,以自动方式显式应用特征交叉feature crossing
,从而避免特定于任务的特征工程。交叉网络由多个交叉层组成,其中交互的最高阶highest-degree
由层的深度决定。每一层在现有阶次交互的基础上产生更高阶的交互,并保留来自前一层的交互。交叉网络和深度神经网络
DNN
联合训练。DNN
虽然可以捕获跨特征across features
的非常复杂的交互,但是和交叉网络相比,DNN
需要几乎高一个数量级的参数、无法显式地形成交叉特征cross features
、并且可能无法有效地学习某些类型的特征交互。通过联合训练交叉网络和DNN
网络,模型可以有效地捕获预测性的特征交互,并且在Criteo CTR
数据集上提供了state-of-the-art
的性能。相关工作:由于数据集的大小和维度的急剧增加,已经提出了许多方法来避免大量的任务特定
task-specific
的特征工程,这些方法大多数基于embedding
技术和神经网络。因子分解机
Factorization machine: FM
将稀疏特征投影到低维稠密向量上,并从向量内积中学习特征交互。field
感知因子分解机field-aware factorization machine: FFM
进一步允许每个特征学习多个向量,其中每个向量与一个field
相关联。遗憾的是,
FM
和FFM
的浅层结构限制了它们的表达能力representative power
。已经有工作将FM
扩展到更高阶,但是一个缺点在于它们的大量参数会产生高昂的计算成本。由于
embedding
向量和非线性激活函数,深度神经网络DNN
能够学习重要的高阶high-degree
特征交互。残差网络最近的成功使得训练非常深的网络成为可能。
Deep Crossing
扩展了残差网络,并通过stacking
所有类型的输入来实现自动特征学习feature learning
。
深度学习的显著成功引发了对其表达能力的理论分析。有研究表明,在给定足够多的隐单元或隐层的情况下,
DNN
能够在某些平滑性假设smoothness assumption
下以任意准确性逼近任意函数。此外在实践中,已经发现DNN
在参数数量适中的情况下运行良好。一个关键的原因是:大多数具有实际兴趣practical interest
的特征都不是任意的。然而,剩下的一个问题是:在代表这种实际兴趣的特征方面,
DNN
是否确实是最有效的。在Kaggle
竞赛中,很多获胜解决方案中的手工制作特征都是低阶low-degree
的,以显式的格式explicit format
并且有效。另一方面,DNN
学习的特征是隐式的,且高度非线性。这为设计一个能够比通用DNN
更有效、更显式地学习有界阶次特征交互的模型提供了启发。Wide & Deep
模型就是这种精神的典范,它将交叉特征cross features
作为线性模型的输入,并与DNN
模型联合训练线性模型。然而,Wide & Deep
的成功取决于交叉特征的正确选择,这是一个指数问题,目前还没有明确有效的方法。论文
《Deep & Cross Network for Ad Click Predictions》
提出了深度交叉网络Deep & Cross Network: DCN
模型,该模型支持具有稀疏和稠密输入的web-scale
自动特征学习。DCN
有效地捕获有界阶次的特征交互,学习高度非线性交互,不需要手动特征工程或详尽的搜索,并且计算成本低。论文的主要贡献包括:
- 提出了一种新颖的交叉网络,它在每一层显式地应用特征交叉,有效地学习有界阶次的、预测性的交叉特征,并且无需手动特征工程或详尽的搜索。
- 交叉网络简单而有效。根据设计,多项式最高阶次在每一层都增加,并且由层的深度来决定。网络由最低阶到最高阶的所有阶次的、系数不同的交叉项
cross terms
来组成。 - 交叉网络内存高效,易于实现。
- 实验结果表明,采用交叉网络的
DCN
的logloss
比DNN
更低,而且DCN
的参数数量相比DNN
要少了接近一个量级。
6.1 模型
我们将描述
DCN
模型的架构,如下图所示。DCN
模型从embedding and stacking
层开始,然后是并行的交叉网络和深度网络,然后是一个组合层combination layer
从而拼接了来自两个网络的输出。Embedding and Stacking Layer
:我们考虑具有稀疏和稠密特征的输入数据。在CTR
预估等web-scale
推荐系统中,输入主要是离散特征,如country=usa
。这些特征通常被编码为one-hot
向量,如[0, 1, 0]
。然而,这通常会导致大型词表vocabulary
的高维特征空间。为了降低维度,我们采用
$ \mathbf{\vec f}_\text{embed}^{(i)} = \mathbf W_\text{embed}^{(i)}\mathbf{\vec f}^{(i)} $embedding
技术将这些二元特征转换为实值的稠密向量(通常称作embedding
向量):其中:
- $ \mathbf{\vec f}_i $ 为第 $ i $ 个
field
的one-hot
向量。 - $ \mathbf{\vec f}_\text{embed}^{(i)} $ 为第 $ i $ 个
field
的embedding
向量。 - $ \mathbf W_\text{embed}^{(i)}\in \mathbb R^{n^{(i)}_e\times n_v^{(i)}} $ 为待优化的、对应的
embedding
矩阵, $ n_e^{(i)} $ 为embedding size
, $ n_v^{(i)} $ 为第 $ i $ 个field
的词表大小。
最后我们将
$ \mathbf{\vec x}_0 = \left[\mathbf{\vec f}_\text{embed}^{(1)}||\cdots||\mathbf{\vec f}_\text{embed}^{(K)}||\mathbf{\vec f}_\text{dense}\right]\in \mathbb R^{n_e^{(1)}+\cdots+n_e^{(K)} + n_d} $embedding
向量以及归一化的稠密特征 $ \mathbf{\vec f}_\text{dense}\in \mathbb R^{n_d} $stack
(即拼接)到单个向量中:其中: $ K $ 为输入的
field
的数量, $ n_d $ 为稠密特征维度, $ || $ 表示向量拼接操作。- $ \mathbf{\vec f}_i $ 为第 $ i $ 个
Cross Network
:我们新颖的交叉网络的核心思想是:以有效的方式应用显式的特征交叉。交叉网络由交叉层
$ \mathbf {\vec x}_{l+1}= f(\mathbf {\vec x}_l,\mathbf {\vec w}_{l},\mathbf {\vec b}_{l}) + \mathbf {\vec x}_l = \mathbf {\vec x}_0 \mathbf {\vec x}_l^\top \mathbf {\vec w}_{l} + \mathbf {\vec b}_{l} + \mathbf {\vec x}_l $cross layers
来组成,每层可以公式化为:其中:
- $ \mathbf{\vec x}_l\in \mathbb R^d $ 为第 $ l $ 层交叉层的输出。
- $ \mathbf{\vec w}_l,\mathbf{\vec b}_l \in \mathbb R^d $ 为第 $ l $ 层交叉层的参数, $ d=n_e^{(1)}+\cdots+n_e^{(K)} + n_d $ 。
注意:这里没有非线性激活函数,因此每一层的输出都是 $ \mathbf{\vec x}_0 $ 的线性函数。
每个交叉层在特征交叉函数 $ f(\cdot) $ 之后加上它的输入,这使得交叉函数 $ f:\mathbb R^d\rightarrow \mathbb R^d $ 拟合残差 $ \mathbf{\vec x}_{l+1} - \mathbf{\vec x}_l $ 。
单个交叉层的可视化如下图所示。
高阶特征交互:交叉网络的特殊结构导致交叉特征的阶次随着层的深度而增加。 $ L $ 层交叉网络的最高多项式阶次(就输入 $ \mathbf{\vec x}_0 $ 而言)是 $ L+1 $ 。
事实上,交叉网络包含输入 $ \mathbf{\vec x}_0 $ 中所有阶次从 $ 1 $ 到 $ L+1 $ 的交叉项
cross term
$ x_{0,1}^{\alpha_1}x_{0,2}^{\alpha_2}\cdots x_{0,d}^{\alpha_d} $ 。详细参考后面的分析。复杂度分析:假设交叉层的数量为 $ L_c $ ,交叉层输入特征维度为 $ d $ ,那么交叉网络的参数数量为 $ d\times L_c\times 2 $ 。
交叉网络的时间和空间复杂度在输入维度 $ d $ 上是线性的。因此,和
deep
组件(DCN
的deep
部分)相比,交叉网络引入的复杂度可以忽略不计,使得DCN
的整体复杂度保持在和传统DNN
相同的水平。这种效率得益于矩阵 $ \mathbf{\vec x}_0\mathbf{\vec x}_l^{\top} $ 的rank-one
属性(即这个矩阵的秩为1
),这使得我们能够生成所有交叉项,而无需计算或存储整个矩阵。
交叉网络的参数太少从而限制了模型的容量。为了捕获高度非线性交互,我们引入了一个并行的深度网络
Deep Network
。
$ \mathbf{\vec h}_{l+1} = \sigma\left(\mathbf W_l \mathbf{\vec h}_l + \mathbf{\vec b}_l^\prime \right) $Deep Network
:深度网络是一个全连接的前馈神经网络,每一个deep layer
可以公式化为:其中: $ \sigma(\cdot) $ 为激活函数, $ \mathbf W_l\in \mathbb R^{d_{l+1}\times d_l},\mathbf{\vec b}_l^\prime\in \mathbb R^{d_{l+1}} $ , $ d_l $ 为 $ \mathbf{\vec h}_l $ 的向量长度。
复杂度分析:假设所有隐层的维度都是 $ d_1=d_2=\cdots=d_{L_d}=m $ ,一共 $ L_d $ 层,则
$ d\times m + m + (m^2+m)\times (L_d - 1) $deep network
的参数数量为:其中:
- 输入为 $ \mathbf{\vec x}_0\in \mathbb R^d $ ,所以第一层的参数数量为 $ d\times m + m $ 。
- 后续的 $ L_d-1 $ 层,每一层的参数数量为 $ m\times m + m $ 。
Combination Layer
:组合层将来自两个网络的输出拼接起来,并将拼接后的向量馈入标准的logits
层。对于二类分类问题,这可以公式化为:
$ p = \text{sigmoid}\left(\mathbf{\vec w}_\text{logits} \cdot\left[\mathbf{\vec x}_{L_c}||\mathbf{\vec x}_{L_d}\right] + b_\text{logits}\right) $其中:
- $ \mathbf{\vec x}_{L_c}\in \mathbb R^d $ 为交叉网络的输出, $ \mathbf{\vec x}_{L_d}\in \mathbb R^m $ 为深度网络的输出,
||
表示向量拼接。 - $ \mathbf{\vec w}_\text{logits}\in \mathbb R^{d+m} $ 为
logits
层的权重向量, $ b_\text{logits}\in \mathbb R $ 为logits
层的bias
,sigmoid(.)
为sigmoid
激活函数。
- $ \mathbf{\vec x}_{L_c}\in \mathbb R^d $ 为交叉网络的输出, $ \mathbf{\vec x}_{L_d}\in \mathbb R^m $ 为深度网络的输出,
模型的损失函数为带正则化的对数似然函数:
$ \mathcal L = -\frac 1N\left(\sum_{i=1}^N \left[y_i\log p_i +(1-y_i)\log(1-p_i)\right]\right) +\lambda \left(\sum||\mathbf W||_2^2+ \sum||\mathbf{\vec w}||_2^2\right) $其中: $ N $ 为样本数量, $ y_i $ 为样本的真实
label
, $ \lambda $ 为L2
正则化系数。我们联合训练交叉网络和深度网络,因为这允许每个
individual
网络在训练期间了解其它网络。
6.2 理论分析
这里我们从理论上分析
DCN
的交叉网络,从而了解它的有效性。交叉网络 可以理解为:多项式逼近polynomial approximation
、FM
泛化generalization to FM
、或者有效投影efficient projection
。在这里为了讨论方便,我们假设所有的
$ |\vec\alpha| = \sum_{i=1}^d \alpha_i,\quad \alpha_i \in \mathbb N $bias
项都是零。记 $ \mathbf{\vec w}_l $ 的第 $ i $ 个元素为 $ w_{l,i} $ 。令 $ \mathbf{\vec x} = (x_{ 1},\cdots,x_{ d})^\top \in \mathbb R^d $ ,交叉项为 $ x_{ 1}^{\alpha_1}\times x_{ 2}^{\alpha_2}\times\cdots \times x_{ d}^{\alpha_d} $ ,其中 $ \vec\alpha=(\alpha_1,\cdots,\alpha_d)^\top\in \mathbb N^d $ 为每一项的度degree
,并且 $ \alpha_i $ 为非负整数。则该交叉项的度为:如果多项式中有多个交叉项,则多项式的度
degree
(也称作阶次)为所有交叉项中degree
的最大值。多项式逼近
polynomial approximation
: 根据Weierstrass
逼近定理,任何在一定平滑性假设smoothness assumption
下的函数都可以通过多项式以任意准确性逼近。因此我们从多项式逼近的角度来分析交叉网络。特别是,交叉网络以一种有效的、表达能力强的、以及更好地泛化到真实世界数据集的方式来逼近相同阶次的多项式。定义多项式:
$ P_n(\mathbf{\vec x}) = \left\{\sum_{\vec \alpha}w_\vec\alpha x_1^{\alpha_1}\cdots x_d^{\alpha_d}\; \bigg|\; 0\le |\vec\alpha|\le n,\vec\alpha\in \mathbb N^d\right\} $该多项式的项一共有 $ O(d^n) $ 个,即参数数量有 $ O(d^n) $ 个。
我们表明,在只有 $ O(d) $ 个参数的情况下,交叉网络可以包含相同阶次多项式中出现的所有交叉项,每个交叉项的系数彼此不同。
定理:考虑一个 $ L $ 层的交叉网络,第 $ l+1 $ 层定义为 $ \mathbf{\vec x}_{l+1} = \mathbf{\vec x}_0\mathbf{\vec x}_l^\top \mathbf{\vec w}_l + \mathbf{\vec x}_l $ 。定义交叉网络的输入 $ \mathbf{\vec x}_0=(x_1,x_2,\cdots,x_d)^\top $ ,交叉网络输出为 $ g_L\left(\mathbf{\vec x}_0\right)= \mathbf{\vec x}_L\cdot \mathbf{\vec w}_L $ ,其中 $ \mathbf{\vec w}_l\in \mathbb R^d $ 为参数。则多元多项式 $ g_L\left(\mathbf{\vec x}_0\right) $ 复现
$ \left\{\sum_{\vec \alpha}c_{ \vec \alpha} (\mathbf{\vec w}_0,\cdots,\mathbf{\vec w}_L) x_1^{\alpha_1}\cdots x_d^{\alpha_d}\; \bigg|\; 0\le |\vec\alpha|\le L+1,\vec\alpha\in \mathbb N^d\right\}\\ c_{ \vec \alpha} (\mathbf{\vec w}_0,\cdots,\mathbf{\vec w}_L) = M_{\vec\alpha}\sum_{\mathbf{\vec i}\in B_{\vec\alpha}}\sum_{\mathbf{\vec j}\in P_\vec\alpha}\prod_{k=1}^{|\vec\alpha|} w_{i_k,j_k} $reproduces
了以下的多项式:其中:
- $ M_\vec\alpha $ 为 $ \mathbf{\vec w}_i $ 无关的常量。
- $ \mathbf{\vec i} = (i_1,\cdots,i_{|\vec\alpha|})^\top $ 为索引向量 , $ B_\vec\alpha = \left\{\mathbf{\vec y}\in \{0,1,\cdots,L\}^{|\vec\alpha|}\bigg |y_i \lt y_j \text{ for } i\lt j \text{ and } y_{\vec\alpha} = L\right\} $ 。
- $ \mathbf{\vec j} = (j_1,\cdots,j_{|\vec\alpha|})^\top $ 为索引向量, $ P_\vec\alpha $ 为索引 $ (\underbrace{1,\cdots,1}_{\alpha_1 },\cdots,\underbrace{d,\cdots,d}_{\alpha_d} ) $ 的所有排列组合构成的集合。
证明见原始论文。
FM
泛化generalization to FM
:交叉网络和FM
模型一样具有参数共享parameter sharing
的精神,并进一步将其扩展到更深的结构。相同点:在
FM
模型中,特征 $ x_i $ 关联一个权重向量 $ \mathbf{\vec v}_i $ ,交叉项 $ x_ix_j $ 的权重计算为 $ \mathbf{\vec v}_i\cdot \mathbf{\vec v}_j $ 。在DCN
中,特征 $ x_i $ 关联一组标量 $ \left\{w_{l,i}\right\}_{l=1}^L $ ,交叉项 $ x_ix_j $ 的权重是来自集合 $ \left\{w_{l,i}\right\}_{l=0}^L $ 和 $ \left\{w_{l,j}\right\}_{l=0}^L $ 的参数的乘积。两种模型中,每个特征都学习了一些独立于其它特征的参数,交叉项的权重是相应参数的某种组合。参数共享不仅使模型更加高效,而且使模型能够泛化到未见
unseen
的特征交互,并对噪声具有更强的鲁棒性。例如,以具有稀疏特征的数据集为例。如果两个二元特征 $ x_i $ 和 $ x_j $ 在训练数据中很少同时出现或者从未同时出现,那么针对交叉项 $ x_ix_j $ 学习的权重将没有任何有意义的预测信息。不同点:
FM
是一种浅层结构,仅限于表达二阶交叉项。相反,DCN
能够表达 $ L $ 阶交叉特征,其中 $ L $ 为交叉网络的深度。因此,交叉网络将参数共享的思想从单层扩展到多层以及高阶交叉项。注意,和高阶FM
不同,交叉网络中的参数数量仅随输入维度 $ d $ 线性增长。
有效投影
$ \mathbf {\vec x}_{l+1} = \mathbf {\vec x}_0\mathbf {\vec x}_l^T \mathbf {\vec w}_{l} = [x_{0,1}x_{l,1},x_{0,1}x_{l,2},\cdots,x_{0,d}x_{l,d}]\begin{bmatrix} \mathbf w_{l} & 0 &\cdots &0\\ 0&\mathbf w_{l} &\cdots &0\\ \vdots&\vdots&\ddots&\vdots\\ 0&0&\cdots&\mathbf w_{l} \end{bmatrix} $efficient projection
:交叉网络的每一层都是在 $ \mathbf{\vec x}_0 $ 和 $ \mathbf{\vec x}_l $ 之间计算成对交互pariwise interaction
,然后投影到 $ d $ 维。其中:
- 行向量包含了 $ d^2 $ 个元素,它代表成对交互
pariwise interaction
$ x_{0,i}x_{l,j},\; 1\le i,j\le d $ 。 - 投影矩阵是一个分块对角矩阵,由 $ \mathbf w_{l} \in \mathbb R^{d} $ 作为列向量来构成。
- 行向量包含了 $ d^2 $ 个元素,它代表成对交互
6.3 实验
这里我们在一些热门的分类数据集上评估
DCN
的性能。数据集 为
Criteo Display Ads
数据集,用于预测广告点击率。数据集包含13
个整数特征和26
个离散特征categorical features
,这些离散特征的基数cardinality
都很高。数据集包含
7
天的11GB
用户日志,大约4100
万条记录。我们使用前6
天的数据进行训练,第7
天的数据随机分成大小相等的验证集和测试集。对于该数据集,
logloss
的0.001
的改进都被认为具有实际意义。当考虑到庞大的用户规模,预测准确性的小幅提升可能会导致公司收入的大幅增加。实现:
DCN
是用TensorFlow
实现的,我们简要讨论使用DCN
进行训练的一些实现细节。数据处理和
embedding
:- 通过应用对数变换
log transform
来对实值特征进行归一化。 - 对于离散特征,我们将特征嵌入到维度为 $ 6\times \text{(category cardinality)}^{1/4} $ 维的
embedding
向量。然后拼接所有embedding
从而得到一个维度为1026
的向量。
- 通过应用对数变换
优化
optimization
:我们使用Adam
优化器应用了mini-batch
随机优化,batch size
设置为512
。我们在深度网络部分采用了batch normalization
,并将梯度裁剪设为100
。正则化
regularization
:我们使用了早停策略early stopping
,因为我们发现L2
正则化或dropout
没有效果。超参数:我们根据隐层数量、隐层维度、初始学习率、交叉层的数量执行
grid search
,然后在实验中报告最佳超参数的结果。- 对于所有模型(包括
baseline
),隐层数量从2 ~ 5
、隐层维度从32 ~ 1024
,初始学习率从1e-4 ~ 1e-3
,增量为1e-4
。 - 对于
DCN
模型,交叉层数量从1 ~ 6
。
所有实验都在训练
step = 150000
处早停,超过该时刻开始发生过拟合。- 对于所有模型(包括
baseline
方法:我们将DCN
和五种模型进行比较:没有交叉网络的DCN
模型(DNN
)、逻辑回归 (LR
)、因子分解机(FM
)、Wide & Deep
(W&D
)、Deep Crossing
(DC
)。DNN
:embedding
层、输出层、超参数调优过程和DCN
完全相同,它和DCN
模型的唯一区别在于DNN
没有交叉层。LR
:我们使用了Sibyl
,一种用于分布式逻辑回归的大规模机器学习系统。整数特征在对数尺度下离散化。交叉特征是由复杂的特征选择工具来选择的。所有的single
特征都被使用。FM
:我们使用一个带有专属细节proprietary details
的FM-based
模型。W&D
:和DCN
不同的是,W&D
的wide
组件将原始稀疏特征作为输入,并依赖于详尽的搜索exhaustive searching
和领域知识domain knowledge
来选择预测性的交叉特征。我们跳过了和
W&D
的比较,因为没有什么好的方法来选择交叉特征。DC
:和DCN
相比,DC
没有形成显式的交叉特征。DC
主要依靠stacking
(即embedding
向量拼接) 和残差单元来构建隐式交叉特征。我们应用了和
DCN
相同的embedding
层(即stacking
),然后是另一个ReLU
层作为一系列残差单元的输入。残差单元的层数从1 ~ 5
来调优,隐层维度从100
到1026
来调优。
6.3.1 性能比较
这里我们首先比较不同模型的
logloss
性能,然后我们详细比较了DCN
和DNN
,即进一步研究了交叉网络带来的影响。不同模型的最佳测试
logloss
参考下表。最佳超参数为:DCN
模型:使用2
层deep layer
,每层维度1024
;使用6
层cross layer
。cross layer
的维度不需要调优,因为该层的维度就等于 $ \mathbf{\vec x}_0 $ 的维度 $ d $ 。DNN
模型:使用5
层deep layer
,每层维度1024
。DC
模型:使用5
层残差单元,残差单元的输入维度为424
、残差单元隐层维度为537
。LR
模型:使用42
个交叉特征。
可以看到:
- 最佳的性能是在最深的交叉架构中发现的,这表明交叉网络的高阶特征交互是有价值的。
DCN
大大优于所有其他模型。特别是,它优于state-of-the-art
的DNN
模型,但是仅使用了DNN
中消耗的40%
的内存。
对于每个模型的最佳超参数设置,我们还报告了
10
次独立运行的测试集logloss
的均值和标准差::DCN
$ 0.4422 \pm 9\times 10^{-5} $ 、DNN
$ 0.4430\pm 3.7\times 10^{-4} $ 、DC
$ 0.4430\pm 4.3\times 10^{-4} $ 。可以看到,DCN
始终大幅优于其它模型。考虑到交叉网络仅引入了 $ O(d) $ 个额外的参数,我们将
DCN
与其deep network
,一个传统的DNN
,进行比较,并在改变内存预算和loss
阈值的同时展示了实验结果。给定一定数量参数,
loss
被报告为在所有学习率和模型结构中最好的验证损失。我们的计算中省略了embedding
层中的参数数量,因为它在两个模型中都相同。下表报告了实现目标
logloss
阈值所需的最少参数数量(比如 $ 7.9\times 10^{5} $ 表示7.9
万个参数)。可以看到,DCN
的内存效率比single DNN
高出近一个量级。这要归功于更有效地学习有界阶次特征交互的交叉网络。下表比较了受固定内存预算影响的神经网络模型的性能,指标为验证集
logloss
。可以看到,DCN
始终优于DNN
。- 在少量参数
small-parameter
的情况下,cross network
中的参数数量和deep network
中的参数数量相当,显著的改进表明cross network
在学习有效特征交互方面更有效。 - 在大型参数
large-parameter
的情况下,DNN
弥补了一些差距,但是DCN
仍然在很大程度上优于DNN
。这表明DCN
可以有效地学习某些类型的有意义的特征交互,这些特征交互即使是巨大的DNN
模型也无法学习。
- 在少量参数
我们通过展示将交叉网络引入给定
DNN
模型的效果来更详细地分析DCN
。我们给出在相同的层数和层维度的情况下比较DNN
和DCN
的最佳性能,然后对于每个设置,我们展示了验证集logloss
如何随着添加更多cross layer
而变化。下表给出了
DCN
和DNN
模型在logloss
上的绝对差异(需要乘以 $ 10^{-2} $ ),负值表示DCN
超越了DNN
。Nodes
表示deep network
隐层维度,layers
表示cross network
深度。DNN
模型相当于将DCN
模型的cross layer
层数设为0
。可以看到:在相同的实验设置下,来自
DCN
模型的最佳logloss
始终优于来自相同结构的single DNN
模型。所有超参数的改进都是一致的,这缓解了初始化和随机优化带来的随机性的影响。下图显示了我们在随机选择的设置上增加
cross layer
层数对验证logloss
的改进。cross layer
层数为0
表示single DNN
模型。layers
表示deep layer
层数,nodes
为deep layer
隐层维度。不同的符号表示deep network
不同的超参数。可以看到:
- 当向
DNN
模型中添加1
个cross layer
时,会有明显的改进。 - 随着更多
cross layer
的引入,对于某些设置的logloss
继续下降,表明引入的交叉项在预测中是有效的;对于其他设置的logloss
开始波动,甚至略有增加,这表明引入的更高阶次的特征交互没有帮助。
- 当向
6.3.2 Non-CTR 数据集
我们表明
DCN
在Non-CTR
预测问题上表现良好。我们使用了来自UCI repository
的forest covertype
数据集(包含581012
个样本和54
个特征)、以及Higgs
数据集(包含1100
万个样本和28
个特征) 。数据集被随机拆分为训练集(90%
)、测试集(10%
)。我们对超参数进行
grid search
,其中:deep layer
层数从1 ~ 10
、层的维度从500 ~ 300
。cross layer
的层数从4 ~ 10
。对于DCN
,输入向量直接馈送到cross network
因此不需要探索cross layer
的维度。- 残差单元的层数从
1~5
,其中隐层维度从50 ~ 300
。
对于
forest covertype
数据集,DCN
以最少的内存消耗实现了 最佳的准确率0.9740
。DNN
和DC
均达到0.9737
。此时最佳超参数设置为:DCN
:8
层维度为54
的cross layer
,6
层维度为292
的deep layer
。DNN
:7
层维度为292
的deep layer
。DC
:4
层残差单元,残差单元的输入维度为271
、残差单元隐层维度为287
。
对于
Higgs
数据集,DCN
达到了最好的测试logloss 0.4494
,而DNN
达到了0.4506
。DCN
在使用DNN
一半的内存并且超越了DNN
。此时最佳超参数设置为:DCN
:4
层维度为28
的cross layer
、4
层维度为209
的deep layer
。DNN
:10
层维度为196
的deep layer
。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论