数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
十七、MIMN [2019]
不断发展的互联网将我们带入具有个性化在线服务的数字世界。从在线系统收集的大量用户行为数据为我们提供了更好地了解用户偏好的绝佳机会。从技术上讲,从丰富的行为数据中捕获用户兴趣至关重要,因为它有助于典型的现实世界
application
(如推荐系统、在线广告)的显著改进。这里我们限制在点击率Click-Through Rate: CTR
预估建模的任务上。CTR
预估在在线服务中起着至关重要的作用。这里讨论的解决方案也适用于许多相关任务,例如转化率conversion rate: CVR
预估和用户偏好建模。在深度学习的推动下,人们已经提出了体系结构精心设计的、用于建模用户兴趣的深度
CTR
模型,从而实现了state-of-the-art
效果。这些模型大致可以分为两类:
pooling-based
的架构:它将用户的历史行为视为独立的信号,并应用sum/max/attention
等池化操作来summarize
用户的兴趣representation
。sequential-modeling
架构:它将用户的历史行为视为序列信号,并应用LSTM/GRU
操作来summarize
用户的兴趣representation
。
但是在工业应用中,需要大量的精力将这些复杂的模型部署到在线
serving
系统中以进行实时推断,其中每天都有数以亿计的用户访问该系统。当遇到非常长的用户行为序列数据时,问题变得更加困难:因为所有上述模型都需要在online serving
系统中存储完整的用户行为序列(也称作特征),并在极短的延迟时间内获取它们以计算兴趣representation
。这里,"长" 表示用户行为序列的长度高达1000
甚至更多。实际上,系统延迟和存储成本随着用户行为序列的长度大致成线性关系。DIEN
做了大量的工程工作来部署序列模型,但是它也就最大能处理长度为50
的用户行为序列。下图给出了在阿里巴巴线展示广告系统online display advertising system
中,用户行为序列的平均长度以及对应的CTR
模型的性能。显然,解决长序列用户行为建模的挑战是值得的。在论文
《Practice on Long Sequential User Behavior Modeling for Click-Through Rate Prediction》
中,论文共同设计co-design
了机器学习算法和在线serving
系统来用于CTR
预估任务,并介绍了工程实践。论文将用户行为建模和完整的CTR
预估系统解耦,并相应地设计了特定的解决方案:serving
系统的角度:论文设计一个叫做UIC: User Interest Center
用户兴趣中心的独立模块,将用户兴趣建模中最耗资源的部分和整个模型解耦。UIC
聚焦于在线serving
的用户行为建模问题,它维护每个用户的最新兴趣representation
。UIC
的关键是它的更新机制。用户粒度的状态更新仅取决于实时的用户行为触发事件realtime user behavior trigger event
,而不依赖于流量请求。也就是说,UIC
对于实时CTR
预估是无延迟的latency free
。机器学习算法的角度:解耦
UIC
模块无法解决存储问题,因为对于数以亿计的用户、且每个用户可能长达上千的用户行为序列的存储和推断仍然很困难。这里作者借鉴了NTM
的记忆网络memory network
的思想,并提出了一种叫做MIMN: (Multi-channel user Interest Memory Network
多通道用户兴趣记忆网络的新颖架构。MIMN
以增量的方式工作,可以很容易地使用UIC
模块实现,这有助于解决存储挑战。此外,
MIMN
通过记忆利用正则化memory utilization regularization
和记忆归纳单元memory induction unit
这两种设计改善了传统的NTM
,使其在有限的存储空间下更有效地建模了用户行为序列,并大大提升了模型性能。
从理论上讲,
UIC
和MIMN
的共同设计方案co-design solution
使得我们能够处理无限长度的用户行为序列数据的用户兴趣建模。实验表明:论文提出的方法在模型性能和系统效率上均具有优势。据作者所知,这是能够处理长达数千的用户行为序列数据的、最早的工业解决方案之一。目前该方案已经部署在阿里巴巴的display advertising system
中。本文主要贡献:
- 论文介绍了一个工程实践
hands-on practice
:结合学习算法和serving
系统的协同设计co-design
来完成CTR
预估任务。该解决方案已经部署在世界领先的广告系统中,使我们能够处理长的用户行为序列建模。
论文设计了一个新颖的
UIC
模块,它将沉重heavy
的用户兴趣计算与整个CTR
预估过程分离。UIC
对流量请求没有延迟,并允许任意复杂的模型计算,其中模型计算以离线模式工作。- 论文提出了一个新颖的
MIMN
模型,它改进了原有的NTM
架构,具有记忆利用正则化memory utilization regularization
和记忆归纳单元memory induction unit
两种设计,使其更适合用于兴趣的学习。MIMN
很容易用UIC server
实现,其中UIC server
增量地更新用户的兴趣representation
。 - 论文对公共数据集和从阿里巴巴广告系统收集的工业数据集进行了仔细的实验。作者还详细分享了在部署所提出的解决方案的实际问题方面的经验。
- 论文提出了一个新颖的
相关工作:
Deep CTR Model
:随着深度学习的快速发展,我们在计算机视觉、自然语言处理等诸多领域取得了进展。受这些成功的启发,人们提出了许多基于深度学习的CTR
预估方法。与传统方法中的特征工程不同,这些方法利用神经网络来捕获特征交互。虽然这个思想看起来很简单,但是这些工作在CTR
预估任务的发展上向前迈出了一大步。之后,工业社区更多地关注模型架构设计,而不是通过无穷无尽的特征工程来提高性能。除了学习特征交互之外,人们还提出了越来越多的方法来从丰富的历史行为数据中获取用户的洞察
insight
。DIN
指出用户的兴趣是多样化的,并且随着目标item
的不同而不同。DIN
中引入了注意力机制来捕获用户的兴趣。DIEN
提出了一个辅助损失来从具体行为中捕获潜在的兴趣,并改进了GRU
从而建模兴趣演变。
Long-term User Interest
:《Learning implicit user interest hierarchy for context in personalization》
认为长期兴趣意味着通用兴趣general interest
,这是用户大脑根深蒂固的、对个性化很重要的因素。《Framework for selecting and delivering advertisements over a network based on combined short-term and long-term user behavioral interests》
提出对用户对类目的长期兴趣建模。《Incremental update of long-term and short-term user profile scores in a behavioral targeting system》
增量地建模长期和短期用户画像score
,从而表达用户的兴趣。
所有这些方法都通过特征工程来建模长期兴趣,而不是通过自适应端到端的学习。
TDSSM
提出联合建模长期用户兴趣和短期用户兴趣来提高推荐质量。不幸的是,这些基于深度学习的方法,如TDSSM、DIN、DIEN
很难部署在面临极长用户行为序列的实时预估server
中。存储压力、计算延迟将随着用户行为序列的长度线性增长。在工业application
中,行为序列的长度通常很小(例如50
),然而淘宝的活跃用户可能会在两周内留下长度超过1000
的行为(如点击、转化等)。Memory Network
:记忆网络已经被提出用于使用外部记忆组件external memory component
提取知识。这个思想在NLP
中得到了广泛的应用,如问答系统question answering system
。一些工作利用记忆网络进行用户兴趣建模。然而,这些方法忽略了长期兴趣建模和实际部署问题。
17.1 模型
17.1.1 UIC
在现实世界的推荐系统或者广告系统中,点击率预估模块是至关重要的组件。通常点击率预估模块接收一组候选对象(如
item
或者广告),并通过执行实时的模型推断来返回相应的预估点击率。这一过程需要在严格的延迟时间内完成,实践中典型的延迟时间为10ms
。下图简要介绍了在线展示广告系统
online display advertising system
中用于CTR
任务的实时预估(RealTime Prediction: RTP
) 系统。为了便于读者理解,我们假设对RTP
的请求输入仅包含用户和广告信息,忽略了上下文或其它信息。在工业应用中,如电商行业的推荐系统,用户行为特征在特征集合中的贡献最大。例如,在我们的推荐系统中,接近
90%
的特征是用户行为特征,剩余10%
的特征是用户人口统计特征user demography featur
和广告特征。这些用户行为数据包含丰富的信息,对于用户兴趣建模很有用。下图显示了我们系统中不同天数收集的用户行为序列的平均长度,以及使用不同长度的用户行为特征训练的
basic model
(Embedding & MLP
)的离线性能。无需任何其它努力,当使用长度为1000
的用户行为序列时,basic model
要比使用长度为100
的用户行为序列,在AUC
上提升0.6%
。值得一提的是,仅0.3%
的AUC
提升对我们的业务而言就足够了。这种
AUC
的提升表明:利用较长的用户行为序列数据具有很大的价值。然而,利用长的用户行为序列数据带来了巨大的挑战。
实际上,数以亿计用户的行为特征非常庞大。为了在推荐系统中保持低延迟和高吞吐量,通常将行为特征存储在额外的分布式内存存储系统中
distributed in-memory storage system
,例如我们系统中的TAIR
(阿里巴巴实现的一个分布式key-value
存储系统)。这些特征将被提取到预测服务器prediction server
,并在流量请求到来时参与实时推断的计算。根据我们的实践经验,在我们的系统中实现
DIEN
会花费很多工程工作。为了使得延迟和吞吐量都满足RTP
系统的性能需求,用户行为序列的长度最高为150
,无法达到长度为1000
的情况。直接包含更多的用户行为数据非常困难,因为面临几个挑战。其中两个最关键的挑战包括:
存储约束:我们系统中有超过
6
亿用户,每个用户的行为序列的最大长度为150
。这将花费大约1TB
的存储空间,该存储空间不仅存储product_id
,也会存储其它相关的特征id
(如shop_id
、brand_id
等)。当用户行为序列的长度最大为
1000
时,将会消耗6TB
的存储空间,并且该数量还会随着用户行为序列的长度而线性增加。如前所述,我们的系统中使用高性能存储来保持低延迟和高吞吐量,而维持如此大的存储太昂贵了。庞大的存储量也导致用户行为特征的相应计算和更新的成本很高。因此,较长的用户行为序列意味着无法接受的存储消耗。
延迟约束:众所周知,使用序列的深度网络
sequential deep network
进行实时推断非常困难,尤其是在我们的请求量很大的情况下。DIEN
部署了多种技术,可以将我们系统中DIEN serving
的延迟降低到14ms
,而每个worker
的Query Per Second: QPS
的容量capacity
为500
。然而,当用户行为序列的长度最大为
1000
时,DIEN
的延迟在500 QPS
时会高达200ms
。我们的展示广告系统很难容忍500 QPS
下的30ms
延迟限制。因此,在当前的系统架构下,无法获得长的用户行为序列的好处。
为解决上述针对长的用户行为序列建模的挑战,我们提出了共同设计
co-design
机器学习算法和在线serving
系统的解决方案。由于用户行为建模是CTR
预估系统最具挑战性的部分,因此我们设计了一个User Interest Center: UIC
模块来处理它。下图的
B
部分说明了带有UIC server
的、新设计的RTP
系统。系统A
和B
之间的差异是用户兴趣representation
的计算。在B
中,UIC server
为每个用户维护最新的兴趣representation
。UIC
的关键是其更新机制:用户状态的更新仅取决于实时用户行为触发事件,而不是取决于请求。 也就是说,UIC
对于实时CTR
预测是无延迟latency free
的。在我们的系统中,UIC
可以在500QPS
下将长度1000
的用户行为序列的DIEN
模型的延迟从200ms
降低到19ms
。下图为
CTR
任务的RTP
系统示意图。通常RTP
由三个关键组件构成:特征管理模块feature management module
、模型管理模块model management module
、预估服务器prediction server
。系统A
和B
的主要区别在于用户兴趣representation
的计算。- 在
A
中,用户兴趣representation
针对每个请求在prediction server
内执行。 - 在
B
中,用户兴趣representation
针对实时的用户行为事件在UIC server
中独立执行。也就是说,用户兴趣representation
的计算和流量请求解耦并且是latency free
的。
- 在
17.1.2 MIMN
这里我们详细介绍用于长的用户行为序列建模的机器学习方法。
从长序列数据中学习是困难的。众所周知,简单的
RNN
(RNN,GRU,LSTM
)难以建模长的序列。注意力机制通过将序列数据中的必要信息
necessary information
压缩到固定长度的张量中来提升模型的表达能力。例如,在DIN
中,注意力机制通过soft-search
隐状态序列(或者source
行为序列)中与目标item
相关的部分来工作。- 为了进行实时推断,注意力机制需要存储所有原始行为序列,这给在线系统的存储带来很大压力。
- 此外,注意力的计算成本随着行为序列的长度线性增长,这对于长的用户行为序列建模是不可接受的。
实际上,
RNN
中的隐状态hidden state
并非旨在存储source
序列历史的全部信息,而是更多地关注预测目标predicting target
。因此,最后一个隐状态可能会遗忘长期的信息long-term information
。此外,存储所有隐状态是多余的。最近,人们提出了神经图灵机
Neural Turing Machine: NTM
从source
序列中捕获信息,并将其存储在固定大小的外部记忆中external memory
。在很多使用长序列数据进行建模的任务中,NTM
相比RNN
模型取得了显著提升。借鉴
NTM
的想法,本文中我们提出了一个基于记忆网络memory network-based
的模型,该模型为处理长的用户行为序列建模提供了新的解决方案。我们将该模型命名为Multi-channel User Interest Memory Network: MIMN
,如下图所示。MIMN
由两个主要部分组成:左子网络聚焦于用户行为序列的用户兴趣建模;右子网络遵循传统的Embedding &MLP
范式,该范式采用左子网络的输出以及其它特征作为输入。NIMN
的贡献在于左子网络,它是由NTM
模型驱动的,并且包含两个重要的记忆网络架构:
基本的
NTM
记忆单元,它具有标准的记忆读取memory read
和记忆写入操作memory write
。- 多通道
GRU
的记忆归纳单元memory induction unit
,它用于基于先前学习的NTM
记忆来捕获高阶信息。
- 多通道
UIC
存储MIMN
的外部记忆张量external memory tensor
,并利用用户的每个新行为来更新该张量。这样,UIC
从用户的行为序列中逐步捕获用户的兴趣。尽管
UIC
存储固定长度的记忆张量而不是原始行为序列,但是考虑到存储压力时,必须限制存储张量的大小。本文中,我们提出了记忆利用正则化memory utilization regularization
,以通过提高记忆利用utilization
来提升UIC
中的记忆张量的表达能力。另一方面,随着用户兴趣的变化以及随着时间的演变,我们提出使用记忆归纳单元
memory induction unit
来帮助捕获高阶信息。NTM
:标准的NTM
通过记忆网络从序列数据中捕获并存储信息。在time step
$ t $ ,记忆memory
的参数记作 $ \mathbf M_t\in \mathbb R^{M\times d} $ ,其中包含 $ M $ 个记忆槽memory slot
$ \left\{\mathbf {\vec m}_t(i)\right\}_{i=1,\cdots,M} $ ,其中 $ \mathbf{\vec m}_t\in \mathbb R^d $ 。NTM
的两个基本操作是记忆读取memory read
和记忆写入memory write
,它们通过一个控制器controller
来和记忆交互。记忆读取
$ w_t^r(i) = \frac{\exp\left(K\left(\mathbf{\vec k}_t,\mathbf {\vec m}_t(i)\right)\right)}{\sum_{j=1}^M \exp\left(K\left(\mathbf{\vec k}_t,\mathbf {\vec m}_t(j)\right)\right)},\quad i=1,2,\cdots M $memory read
:给定第 $ t $ 个行为的embedding
向量 $ \mathbf{\vec e}_t\in\mathbb R^{d_e} $ 作为输入,控制器会生成一个read key
$ \mathbf{\vec k}_t\in \mathbb R^d $ 来寻址记忆address memory
。它首先遍历所有的记忆槽,生成一个权重向量 $ \mathbf{\vec w}_t^r\in \mathbb R^M $ :其中:
$ K\left(\mathbf{\vec k}_t,\mathbf {\vec m}_t(i)\right)=\frac{\mathbf{\vec k}_t^\top \mathbf {\vec m}_t(i)}{\left\|\mathbf{\vec k}_t\right\|\times \left\|\mathbf {\vec m}_t(i)\right\|} $然后计算加权的
$ \mathbf{\vec r}_t = \sum_{i=1}^M w_t^r(i)\mathbf {\vec m}_t(i) $memory summarization
作为输出 $ \mathbf{\vec r}_t\in \mathbb R^d $ :
$ \mathbf M_t = (1-\mathbf Z_t)\odot \mathbf M_{t-1} + \mathbf A_t $memory write
:类似于memory read
操作,我们生成用于memory write
寻址的权重向量 $ \mathbf{\vec w}_t^w\in \mathbb R^M $ 。控制器还生成了额外的两个key
:add vector
$ \mathbf{\vec a}_t\in \mathbb R^d $ 、erase vector
$ \mathbf{\vec z}_t\in \mathbb R^d $ ,从而控制memory
的更新:其中:
$ \mathbf Z_t = \mathbf{\vec w}_t^w\otimes \mathbf{\vec z}_t\in \mathbb R^{M\times d} $ 为
erase matrix
, $ \otimes $ 为向量的外积。$ \mathbf Z_t $ 相当于每个
slot
提供一个加权的erase vector
$ \mathbf{\vec z}_t $ ,第 $ i $ 个slot
权重为 $ w_t^w(i) $ 。$ \mathbf A_t=\mathbf {\vec w}_t^w\otimes \mathbf{\vec a}_t\in \mathbb R^{M\times d} $ 为
add matrix
。$ \mathbf A_t $ 相当于每个
slot
提供一个加权的add vector
$ \mathbf{\vec a}_t $ ,第 $ i $ 个slot
权重为 $ w_t^w(i) $ 。$ \odot $ 为逐元素乘积。(注:原文说的是
dot product
)。
Memory Utilization Regularization
:实际上,basic NTM
会遭受memory
利用utilization
不平衡unbalanced
的问题,尤其是在用户兴趣建模的场景下。即,热门的item
倾向于在用户行为序列中频繁出现,并且主导着memory
的更新,从而使得memory
的使用变得低效。NLP
领域先前的一些工作已经提出使用LRU
策略来平衡每个memory
的利用utilization
。由于LRU
在处理过程的每个短序列中都非常注意平衡memory
的利用,因此LRU
几乎从来不会在相邻的时间步对相同的slot
写入信息。但是,在我们的场景中,用户可能会与隶属于相同兴趣的几种行为进行交互,这会写入同一个
slot
。LRU
将会使得内容寻址混乱disorganize
,并且不适合我们的任务。本文中,我们提出了一种称作
memory
利用正则化memory utilization regularization
的新策略,该策略被证明对用户兴趣建模是有效的。memory utilization regularization
背后的思想是:将不同memory slot
之间的write weight
方差进行正则化,从而使得memory
利用达到平衡。令 $ \mathbf{\vec g}_t = \sum_{c=1}^t \mathbf{\vec w}_c^{\tilde w} $ 为截止到 $ t $ 时刻的累积的、各
$ \mathbf P_t = \text{softmax}\left(\mathbf W_g\mathbf{\vec g}_t\right)\in \mathbb R^{M\times M}\\ \mathbf{\vec w}_t^{\tilde w} = \mathbf P_t\mathbf {\vec w}_t^{w}\in \mathbb R^M $slot
的更新后的权重,其中 $ \mathbf{\vec w}_c^{\tilde w} $ 为时刻 $ c $ 的、re-balanced
的write weight
:其中:
$ \mathbf {\vec w}_t^{w} $ 为原始的
write weight
,而 $ \mathbf{\vec w}_t^{\tilde w} $ 为新的write weight
。$ \mathbf P_t $ 为
slot
之间的权重转移矩阵,它取决于:$ \mathbf{\vec g}_t $ ,它代表了截止到 $ t $ 步每个
memory slot
的累积利用accumulated utilization
。参数矩阵 $ \mathbf W_g $ ,它通过正则化损失来学习:
$ \mathbf{\vec g} = \mathbf{\vec g}_T=\sum_{t=1}^T\mathbf{\vec w}^{\tilde w}_t\\\mathcal L_{reg} = \lambda\sum_{i=1}^M\left(g(i)-\frac 1M\sum_{j=1}^Mg(j)\right)^2 $其中: $ M $ 为
slot
数量。注意:上式中没有下标 $ t $ 。该正则化的物理意义为:不同slot
的累计write weight
的方差最小化。$ \mathcal L_{reg} $ 有助于降低不同
memory slot
上write weight
的方差。
通过使用 $ \mathbf{\vec w}^{\tilde w} $ 来代替 $ \mathbf{\vec w}^{ w} $ ,则所有的 $ M $ 个槽的更新频率将趋于均匀。通过这种方式,所有
memory slot
的利用都被提升从而得到平衡。因此,utilization regularization
可以帮助memory tensor
存储来自于source
行为数据的更多信息。Memory Induction Unit
:NTM
中的memory
旨在尽可能多地存储源数据中的原始信息。美中不足的是,它可能会错过捕获某些高级信息的机会,例如各部分兴趣的动态演变过程。为了进一步提升用户兴趣抽取的能力,MIMN
设计了一个Memory Induction Unit: MIU
。MIU
还包含了一个内部的memory
$ \mathbf S\in \mathbb R^{M\times d} $ ,它具有和NTM
相同的槽数 $ M $ 。这里我们将每个memory slot
视为一个用户兴趣通道user interest channel
。在时刻 $ t $ ,MIU
:选择 $ k $ 个通道,其中通道索引为:
$ \left\{i:w_t^r(i)\in \text{top}_k \left(\mathbf{\vec w}_t^r\right)\right\}_{i=1,\cdots,k} $其中 $ \mathbf{\vec w}_t^r $ 为前面提到的
NTM
的memory read
中的权重向量。选择
top k
是为了挑选重要的通道,从而过滤掉噪音信号。对于第 $ i $ 个选中的通道,更新 $ \mathbf{\vec s}_t(i) $ :
$ \mathbf{\vec s}_t(i)= \text{GRU}(\mathbf{\vec s}_{t-1}(i),\mathbf{\vec m}_t(i), \mathbf{\vec e}_t) $其中 $ \mathbf{\vec m}_t(i) $ 为
NTM
的第 $ i $ 个memory slot
, $ \mathbf{\vec e}_t $ 为行为embedding
向量。上式表明:
MIU
既从原始行为输入中捕获信息,又从NTM
模块存储的信息中捕获信息。这是一个归纳过程inductive process
,如下图所示。
多通道
memory
的GRU
参数是共享的,因此不会增加参数量。$ \left\{\mathbf{\vec s}_T(i)\right\}_{i=1}^M $ 和目标广告
embedding
$ \mathbf{\vec e}_a $ 进行attention-pooling
从而得到固定长度的embedding
向量,并用于后续的向量拼接和MLP
。Online Serving
:与DIEN,DIN
应用注意力机制从而获得candidate-centric
兴趣的representation
不同,MIMN
学会了显式地捕获和存储用户的多样化兴趣,并将其存储在每个用户的external memory
中。这种memory-based
架构无需在候选对象(如,我们系统中的目标广告)和用户行为序列之间进行交互式计算,并且可以增量执行,这使得它可扩展地用于长的用户行为序列建模。用于在线
serving
的MIMN
的实现非常简单。我们将整个模型拆分并实现到两个server
中:左侧的子网是在
UIC server
中实现的,如下图所示。它使用NTM
和MIU
进行计算量最大的用户兴趣建模。右侧的子网可以在
RTP server
中实现。
NTM
和MIU
模块均享受增量计算的优势:最新的memory state
代表用户的兴趣,并更新到TAIR
以进行实时CTR
预估。当收到最新的用户行为事件时,UIC
将再次计算用户兴趣representation
,并更新到TAIR
。这样,不需要存储用户行为数据。在我们的系统中,长用户行为序列的存储量可以从
6T
减少到2.7T
。UIC server
和MIMN
的co-design
使得我们能够处理长的用户行为序列数据,序列长度可以扩展到数千。UIC
用于用户兴趣representation
的更新和整个模型的计算无关,从而使它对于实时CTR
预估是无延迟latency free
的。MIMN
提出以增量的方式对用户兴趣进行建模,而无需像传统解决方案一样存储整个用户行为序列。此外,MIMN
使用改进的memory architecture
,可以实现出色的模型性能。
但是,它并不适合所有情况。我们建议将该解决方案应用于具有以下条件的应用程序:丰富的用户行为数据,以及实时用户行为事件的流量规模不能明显超过实时
CTR
预测请求的流量规模。
17.2 实验
实验分为两个部分:
- 详细介绍了算法验证,包括数据集、实验配置、比较模型、以及相应的分析。
- 讨论并分享在阿里巴巴展示广告系统中部署所提出的解决方案的实践经验。
17.2.1 实验结论
数据集:
Amazon Dataset
:由Amazon
提供的商品评论、商品元信息组成。我们使用Amazon
数据集的Books
子集。对于该数据集,我们将评论视为一种交互行为,并根据时间对一个用户的所有评论进行排序。假设用户 $ u $ 有 $ T $ 个行为,我们的目的是使用之前的 $ T-1 $ 个行为来预测用户 $ u $ 是否会对第 $ T $ 个评论中的商品写下评论。
为了聚焦长的用户行为序列预测,我们过滤了行为序列长度小于
20
的样本,并截断了行为序列长度为100
(即超过100
截断为100
)。Taobao Dataset
:收集自淘宝推荐系统的用户行为。数据集包含几种类型的用户行为,包括点击、购买等。它包含大约一百万用户的用户行为序列。我们采用每个用户的点击行为,并根据时间对其进行排序,从而尝试构建行为序列。假设用户 $ u $ 有 $ T $ 个行为,我们使用之前的 $ T-1 $ 个商品作为特征来预测用户是否会点击第 $ T $ 个商品。行为序列长度被截断为
200
。Industrial Dataset
:收集自阿里巴巴在线展示广告系统。样本来自曝光日志,其中标签为这个曝光是 ”点击“ 或者”未点击“。训练集由过去49
天的样本组成,测试集由下一天的样本组成。这是工业建模的经典配置。在这个数据集中,每天每个样本的用户行为特征包含之前
60
天的历史行为序列,行为序列长度被截断为1000
。
下表给出了这些数据集的统计信息。
实验配置:
- 对于所有模型,我们使用
Adam
优化器。我们采用指数衰减,学习率从0.001
开始、衰减速率为0.9
。 FCN: fully connected network
的层数设置为:200 x 80 x 2
。embedding
维度设为16
,和memory slot
的维度相同。MIU
中GRU
的隐层维度设为32
。NTM
和MIU
中的memory slot
数量是一个在消融研究部分仔细检查过的参数。- 我们将
AUC
视为衡量模型性能的指标。
- 对于所有模型,我们使用
baseline
方法:我们将MIMN
和state-of-the-art
的CTR
预估模型进行比较。Embedding & MLP
:是CTR
预估的basic
深度学习模型。它需要sum
池化操作才能整合行为embedding
序列。DIN
:是用户行为建模的早期工作,提出针对目标item
条件下对用户行为进行软搜索soft-search
。GRU4Rec
:基于RNN
的方法,并且是使用循环单元recurrent cell
来建模用户行为序列的首次研究。ARNN
:是GRU4Rec
的一种变体,它使用注意力机制对所有隐状态进行加权和,从而得到更好的用户行为序列representation
。RUM
:使用external memory
来存储用户的额行为特征。它还利用soft-writing
和attention reading
机制来和memory
进行交互。我们使用feature-level RUM
来存储序列信息。DIEN
:将GRU
和candidate-centric attention
技巧融合,从而捕获用户兴趣的演变趋势,并实现了state-of-the-art
性能。为了进行公平地比较,我们省略了辅助损失的技巧,以便更好地在
DIEN
中进行embedding
学习。否则应该针对上述所有模型都使用辅助损失技巧。
下表给出了所有模型的实验结果,每个实验重复
3
次并报告均值和标准差。可以看到:所有其它模型都击败了
Embedding & MLP
,这验证了针对用户行为建模的网络体系架构设计的有效性。MIMN
以很大的AUC
优势击败了所有模型。我们认为,这是由于memory-based
架构的巨大容量capacity
适用于建模用户行为。如前所述,长的用户行为序列数据背后的用户兴趣是多样的,且随着时间而动态演化。
MIMN
使用多通道memory
在两个方面学会了捕获用户兴趣:basic NTM
中的memory
使用平衡的利用balanced utilization
来记忆兴趣。MIU
中的memory
通过归纳兴趣的序列关系进一步捕获高阶信息,其中兴趣是基于NTM
的memory
。
memory
的slot
数量:我们在具有不同数量的memory slot
的MIMN
上进行了实验。为简化起见,我们使用最基本的NTM
体系结构来评估MIMN
,省略了memory utilization regularization
和memory induction unit
。下表给出了结果。可以看到,
slot
数量会影响模型性能:- 对于
Amazon
数据集,最佳性能是slot
数量为4
时取得的。 - 而对于
Taobao
数据集,最佳性能是slot
数量为8
时取得的。
我们的分析结果表明,这与数据集中用户行为序列的长度有关。
memory
中的每个slot
都是随机初始化的。对于行为序列较长的数据集,例如
Taobao
数据集,memory
有更多的机会学习和达到稳定stable
的representation
。对于行为序列较短的数据集,例如
Amazon
数据集,具有较大memory capacity
的模型遭受学习不足的影响。尤其是当memory
的所有slot
的利用不平衡时,部分memory
向量可能无法充分利用和更新,这意味着这些memory
向量仍然保持接近于初始化状态。这会损害模型的性能。因此我们提出了
Memory Utilization Regularization
来缓解该问题。
- 对于
Memory Utilization Regularization
:由于每个用户的兴趣强度不一致,并且memory
进行了随机初始化,因此在basic NTM
模型中,存储的利用可能不平衡。这个问题将损害memory
的学习,使其不足以利用有限的memory
存储。我们使用
memory utilization regularization
技巧来帮助解决该问题。下图显式了memory utilization
,它验证了所提出的正则化器的有效性。这种平衡的效果还带来了模型性能的改善,如下表所示。
Memory Induction Unit
:通过归纳从basic NTM
的memory
,带memory induction unit
的MIMN
能够捕获高阶信息并带来更多提升,如上表所示。它增强了用户兴趣抽取的能力,并有助于从长的用户行为序列数据中建模用户兴趣。工业数据集结果:
我们进一步对阿里巴巴在线展示广告系统收集的数据集进行实验。我们将
MIMN
和DIEN
模型进行了比较,下表给出了结果。MIMN
以0.01
的AUC
提升超越了DIEN
,这对于我们的业务而言意义重大。除了离线模型的性能,在系统方面
MIMN
和DIEN
模型之间还存在很大差异。下图给出了当MIMN
和DIEN
作为serving
模型时实际CTR
预估系统的性能。MIMN
和UIC server
的co-design
在很大程度上击败了DIEN
,前者具有随着不同行为序列长度保持恒定的延迟和吞吐量的特性。因此,MIMN
可以在我们的系统中利用长度可达数千个的、长的用户行为序列数据,并享受模型性能的提升。相反,DIEN serving
的系统会同时遭受延迟和系统吞吐量的困扰。由于系统的压力,作为我们最新产品模型的
DIEN
中使用的用户行为序列长度仅为50
。这再次验证了我们提出的解决方案的优越性。我们已经在阿里巴巴的展示广告系统中部署了提出的解决方案。我们在
2019-03-30 ~ 2019-05-10
进行了严格的在线A/B
测试实验,从而验证提出的MIMN
模型。和
DIEN
(我们的最新产品模型)相比,MIMN
的CTR
和RPM
(Revenue Per Mille
每千次收入)均提高了7.5%
。我们将此归因于提出的co-design
解决方案从长的用户行为序列中挖掘的额外信息。
17.2.2 部署经验
这里我们讨论在我们的在线系统中,部署
UIC
和MIMN
的实践经验。UIC Server
和RTP Server
的同步synchronization
:如前所述,MIMN
是通过UIC server
和RTP server
一起来实现的。因此,UIC server
和RTP server
之间存在不同步out-sync
的问题。在周期性模型部署的实际系统中,两个
server
的异步参数更新可能导致不正确的模型推断,这具有很大的风险。下表给出了模拟不同步场景实验的结果。注意,在该实验中,out-sync
时间的间隔在一天之内,这是工业系统中的常见设置。实际上,在我们的真实系统中,模型部署被设计为每小时执行一次,这进一步降低了风险。可以看到
MIMN
针对out-sync
具有很好的鲁棒性。我们认为这是由于MIMN
学到的用户兴趣的稳定表示stable representation
,从而使得MIMN
具有良好的泛化性能。超大规模
big-scale
数据的影响:如今很多电商网站都采用大促来吸引用户进行在线消费,例如阿里巴巴的”双十一“活动。在这种极端情况下,样本的分布以及用户行为和日常情况大相径庭。我们比较了系统中11.11
大促日收集的训练数据、以及不包含11.11
大促日的训练数据,这两种情况下MIMN
的性能。结果如下表所示。我们发现:最好移除
big-scale
数据。Warm Up Strategy
:尽管UIC
旨在进行增量更新,但是从一开始就需要相当长时间才能进入稳定积累stable accumulation
。 实际上我们采用预热策略warm up strategy
来使用预先计算的用户兴趣表示来初始化UIC
。即,我们为每个用户收集最近120
天的历史行为(用户行为序列的平均长度为1000
),并以离线模式使用训练好的MIMN
来推断,然后将累积的memory
推送到UIC
中以便进行进一步的增量更新。该策略可以尽快地部署
MIMN
,并取得合理的模型性能。Rollback Strategy
:如果出现意外问题,如大规模在线作弊对训练样本的污染,UIC server
的增量更新机制可能会遭受重大损失。 一个麻烦的挑战是寻找异常case
发生的时间点。为了抵御这种风险,我们设计了一种回滚策略
rollback strategy
,该策略将每天00:00
学到的用户兴趣representation
副本存储起来,并保存最近7
天的副本。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论