数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
十三、DIEN [2019]
点击付费
cost per click: CPC
是广告系统中最常见的计费形式之一,广告主需要为广告的每次点击付费。在CPC
广告系统中,点击率click-through rate: CTR
预估的表现不仅会影响到整个平台的最终收入,还会影响到用户体验user experience
和满意度satisfaction
。点击率预估建模越来越受到学术界和工业界的关注。在大多数
non-searching
的电商场景中,用户不会主动表达当前的意图。设计模型以捕获用户的兴趣及其兴趣的动态dynamics
是提高点击率预估性能的关键。最近,很多CTR
模型从传统方法转变到深度CTR
模型。大多数深度CTR
模型聚焦于捕获来自不同fields
的特征之间的交互,而不太关注用户兴趣representation
。DIN
强调用户兴趣是多样的,并使用attention based
的模型来捕获与目标item
相关的兴趣,从而获得自适应的兴趣representation
。然而,包括DIN
在内的大多数兴趣模型都将行为直接视为兴趣,而显式的行为很难充分反映潜在的兴趣。因此这些方法都忽略了挖掘用户行为背后真正的用户兴趣。此外,用户兴趣不断演变evolve
,捕获兴趣的动态对于兴趣representation
很重要。基于所有这些观察,论文
《Deep Interest Evolution Network for Click-Through Rate Prediction》
提出了深度兴趣演变网络Deep Interest Evolution Network: DIEN
来提高CTR
预估的性能。DIEN
中有两个关键模块:一个是从显式的用户行为中提取潜在的时序兴趣temporal interest
,另一个是对兴趣演变过程interest evolving process
进行建模。恰当的兴趣representation
是DIEN
模型的基石。在兴趣提取层
interest extractor layer
,DIEN
选择GRU
来建模行为之间的依赖关系。遵循兴趣直接导致连续行为的原则,论文提出了辅助损失,它使用下一个行为next behavior
来监督当前隐状态hidden state
的学习。论文将这些具有额外监督信息的隐状态称作兴趣状态interest state
。这些额外的监督信息有助于为兴趣representation
捕获更多的语义信息,并推动GRU
的隐状态有效地表达兴趣。更进一步,用户的兴趣是多样化的,这导致了兴趣漂移
interest drifting
现象:用户在相邻访问中的意图可能非常不同,并且用户的一种行为可能依赖于很久以前的行为。每个兴趣都有自己的演变轨迹evolution track
。同时,一个用户对不同目标item
的点击行为受到不同兴趣部分的影响。在兴趣演变层
interest evolving layer
,论文对于目标item
相关的兴趣演变轨迹进行建模。基于从兴趣提取层获得的兴趣序列,论文设计了具有注意力更新门的GRU
,即GRU with attentional update gate: AUGRU
。AUGRU
利用兴趣状态和目标item
计算相关性,增强了相关兴趣relative interests
对于兴趣演变的影响,同时削弱了因为兴趣漂移导致的非相关兴趣的影响。通过在更新门中引入注意力机制,AUGRU
可以导致针对不同目标item
的、特定的兴趣演变过程。
DIEN
的主要贡献如下:- 论文聚焦电商系统中的兴趣演变现象,并提出了一种新的网络结构来建模兴趣演变过程。建模兴趣演变导致更具表达性的兴趣
representation
和更精确的点击率预估。
不同于直接将行为作为兴趣,论文专门设计了兴趣提取层。针对
GRU
的隐状态较少地针对target for
兴趣representation
的问题,论文提出了一种辅助损失。该辅助损失使用连续行为consecutive behavior
来监督每个step
隐状态的学习。这使得隐状态足以代表潜在的兴趣。- 论文创新地设计了兴趣演变层,其中带有注意力更新门的
GRU
加强了目标item
相关的兴趣的影响,并克服了兴趣漂移问题。
在公共数据集和工业数据集的实验中,
DIEN
显著优于state-of-the-art
的解决方案。值得注意的是,DIEN
已经部署在淘宝展示广告系统中,并在各种指标下获得了显著的提升(20.7%
的点击率提升)。- 论文创新地设计了兴趣演变层,其中带有注意力更新门的
相关工作:凭借深度学习在特征
representation
和特征组合方面强大的能力,最近的CTR
模型从传统的线性模型或非线性模型转变到深度模型。大多数深度模型遵循Embedding & MLP
的结构。基于这种范式,越来越多的模型关注特征之间的交互interaction
:Wide & Deep
和DeepFM
都结合了低阶特征交互和高阶特征交互来提高表达能力。PNN
提出了一个product layer
来捕获跨field
特征之间的交互模式。
然而,这些方法并不能清晰地反映数据背后的用户兴趣。
DIN
引入了注意力机制来激活局部的、与目标item
相关的历史行为,并成功地捕获到用户兴趣的多样性特点diversity characteristic
。然而,DIN
在捕获序列行为sequential behaviors
之间的依赖关系方面很弱。在很多
application
领域中,可以随时间记录user-item
交互。最近的一些研究表明,这些交互信息可用于构建更丰富的单个用户模型individual user model
并挖掘discover
额外的行为模式behavioral pattern
。在推荐系统中:TDSSM
联合优化长期用户兴趣和短期用户兴趣,提高推荐质量。DREAM
使用RNN
结构来研究每个用户的动态representation
以及item
购买历史的全局序列行为global sequential behavior
。《Ups and downs: Modeling the visual evolution of fashion trends with one-class collaborative filtering》
构建了视觉感知推荐系统,该系统展示了更符合用户和社区community
不断演变兴趣的产品。《Sequential click prediction for sponsored search with recurrent neural networks》
根据用户的兴趣序列衡量用户的相似性,从而提高协同过滤推荐的性能。《Improving native ads ctr prediction by large scale event embedding and recurrent networks》
通过使用大规模event embedding
和RNN
网络的attentional output
来改进原始的CTR
预估性能。ATRank
使用基于注意力的序列框架attention based sequential framework
来建模异质行为heterogeneous behavior
。
和序列无关的方法相比,这些方法可以显著提高预测准确性。然而,这些传统的基于
RNN
的模型存在一些问题。- 一方面,它们大多将序列结构的隐状态直接视为潜在兴趣,而这些隐状态缺乏对兴趣
representation
的、专门的监督。 - 另一方面,大多数现有的基于
RNN
的模型依次地、平等地处理相邻行为之间的所有依赖关系。众所周知,并非所有的用户行为都严格依赖于相邻的行为。每个用户都有多样化的兴趣,每个兴趣都有自己的演变轨迹,因此这些模型可能会受到兴趣漂移的干扰。
为了推动序列结构的隐状态有效地代表潜在兴趣,应该引入对隐状态的额外监督。
DARNN
使用click-level
的序列预测,它在每次向用户展示每个广告时,对点击动作进行建模。除了点击动作,还可以进一步引入ranking
信息。在推荐系统中,ranking loss
已经被广泛用于排序任务。与这些ranking loss
类似,我们提出了兴趣学习的辅助损失。在每个step
,辅助损失使用next clicked item
和non-clicked item
来监督兴趣representation
的学习。为了捕获与目标
item
相关的兴趣演变过程,我们需要更灵活的序列学习结构sequential learning structure
。在问答question answering: QA
领域,DMN+
使用基于注意力的GRU
,即attention based GRU: AGRU
来推动注意力机制对输入事实fact
的位置和顺序都保持敏感。在AGRU
中,更新门向量被简单地替换为标量的attention score
。这种替换忽略了更新门所有维度之间的差异,这种差异包含了从先前序列传输的丰富信息。受到QA
中使用的新型序列结构的启发,我们提出了带注意力门的GRU
,即GRU with attentional gate: AUGRU
,从而在兴趣演变过程中激活相关的兴趣。和AGRU
不同,AUGRU
中的attention score
作用于从更新门计算出的信息。更新门和attention score
的结合推动了更专有specifically
、更敏感sensitively
的演变过程。
13.1 模型
- 这里我们详细介绍
DIEN
。首先我们简单回顾一下名为BaseModel
的、基础的Deep CTR
模型。然后我们展示了DIEN
的整体结构,并介绍了用于捕获兴趣和建模兴趣演变过程的技术。
13.1.1 BaseModel
Feature Representation
:在线展示广告系统中,有四类特征:- 用户画像特征
user profile
:包括性别、年龄等。 - 用户行为特征
user behavior
:包括用户访问的商品ID
列表。 - 广告特征
AD
:广告本身也是商品,因此称作目标商品。它包含商品ID
、店铺ID
等特征。 - 上下文特征
Context
:包含当前访问时间等特征。
每类特征中每个
field
的特征都编码为one-hot
向量。例如用户画像中的female
特征编码为[0,1]
。假设用户画像、用户行为、广告、上下文这四类特征中不同field
的one-hot
向量拼接之后分别为 $ \mathbf{ x}_p,\mathbf{ x}_b,\mathbf{ x}_a,\mathbf{ x}_c $ 。在序列的
$ \mathbf{x}_b = \left[\mathbf{\vec b}_1;\cdots;\mathbf{\vec b}_T\right] \in \mathbb R^{K\times T}, \mathbf{\vec b}_t\in \{0,1\}^K $CTR
模型中,值得注意的是,用户行为特征包含一个行为列表,每个行为对应一个one-hot
向量,可以表示为:其中 $ T $ 为用户行为序列的长度, $ K $ 为所有商品的数量, $ \mathbf{\vec b}_t $ 是第 $ t $ 个行为的
one-hot
向量。- 用户画像特征
BaseModel
的结构:大多数deep CTR
模型基于Embedding & MLP
结构,因此BaseModel
主要由以下部分组成:Embedding
部分:embedding
是将大规模稀疏特征转换为低维稠密特征的常用操作。在embedding layer
,每个特征field
对应一个embedding
矩阵。例如,visited goods
的embedding
矩阵可以表示为:
其中: $ \mathbf{\vec m}_j\in \mathbb R^{n_E} $ 代表第 $ j $ 个商品的
embedding
向量, $ n_E $ 为embedding
向量维度, $ K $ 为商品数量。对于行为特征的
one-hot
向量 $ \mathbf{\vec b}_t $ ,如果 $ b_t[j_t] = 1 $ ,则对应于embedding
向量 $ \mathbf{\vec m}_{j_t} $ ,那么用户行为特征的有序embedding
向量列表可以表示为: $ \mathbf e_b= \left[\mathbf{\vec m}_{j_1};\cdots;\mathbf{\vec m}_{j_T}\right] $ ,其中 $ j_t $ 表示第 $ t $ 个行为作用的商品。MLP
部分:将来自同一类特征的所有embedding
向量馈入一个池化层,得到一个固定长度的向量。然后将来自不同类特征的固定长度向量拼接在一起,馈入MLP
网络中得到最终预测结果。
损失函数:深度
$ \mathcal L_\text{target} = -\frac 1N \sum_{(\mathbf{ x},y)\in \mathbb D}^N \left(y\times \log p(\mathbf x) + (1-y) \times \log (1-p(\mathbf x))\right) $CTR
模型中广泛使用的损失函数为负的对数似然,它使用目标item
的label
来监督整体预测结果。即:其中:
- $ \mathbf x = [\mathbf{ x}_p,\mathbf{ x}_b,\mathbf{ x}_a,\mathbf{ x}_c] \in \mathbb D $ , $ \mathbb D $ 为训练集, $ N $ 为训练集大小。
- $ y\in \{0,1\} $ 表示用户是否点击目标
item
。 - $ p(\mathbf x) $ 为模型预测用户点击目标
item
的概率。
13.1.2 DIEN
与赞助搜索
sponsored search
不同,在很多电商平台中,用户并没有清晰地表达他们的意图,因此捕获用户兴趣及其动态dynamics
对于CTR
预估很重要。DIEN
致力于捕获用户兴趣并建模兴趣演变过程。如下图所示,
DIEN
由几个部分组成。首先,所有离散特征都通过
embedding layer
进行转换。接下来,
DIEN
采取两个步骤来捕获兴趣演变:- 兴趣提取层
interest extractor layer
根据行为序列提取兴趣序列。 - 兴趣演变层
interest evolving layer
建模与目标item
相关的兴趣演变过程。
- 兴趣提取层
然后,将最终兴趣的
representation
、广告embedding
向量、用户画像embedding
向量、上下文embedding
向量拼接起来。拼接的向量馈入MLP
以进行最终的预测。
a. Interest Extractor Layer
在电商系统中,用户行为是用户潜在兴趣的载体,用户执行一次行为之后兴趣可能就会发生变化。在兴趣提取器层,我们从连续的用户行为中提取一系列的兴趣状态。
电商系统中用户的点击行为非常丰富,即使在很短时间内(如两周),用户历史行为序列的长度也很长。为了在效率和性能之间平衡,我们采用
$ \mathbf{\vec u}_t = \sigma\left(\mathbf W^u \mathbf{\vec i}_t + \mathbf U^u\mathbf{\vec h}_{t-1} + \mathbf{\vec b}^u\right)\\ \mathbf{\vec r}_t = \sigma\left(\mathbf W^r \mathbf{\vec i}_t + \mathbf U^r\mathbf{\vec h}_{t-1} + \mathbf{\vec b}^r\right)\\ \tilde{\mathbf{\vec h}}_t = \tanh\left(\mathbf W^h\mathbf{\vec i}_t + \mathbf{\vec r}_t\odot \mathbf U^h\mathbf{\vec h}_{t-1}+ \mathbf{\vec b}^h\right)\\ \mathbf{\vec h}_t = \left(1-\mathbf{\vec u}_t\right)\odot \mathbf{\vec h}_{t-1} + \mathbf{\vec u}_t\odot \tilde{\mathbf{\vec h}}_t $GRU
建模行为之间的依赖关系,其中GRU
的输入是按发生时间排序的行为。GRU
克服了RNN
的梯度消失问题,比LSTM
更快,适用于电商系统。GRU
形式化为:其中:
- $ \sigma $ 为
sigmoid
激活函数, $ \odot $ 为逐元素积。 - $ \mathbf W^u,\mathbf W^r,\mathbf W^h\in \mathbb R^{ n_H \times n_I}, \mathbf U^z,\mathbf U^r,\mathbf U^h\in \mathbb R^{n_H\times n_H} $ 为参数矩阵, $ \mathbf{\vec b}^u,\mathbf{\vec b}^r,\mathbf{\vec b}^h\in \mathbb R^{n_H} $ 为偏置向量。其中 $ n_H $ 为隐向量维度, $ n_I $ 为输入维度。
- $ \mathbf{\vec i}_t = \mathbf{ e}_b[t] $ 为用户行为序列中的第 $ t $ 个行为的
embedding
,它作为GRU
的输入。 $ \mathbf{\vec h}_t $ 为第 $ t $ 个隐状态。
- $ \sigma $ 为
然而,仅捕获行为之间依赖关系的隐状态 $ \mathbf{\vec h}_t $ 无法有效的表达用户兴趣。由于目标
item
的点击行为是由最终兴趣触发的,因此损失函数 $ \mathcal L_\text{target} $ 中使用的label
仅仅监督了最后一个兴趣状态 $ \mathbf{\vec h}_{T} $ ,历史兴趣状态 $ \mathbf{\vec h}_{t},t\lt T $ 没有得到合适的监督。众所周知,用户每一步的兴趣状态都将导致连续的行为,因此我们提出辅助损失,从而利用第 $ t+1 $ 步的输入(即行为 $ \mathbf{\vec b}_{t+1} $ )来监督第 $ t $ 步的兴趣状态 $ \mathbf{\vec h}_t $ 的学习。除了采用真实的
$ \left\{\mathbf{ e}_b^i,\hat{\mathbf{ e}}_b^i\right\}\in \mathbb D_\mathcal B,i=1,2,\cdots,N $next behavior
作为正样本之外,我们还从正样本之外采样了一些item
作为负样本。因此得到 $ N $ 对行为embedding
序列:其中:
$ i $ 为训练样本编号, $ N $ 为训练样本总数。
$ \mathbf{ e}_b^i\in \mathbb R^{T\times n_E} $ 表示用户的历史行为序列
embedding
, $ T $ 为用户历史行为序列长度, $ n_E $ 为行为embedding
维度。$ \mathbf e_b^i[t]\in \mathbb G $ 表示用户 $ i $ 历史行为序列的第 $ t $ 个
item
的embedding
向量, $ \mathbb G $ 表示全部item
的embedding
集合。$ \hat{\mathbf{ e}}_b^i\in \mathbb R^{T\times n_E} $ 表示负样本采样序列。 $ \hat {\mathbf e}_b^i[t] \in \left(\mathbb G- \mathbf e_b^i[t]\right) $ 表示从用户 $ i $ 历史行为序列第 $ t $ 个
item
以外的所有item
中采样得到的item embedding
。
辅助损失函数为:
$ \mathcal L_\text{aux} = -\frac 1N\sum_{i=1}^N\sum_{t}\left[\log \sigma\left(\mathbf{\vec h}_t^i,\mathbf e_b^i[t+1]\right)+ \log\left(1-\sigma\left(\mathbf{\vec h}_t^i,\mathbf {\hat e}_b^i[t+1]\right)\right)\right] $其中:
- $ \sigma(\mathbf{\vec x}_1,\mathbf{\vec x}_2) = \frac{1}{1+\exp(- \mathbf{\vec x}_1\cdot \mathbf{\vec x}_2)} $ 为
sigmoid
激活函数。 - $ \mathbf{\vec h}_t^i $ 表示用户 $ i $ 的第 $ t $ 个隐状态。
- $ \mathbf e_b^i[t+1] $ 为第 $ t+1 $ 个点击
item
的embedding
向量,它作为第 $ t $ 步的、postive
的监督信息; $ \hat {\mathbf e}_b^i[t+1] $ 为第 $ t+1 $ 个负采样item
的embedding
向量,它作为第 $ t $ 步的negative
的监督信息。
考虑辅助损失之后,
$ \mathcal L = \mathcal L_\text{target} + \alpha \times \mathcal L_\text{aux} $DIEN
模型的整体目标函数为:其中: $ \mathcal L_\text{target} $ 为模型的主损失函数, $ \alpha $ 为超参数用于平衡兴趣表达和
CTR
预测。通过引入辅助函数,每个隐状态 $ \mathbf{\vec h}_t $ 就具有足够的表达能力来表达行为 $ \mathbf{ e}_b[t] $ 背后的兴趣。所有 $ T $ 个兴趣状态 $ [\mathbf{\vec h}_1,\mathbf{\vec h}_2,\cdots,\mathbf{\vec h}_T] $ 一起构成了兴趣序列,从而作为兴趣演化层的输入。
总体而言,引入辅助函数具有多个优点:
- 从兴趣学习的角度看,辅助损失函数的引入有助于
GRU
的每个隐状态学到正确的兴趣representation
。 - 从
GRU
优化的角度看,辅助函数的引入有助于缓解GRU
的长距离依赖问题,降低反向传播的难度。 - 还有不怎么重要的一点:辅助损失函数为
embedding
层的学习提供了更多的语义信息,从而产生更好的embedding
矩阵。
- 从兴趣学习的角度看,辅助损失函数的引入有助于
b. Interest Evolving Layer
随着外部环境和用户自身认知的共同作用,用户的各种兴趣随着时间的推移也在不断演变。以用户对衣服的兴趣为例,随着人口趋势和用户品味的变化,用户对衣服的偏好也在改变。这种兴趣演变过程直接决定了候选衣服商品的点击率预测。对这种兴趣演变过程进行建模有以下优点:
- 兴趣演变模块
interest evolving module
可以提供具有更多相关历史信息的最终兴趣的representation
。 - 可以更好地跟随兴趣演变趋势来预测目标
item
的点击率。
值得注意的是,在演变过程中兴趣表现出两个特点:
- 由于兴趣的多样性,兴趣可能会发生漂移
drift
。兴趣漂移对用户行为产生的影响是:用户可能在某个时间段对各种书籍感兴趣,但是另一个时间段可能对各种衣服感兴趣。 - 尽管兴趣之间会相互影响,但是每种兴趣都有自己的演变过程。如:书籍和衣服的兴趣演变过程几乎是独立的。我们只关注和目标
item
相关的兴趣演变过程。
- 兴趣演变模块
在第一阶段辅助损失的帮助下,我们获得了兴趣序列的
representation
。通过分析兴趣演变的特点,我们结合注意力机制的局部激活能力以及GRU
的序列学习能力来建模兴趣演变过程。在GRU
的每个step
,局部激活都可以强化相关兴趣的影响,并减弱无关兴趣(兴趣漂移)的干扰,有助于建模目标item
相关的兴趣演变过程。令 $ \mathbf{\vec i}_t^\prime,\mathbf{\vec h}_t^\prime $ 为兴趣演变模块的输入向量和隐向量。其中:兴趣演变模块的输入就是兴趣抽取模块的隐向量 $ \mathbf{\vec i}_t^\prime = \mathbf{\vec h}_t $ ,兴趣演变模块最后一个隐向量 $ \mathbf{\vec h}_T^\prime $ 就是最终的兴趣状态。
我们在兴趣演变模块中使用的
$ a_t = \frac{\exp\left(\mathbf{\vec h}_t \mathbf W \mathbf{\vec e}_a\right)}{\sum_{j=1}^T \exp\left(\mathbf{\vec h}_j\mathbf W \mathbf{\vec e}_a\right)} $attention score
函数定义为:其中:
- $ \mathbf{\vec e}_a \in \mathbb R^{n_A} $ 是广告
a
各field
的embedding
向量的拼接向量, $ n_A $ 为拼接向量维度。 - $ \mathbf W\in \mathbb R^{n_H\times n_A} $ 为参数矩阵, $ n_H $ 为隐向量维度。
attention score
反映了广告a
和输入的潜在兴趣 $ \mathbf{\vec h}_t $ 之间的关系,关系越紧密则得分越高。- $ \mathbf{\vec e}_a \in \mathbb R^{n_A} $ 是广告
接下来,我们将介绍几种结合注意力机制和
GRU
对兴趣演变过程进行建模的方法。
$ \mathbf{\vec i}_t^\prime = \mathbf{\vec h}_t\times a_t $GRU with attentional input: AIGRU
:为了在兴趣演变过程中激活相关的兴趣,我们提出了一种简单的方法,称作带注意力输入的GRU
GRU with attentional input: AIGRU
。AIGRU
使用attention score
来影响兴趣演变层的输入:其中: $ \mathbf{\vec h}_t $ 是兴趣提取层的第 $ t $ 个隐状态; $ \mathbf{\vec i}_t^\prime $ 是第二个
GRU
的输入,用于兴趣演变。在
AIGRU
中,和目标item
相关性较低的兴趣的scale
可以通过attention score
来减少。理想情况下,和目标item
相关性较低的输入可以被降低到零。但是AIGRU
效果不是很好,因为即使是零输入也可以改变GRU
的隐状态。所以,即使相对于目标item
的兴趣较低,也会影响后面兴趣演变过程的学习。Attention based GRU: AGRU
:在问答question answering: QA
领域,DMN+
首先提出了基于注意力的GRU
attention based GRU: AGRU
。通过使用来自注意力机制的embedding
信息修改GRU
架构之后,AGRU
可以有效地提取复杂query
中的关键信息。受问答系统的启发之后,我们将
$ \tilde {\mathbf{\vec u}}_t^\prime = a_t \times \mathbf{\vec u}_t^\prime\\ \mathbf{\vec h}_t^\prime = (1-\tilde {\mathbf{\vec u}}_t^\prime)\odot \mathbf{\vec h}_{t-1}^\prime + \tilde {\mathbf{\vec u}}_t^\prime\odot \tilde {\mathbf{\vec h}}_t^\prime $AGRU
的使用从提取query
中的关键信息,迁移到在兴趣演变过程中捕获相关的兴趣。具体而言,AGRU
使用attention score
代替GRU
的更新门,并直接修改隐状态:其中: $ \mathbf{\vec h}_t^\prime,\mathbf{\vec h}_{t-1}^\prime,\tilde {\mathbf{\vec h}}_t^\prime $ 是
AGRU
的隐状态。在兴趣演变的场景中,
AGRU
利用attention score
直接控制隐状态的更新。AGRU
在兴趣演变过程中削弱了目标item
相关性较低兴趣的影响。将注意力嵌入到GRU
中提高了注意力机制的影响,帮助AGRU
克服了AIGRU
的缺陷。
$ \tilde {\mathbf{\vec u}}t^\prime = a_t \times \mathbf{\vec u}t^\prime\ \mathbf{\vec h}t^\prime = (1-\tilde {\mathbf{\vec u}}t^\prime)\odot \mathbf{\vec h}{t-1}^\prime + \tilde {\mathbf{\vec u}}t^\prime\odot \tilde {\mathbf{\vec h}}t^\prime $GRU with attentional update gate: AUGRU
:虽然AGRU
可以直接使用attention score
来控制隐状态的更新,但是它使用了标量(attention score
$ a_t $ )代替向量(更新门 $ \mathbf{\vec u}_t $ ) ,忽略了不同维度之间重要性的差异。我们提出了带注意力更新门的GRU
GRU with attentional update gate: AUGRU
来无缝结合注意力机制和GRU
:其中: $ \mathbf{\vec u} t^\prime $ 为原始更新门, $ \tilde {\mathbf{\vec u}}_t^\prime $ 是我们为
AUGRU
设计的注意力更新门; $ \mathbf{\vec h}_t^\prime,\mathbf{\vec h}_{t-1}^\prime,\tilde {\mathbf{\vec h}}_t^\prime $ 是AUGRU
的隐状态。在
AUGRU
中,我们保留更新门的原始维度信息,它决定了每个维度的重要性。我们使用attention score
$ a_t $ 来缩放更新门的所有维度,这导致目标item
更少相关性的兴趣对隐状态的影响越小。AUGRU
更有效地避免了兴趣漂移带来的影响,并推动目标item
相关的兴趣平稳演变。
13.2 实验
这里我们在公共数据集、工业数据集上将
DIEN
和state of the art
技术进行比较。此外,我们设计了实验来分别验证辅助损失和AUGRU
的影响。为了观察兴趣演变的过程,我们展示了兴趣隐状态的可视化结果。最后,我们分享了在线serving
的技术和结果。数据集:
公共数据集
public Dataset
:Amazon
数据集。该数据集由商品评论和商品元数据组成。我们使用该数据集的两个子集:Books, Electronics
。在这些数据集中我们将评论视为行为,并按照时间对用户的评论排序。假设用户 $ u $ 有 $ T $ 个行为,我们的目标是使用前 $ T-1 $ 个行为来预测用户 $ u $ 是否会点评第 $ T $ 个评论中的商品。
工业数据集
Industrial Dataset
:由淘宝在线展示广告系统中的曝光日志和点击日志组成。我们将连续
50
天点击的广告作为样本,用户点击目标商品之前14
天的点击行为作为历史行为序列。其中前49
天的样本作为训练集,第50
天的样本作为测试集。
这些数据集的统计信息如下表所示。
baseline
方法:我们将DIEN
和一些主流的CTR
预估模型进行比较。BaseModel
:BaseModel
采用与DIEN
相同的embedding setting
、MLP setting
,但是BaseModel
使用sum pooling
来聚合用户的所有行为embedding
。Wide & Deep
:Wide & Deep
由两部分组成,其deep part
和BaseModel
相同、wide part
为线性模型。PNN
:PNN
使用product layer
来捕获跨field
之间的特征交互模式interactive pattern
。DIN
:DIN
使用注意力机制来激活目标item
相关的用户行为。Two layer GRU Attention
:通过双层GRU
来建模用户行为序列,并采用注意力机制来关注目标item
相关的行为。
公共数据集的结果:在公共数据集中每个实验重复
5
次,取离线AUC
的均值和标准差,实验结果如下表所示。可以看到:人工设计特征的
Wide & Deep
性能不佳,而自动特征交叉的PNN
效果相对较好。旨在捕获兴趣的模型可以明显改善
AUC
:DIN
激活了相对于目标广告的用户兴趣,Two Layer GRU Attention
进一步有效的捕获了兴趣序列中目标广告的相关兴趣。所有这些探索都获得了积极的效果。DIEN
不仅可以有效捕获兴趣序列,还可以对与目标item
相关的兴趣演变过程建模。兴趣演变模型可以帮助DIEN
获取更好的兴趣representation
,并准确捕获兴趣动态,从而大幅提升性能。
工业数据集的结果:我们进一步对真实展示广告的数据集进行实验。在工业数据集中,我们在
MLP
使用6
层FCN layer
,维度分别为600, 400, 300, 200, 80, 2
,历史行为序列的最大长度为50
。实验结果如下表所示。可以看到:Wide & Deep,PNN
比BaseModel
效果更好。- 与
Amazon
数据集只有一类商品不同,阿里在线广告数据集同时包含多种类型的商品,因此基于注意力的方法(如DIN
)可以大幅提升性能。 DIEN
捕获了目标item
相关的兴趣演变过程,并获得最佳效果。
消融研究:这里我们展示
AUGRU
和辅助损失的效果。AUGRU
的效果:下表给出了不同兴趣演变方法的结果。- 与
BaseModel
相比,Two layer GRU Attention
获得了改进,但是它缺乏对兴趣演变进行建模从而限制了能力。 AIGRU
直接对兴趣演变建模。尽管它效果得到提升,但是在兴趣演变过程中,注意力和演变之间的分裂使得建模过程中丢失了信息。AGRU
进一步试图融合注意力和演变过程,但是它没有充分利用更新门针对多个维度更新的优势。AUGRU
取得了明显的进步(倒数第二行),它理想地融合了注意力机制和序列学习,有效捕捉了目标item
相关兴趣的演变过程。
- 与
辅助损失的效果:使用
AUGRU
的基础上我们进一步评估辅助损失的效果。公共数据集中,用于辅助损失的负样本都是从当前评论商品之外的item
集合中随机抽样的。工业数据集中,用于辅助损失的负样本是所有已曝光但是未点击的广告。如下图所示,整体损失函数 $ \mathcal L $ 和辅助损失 $ \mathcal L_\text{aux} $ 都保持相似的下降趋势,这意味着兴趣
representation
生效,其中 $ \alpha = 1 $ 。如下表所示,辅助损失为两个公共数据集都带来了很大的改进(最后一行
vs
倒数第二行),它反应了监督信息对于学习兴趣序列和embedding
表示的重要性。如下表所示,辅助损失为工业数据集也带来了性能提高(最后一行
vs
倒数第二行),但是我们可以看到改进并不像公共数据集那样明显。这种差异来源于几个方面:- 首先,工业数据集具有大量的样本来学习
embedding
层,这使得它从辅助损失中获得的收益更少。 - 其次,不同于公共数据集的
item
全部属于同一个类目,工业数据集包含阿里所有场景的所有类目item
。我们的目标是在一个场景中预测广告的点击率。辅助损失的监督信息可能与目标item
是异质的heterogeneous
,所以辅助损失对工业数据集的影响可能相比公共数据集要小,而AUGRU
的影响则被放大了。
- 首先,工业数据集具有大量的样本来学习
兴趣演变可视化:
AUGRU
中隐状态的动态变化可以反映出兴趣演变过程,我们可以将这些隐状态可视化从而探索不同目标item
对于兴趣演变的影响。我们通过
PCA
将AUGRU
的隐状态投影到二维空间中,投影对应的隐状态按照行为发生的顺序连接。其中历史行为来自于以下类目:电脑音箱、耳机、汽车GPS
、SD
卡、micro SD
卡、外置硬盘、手机套。图
a
给出了不同目标item
的隐状态移动路径。None target
的黄色曲线表示原始兴趣序列(所有注意力得分都相等),它表示不受目标item
影响的兴趣演变。- 蓝色曲线表示目标
item
为屏幕保护类目的item
激活的隐状态,目标item
与所有历史行为相关性较小,因此表现出类似黄色曲线的路径。 - 红色曲线表示目标
item
为手机套类目的item
激活的隐状态,目标item
和历史行为密切相关,因此导致较长的路径。
图
b
中,和目标item
相关的历史行为获得了更大的注意力得分。
在线
A/B test
:我们在淘宝的展示广告系统进行在线A/B testing
,测试时间从2018-06-07 ~ 2018-07-02
,测试结果如下。与BaseModel
相比,DIEN
的CTR
提升20.7%
、eCPM
提升17.1%
、pay per click: PPC
降低3%
。目前
DIEN
已经在线部署并服务于主要流量,业务收入显著增长。在线
serving
:DIEN
的在线服务online serving
是一个巨大挑战。在线系统流量非常高,峰值可超过100
万用户/秒。为保证低延迟和高吞吐量,我们采用了几种重要技术来提高serving
性能:element parallel GRU
以及kernel fusion
:融合尽可能多的独立kernel
计算,同时GRU
隐状态的每个元素并行计算(元素级并行)。Batching
:不同用户的相邻请求合并为一个batch
,从而充分利用GPU
的并行计算能力。- 模型压缩:通过
Rocket Launching
方法来压缩模型从而训练一个更轻量级的网络,该网络尺寸更小但是性能接近原始大模型。例如,在Rocket Launching
的帮助下,GRU
隐状态的维度可以从108
压缩到32
。
通过这些技术,
DIEN serving
的延迟可以从38.2ms
降低到6.6ms
,每个worker
的query per second: QPS
可以达到360
。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论