数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
二十、DSTN [2019]
点击率
Click-Through Rate: CTR
预估是用于预测用户点击某个item
的可能性。它在在线广告系统中起着重要作用。例如,广告ranking
策略通常取决于CTR x bid
,其中bid
是点击广告后系统获得的收益。另外,根据常见的cost-per-click: CPC
计费模式,只有在用户点击广告之后才会对广告主收费。因此,为了最大化程度地增加收入并保持理想的用户体验,准确地预估广告的CTR
至关重要。CTR
预估引起了学术界和工业界的广泛关注。一系列研究方向是利用机器学习方法独立预估每个广告的CTR
。例如,因子分解机Factorization Machine: FM
根据所涉及特征对应的潜在向量来建模pairwise
特征交互。近年来,深度神经网络DNN
被用于CTR
预估和item
推荐,以自动学习feature representation
和高阶特征交互。为了同时利用浅层模型和深层模型,人们还提出了混合模型hybrid model
。例如,Wide & Deep
将逻辑回归Logistic Regression: LR
和DNN
结合起来,从而提高模型的memorization
和generalization
能力。DeepFM
将FM
和DNN
相结合,进一步提高了模型学习特征交互的能力。这一系列方法独立地考虑每个目标广告,但是忽略了可能影响目标广告
CTR
的其它广告。在本文中,我们从两个角度探讨辅助广告auxiliary ad
。空域
spatial domain
角度:我们考虑在同一个页面上出现的、目标广告上方展示的上下文广告contextual ad
。背后的直觉是:共同展示的广告可能会争夺用户的注意力。
时域
temporal domain
角度:我们考虑用户的历史点击和历史未点击广告。背后的直觉是:历史点击广告可以反映用户的偏好,历史未点击广告可能一定程度上表明用户的不喜欢。
这两个角度包含了三种类型的辅助数据
auxiliary data
(如下图所示):同一个页面上出现的、目标广告上方展示的上下文广告contextual ad
;用户的历史点击广告clicked ad
;用户的历史未点击广告unclicked ad
。为有效利用这些辅助数据,我们必须解决以下问题:
由于每种类型辅助广告的数量可能会有所不同,因此模型必须能够适应所有可能的情况。
例如,可能有
1
个上下文广告、2
个历史点击广告、4
个历史未点击广告,也可能是0
个上下文广告、3
个历史点击广告、2
个历史未点击广告。由于辅助广告不一定和目标广告相关,因此模型应该能够提取有用的信息并抑制辅助数据中的噪声。
例如,如果历史点击广告集合是关于咖啡、衣服、汽车的广告,而目标广告是咖啡广告,那么模型能够学到哪个历史点击广告对目标广告的
CTR
预估更有用。每种类型辅助广告的影响程度可能会有所不同,并且模型应该能够区分它们的贡献。
例如,应该区别对待上下文广告和历史点击广告的重要性。
模型应该能够融合所有可用的信息。
为了解决这些问题,论文
《Deep Spatio-Temporal Neural Networks for Click-Through Rate Prediction》
提出了用于CTR
预估的深度时空神经网络Deep SpatioTemporal neural Network: DSTN
的三种变体。这些变体包括:池化pooling
模型、自注意力self-attention
模型、交互式注意力interactive attention
模型。其中,交互式注意力模型完全解决了上述问题。在一个公共数据集和两个工业数据集上的离线实验表明:
DSTN
的效果优于几种state-of-the-art
的CTR
预估方法。作者在中国第二大搜索引擎 “神马搜索” 中部署了DSTN
模型。在线A/B test
表明:和线上最新的serving
模型相比,DSTN
模型的在线CTR
得到显著提升。论文主要贡献:
- 论文探索了三种类型的辅助数据,从而提高目标广告的
CTR
预估。这些辅助数据包括:展示在同一个页面上的、目标广告上方的上下文广告,用户历史点击广告,用户历史未点击广告。 - 论文提出了有效融合这些辅助数据来预测目标广告
CTR
的DSTN
模型。DSTN
模型能够学习辅助数据和目标广告之间的交互,并强调更重要的hidden information
。 - 论文对来自真实广告系统的三个大规模数据集进行了广泛的离线实验,从而测试
DSTN
和几种state-of-the-art
方法的性能。论文还进行了案例研究,从而提供模型背后的进一步洞察。 - 论文在中国第二大搜索引擎神马搜索中部署了性能最好的
DSTN
。论文还进行了在线A/B test
,从而评估DSTN
在实际CTR
预估任务中的性能。
相关工作:
CTR
预估:学习特征交互效应effect of feature interaction
似乎对于准确的CTR
预估至关重要。- 广义线性模型,如逻辑回归
Logistic Regression: LR
和Follow-The-Regularized-Leader: FTRL
在实践中表现出不错的性能。然而,线性模型缺乏学习复杂特征交互的能力。 - 因子分解机
Factorization Machine: FM
根据所涉及特征的潜在向量对pairwise
特征交互进行建模。 Field-aware FM: FFM
和Field-weighted FM
通过考虑特征所属的field
的影响来进一步改进FM
。
近年来,深度神经网络
DNN
显示出强大的自动学习有信息量informative
的feature representation
的能力。因此,DNN
也被用于CTR
预估和item
推荐,以自动学习feature representation
和高阶特征交互。FNN
在应用DNN
之前预训练FM
。PNN
在embedding layer
和全连接层之间引入了一个product layer
。Wide & Deep
模型结合了LR
和DNN
来同时捕获低阶特征交互和高阶特征交互。这种结构还同时提高了模型的memorization
和generalization
能力。DeepFM
像FM
一样对低阶特征交互建模、像DNN
一样对高阶特征交互建模。NFM
结合了FM
的线性和神经网络的非线性。
- 广义线性模型,如逻辑回归
利用辅助数据进行
CTR
预估:另外有一系列研究利用辅助数据来提高CTR
预估性能。RNN-based
模型:《Sequential Click Prediction for Sponsored Search with Recurrent Neural Networks》
考虑用户的历史行为(例如,该用户点击了哪些广告)。论文使用RNN
来建模用户行为序列的依赖性。《Improved recurrent neural networks for session-based recommendations》
为session-based
推荐提出了改进的RNN
。
基于
RNN
的模型的一个主要问题是:模型生成一个行为序列的整体embedding
向量,该向量只能保留用户非常有限的信息。即使使用LSTM
和GRU
等高级记忆单元结构,长期依赖性仍然难以保留。此外,由于其递归结构,RNN
的离线训练过程和在线预测过程都很耗时。CRF-based
模型:《Relational click prediction for sponsored search》
考虑了同一页面上显示的广告之间的pairwise
关系,并提出了一种基于条件随机场Conditional Random Field: CRF
的CTR
预估模型。《Exploiting contextual factors for click modeling in sponsored search》
在建模CTR
时考虑了各种上下文因子,例如广告深度ad depth
、query
多样性、广告交互。
这些模型的一个主要问题是:需要根据数据分析手动定义顶点特征函数
vertex feature function
和边特征函数edge feature function
,并且难以将模型推广到其它类型的数据。差异:本文提出的
DSTN
和先前工作的不同之处在于:DSTN
将异质辅助数据heterogeneous auxiliary data
(即上下文、点击广告、未点击广告)集成在一个统一的框架中,而RNN-based
模型无法利用上下文广告和未点击广告,而CRF-based
模型无法结合点击广告和未点击广告。DSTN
不是RNN based
,因此更容易实现,并且训练和在线评估都更快。
20.1 模型
这里我们首先介绍
CTR
预估问题,然后介绍DSTN
模型的三种变体。CTR
预估问题:在线广告中的CTR
预估任务是建立一个预估模型来估计用户点击特定广告的概率。每个样本都可以由多个字段
field
来描述,例如用户信息(用户ID
、用户城市、用户年龄等等),以及广告信息(广告创意ID
、广告计划ID
、广告标题等等)。我们将每个样本称作ad instance
,它不仅包含广告信息,也包括用户信息、上下文信息等。字段的实例
instance
是一个特征。例如,用户ID
字段可能包含诸如2135147
或3467291
的特征。下表给出了一些例子,其中:第一列是标签列,1
表示发生点击行为,0
表示未发生点击行为;其它各列均为一个字段。诸如
FM, DNN, Wide & Deep
之类的经典CTR
预估模型主要考虑目标广告(如下图所示,target ad
表示目标广告对应的样本),它们聚焦于如何表示样本特征,以及如何学习特征交互。与这些方法不同,我们探索了辅助数据(即辅助广告)来提升
CTR
预估。我们必须解决以下问题:- 如何适应每种类型辅助广告的不同数量的各种情况。
- 如何从辅助广告中提取有用的信息并抑制噪音。
- 如何区分每种类型辅助广告的贡献。
- 如何融合所有可用信息。
20.1.1 Embedding
在介绍模型之前,我们首先介绍所有模型中常见的
embedding
过程。embedding
过程是先将每个特征映射到一个embedding
向量,然后将每个样本表示为相应特征embedding
向量的拼接concatenation
。假设某个特征有 $ N $ 个
unique
值。我们创建一个embedding
矩阵 $ \mathbf E\in \mathbb R^{N\times K} $ ,其中第 $ i $ 行 $ \mathbf{\vec e}_i\in \mathbb R^K $ 代表对应于特征第 $ i $ 个取值的embedding
向量。这个embedding
矩阵 $ \mathbf E $ 是在模型训练期间待学习的参数。我们将特征分为三种类型并进行不同的处理,如下图所示。
cate.
表示categorical
,ft.
表示feature
。ad instance
表示样本,ad embedding vector
表示样本embedding
向量。单值
univalent
的离散特征:这类特征仅包含单个值。例如用户
ID
就是这类特征的代表,每个用户ID
特征只有一个用户ID
值。如果我们使用one-hot
特征表示,则由于unique
用户ID
数量可能高达 $ 10^8 $ ,导致特征向量非常稀疏。因此,我们将稀疏的高维离散特征映射为稠密的低维embedding
向量从而适用于神经网络。和
one-hot representation
相比,这些embedding
向量包含更丰富的信息。多值
multivalent
的离散特征:这类特征包含一组值。例如广告标题就是这类特征的代表。假设广告标题为
ABCD
,那么它的bi-gram
表示为:AB, BC, CD
。由于这类特征包含取值的数量不是固定的,因此我们首先将每个值映射到embedding
向量,然后执行池化来生成固定长度的聚合向量。数值特征:用户年龄是数值特征的典型例子。每个数值特征首先被离散化为离散的桶,然后表示为桶
ID
,最后将每个桶ID
映射到embedding
向量。
经过
embedding
过程之后,样本的representation
$ \mathbf{\vec x} $ 是所有embedding
向量的拼接,每个emebdding
向量对应于一个field
。在
embedding
之后:- 每个目标广告
target ad
获得了一个embedding
向量 $ \mathbf{\vec x}_t\in \mathbb R^{D_t} $ ,其中 $ D_t $ 为目标广告embedding
维度。 - 上下文广告集合获得了 $ n_c $ 个
embedding
向量 $ \left\{\mathbf{\vec x}_{c,i}\in \mathbb R^{D_c}\right\}_{i=1}^{n_c} $ ,其中 $ n_c $ 为上下文广告数量, $ D_c $ 为上下文广告embedding
维度。 - 历史点击广告集合获得了 $ n_l $ 个
embedding
向量 $ \left\{\mathbf{\vec x}_{l,j}\in \mathbb R^{D_l}\right\}_{j=1}^{n_l} $ ,其中 $ n_l $ 为历史点击广告数量, $ D_l $ 为历史点击广告embedding
维度。 - 历史未点击广告集合获得了 $ n_u $ 个
embedding
向量 $ \left\{\mathbf{\vec x}_{u,q}\in \mathbb R^{D_u}\right\}_{q=1}^{n_u} $ ,其中 $ n_u $ 为历史未点击广告数量, $ D_u $ 为历史未点击广告embedding
维度。
注意:
$ \mathbf{\vec x}_t $ 包含了用户
embedding
、广告embedding
、上下文embedding
(如query
)。$ \mathbf{\vec x}_{l,j},\mathbf{\vec x}_{u,q} $ 仅包含广告
embedding
、上下文embedding
,而不包含用户embedding
。因为历史点击广告、历史未点击广告和目标广告都是同一个用户,没必要提供冗余的、重复的用户信息。
$ \mathbf{\vec x}_{c,i} $ 仅包含广告
embedding
,而不包含用户embedding
、广告embedding
。因为上下文广告和目标广告都是同一个用户、同一个上下文(如
query
)。
- 每个目标广告
20.1.2 DSTN
a. DSTN-Pooling
由于不同用户的辅助广告数量 $ n_c,n_l.n_u $ 可能千差万别,因此这为深度神经网络带来了问题。我们需要解决的第一个问题是:将每种类型的、可变长度的辅助实例
auxiliary instance
处理未固定长度的向量。在DSTN-Pooling
模型中,我们使用sum
池化来实现该目标,模型结构如下图所示。$ n_c $ 个上下文广告的聚合
$ \mathbf{\vec x}_c = \sum_{i=1}^{n_c} \mathbf{\vec x}_{c,i},\quad \mathbf{\vec x}_l = \sum_{j=1}^{n_l} \mathbf{\vec x}_{l,j},\quad \mathbf{\vec x}_u = \sum_{q=1}^{n_u} \mathbf{\vec x}_{u,q} $representation
向量 $ \mathbf{\vec x}_c $ 、 $ n_l $ 个历史点击广告的聚合representation
向量 $ \mathbf{\vec x}_l $ 、 $ n_u $ 个历史未点击广告的聚合representation
向量 $ \mathbf{\vec x}_u $ 分别表示为:如果某种类型的辅助广告完全缺失(例如,根本没有上下文广告)则我们将全零向量作为其聚合
representation
向量。现在我们有了目标广告的
representation
$ \mathbf{\vec x}_t $ 、不同类型辅助广告的representation
$ \mathbf{\vec x}_c, \mathbf{\vec x}_l,\mathbf{\vec x}_u $ ,下一个问题是融合这些representation
中包含的信息。具体而言,我们生成融合的
$ \mathbf{\vec v} = \mathbf W_t \mathbf{\vec x}_t + \mathbf W_c \mathbf{\vec x}_c+ \mathbf W_l \mathbf{\vec x}_l+\mathbf W_u \mathbf{\vec x}_u+ \mathbf{\vec b} $representation
$ \mathbf{\vec v}\in \mathbb R^{D_v} $ 为:其中:
- $ \mathbf W_t\in \mathbb R^{D_v\times D_t},\mathbf W_c\in \mathbb R^{D_v\times D_c},\mathbf W_l\in \mathbb R^{D_v\times D_l},\mathbf W_u\in \mathbb R^{D_v\times D_u} $ 为待学习的权重矩阵,它们将不同的类型的
representation
映射到相同的语义空间。 - $ \mathbf{\vec b}\in \mathbb R^{D_v} $ 为待学习的
bias
向量。
可以看到,我们实际上使用不同的权重来融合来自不同类型数据的输入。这是因为不同类型的辅助数据对于目标广告的影响程度可能不同,因此我们需要区分这些差异。
此外,融合的
representation
$ \mathbf{\vec v} $ 具有以下特性:如果一种或者多种类型的辅助广告完全缺失,则融合的representation
$ \mathbf{\vec v} $ 不受影响。例如,如果没有上下文广告,那么 $ \mathbf{\vec x}_c = \mathbf{\vec 0} $ 。结果导致 $ \mathbf W_c \mathbf{\vec x}_c=\mathbf{\vec 0} $ ,因此 $ \mathbf{\vec v} $ 不受影响。- $ \mathbf W_t\in \mathbb R^{D_v\times D_t},\mathbf W_c\in \mathbb R^{D_v\times D_c},\mathbf W_l\in \mathbb R^{D_v\times D_l},\mathbf W_u\in \mathbb R^{D_v\times D_u} $ 为待学习的权重矩阵,它们将不同的类型的
如果我们将目标广告的
$ \mathbf{\vec v} = \mathbf W\mathbf{\vec m}+\mathbf{\vec b} $representation
$ \mathbf{\vec x}_t $ 、不同类型辅助广告的representation
$ \mathbf{\vec x}_c, \mathbf{\vec x}_l,\mathbf{\vec x}_u $ 拼接为 $ \mathbf{\vec m} = \left[\mathbf{\vec x}_t||\mathbf{\vec x}_c||\mathbf{\vec x}_l||\mathbf{\vec x}_u\right] $ ,那么我们可以将上式重写为:其中: $ || $ 表示向量拼接; $ \mathbf W\in \mathbb R^{D_v\times (D_t+D_c+D_l+D_u)} $ 为所有权重矩阵的拼接; $ \mathbf{\vec b}\in \mathbb R^{D_v} $ 为待学习的
bias
向量。这种方式大大简化了模型。因此,
DSTN-Pooling
模型最终的设计为:首先拼接各个
representation
从而获得临时representaion
$ \mathbf{\vec m} $ 。然后将 $ \mathbf{\vec m} $ 通过若干个带
$ \mathbf{\vec z}_1 = \text{ReLU}\left(\mathbf W_1 \mathbf{\vec m} + \mathbf{\vec b}_1\right)\\ \mathbf{\vec z}_2 = \text{ReLU}\left(\mathbf W_2 \mathbf{\vec z}_1 + \mathbf{\vec b}_2\right)\\ \vdots\\ \mathbf{\vec z}_L = \text{ReLU}\left(\mathbf W_{L} \mathbf{\vec z}_{L-1} + \mathbf{\vec b}_L\right) $ReLU
激活函数的全连接层FC layer
,从而利用高阶特征交互以及非线性变换。文献表明:ReLU
激活函数在收敛速度和模型效果方面比tanh
激活函数具有明显的优势。其中: $ L $ 为全连接层的层数; $ \mathbf{\vec W}_l,\mathbf{\vec b}_l $ 表示第 $ l $ 层全连接层的、待学习的参数。
全连接层输出向量 $ \mathbf{\vec z}_L $ 通过一个
$ \hat y = \frac{1}{1+\exp\left[-\left(\mathbf{\vec w}^\top \mathbf{\vec z}_L + b\right)\right]} $sigmoid
函数来生成目标广告的预估CTR
:其中 $ \mathbf{\vec w},b $ 为待学习的参数。
此外,为了避免模拟过拟合,我们在每个全连接层之后应用 dropout
。
所有的模型参数通过最小化交叉熵损失函数来学习,其中损失函数定义为:
$ \text{loss} = -\frac{1}{|\mathbb Y|}\sum_{y\in \mathbb Y}\left[y\log \hat y + (1-y)\log(1-\hat y)\right] $其中: $ y\in \{0,1\} $ 为目标广告的真实
label
; $ \hat y $ 为目标广告的预估CTR
; $ \mathbb Y $ 为所有真实label
的集合。可以看到:在
DSTN-Pooling
模型中,当给定用户在给定位置展示不同的目标广告时只有 $ \mathbf{\vec x}_t $ 发生变化,而所有的辅助representation
$ \mathbf{\vec x}_c, \mathbf{\vec x}_l,\mathbf{\vec x}_u $ 都保持不变。这意味着辅助representation
仅用作静态基础信息。而且,由于 $ \mathbf{\vec x}_c, \mathbf{\vec x}_l,\mathbf{\vec x}_u $ 是通过
sum
池化生成的,因此有用的信息很容易被淹没在噪声中。例如,如果目标广告是关于咖啡的,但是大多数历史点击广告是关于衣服的、少部分历史点击广告是关于咖啡的。那么,虽然关于衣服的这些历史点击广告对于目标广告的贡献很小,但是sum
的结果显然是由这些关于衣服的历史点击广告所主导。
b. DSTN-Self Attention
DSTN-Self Attention
模型:鉴于DSTN-Pooling
的上述限制,我们考虑采用自注意力机制,即DSTN-Self Attention
模型。在我们的
$ \hat{\mathbf{\vec x}}_c = \sum_{i=1}^{n_c}\alpha_{c,i}\mathbf{\vec x}_{c,i} $DSTN-Self Attention
模型中,我们在每种类型的辅助数据上应用自注意力从而强调更重要的信息。以上下文辅助广告为例,其聚合representation
向量建模为:其中 $ \alpha_{c,i} $ 为第 $ i $ 个上下文广告
$ \alpha_{c,i} = \frac{\exp( \beta_{c,i} )}{\sum_{i^\prime=1}^{n_c} \exp( \beta_{c,i^\prime} )},\quad \beta_{c,i} = f(\mathbf{\vec x}_{c,i})\in \mathbb R $representation
的注意力系数,它计算为:其中 $ f(\cdot) $ 为一个函数,它将上下文广告
representation
向量 $ \mathbf{\vec x}_{c,i} $ 映射为一个标量权重 $ \beta_{c,i} $ 。 $ f(\cdot) $ 的一个可能的实现方式是采用多层感知机Multilayer Perceptron: MLP
。自注意力机制的优点在于:可以根据
self-attention
来加权不同的辅助广告 $ \mathbf{\vec x}_{c,i} $ ,从而可以强调有用的信息并抑制噪声。但是,它仍然具有以下局限性:- 权重 $ \beta_{c,i} $ 仅仅基于上下文辅助广告 $ \mathbf{\vec x}_{c,i} $ 来计算,它并未捕获这个上下文辅助广告和目标广告 $ \mathbf{\vec x}_t $ 之间的关系。例如,无论目标广告是关于咖啡还是衣服,上下文辅助广告的重要性都保持不变。
- 归一化的注意力系数 $ \alpha_{c,i} $ 通过 $ \left\{\mathbf{\vec x}_{c,i}\right\}_{i=1}^{n_c} $ 之间的相对重要性来计算,并且 $ \sum_{i=1}^{n_c}\alpha_{c,i} = 1 $ 。结果,即使所有的上下文辅助广告 $ \left\{\mathbf{\vec x}_{c,i}\right\}_{i=1}^{n_c} $ 和目标广告 $ \mathbf{\vec x}_t $ 无关,由于归一化的存在,最终的注意力系数 $ \alpha_{c,i} $ 仍然很大。
- 每种类型辅助广告的绝对数量也很重要,但是归一化并未捕获这种效果。例如,假设每个上下文辅助广告的重要性都相同,则采用归一化的注意力系数完全无法区分是
1
个上下文辅助广告、还是100
个上下文辅助广告。
c. DSTN-Interactive Attention
DSTN-Interactive Attention
:鉴于DSTN-Self Attention
的上述限制,我们考虑引入每种类型辅助广告和目标广告之间的显式交互,即DSTN-Interactive Attention
模型,如下图所示。以上下文辅助广告为例,其聚合
$ \tilde{\mathbf{\vec x}}_c=\sum_{i=1}^{n_c}\alpha_{c,i}\mathbf{\vec x}_{c,i}\\ \alpha_{c,i} = \exp\left(\mathbf{\vec h}^\top \text{ReLU}\left(\mathbf W_{t,c}\left[\mathbf{\vec x}_t||\mathbf{\vec x}_{c,i} \right]+ \mathbf{\vec b}_{t,c,1}\right) + b_{t,c,2}\right) $representation
向量建模为:其中: $ \mathbf{\vec h},\mathbf W_{t,c},\mathbf{\vec b}_{t,c,1},b_{t,c,2} $ 为模型参数。
和
DSTN-Self Attention
相比,这里的 $ \alpha_{c,i} $ 现在是目标广告 $ \mathbf{\vec x}_t $ 和上下文辅助广告 $ \mathbf{\vec x}_{c,i} $ 的函数。通过这种方式, $ \alpha_{c,i} $ 基于目标广告 $ \mathbf{\vec x}_t $ 来动态调整上下文辅助广告 $ \mathbf{\vec x}_{c,i} $ 的重要性。此外, $ \alpha_{c,i} $ 现在还不依赖于其它上下文辅助广告 $ \left\{\mathbf{\vec x}_{c,i^\prime}\right\}_{i^\prime \ne i} $ ,也不需要进行归一化。如果没有任何上下文辅助广告能够提供信息,则所有的 $ \alpha_{c,i} $ 都会很小。
类似地,我们为历史点击辅助广告生成 $ \tilde{\mathbf{\vec x}}_l $ 、为历史未点击辅助广告生成 $ \tilde{\mathbf{\vec x}}_u $ 。
$ \mathbf{\vec v} = \mathbf W_t \mathbf{\vec x}_t + \mathbf W_c \tilde{\mathbf{\vec x}}_c+ \mathbf W_l \tilde{\mathbf{\vec x}}_l+\mathbf W_u \tilde{\mathbf{\vec x}}_u+ \mathbf{\vec b} $DSTN-Interactive Attention
模型最终得到融合的representation
为:和
DSTN-Pooling
相比,可以看到:辅助
representation
$ \mathbf{\vec v} $ 现在不再使用静态基础信息,而是根据目标广告来动态调整。这意味着模型会针对目标广告自适应地提取辅助数据中的更多有用信息。例如,假设历史点击广告和咖啡、衣服、汽车相关。
- 当目标广告 $ \mathbf{\vec x}_t $ 和咖啡有关时,历史点击的咖啡广告应该为 $ \tilde{\mathbf{\vec x}}_l $ 做出更大的贡献。
- 当目标广告 $ \mathbf{\vec x}_t $ 和汽车有关时,历史点击的汽车广告应该为 $ \tilde{\mathbf{\vec x}}_l $ 做出更大的贡献。
此外,模型仍然保留了使用不同的权重来融合不同类型辅助数据输入的特点。
最后,模型中的权重 $ \alpha_{c,i} $ 并没有在所有上下文辅助广告之间进行比较,这避免了归一化导致的问题。
最后我们给出
DNN, DSTN-Pooling, DSTN-Interactive Attention
等模型的结构对比,如下图所示。
20.1.3 部署
我们在中国第二大搜索引擎 “神马搜索” 中部署了
DSTN-I
(简称DSTN
)。下图给出了系统的体系架构,其中包括离线阶段、流式streaming
阶段、在线阶段。离线阶段:在线用户行为(广告曝光/点击)不断地记录到离线用户日志数据库中。系统从日志数据库中提取训练数据,并训练
DSTN
模型。离线训练首先以
batch
方式执行,然后周期性地使用最新的日志数据对训练好的模型进行增量更新。streaming
阶段:在线用户行为也会被发送到用户会话服务器User Session Server
(延迟不超过10s
),该服务器上维护并更新了每个用户历史记录的hashmap
。为了减少内存需求和在线计算量,
hashmap
保持了每个用户最近3
天内的最多5
个历史点击广告和5
个历史未点击广告。如果超过5
个,则仅保留最新的5
个。在线阶段:收到用户请求之后,
Ad Server
首先从User Session Server
检索用户历史记录数据。然后Ad Server
向Model Server
请求一组候选广告的pCTR
。
在线阶段的
pCTR
请求是分为几个步骤来完成的。这是因为神马搜索现在每个app
页面拥有3-4
个广告位,因此需要为用户返回3-4
个广告。而且,前面的广告是后面广告的上下文。①:
Ad Server
将候选目标广告集合以及历史点击广告、历史未点击广告一起发送给Model Server
。此时没有上下文广告集合。②:
Model Server
返回这些候选目标广告的pCTR
。③:
Ad Server
根据某些排序策略(依赖于pCTR
)选择top
候选目标广告。假设该top
候选目标广告是广告2
,然后广告2
将成为其它目标广告的上下文广告。Ad Server
将剩余的候选目标广告集合以及上下文广告(广告2
)、历史点击广告、历史未点击广告一起发送给Model Server
。④:
Model Server
将返回剩余候选目标广告的pCTR
。
理论上讲我们需要多次执行步骤 ③和④,从而依次挑选目标广告并更新上下文广告集合。但是考虑到预测准确率和服务延迟之间的折衷,我们仅执行步骤③和④一次,并在步骤④之后
Ad Server
选择2-3
个得分最高的剩余候选目标广告,并将最终广告列表发送给用户。本质是,在线预估的时候上下文广告集合是不确定的,依赖于在线策略的选择。
20.2 实验
这里我们对三个大型数据集进行实验,从而评估所提出的
DSTN
以及几种state-of-the-art
的CTR
预估方法的效果数据集:
Avito
广告数据集:该数据集包含来自俄罗斯最大的通用分类网站avito.ru
的广告日志随机采样的样本。我们将2015-04-28 ~ 2015-05-18
的广告日志用于训练,将2015-05-19
的广告日志用于验证,将2015-05-20
的广告日志用于测试。我们使用的特征包括:
- 广告特征,如广告
ID
、广告标题、广告类别、广告的父类别parent category
(类别的上一级类别)。 - 用户特征,如用户
ID
、IP ID
、用户agent
、用户agent OS
、用户设备。 query
特征,如搜索query
、搜索位置location
、搜索类别cateogry
、搜索参数parameter
。
- 广告特征,如广告
Search
广告数据集:该数据集包含来自阿里巴巴商业搜索广告系统的广告曝光和点击日志随机采样的样本。我们将2018
年6
月连续7
天的广告日志用于训练,将下一天的广告日志用于验证,将下下一天的广告日志用于测试。我们使用的特征包括:
- 广告特征,如广告
ID
、广告标题、广告行业。 - 用户特征,如用户
ID
、IP ID
、用户agent
。 query
特征,如搜索query
、搜索位置location
。
- 广告特征,如广告
News feed
广告数据集:该数据集来自阿里巴巴商业新闻feed
广告系统的广告曝光和点击日志随机采样的样本。我们将2018
年7
月连续7
天的广告日志用于训练,将下一天的广告日志用于验证,将下下一天的广告日志用于测试。我们使用的特征包括:
- 广告特征,如广告
ID
、广告标题、广告行业。 - 用户特征,如用户
ID
、召回的广告主题matched ad topic
的数量。 - 交叉特征,如
AdType-AdResource
。
该数据集中的辅助数据不包含上下文广告。这是因为在我们的新闻
feed
广告系统中,页面上仅显示一个广告。- 广告特征,如广告
数据集的统计信息如下表所示,其中
avg
表示average
、ctxt
表示contextual
、pta
表示per target ad
。可以看到distinct
特征数量可以高达4600
万。baseline
方法:LR
:逻辑回归模型Logistic Regression
。它是一个广义线性模型,建模了一阶特征重要性。FM
:因子分解机模型Factorization Machine
。它同时对一阶特征重要性和二阶特征交互进行建模。DNN
:深度神经网络Deep Neural Network
。每个样本首先经过一个embedding
层,然后经过几个全连接层。最后输出层利用sigmoid
函数来预估CTR
。Wide&Deep
:Wide&Deep
模型。它结合了LR
模型(wide
部分)和DNN
模型(deep
部分)。DeepFM
:DeepFM
模型。它结合了FM
模型(wide
部分)和DNN
模型(deep
部分),并且在wide
部分和deep
部分之间共享相同的输入和embedding
向量。事实证明,DeepFM
的性能优于Wide&Deep, FNN, PNN
等模型。CRF
:条件随机场Conditional Random Field
方法。它同时考虑了广告的特征、以及该广告和周围广告surrounding ad
的相似性。CTR
预估的对数几率通过 $ \mathbf{\vec w}^\top\mathbf{\vec x}-0.5\beta\times s $ 给出,其中: $ \mathbf{\vec w},\beta $ 为模型参数, $ \mathbf{\vec x} $ 为样本特征, $ s $ 为周围广告的相似性之和 。相似性是在广告标题和广告描述文本中的字符串上人工定义的manually defined
。CRF
在某种程度上是不切实际的,因为在商业广告系统中,无法预先知道目标广告下面的广告。因此,我们仅将上下文广告(即目标广告上方的广告)用作周围的广告。GRU
:Gated Recurrent Unit
,最先进的RNN
网络之一。它利用了用户的历史点击广告序列。DSTN-P
:DSTN-Pooling
模型。它使用sum
池化来聚合辅助数据。DSTN-S
:DSTN-Self Attention
模型。它使用self attention
来聚合辅助数据。DSTN-I
:DSTN-Interactive Attention
模型。它引入了辅助数据和目标广告之间的显式交互。
在所有这些方法中,
CRF, GRU, DSTN
均考虑辅助广告,而所有其它方法都聚焦于目标广告上。具体而言:CRF
考虑了上下文广告,GRU
考虑了历史点击广告,DSTN
考虑了上下文广告、历史点击广告、历史未点击广告。配置:
- 每个特征的
embedding
向量维度设为10
。因为distinct
特征数量太高,如果embedding
维度太大则参数规模异常巨大。 DNN, Wide&Deep, DeepFM, GRU, DSTN
中全连接层的层数设为2
,每层的维度分别为512,256
。dropout rate
设为0.5
。GRU
的隐层维度设置为128
。DSTN-S
中的 $ f(\cdot) $ 函数是具有单隐层的MLP
,隐层维度为128
。DSTN-I
中的 $ \mathbf{\vec h} $ 的维度也设为128
。- 所有方法都在
Tensorflow
中实现,并通过Adagrad
算法进行优化。batch size
设为128
。 - 我们使用用户最近
3
天的历史行为。为了降低内存需求,我们进一步限制 $ n_c\le 5,n_l\le5,n_u\le 5 $ 。也就是说,如果历史点击广告数量不超过5
个,则我们全部使用;如果超过5
个,则我们使用最新的5
个。
- 每个特征的
评估指标:测试集上的
AUC, logloss
。AUC
反映了对于随机选择的一个正样本和一个负样本,模型对正样本的rank
高于负样本的概率。下表给出了实验结果。可以看到:
Wide&Deep
比LR, DNN
获得了更高的AUC
;同样地,DeepFM
比FM, DNN
获得了更高的AUC
。这些结果表明:将
wide
部分和deep
部分组合在一起可以提高整体的预测能力。CRF
的效果比LR
好得多,因为CRF
可以通过一个系数来校正LR
的预测,该系数summarize
了当前广告和上下文广告的相似性。但是,这种相似性是基于原始字符串人工定义的,因此遇到了语义
gap
的困扰。GRU
在两个数据集上(除了Search
数据集)的表现优于LR, FM, DNN, Wide&Deep, DeepFM
,因为GRU
还利用了历史点击广告。GRU
的改善在News Feed
广告数据集上最为明显。这是因为用户没有在News Feed
广告中提交query
,因此历史行为非常有信息量informative
。DSTN-P
优于GRU
。原因有两个:- 首先,用户行为序列中的连续行为可能没有很好的相关性。例如,某个用户最近点击了零食和咖啡的广告。下一次点击的广告可能是关于牙膏的,而不是关于食品的。这仅仅取决于用户的需要,而不是与之前点击广告的相关性。因此,考虑用户行为序列可能不一定有助于提高预测性能。
- 其次,
DSTN-P
可以利用上下文广告、历史未点击广告中的信息。
当我们比较
DSTN
的不同变体时,可以观察到:DSTN-S
的性能优于DSTN-P
,而DSTN-I
的性能进一步优于DSTN-P
。这些结果表明:和简单的
sum
池化相比,self attention
机制可以更好地强调有用的信息。而interactive attention
机制显式地引入了目标广告和辅助广告之间的互动,因此可以自适应地抽取比self attention
更多的相关信息。我们还观察到,
logloss
不一定与AUC
相关。即AUC
更大的模型,其logloss
不一定更小。尽管如此,DSTN-I
在所有数据集上的AUC
最大、logloss
也最小,这显示了模型的有效性。
为了检查不同类型辅助数据的影响,我们在
DSTN-I
模型中分别仅提供上下文广告、仅提供历史点击广告、仅提供历史未点击广告。为了衡量效果,我们定义并计算以下两个指标:绝对
$ \text{AbsImp}(\text{ctxt}) = \text{AUC}(\text{DSTN-I with ctxt ads only}) - \text{AUC}(\text{DNN}) $AUC
提升absolute AUC improvement: AbsImp
:其中
ctxt
是上下文的缩写。标准化的
$ \text{NlzImp}(\text{ctxt}) =\frac{\text{AbsImp}(\text{ctxt})}{\text{Avgerage number of ctxt ads per target ad }} $AUC
提升normalized AUC improvemen: NlzImp
:这里我们针对平均辅助数据的规模进行归一化。
AbsImp
考虑AUC
的整体提升,而NlzImp
将AUC
提升效果针对单个辅助广告进行标准化。通常我们关注AUC
的绝对提升而不是相对提升,因为在工业实践中AUC
的绝对提升更具有意义和指导性。实验结果如下图所示。
从
(a)
中可以看到:不同类型辅助数据的效果在不同数据集上有所不同。上下文广告在Avito
数据集上的AbsImp
最高,而历史未点击广告在Search
数据集上的AbsImp
最高。从
(b)
中可以看到:有意思的是,一旦标准化之后,上下文广告、历史点击广告的作用就比历史未点击广告高得多。这符合直觉,因为上下文广告可能会分散用户的注意力,而历史点击广告通常会反映出用户的兴趣。相反,历史未点击广告可能会产生很大的噪音:历史未点击可能表明用户对广告不感兴趣,或者用户根本没有查看广告。
为了检查全连接层深度的影响,我们在
DSTN-I
模型中分别选择了三种不同配置的全连接层:单层256
维、两层512-256
维、三层1024-512-256
维。实验结果如下图所示。可以看到:
- 增加全连接层的数量可以在一开始改善
AUC
,但是随后添加更多层时,提升的幅度会降低。 - 最后,添加更多的层甚至可能导致轻微的性能降级
degradation
。这可能是由于更多的模型参数导致过拟合,以及更深的模型导致训练难度增加而导致的。
- 增加全连接层的数量可以在一开始改善
下图分别给出了
NN
和DSTN-I
学到的ad-embedding
的可视化(基于t-SNE
),不同颜色代表不同的子类目。这些广告是基于5
个主类目(电子、服装、家具、计算机、个人护理)下的20
个子类目。我们在每个子类目中随机选择100
个广告。注意:这里可视化的是
target ad embedding
,而这里的的ad embedding
只有广告信息,不包含query
信息和用户信息。可以看到:
- 两种方法学到的
embedding
均显示了清晰的簇结构,每个簇代表一组相似的广告。 - 尽管如此,
DNN
还是将iPhone
和 “三星手机” 混在一起,将 “床” 和 “橱柜” 混在一起,将 “礼服” 和 “鞋子” 混在一起。相比之下,DSTN-I
学习到了更清晰的簇,并清楚地区分了不同的子类目。
这些结果表明,
DSTN-I
可以借助辅助广告来学习更具代表性的embedding
。- 两种方法学到的
现在我们通过对
Avito
数据集的一些案例研究来检查DSTN-I
辅助广告的注意力权重。我们很难分别检查每种类型的辅助广告,因为很难找到包含足够数量的、所有辅助类型广告的案例。上下文广告:下图给出了关于
YotaPhone
的目标广告。我们显示了三个上下文广告,分别是手机镜头、三星手机、HTC
手机。我们给出了上下文广告的注意力权重 $ \alpha_c $ 。可以看到:两个手机广告的权重相差不大(约
0.6
),但是手机镜头广告(最不相似)的权重却要高得多(约0.8
)。这样的观察结果符合
《Relational click prediction for sponsored search》
中的分析,作者发现:周围的广告和目标广告越相似,目标广告的点击率就越低。这是因为相似的广告可以分散用户的注意力,因为所有这些广告都提供相似的产品或服务。相反,相异的广告可以帮助目标广告更加引人注目,因此
DSTN-I
将手机镜头广告给予较大的权重。因此对于上下文广告,和目标广告越相似,注意力权重越低。
历史点击广告:目标广告是关于自拍杆。我们给出了历史点击广告的注意力权重 $ \alpha_l $ 。
- 第一个历史点击广告是关于婴儿安全座椅,这显然与目标广告无关,其注意力权重为
0.5223
。 - 第二个历史点击广告是关于闪光灯,闪光灯是用于摄影的数码相机的附件,其注意力权重(
0.7057
)要比婴儿安全座椅高得多。 - 第三个历史点击广告是关于三脚架,三脚架和自拍杆更为相似,因此注意力权重更高(
0.8449
)。 - 第四个历史点击广告也是关于自拍杆,其注意力权重最高(
0.9776
)。
这些观察结果表明:历史点击广告和目标广告越相似,注意力权重越高。这是因为:如果用户曾经点击了和目标广告类似的广告,则用户也可能会点击目标广告。
- 第一个历史点击广告是关于婴儿安全座椅,这显然与目标广告无关,其注意力权重为
历史未点击广告:目标广告是关于
Sony
相机套装的。四个历史未点击广告分别与自行车、自拍杆、相机镜头、相机套装有关。我们给出了历史未点击广告的注意力权重 $ \alpha_u $ 。这些广告和目标广告的相似性依次递增,因此相应的注意力权重也在增加。
这些观察结果表明:历史未点击广告和目标广告越相似,注意力权重越高。这是因为:如果用户过去没有点击和目标广告类似的广告,那么用户很可能也不会点击目标广告。
将历史点击广告和历史未点击广告的注意力权重进行比较,我们发现一个有趣的现象:即使历史未点击广告和目标广告非常相似,历史未点击广告的平均权重也要比历史点击广告的平均权重小得多。这是因为历史点击广告会反映出可能的用户偏好,而历史未点击广告则更加模棱两可
ambiguous
。我们于
2019
年1
月进行了为期两周的在线A/B test
实现。基准模型是Wide&Deep
,这是我们最新的在线serving
模型。我们的在线评估指标是CTR
。在线实验结果表明:
DSTN
的效果始终优于Wide&Deep
,两周的平均CTR
提升在6.92%
。这证明了DSTN
在实际点击率预估任务中的有效性。目前我们已经在神马搜索中部署了DSTN
。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论