数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
七、DeepFM [2017]
点击率
CTR
预估在推荐系统中至关重要,即估计用户点击推荐item
的概率。在很多推荐系统中,系统的目标是最大化点击次数,因为返回给用户的item
可以根据估计的点击率进行排序。而在其它应用场景中,例如在线广告,提高平台的收入也很重要,因此可以将排序策略调整为CTR x bid
,其中出价bid
是平台在item
被用户点击时获取的收益。无论哪种情况,很明显,关键在于正确预估点击率。了解用户点击行为背后隐式的特征交互
feature interaction
对点击率预估很重要。通过我们在主流app
市场的研究,我们发现人们经常在用餐时间下载外卖app
,这表明app
类别category
和时间戳之间的交互(二阶交互)可以作为点击率的信号。作为第二个观察,男性青少年喜欢射击游戏和RPG
游戏,这意味着app
类别、用户性别、年龄的交互(三阶交互)是点击率的另一个信号。一般而言,用户点击行为背后的特征交互可能非常复杂,低阶特征交互和高阶特征交互都应该发挥重要作用。根据谷歌的Wide & Deep
模型的见解,同时考虑低阶特征交互和高阶特征交互,比单独考虑任何一种情况都带来了额外的改进。关键的挑战在于有效地建模特征交互。一些特征交互很容易理解,因此可以由专家设计(例如前面的例子)。然而:
- 大多数其它特征交互都隐藏在数据中,并且难以先验地识别(例如,经典的关联规则 “尿布和啤酒” 是从数据中挖掘出来的,而不是由专家发现的),只能通过机器学习自动捕获。
- 即使对于易于理解的交互,专家似乎也不太可能对它们进行详尽
exhaustively
的建模,尤其是当特征数据量很大时。
尽管简单,广义线性模型(例如
FTRL
)在实践中表现出不错的表现。然而,线性模型缺乏学习特征交互的能力。一种常见的做法是在线性模型的特征向量中手动包含pairwise
的特征交互。但是这种方法很难推广到建模高阶特征交互、或者建模训练数据中从未出现或者很少出现的特征交互。因子分解机
Factorization Machine: FM
将pairwise
特征交互建模为特征之间潜在向量的内积,并显示出非常有希望的结果。虽然理论上FM
可以建模高阶特征交互,但是实际上由于复杂性太高,因此通常只考虑二阶特征交互。作为学习特征
representation
的强大方法,深度神经网络具有学习复杂特征交互的能力。一些想法将CNN
和RNN
扩展到CTR
预测,但是基于CNN
的模型倾向于相邻特征之间的交互,而基于RNN
的模型更适合具有顺序依赖性sequential dependency
的点击数据。FNN
模型在应用DNN
之前预训练了FM
,因此模型受到FM
能力的限制。PNN
在embedding
层和全连接层之间引入了product layer
。正如Wide & Deep
论文所述,PNN
和FNN
像其它深度模型一样很少捕获低阶特征交互,而低阶特征交互对于CTR
预测也是必不可少的。为了同时建模低阶特征交互和高阶特征交互,Wide & Deep
模型结合了线性模型 (wide
部分)和深度模型(deep
部分)。在Wide & Deep
模型中,wide
部分和deep
部分分别需要两个不同的输入,并且wide
部分的输入仍然依赖于专业的特征工程。可以看到,现有模型偏向于低阶特征交互(如
FM
模型)、或者偏向于高阶特征交互(如DNN
模型)、或者依赖于手动特征工程(如Wide & Deep
)。在论文《DeepFM: A Factorization-Machine based Neural Network for CTR Prediction》
中,论文证明了有可能导出一个学习模型,该模型能够以端到端的方式同时学习低阶特征交互和高阶特征交互,并且除了原始特征之外无需任何手动特征工程。论文的主要贡献如下:- 论文提出了一种新的神经网络模型
DeepFM
,它集成了FM
和DNN
架构。DeepFM
建模了像FM
这类的低阶特征交互,也建模了像DNN
这类的高阶特征交互。和Wide & Deep
模型不同,DeepFM
可以在没有任何特征工程的情况下进行端到端的训练。 DeepFM
可以有效地训练,因为它的wide
部分和deep
部分共享相同的输入和embedding
向量,这和Wide & Deep
不同。在Wide & Deep
中,输入向量的维度可能很大,因为在它的wide
部分的输入向量包含手动设计的pairwise
特征交互,这大大增加了模型的复杂性。- 论文在
benchmark
数据和商业数据上评估了DeepFM
,结果显示:和现有的CTR
预测模型相比,DeepFM
有一致的提升。
相关工作:本文提出了一种新的深度神经网络用于点击率预测。最相关的领域是推荐系统中的点击率预测和深度学习。这里我们讨论这两个领域的相关工作。
点击率预测在推荐系统中起着重要作用。除了广义线性模型和
FM
之外,还有一些其它模型用于CTR
预测,例如tree-based
模型(《Practical lessons from predicting clicks on ads at facebook》
)、tensor-based
模型(《Pairwise interaction tensor factorization for personalized tag recommendation》
)、支持向量机、贝叶斯模型等等。另一个相关的领域是推荐系统中的深度学习。在正文部分我们会提到几种用于
CTR
预测的深度学习模型,这里不再赘述。除了
CTR
预测之外,推荐任务中还有几种深度学习模型。《Restricted boltzmann machines for collaborative filtering》
提出通过深度学习来改进协同过滤。《Improving content-based and hybrid music recommendation using deep learning》
通过深度学习提取内容特征来提高音乐推荐的性能。《Deep CTR prediction in display advertising》
设计了一个深度学习网络来考虑展示广告的图像特征和基础特征。《Deep neural networks for youtube recommendations》
为YouTube
视频推荐开发了一个两阶段深度学习框架。
7.1 模型
假设训练集 $ \mathcal D=\{\mathbf{\vec x}_i,y_i\}_{i=1}^n $ 包含 $ n $ 个样本,其中:
$ \mathbf{\vec x}_i $ 为样本 $ i $ 的特征,包含
user
和item
的、一共 $ m $ 个field
数据。这些field
可能是离线的categorical
或者连续的。对于离散field
,我们进行one-hot
编码从而得到one-hot
向量。对于连续field
,我们直接使用特征本身,或者先离散化discretization
之后再进行one-hot
编码。假设样本 $ i $ 在
$ \mathbf{\vec x}_i = \left[\mathbf{\vec f}_i^{(1)}\|\cdots \| \mathbf{\vec f}_i^{(m)}\right] $field
$ j $ 的representation
为 $ \mathbf{\vec f}_i^{(j)} $ ,那么有:其中 $ || $ 表示向量拼接。
$ y_i\in \{0,1\} $ 为
ground truth
,表示用户是否点击。
通常 $ \mathbf{\vec x}_i $ 为高维、非常稀疏的向量。
CTR
预估任务就是构建模型 $ \hat y = \text{CTR_model}(\mathbf{\vec x}) $ 从而预估用户在给定上下文中点击目标item
的概率。我们的目标是同时学习低阶特征交互和高阶特征交互。为此,我们提出了一个基于
Factorization-Machine: FM
的神经网络DeepFM
。如下图所示,DeepFM
由共享相同输入的两个组件组成:FM
组件和deep
组件。对于特征 $ i $ ,我们使用标量 $ w_i $ 来衡量其一阶重要性,使用潜在向量 $ \mathbf{\vec v}_i $ 来衡量它与其它特征交互的影响。 $ \mathbf{\vec v}_i $ 被馈入
FM
组件从而建模二阶特征交互,同时被馈入deep
组件从而建模高阶特征交互。所有参数,包括 $ w_i $ 、 $ \mathbf{\vec v}_i $ 、以及网络参数(如下面的 $ \mathbf W^{(l)}, \mathbf{\vec b}^{(l)} $ )都是针对组合的预测模型来联合训练的:
$ \hat y = \text{sigmoid}\left(y_\text{FM} + y_\text{DNN}\right) $其中: $ \hat y\in (0,1) $ 为预估的
CTR
; $ y_\text{FM} $ 为FM
组件的输出; $ y_\text{DNN} $ 为deep
组件的输出。FM
组件:如下图所示,该部分是一个FM
,用于学习一阶特征和二阶交叉特征。
$ \hat y_{FM} = \sum_{i=1}^d (w_i\times x_i) + \sum_{i=1}^d\sum_{i=j+1}^d (\mathbf{\vec v}_i\cdot \mathbf{\vec v}_j)\times x_{i} \times x_{j } $FM
组件由两种操作组成:加法Addition
和内积Inner Product
:其中: $ \mathbf{\vec v}_i\in \mathbb R^k $ , $ k $ 为每个
field
的embedding
维度, $ d $ 为输入特征的维度。第一项
Addition Unit
用于对一阶特征重要性建模,第二项Inner Product
用于对二阶特征重要性建模。deep
组件:如下图所示,该部分是一个全连接的前馈神经网络,用于学习高阶特征交互。与图像数据、音频数据作为输入(输入纯粹是连续的和稠密的)的神经网络神经网络相比,
CTR
预测的输入有很大的不同,这就需要新的网络架构设计。具体而言,CTR
预测的原始特征输入向量通常是高度稀疏的、超高维的、混合了离散和连续的、并按照field
分组(如性别、位置、年龄)。这建议在馈入第一个隐层之前,embedding
层将输入向量压缩为低维的、稠密的实值向量,否则网络难以训练。下图重点显示了从输入层到
embedding
层的子网结构。我们想指出这个子网结构的两个有趣的特性:虽然不同输入
field
特征向量的长度可以不同,但是它们的embedding
长度 $ k $ 相同。FM
中的潜在特征向量 $ \mathbf V=\{\mathbf{\vec v}_i\}_{i=1}^d $ 现在用作网络权重,这些权重被学习并用于将输入field
特征向量压缩为embedding
向量。在
FNN
中, $ \mathbf V $ 由FM
预训练并用于网络权重的初始化。在这项工作中,我们没有像FNN
那样使用FM
的潜在特征向量来初始化网络,而是将FM
模型作为我们整体学习架构的一部分。因此,我们消除了FM
预训练的需要,而是以端到端的方式联合训练整个网络。
假设
$ \mathbf{\vec h}^{(l+1)} = \sigma\left(\mathbf W^{(l)}\mathbf{\vec h}^{(l)} +\mathbf{\vec b}^{(l)} \right) $embedding
层的输出为: $ \mathbf{\vec h}^{(0)} = \left[\mathbf{\vec e}_1,\cdots,\mathbf{\vec e}_m\right] $ ,其中 $ \mathbf{\vec e}_i $ 为field i
的embedding
向量, $ \mathbf{\vec h}^{(0)} $ 为前馈神经网络的输入。则有:其中: $ l $ 为第
l
层, $ \sigma(\cdot) $ 为激活函数, $ \mathbf W^{(l)},\mathbf{\vec b}^{(l)} $ 为第 $ l $ 层的权重矩阵和bias
向量。最终有:
$ y_{DNN} = \sigma\left(\mathbf {\vec w}_{dnn}\cdot \mathbf{\vec h}^{(L)} + b_{dnn}\right) $$ L $ 为
deep
部分的网络深度。DeepFM
和其它神经网络模型的区别:FNN
:FNN
是一个FM
初始化的前馈神经网络。FM
预训练策略有两个限制:embedding
参数可能会受到FM
的过度影响over affected
;预训练阶段引入的开销降低了模型效率。此外,FNN
仅捕获了高阶特征交互。相比之下,
DeepFM
不需要预训练,可以同时学习高阶特征交互和低阶特征交互。PNN
:为了捕获高阶特征交互,PNN
在embedding
层和第一个隐层之间强加了一个product layer
。根据product
运算的不同类型,有IPNN
、OPNN
、PNN*
三种变体,其中IPNN
基于向量的内积、OPNN
基于向量的外积、PNN*
同时采用了IPNN
和OPNN
结果的拼接。为了使得计算更高效,作者提出了内积和外积的近似计算:通过移除一些神经元来近似计算内积;通过将 $ m $ 个 $ k $ 维特征向量压缩为一个 $ k $ 维向量来近似计算外积。
然而,我们发现外积结果不如内积结果可靠,因为外积的近似计算丢失了很多信息,使得结果不稳定。内积虽然更可靠,但是仍然存在计算复杂度高的问题,因为
product layer
的输出连接到第一个隐层的所有神经元。与
FNN
一样,所有PNN
都忽略了低阶特交互。与
PNN
不同的是,DeepFM
中的product layer
(即FM
的二阶交互)的输出仅连接到最终输出层(一个神经元)。并且DeepFM
同时考虑了高阶特征交互和低阶特征交互。Wide & Deep
:虽然Wide&Deep
也可以对低阶特征和高阶特征同时建模,但是wide
部分需要人工特征工程,而这需要业务专家的指导。相比之下,DeepFM
直接处理原始特征,不需要任何业务知识。另外,
Wide & Deep
的一个直接扩展是:使用FM
代替wide
部分的LR
模型,记作FM & DNN
模型,原始的Wide & Deep
模型记作LR & DNN
模型。FM & DNN
模型更类似于DeepFM
模型,但是DeepFM
在FM
和DNN
之间共享embedding
特征。这种特征embedding
的共享策略同时通过低阶特征交互和高阶特征交互来影响特征的representation
学习,使得学到的特征representation
更加精确。
总而言之,
DeepFM
和其它深度模型在四个方面的关系如下表所示。可以看到,DeepFM
是唯一不需要预训练和特征工程的模型,同时捕获了低阶特征交互和高阶特征交互。
7.2 实验
这里我们根据经验比较
DeepFM
和其它state-of-the-art
的模型。评估结果表明,我们的DeepFM
比任何其它state-of-the-art
模型更有效,并且DeepFM
的效率可以与其它模型中最好的模型相媲美。数据集:
Criteo Display Ads
数据集:用于预测广告点击率的数据集,包含13
个连续continuous
特征,26
个离散categorical
特征。数据包含
7
天的11 GB
用户日志(约4100万
条记录)。我们将数据集拆分为90%
训练集和10%
测试集。Company*
数据集:为了验证DeepFM
在实际工业CTR
预估中的性能,我们在Company*
数据集上进行了实验。我们从华为
App Store
的游戏中心收集连续7
天的用户点击数据作为训练集,第八天的数据作为测试集,整个训练集+测试集约10
亿条记录。在这个数据集中,有app
特征(如id
、类目category
等等)、用户特征(如用户已经下载过的app
)、上下文特征(如操作时间)。
评估指标:
AUC
和Logloss
。baseline
方法:我们比较了9
种模型,包括:LR, FM, FNN, PNN(3种变体), Wide & Deep, DeepFM
。另外,在
Wide & Deep
模型中,为了省去手动特征工程的工作量,我们将FM
代替了LR
作为wide
部分。这个变体我们称作FM & DNN
,原始的Wide & Deep
我们称作LR & DNN
。配置:对于
Company*
数据集,通过超参数搜索来获取最佳超参数。对于Criteo
数据集,超参数为:FNN
和PNN
:dropout rate = 0.5
;采用Adam
优化器;三层网络结构,每层的神经元数量分别为400 - 400 - 400
;IPNN
模型的激活函数为为tanh
,其它模型的激活函数为relu
。DeepFM
:与FNN/PNN
相同。LR
:使用FTRL
优化器。FM
:采用Adam
优化器;FM
的embedding
向量维度为10
。
7.2.1 性能评估
模型效率
$ \frac{\text{模型训练时间}}{\text{LR模型的训练时间}} $efficiency
对比:深度学习模型的效率对现实世界的application
很重要。我们通过以下公式比较不同模型在Ctriteo
数据集上的效率:实验结果如下图所示,包括在
CPU
(左图)和GPU
(右图)上的测试。可以看到:FNN
的预训练步骤拉低了它的训练效率。- 虽然
IPNN
和PNN*
在GPU
上的加速比其它模型更高,但是由于内积的低效运算,IPNN
和PNN*
的计算成本仍然很高。 DeepFM
在所有模型中,训练效率几乎是最高的。
效果
effectiveness
比较:不同模型在这两个数据集上的点击率预测性能如下表所示。可以看到:学习特征交互提高了点击率预测模型的性能。这个观察结果是因为
LR
模型(这是唯一不考虑特征交互的模型)比其它模型表现更差。作为最佳模型,
DeepFM
在Company*
和Criteo
数据集上的AUC
比LR
分别高出0.86%
和4.18%
(Logloss
方面分别为1.15%
和5.60%
)。同时学习高阶特征交互和低阶特征交互,可以提高
CTR
预测模型的性能。DeepFM
优于仅学习低阶特征交互的模型(即FM
),也优于仅学习高阶特征交互的模型(即FNN、IPNN、OPNN、PNN*
)。和第二好的模型相比,
DeepFM
在Company*
和Criteo
数据集上的AUC
分别提高了0.37%
和0.25%
(Logloss
方面分别为0.42%
和0.29%
)。同时学习高阶特征交互和低阶特征交互,并且对高阶特征交互和低阶特征交互共享
feature embedding
,可以提高CTR
预测模型的性能。DeepFM
优于使用单独特征embedding
来学习高阶特征交互和低阶特征交互的模型(即LR & DNN
和FM & DNN
)。和这两个模型相比,DeepFM
在Company*
和Criteo
数据集上的AUC
分别提高了0.48%
和0.33%
(Logloss
方面分别为0.61%
和0.66%
)。
总体而言,我们提出的
DeepFM
模型在Company*
数据集上的AUC
和Logloss
分别超过了竞争对手0.37%
和0.42%
。事实上,离线AUC
评估的小幅提升很可能会导致在线CTR
的大幅提升。正如Wide & Deep
报道的,相比较于LR
,Wide & Deep
离线AUC
提高了0.275%
,但是在线CTR
提高了3.9%
。Company*’s App Store
每天的营业额为数百万美元,因此即使点击率提高几个百分点,每年也会带来额外的数百万美元。
7.2.2 超参数研究
我们在
Company*
数据集上研究了不同深度模型的不同超参数的影响,其中包括:激活函数、dropout
比率、每层神经元数量、隐层的层数、网络形状。激活函数:根据论文
《 Product based neural networks for user response prediction》
,relu
和tanh
比sigmoid
更适合深度模型。这里我们比较了relu
和tanh
激活函数,结果如下图所示。可以看到:几乎所有的深度学习模型中,
relu
比tanh
效果更好。但是IPNN
是例外,可能原因是relu
导致了稀疏性。dropout
:我们将dropout
设置为[1.0, 0.9, 0.8, 0.7, 0.6, 0.5]
,结果如下图所示。当设置正确的dropout
比例(从0.6~0.9
)时,模型可以达到最佳性能。这表明向模型添加一定的随机性可以增强模型的鲁棒性。每层的神经元数量:当其它超参数保持不变,增加每层的神经元数量会带来复杂性。
如下图所示,增加神经元数量并不总是带来好处。例如,当每层神经元数量从
400
增加到800
时,DeepFM
性能稳定,而OPNN
的表现更差。这是因为过于复杂的模型很容易过拟合。在我们的数据集中,每层200 ~ 400
个神经元是个不错的选择。隐层的层数:如下图所示,一开始增加隐层的层数会提高模型性能。但是,如果隐层的层数不断增加,模型的性能就会下降。这种现象也是因为过拟合。
网络形状:我们测试了四种不同的网络形状:恒定形
constant
、递增形increasing
、递减形decreasing
、菱形diamond
。当我们改变网络形状时,我们固定隐层的数量和神经元总数。例如,当隐层的数量为
3
、神经元总数为600
时,四种不同形状的每层神经元数量为:恒定性200 - 200 -200
、递增形100 - 200 - 300
、递减形300 - 200 - 100
、菱形150 - 300 - 150
。实验结果如下图所示,可以看到:恒定形网络在经验上优于其它三种形状,这与
《Exploring strategies for training deep neural networks》
的研究结果一致。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论