数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
十六、DeepMCP [2019]
点击率
click-through rate: CTR
预估是预测用户点击某个item
的概率。它在在线广告系统中扮演着重要的角色。例如,广告排序策略通常取决于CTR x bid
,其中bid
为广告的点击出价。此外,根据常见的cost-per-click: CPC
扣费模式,广告主仅在用户点击广告之后才扣费。因此,为了最大限度地提高收入并保持理想的用户体验,准确预估广告的CTR
至关重要。CTR
预估引起了学术界和工业界的广泛关注。例如:逻辑回归
Logistic Regression: LR
模型考虑了线性的特征重要性,并将预测的CTR
建模为: $ \hat y = \sigma\left(b+ \mathbf{\vec w}^\top\mathbf{\vec x} \right) $ ,其中 $ \sigma(\cdot) $ 为sigmoid
函数, $ \mathbf{\vec w} $ 为权重系数, $ b $ 为bias
, $ \mathbf{\vec x} $ 为特征向量。分解机
Factorization Machine: FM
模型进一步对pairwise
特征交互interaction
进行建模。它将预估的CTR
建模为: $ \hat y = \sigma\left(b+\mathbf{\vec w}^\top\mathbf{\vec x} + \sum_{i}\sum_{j} (\mathbf{\vec v}_i^\top \mathbf{\vec v}_j)\times x_ix_j\right) $ ,其中 $ \mathbf{\vec v}_i $ 为第 $ i $ 个特征的潜在embedding
向量, $ x_i $ 为第 $ i $ 个特征的取值。近年来,深度神经网络
Deep Neural Network: DNN
被广泛用于CTR
预估和item
推荐,从而自动学习特征representation
和高阶特征交互。为了同时利用浅层模型和深层模型,人们还提出了混合模型。例如:
Wide & Deep
结合了LR
和DNN
,从而提高模型的memorization
和generalization
能力。DeepFM
结合了FM
和DNN
,从而进一步提高了学习特征交互的模型能力。Neural Factorization Machine: NFM
结合了FM
的线性和DNN
的非线性。 尽管如此,这些模型仅考虑了feature-CTR
关系,并且存在数据稀疏问题。论文《Representation Learning-Assisted Click-Through Rate Prediction》
提出的DeepMCP
模型额外考虑了feature-feature
关系,例如如user-ad
关系、ad-ad
关系,从而学习更多信息丰富的、统计可靠的特征representation
,最终提高CTR
预估的性能。下图说明了DeepMCP
(图(b)
) 和其它方法图(a)
)的主要区别:
(a)
:经典的CTR
预估方法建模feature-CTR
关系。(b)
:DeepMCP
进一步对feautre-feature
关系进行建模,诸如user-ad
关系(虚实线)、ad-ad
关系(点线)。
注意:
FM
模型中的特征交互仍然是建模feature-CTR
关系。可以将其视为tow_features-CTR
关系,因为它建模了特征交互 $ \mathbf{\vec v}_i^\top\mathbf{\vec v}_jx_ix_j $ 和CTR
$ \hat y $ 的关系,但是并未建模两个特征representation
$ \mathbf{\vec v}_i $ 和 $ \mathbf{\vec v}_j $ 是否应该彼此相似。其中 $ \mathbf{\vec v}_i $ 是第 $ i $ 个特征的latent embedding
向量, $ x_i $ 是第 $ i $ 个特征的取值。更具体而言,论文提出的
DeepMCP
模型包含三个部分:一个matching subnet
、一个correlation subnet
、一个prediction subnet
,这也是DeepMCP
模型名称的由来。这三个部分共享相同的embedding
矩阵。matching subnet
对user-ad
的关系(即,广告是否匹配用户的兴趣)进行建模,并旨在学习有用的用户representation
和有用的广告representation
。correlation subnet
对ad-ad
的关系(即,哪些广告位于用户点击序列的时间窗口内)进行建模,并旨在学习有用的广告representation
。prediction subnet
对feature-CTR
关系进行建模,并旨在预测在给定所有特征的条件下的CTR
。
当这些
subnet
在目标label
的监督下联合优化时,学到的特征representation
既具有良好的预测能力、又具有良好的表达能力。此外,由于同一个特征以不同的方式出现在不同的subnet
中,因此学到的representation
在统计上更加可靠。总之,论文的主要贡献是:
- 论文提出了一种用于
CTR
预估的新模型DeepMCP
。与主要考虑feature-CTR
关系的经典CTR
预估模型不同,DeepMCP
进一步考虑了user-ad
关系和ad-ad
关系。 - 论文对两个大规模数据集进行了大量实验,从而比较了
DeepMCP
和其它几个state-of-the-art
模型的性能。论文还公开了DeepMCP
的实现代码。
相关工作:
CTR
预估:CTR
预估引起了学术界和工业界的广泛关注。- 广义线性模型,如逻辑回归
Logistic Regression: LR
和Follow-The-Regularized-Leader: FTRL
在实践中表现出不错的性能。然而,线性模型缺乏学习复杂特征交互的能力。 - 分解机
Factorization Machine: FM
以被涉及特征的潜在向量latent vector
的形式对pairwise
特征交互建模。 Field-aware FM
和Field-weighted FM
进一步考虑了特征所属field
的影响,从而提高FM
的性能。
近年来,深度神经网络
Deep Neural Network
被广泛用于CTR
预估和item
推荐,以自动学习特征representation
和高阶特征交互。Factorization-machine supported Neural Network: FNN
在应用DNN
之前预训练FM
。Product-based Neural Network: PNN
在embedding layer
和全连接层之间引入了product layer
。Wide & Deep
结合了LR
和DNN
,从而提高模型的memorization
和generalization
能力。DeepFM
像FM
一样对低阶特征交互进行建模,并像DNN
一样对高阶特征交互进行建模。Neural Factorization Machine: NFM
结合了FM
的线性和神经网络的非线性。
尽管如此,这些方法主要是对
feature-CTR
关系进行建模。我们提出的DeepMCP
模型进一步考虑了user-ad
和ad-ad
的关系。- 广义线性模型,如逻辑回归
Multi-modal / Multi-task Learning
:我们的工作也与多模态/多任务学习密切相关,其中引入了多种信息或辅助任务来帮助提高main task
的性能。《Collaborative knowledge base embedding for recommender systems》
利用知识库knowledge base
中的异质信息heterogeneous information
(如结构化内容、文本内容、视觉内容)来提高推荐系统的质量。《Recommendation with multisource heterogeneous information》
除了利用经典的item
结构信息之外,还利用文本内容和社交tag
信息来改进推荐。《Improving entity recommendation with search log and multi-task learning》
引入上下文感知排序context-aware ranking
作为辅助任务,以便更好地对实体推荐中的query
语义进行建模。《Deep cascade multi-task learning for slot filling in online shopping assistant》
提出了一种多任务模型,该模型额外学习了segment tagging
和named entity tagging
,从而用于在线购物助手中的槽位slot
填充。
在我们的工作中,我们解决了一个不同的问题。我们引入了两个辅助的、但是相关的任务(即共享了
embedding
的matching subnet
和correlation subnet
)来提高CTR
预估的性能。
16.1 模型
在线广告中点击率预估任务是估计用户点击特定广告的概率。下表展示了一些样本实例,每一行都是
CTR
预估的一个样本。其中第一列是label
(点击是1
、未点击是0
)。每个样本可以用多个field
来描述,例如用户信息field
(用户ID
、城市等)和广告信息field
(创意ID
、标题等)。field
的实例化对应了一个特征。与大多数主要考虑
feature-CTR
关系的现有CTR
预估模型不同,我们提出的DeepMCP
模型额外考虑了user-ad
和ad-ad
关系。DeepMCP
包含三个部分:一个matching subnet
、一个correlation subnet
、一个prediction subnet
,如下图(a)
所示。当这些subnet
在目标label
的监督下联合优化时,学到的特征representation
既具有良好的预测能力、又具有良好的表达能力。DeepMCP
的另一个特点是:尽管在训练过程中所有subnet
都处于活跃状态,但是在测试过程中只有prediction subnet
处于活跃状态,如下图(b)
所示。这使得测试阶段变得相当简单和高效。我们将特征分为四组:用户特征(如用户
ID
、年龄)、query
特征(如query
、query category
)、广告特征(如创意ID
、广告标题)、其它特征(如一天中的小时、星期)。每个subnet
使用不同的特征集合。具体而言:prediction subnet
使用所有四组特征,matching subnet
使用user, query, ad
三组特征,correlation subnet
仅使用ad
特征。所有subnet
共享相同的embedding
矩阵。注意:
Context ad features
和Negative ad features
是correlation subnet
中,位于用户点击序列的时间窗口内上下文广告、以及窗口外的负采样广告。它们仅用于correlation subnet
。DeepMCP
的整体结构如下图所示,所有的subnet
共享相同的embedding
矩阵。
16.1.1 Prediction Subnet
prediction subnet
这里是一个典型的DNN
模型,它对feature-CTR
关系进行建模(其中显式地或隐式地对特征交互进行建模)。它旨在在目标label
的监督下,根据所有特征预估点击率。尽管如此,DeepMCP
模型非常灵活,可以使用任何其它CTR
预估模型来代替prediction subnet
,如Wide & Deep
、DeepFM
等。prediction subnet
的整体结构为:首先,单个特征 $ x_i\in \mathbb R $ (如用户
ID
)通过一个embedding
层,然后映射到对应的embedding
向量 $ \mathbf{\vec e}_i\in \mathbb R^K $ ,其中 $ K $ 为embedding
向量维度, $ \mathbf{\vec e}_i $ 为待学习的参数。假设特征 $ x_i $ 的取值集合规模为 $ N $ ,则这个特征所有
embedding
的集合构成一个embedding
矩阵 $ \mathbf E\in \mathbb R^{N\times K} $ 。注意:
- 这里假设所有特征都是离散的。如果存在连续值的特征,则需要首先对其进行离散化。
- 对于多类别的离散特征(如广告标题中的
bi-gram
,一个广告标题可能包含多个bi-gram
),我们首先将每个bi-gram
映射到一个embedding
向量,然后再执行一个sum pooling
从而得到广告标题的、聚合后的embedding
向量。
接着,我们将样本的所有特征的
embedding
向量拼接为一个长的向量 $ \mathbf{\vec m} $ 。然后向量 $ \mathbf{\vec m} $ 经过若干层全连接层fully connected:FC
层(带有ReLU
非线性激活函数),从而学到高阶的非线性特征交互。最后,最后一层
$ \hat y = \frac{1}{1+\exp\left[-\left(\mathbf{\vec w}^\top\mathbf{\vec z} + b\right)\right]} $FC
层的输出 $ \mathbf{\vec z} $ 通过一个sigmoid
函数从而得到预估的CTR
:其中 $ \mathbf{\vec w},b $ 都是待学习的模型参数。
为缓解过拟合,我们在每个
FC
层之后都应用了dropout
。
$ \mathcal L_p=-\frac{1}{n}\sum_{i=1}^n\left[y_i\log \hat y_i+(1-y_i)\log(1-\hat y_i)\right] $prediction subnet
的损失函数为训练集的交叉熵:其中: $ n $ 为训练样本的数量; $ y_i\in \{0,1\} $ 为第 $ i $ 个样本是否点击的真实
label
; $ \hat y_i $ 为第 $ i $ 个样本预估的CTR
。
16.1.2 Matching Subnet
matching subnet
对user-ad
的关系(即,广告是否匹配用户的兴趣)进行建模,并旨在学习有用的用户representation
和有用的广告representation
。它的灵感来自于网络搜索的语义匹配模型semantic matching model
。在推荐系统的经典矩阵分解中,
rating score
近似为用户ID
潜在向量和item ID
潜在向量的内积。在我们的问题中,我们没有直接match
用户ID
和广告ID
,而是在更高级别上进行了match
,并结合了关于用户的所有特征、关于广告的所有特征。当用户点击广告时,我们假设所点击的广告至少部分和用户需求相关(考虑到用户提交的
query
,如果有的话)。因此,我们希望用户特征(和query
特征)的representation
和广告特征的representation
相匹配。具体而言,
matching subnet
包含两个部分:用户部分
user part
:用户部分的输入是用户特征(如用户ID
、年龄)和query
特征(如query
、query category
)。像在
prediction subnet
中一样,单个特征 $ x_i\in \mathbb R $ 首先经过embedding
层,然后映射为对应的embedding
向量 $ \mathbf{\vec e}_i\in \mathbb R^K $ 。然后我们将单个用户 $ u $ 的多种特征的embedding
拼接为长向量 $ \mathbf{\vec m}_u\in \mathbb R^{N_u} $ ,其中 $ N_u $ 为长向量的维度。然后向量 $ \mathbf{\vec m}_u $ 经过若干层全连接层
fully connected:FC
层(带有ReLU
非线性激活函数),从而学到高阶的非线性特征交互。对于最后一个FC
层,我们使用tanh
非线性激活函数(而不是ReLU
),我们后面解释这么做的原因。用户部分的输出是一个
high-level
的用户representation
向量 $ \mathbf{\vec v}_u\in \mathbb R^M $ ,其中 $ M $ 为向量维度。广告部分
ad part
:广告部分的输入是广告特征(如广告ID
、广告标题)。同样,我们首先将每个广告特征映射到对应的
embedding
向量,然后将单个广告 $ a $ 的多种特征的embedding
拼接为长向量 $ \mathbf{\vec m}_a\in \mathbb R^{N_a} $ ,其中 $ N_a $ 为长向量的维度。然后向量 $ \mathbf{\vec m}_a $ 经过若干层全连接层
fully connected:FC
层(带有ReLU
非线性激活函数),从而得到一个high-level
的广告representation
向量 $ \mathbf{\vec v}_a\in \mathbb R^M $ 。同样地,对于最后一个FC
层,我们使用tanh
非线性激活函数(而不是ReLU
)。
注意:通常用户部分、广告部分的输入具有不同的特征维度,即 $ N_u\ne N_a $ 。因为用户特征和广告特征的类别、数量通常都不相等。但是,经过
matching subnet
之后, $ \mathbf{\vec v}_u $ 和 $ \mathbf{\vec v}_a $ 具有相同的维度 $ M $ 。换句话讲,我们将两组不同的特征投影到一个公共的低维空间中。然后我们通过下式计算
$ s\left(\mathbf{\vec v}_u,\mathbf{\vec v}_a\right)=\frac{1}{1+\exp\left(-\mathbf{\vec v}_u^\top\mathbf{\vec v}_a\right)} $matching score
$ s $ 为:我们并没有使用
ReLU
作为最后一个FC
层的激活函数,因为ReLU
之后的输出将包含很多零,这使得 $ \mathbf{\vec v}_u^\top\mathbf{\vec v}_a \rightarrow 0 $ 。注意:前面
prediction subnet
最后一个FC
层仍然采用ReLU
,因为其输出为 $ \mathbf{\vec z} $ 是和模型参数 $ \mathbf{\vec w} $ 进行内积。 $ \mathbf{\vec w} ^\top\mathbf{\vec z} $ 为零的概率远小于 $ \mathbf{\vec v}_u^\top\mathbf{\vec v}_a $ 。至少有两种选择来建模
matching score
:point-wise
模型:当用户 $ u $ 点击广告 $ a $ 时,则 $ s\left(\mathbf{\vec v}_u,\mathbf{\vec v}_a\right)\rightarrow 1 $ ;当用户 $ u $ 未点击广告 $ a $ 时,则 $ s\left(\mathbf{\vec v}_u,\mathbf{\vec v}_a\right)\rightarrow 0 $ 。pair-wise
模型:如果用户 $ u $ 点击了广告 $ a_i $ 但是未点击广告 $ a_j $ ,则 $ s\left(\mathbf{\vec v}_u,\mathbf{\vec v}_{a_i}\right)\gt s\left(\mathbf{\vec v}_u,\mathbf{\vec v}_{a_j}\right) +\delta $ ,其中 $ \delta\gt 0 $ 为margin
超参数。
这里我们选择
$ \mathcal L_m=-\frac{1}{n}\sum_{i=1}^n\left[y(u,a)\log s\left(\mathbf{\vec v}_u,\mathbf{\vec v}_a\right) +(1-y(u,a))\log(1-s\left(\mathbf{\vec v}_u,\mathbf{\vec v}_a\right))\right] $point-wise
模型,因为它可以直接将训练数据集重新用于prediction subnet
。我们将matching subnet
的损失函数定义为:其中: $ n $ 为样本数量;如果用户 $ u $ 点击广告 $ a $ 则 $ y(u,a)=1 $ ,否则 $ y(u,a) = 0 $ 。
matching subnet
也是采用是否点击作为label
,这和prediction subnet
完全相同。二者不同的地方在于:matching subnet
是uv
粒度,而prediction subnet
是pv
粒度。matching subnet
通过representation
向量的内积来建模用户和广告的相关性,用户信息和广告信息只有在进行内积的时候才产生融合。而prediction subnet
直接建模点击率,用户信息和广告信息在embedding layer
之后就产生融合。
16.1.3 Correlation Subnet
correlation subnet
对ad-ad
的关系(即,哪些广告位于用户点击序列的时间窗口内)进行建模,并旨在学习有用的广告representation
。在我们的问题中,由于用户的点击广告构成了随时间推移的、具有一定相关性的序列,因此我们使用skip-gram
模型来学习有用的广告representation
。给定单个用户点击广告的广告序列 $ \{a_1,a_2,\cdots,a_L\} $ ,我们最大化平均对数似然:
$ ll=\frac{1}{L}\sum_{i=1}^L\sum_{-C\le j\le C}\log p(a_{i+j}\mid a_i) $其中: $ L $ 是广告序列长度, $ C $ 为上下文窗口大小。
概率 $ p(a_{i+j}\mid a_i) $ 可以通过不同的方式进行定义,例如
$ p(a_{i+j}\mid a_i) = \sigma\left(\mathbf{\vec h}_{a_{i+j}}^\top\mathbf{\vec h}_{a_{i}}\right)\prod_{q=1}^Q\sigma\left(-\mathbf{\vec h}_{a_{q}}^\top\mathbf{\vec h}_{a_{i}}\right) $softmax
、层次softmax
、负采样。由于负采样的效率高,我们选择负采样技术将 $ p(a_{i+j}\mid a_i) $ 定义为:其中:
- $ Q $ 为负采样的广告数, $ \sigma(\cdot) $ 为
sigmoid
函数。 - $ \mathbf{\vec h}_{a_i} $ 为广告 $ a_i $ 的
high-level representation
,它涉及广告 $ a_i $ 的所有特征,并经过多个FC
层。
- $ Q $ 为负采样的广告数, $ \sigma(\cdot) $ 为
$ \mathcal L_c = \frac{1}{L}\sum_{i=1}^L\sum_{-C\le j\le C}\left[-\log \left[ \sigma\left(\mathbf{\vec h}_{a_{i+j}}^\top\mathbf{\vec h}_{a_{i}}\right)\right]-\sum_{q=1}^Q \log \left[ \sigma\left(-\mathbf{\vec h}_{a_{q}}^\top\mathbf{\vec h}_{a_{i}}\right)\right]\right] $correlation subnet
的损失函数为负的对数似然:考虑所有用户的 $ \mathcal L_c $ 则得到
correlation subnet
总的损失。
16.1.4 其它
离线训练过程:
$ \mathcal L = \mathcal L_p+ \alpha \mathcal L_m+\beta\mathcal L_c $DeepMCP
的最终联合损失函数为:其中 $ \alpha,\beta $ 为超参数,它们平衡了不同
subnet
的重要性。DeepMCP
通过在训练集上最小化联合损失函数来训练。由于我们的目标是最大化CTR
预估性能,因此训练过程中我们在独立的验证集上评估模型,并记录验证AUC
。最佳模型参数在最高的验证AUC
处获得。在线预测过程:
DeepMCP
模型仅需要计算预估的点击率pCTR
,因此只有prediction subnet
处于活跃状态。这使得DeepMCP
的在线预测阶段相当简单和高效。
16.2 实验
数据集:我们使用两个大型数据集:
Avito
广告数据集:数据集包含来自俄罗斯最大的通用分类网站avito.ru
的广告日志的随机样本。我们将2015-04-28 ~ 2015-05-18
的广告日志用于训练、2015-05-19
的广告日志用于验证、2015-05-20
的广告日志用于测试。在
CTR
预估中,测试通常是第二天的预测,这里测试集包含 $ 2.3\times 10^6 $ 个样本。用到的特征包括:用户特征(如用户ID
、IP ID
、用户浏览器、用户设备)、query
特征(如query
、query category
、query
参数)、广告特征(如广告ID
、广告标题、广告cateogry
)、其它特征(如hour of day
、day of week
)。Company
广告数据集:数据集包含来自阿里巴巴商业广告系统的广告曝光日志和点击日志的随机样本。我们使用2018
年八月到九月连续30
天的日志用于训练,下一天的日志用于验证、下下一天的日志用于测试。测试集包含 $ 1.9 \times 10^6 $ 个样本。用到的特征也包括用户特征、
query
特征、广告特征、其它特征。
baseline
方法:我们使用以下CTR
预估的baseline
方法:LR
:逻辑回归方法。它是线性模型,建模了特征重要性。FM
:因子分解机。它同时对一阶特征重要性和二阶特征交互进行建模。DNN
:深度神经网络,它包含一个embedding
层、几个FC
层、一个输出层。Wide & Deep
:它同时结合了LR
(wide
部分)、DNN
(deep
部分)。PNN
:product-based
神经网络,它在DNN
的embedding
层和FC
层之间引入了一个乘积层production layer
。DeepFM
:它结合了FM
(wide
部分)、DNN
(deep
部分)。DeepCP
:DeepMCP
模型的一种变体,仅包含correlation subnet
和prediction subnet
。它等价于在联合损失函数中设置 $ \alpha = 0 $ 。DeepMP
:DeepMCP
模型的一种变体,仅包含matching subnet
和prediction subnet
。它等价于在联合损失函数中设置 $ \beta = 0 $ 。
实验配置:
- 考虑到每个特征的取值范围很广,因此我们设置每个特征的维度 $ K=10 $ ,从而防止
embedding
矩阵规模太大。 - 对于基于神经网络的模型,我们设置全连接层的层数为
2
、维度分别为512
和256
。 - 我们设置
batch size=28
,上下文窗口大小 $ C=2 $ ,负采样广告数量为 $ Q=4 $ ,dropout rate=0.5
。 - 所有这些方法都在
tensorflow
中实现,并通过Adagrad
算法进行优化。
- 考虑到每个特征的取值范围很广,因此我们设置每个特征的维度 $ K=10 $ ,从而防止
评估指标:测试
AUC
(越大越好)、测试logloss
(越小越好)。实验结果如下表所示,可以看到:
FM
性能要比LR
好得多,这是因为FM
建模了二阶特征交互,而LR
仅建模一阶的特征重要性。DNN
性能进一步优于FM
,因为它可以学习高阶非线性特征交互。PNN
优于DNN
,因为它进一步引入了production layer
。Wide & Deep
进一步优于PNN
,因为它结合了LR
和DNN
,从而提高了模型的记忆memorization
能力和泛化generalization
能力。DeepFM
结合了FM
和DNN
,它在Avito
数据集上优于Wide & Deep
,但是在Company
数据集上性能稍差。DeepCP
和DeepMP
在两个数据集上都超越了表现最好的baseline
。由于
baseline
方法仅考虑单个CTR
预估任务,因此这些观察结果表明:考虑额外的representation learning
任务可以帮助更好地执行CTR
预估。还可以观察到
DeepMP
的性能比DeepCP
更好,这表明:matching subnet
要比correlation subnet
带来更多的好处。这是可以理解的,因为
matching subnet
同时考虑了用户和广告,而correlation subnet
仅考虑了广告。DeepMCP
在这两个数据集上均表现最佳,这些证明了DeepMCP
的有效性。
超参数 $ \alpha,\beta $ 的影响:下图分别给出了 $ \alpha,\beta $ 超参数对于
DeepMCP
测试AUC
的影响,其中Pred
表示DNN
、Pred+Corr
表示DeepCP
、Pred+Match
表示DeepMP
。可以看到:- 当超参数 $ \alpha $ 或者 $ \beta $ 开始增加时,测试
AUC
开始提升;当 $ \alpha $ 或者 $ \beta $ 继续增加时,测试AUC
开始下降。 - 在
Company
数据集上,较大的 $ \beta $ 可能导致非常差的性能,甚至比单纯的DNN
更差。 - 总体而言,
matching subnet
比correlation subnet
带来更大的测试AUC
提升。
- 当超参数 $ \alpha $ 或者 $ \beta $ 开始增加时,测试
隐层维度的影响:下图给出了两层隐层的模型中,测试
AUC
和隐层维度的关系。为了方便阅读,我们仅展示了DNN, Wide & Deep, DeepMCP
的结果。我们使用收缩结构,其中第二层维度为第一层维度的一半。第一层维度选择从128
增加到512
。可以看到:当隐层维度增加时,测试
AUC
通常会提升;但是当维度进一步增加时,测试AUC
可能会下降。这可能是因为训练更复杂的模型更加困难。隐层数量的影响:我们对比了不同深度的模型的效果。为了方便阅读,我们仅展示了
DNN, Wide & Deep, DeepMCP
的结果。我们分别使用一层([256]
)、两层([512, 256]
)、三层([1024, 512, 256]
)、四层([2048, 1024, 512, 256]
)。可以看到:
- 当隐层数量从
1
层增加到2
层时,模型性能通常会提高。这是因为更多的隐层具有更好的表达能力。 - 但是当隐层数量进一步增加时,性能就会下降。这是因为训练更深的神经网络更加困难。
- 当隐层数量从
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论