数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
二十四、EdgeRec [2020]
互联网上可用的信息(如电影、商品、新闻等等)的爆炸性增长和多样性经常让用户不知所措。推荐系统是处理信息过载问题的一种有价值的手段,它从海量候选中选择一个
item
列表,以满足用户的多样化需求。在商业推荐系统的大部分场景中,尤其是在手机上,推荐的
item
都是以瀑布流的形式waterfall form
展示。如下图所示,大部分瀑布流式的推荐系统都是基于cloud-to-edge
框架来部署的。当用户在瀑布流式推荐场景中滚动时,移动客户端mobile client
首先向云服务器发起分页请求paging request
。然后在云服务器上serving
的matching
模型和ranking
模型响应分页请求并生成显示给用户的ranking item
列表。在这种情况下,当前的基于cloud-to-edge
的瀑布式推荐系统存在以下局限性:系统反馈延迟
Delay for System Feedback
:由于cloud-to-edge
框架中的分页机制,云端推荐系统无法在相邻的两个分页请求之间及时调整推荐结果,无法进一步满足用户不断变化的需求。以下图为例,用户点击了当前页面第
5
个位置的一件衣服,这反映了用户对衣服类目的突然偏好sudden preference
。然而,云端推荐系统无法响应,除非用户滚动到下一页,因此无法及时满足用户的需求、降低了用户体验。用户感知延迟
Delay for User Perception
:对于服务于云端的推荐模型,由于网络延迟,捕获用户行为存在长达1
分钟的延迟,因此它们在响应edge
时无法对用户的实时偏好进行建模。以下图为例,用户对页面第
49
个位置上item
的行为表明该用户目前对收音机的偏好,但是云端的推荐系统无法在下一页推荐类似的收音机,因为云端推荐系统没有及时接收到这些行为。此外,网络带宽进一步限制了当前推荐系统在edge
捕获多样的diverse
、详细detailed
的用户行为。
综上所述,云端推荐系统的局限性在于推荐结果的延迟调整导致无法匹配
edge
端用户偏好的实时变化,从而严重损害了商业推荐系统的用户体验。缺陷:实时性不足。除非用户滚动到下一页,否则客户端不会请求新的推荐
list
;即使客户端请求新的推荐list
,但是云端推荐系统无法及时处理实时用户行为。边缘计算
edge computing
非常适合需要高实时性能的application
,并且有可能解决当前基于cloud-to-edge
框架的推荐系统的上述问题。在论文《EdgeRec: Recommender System on Edge in Mobile Taobao》
中,论文率先设计并实现了一个新颖的边缘推荐系统recommender system on edge: EdgeRec
,该系统实现了实时用户感知Realtime User Perception
和实时系统反馈Real-time System Feedback
,而无需向云服务器发出额外请求。论文的主要贡献如下:
系统架构
System Architecture
:论文设计了EdgeRec
架构来在移动设备上进行reranking
,与提供候选item
的云端推荐系统协作。系统实现
System Implementation
:EdgeRec
支持大规模神经网络模型,通过跨edge
和cloud
之间分配模型,考虑了移动设备上的高效计算和存储。用户行为建模
User Behavior Modeling
:论文提出异质用户行为序列建模Heterogeneous User Behavior Sequence Modeling
来捕获用户不断变化的行为和动作。论文首先设计新颖的特征系统,然后同时考虑交互的
item
及其相应的动作,从而同时对user
和item
之间的正反馈和负反馈进行建模。基于EdgeRec
,特征系统中多样化diverse
的、详细detailed
的用户行为在edge
端被收集、存储、和消费,这些行为可以实时馈入模型中。特征体系创新:使用了更多的用户行为特征,不仅仅是点击/转化行为。
1 > 行为建模创新:将 `item` 序列和行为序列分别独立建模,从而获取 `item representation` 和行为 `representation` 。理论上讲,分别独立建模降低了模型复杂度。因为将 `item` 序列和行为序列作为 `(item, action)` 一起来建模,相当于引入了交叉特征,而交叉特征会扩大模型容量。
上下文感知重排
Context-aware Reranking
:论文提出使用带行为注意力网络的上下文感知重排Context-aware Reranking with Behavior Attention Network
,从而在edge
端重排reranking
。具体而言,论文通过提出的行为注意力机制对候选
item
和实时用户行为上下文之间的交互进行建模。依靠基于EdgeRec
的edge reranking
能力,EdgeRec
实现了实时响应以满足用户的需求。
作者对淘宝首页 feeds
的真实流量进行了广泛的离线和在线评估。定量和定性分析都证明了论文提出的 EdgeRec
系统的合理性和有效性。此外,EdgeRec
在在线 A/B test
中贡献了高达 1.57%
的 PV
提升、7.18%
的 CTR
提升、8.87%
的 CLICK
提升、10.92%
的 GMV
提升,这对当前的淘宝推荐系统带来了重大改进。现在 EdgeRec
已经上线部署,并服务于主要流量。
24.1 模型
24.1.1 系统
这里我们介绍
EdgeRec
系统,该系统旨在及时捕获丰富的用户行为(即实时感知Real-time Perception
)并及时响应用户的需求(即实时反馈Real-time Feedback
),而无需向云服务器发出任何额外请求。我们首先概述EdgeRec
系统,然后详细说明每个设计良好的模块的实现。系统概述:在下图中我们展示了
EdgeRec
系统的概况,其中左侧模块部署在手机淘宝客户端,右侧模块部署在云端。。注意,EdgeRec
旨在和云端的推荐系统协作,而不是取代后者。主要的模块和工作流程如下:本地客户端
Client Native: CN
:本地客户端首先发起分页请求
paging request
,并缓存推荐系统服务器返回的、具有相应特征的候选item
。服务器不仅返回推荐的
item list
,还返回这些item
对应的特征。EdgeRec
中分页大小设置为50
,为了稳定性,这和淘宝中原始推荐系统的取值一样。同时,从推荐系统服务器返回的item
数量设置为100
,以便为移动设备上的reranking
提供更多空间。然后,本地客户端收集用户对曝光
item
的行为并触发model serving
模块。从
model serving
模块接收到候选item
(尚未曝光的)的排名之后,本地客户端调整item
的UI
显示。
model serving: MS
:是EdgeRec
系统的核心模块。当model serving
被本地客户端触发时:- 首先
model serving
对从本地客户端接收到的用户行为和候选item
进行特征工程。 - 然后通过基于神经网络的模型,其目的是用户行为建模从而捕获及时的用户行为和上下文感知的
reranking
,从而及时响应用户。 - 最后,
model serving
将日志发送到云端(为了后续离线模型训练),并将候选item
的排名结果返回给本地客户端。
- 首先
Recommender System on server
:可以视为EdgeRec
中的召回模块,其目的是响应来自本地客户端的分页请求,为候选item
提供初始排名。此外,它可以在响应本地客户端之前,从云上的
key-value
存储中为候选item
查找model serving
模块中模型需要的item
特征和embedding
(例如category embedding
)。离线训练
Offline Training: OT
模块:- 首先从
model serving
收集日志并在模型训练之前构建样本。 - 接下来,训练好的模型被分为三个部分:用户行为建模
User Behavior Modeling
的子模型、上下文感知重排Context-aware Reranking
的子模型、embedding
矩阵(如类目和品牌)。 - 最后,前两个子模型都部署在
model serving
模块上,而embedding
矩阵作为key-value
形式存储在云端。
- 首先从
接下来我们介绍
EdgeRec
系统中两个关键模块的实现细节:本地客户端和model serving
模块。本地客户端
Client Native: CN
:本地客户端一个关键部分是在手机淘宝推荐系统中收集客户端上用户丰富的行为,例如浏览记录、点击记录(更详细的行为在后面会讲到)。这些用户行为随后被存储在设备的数据库中。由于
EdgeRec
模型(即Model Serving
)的运行是由本地客户端触发的,因此另一个关键的部分是触发model serving
的策略。这里我们根据用户的在线实时行为设置了几个触发点trigger points
:用户点击了一个item
、用户删除了一个item
(即长按)、K
个item
已经曝光但是没有点击。我们认为这三种类型的用户行为揭示了用户在当前推荐系统上的偏好,推荐系统应该及时响应用户(即触发Model Serving
)。根据业务规则来设定
trigger
。Model Serving
:在移动设备上的深度神经网络model serving
相比较于传统的云服务面临着许多挑战,例如计算开销和存储开销。EdgeRec
模型有两个关键实现,分别针对计算效率和存储效率。其思想是跨edge
和cloud
来分布模型,这使得EdgeRec
支持在移动设备上为推荐系统提供大规模神经网络的serving
。计算效率
Computing Efficiency
:用户行为建模User Behavior Modeling
和上下文感知重排Context-aware Reranking
一起训练,但是单独部署并在设备上异步运行。用户行为建模使用
RNN-based
序列建模方法,如果它总是从一开始就进行推断(即具有 $ O(n) $ 时间复杂度),那么效率低得多。因此,它通过RNN
的循环特性recurrent characteristic
(即时间复杂度为 $ O(1) $ )与用户的online incoming behaviors
一起被实时独立推断independently inferred
,并产生行为编码behavior encoding
。该编码被存储在设备上的数据库中。上下文感知重排将首先从数据库中检索行为编码,然后基于这些行为编码进行模型推断。存储效率
Storage Efficiency
:ID
类型的特征在推荐模型中很常见而且很重要,我们总是利用embedding
技术来转换它们。然而,当在移动设备上serving
时,ID embedding
面临存储效率的挑战。例如,我们模型中的item
品牌是一个ID
特征,字典大小大约为150
万。当ID
通过embedding
层转换为维度40
的embedding
向量时,embedding
矩阵的大小为150万 x 40
(即大约230MB
)。当部署在移动设备上时,具有如此大embedding
矩阵的模型将面临存储开销的问题。在
EdgeRec
系统中,我们从训练好的模型中提取embedding
矩阵以部署在云端的key-value
数据库中。当服务器上的推荐系统响应来自本地客户端的分页请求时,这些embedding
矩阵将被相应的item
检索,并作为item
特征发送到客户端。移动设备上的、没有embedding
层的剩余模型部分(大约3MB
)将把embedding
特征作为输入,然后进行模型推断。
此外,我们设计了一个模型版本策略
model version strategy
来确保模型更新时的同步,因为在移动设备上成功部署模型可能比在云端部署模型(即embedding
矩阵)有更大的延迟,这取决于用户移动设备的当前状态(如,是否连接到wifi
、是否连接到3G/4G/5G
)。在EdgeRec
系统中,我们将为每个训练好的模型生成一个唯一的版本ID
。该版本ID
与部署在移动设备上的模型、以及存储在云端的embedding
矩阵一起保存。本地客户端首先在设备端用模型版本号发起分页请求,然后云端推荐系统获取模型版本号,检索对应版本的embedding
矩阵,再响应客户端。版本
ID
用于确保模型各组件的一致性。这也意味着需要在云端部署多套embedding
(因为可能有的手机客户端未能更新到最新的模型)。
24.1.2 算法
这里我们介绍了用于用户行为建模和上下文感知重排的特征系统和方法。
我们提出的
EdgeRec
系统旨在将reranking
方法应用于edge targeting waterfall flow
推荐场景。给定云端现有推荐系统生成的、缓存在edge
端的初始排序item
列表 $ \mathcal S_r $ ,对于本地客户端模块触发的model serving
模块中的reranking
请求 $ r\in \mathcal R $ ,我们的目标是找到一个评分函数 $ \phi(\mathbf{\vec x}_i,\mathcal s,\mathcal C) $ ,其中: $ \mathbf{\vec x}_i $ 为目标item
$ i $ 的特征, $ \mathcal s $ 为来自初始模型的本地排序上下文local ranking context
(从 $ \mathcal S_r $ 抽取而来), $ \mathcal C $ 为当前推荐环境中的实时用户行为上下文real-time user behavior context
(从本地客户端上用户行为序列抽取而来)。这里本地排序上下文指的是推荐系统服务器返回的候选
item
列表。考虑本地排序上下文的
reranking
模型在以前的工作中已经得到了很好的研究。并且本地排序上下文表示为初始排序候选item
之间的list-wise
交互,其可以由RNN
或者Transformer
建模。但是,我们认为实时用户行为上下文对于reranking
问题也很重要,尤其是在瀑布推荐场景中,而之前很少有工作考虑过它。接下来我们将介绍如何使用异质用户行为序列建模实时用户行为上下文,以及如何使用行为注意力网络
Behavior Attention Network
的上下文感知重排Context-aware Reranking
来建模候选item
和实时用户行为上下文之间的交互。通过结合边缘计算edge computing
系统和上下文感知重排模型,我们可以在推荐系统中实现实时感知Real-time Perception
和实时反馈Real-time Feedback
,更好地满足用户的在线多样化需求。EdgeRec
系统的整体架构如下图所示。
a. 特征系统
这里我们首先讨论我们的特征系统
feature system
,然后介绍item
曝光上、以及item
详情页上的详细用户操作特征以及相应的item
特征。洞察
insight
: 在个性化搜索和推荐系统的文献中,用户的行为通常被建模从而表征用户的个性化偏好。因此,这些模型仅考虑用户和item
之间的直接 “正反馈”positive feedback
(例如点击或交易),很少关注间接“负反馈”negative feedback
(如跳过或删除)。虽然正反馈相对更清晰、噪音更小,但是实时的负反馈也很重要,尤其是在瀑布流推荐系统中。以在线淘宝推荐系统为例,一个item
类目实时多次曝光之后,如果继续曝光该类目的item
那么点击率CTR
会显著下降。另一方面,以前的工作仅考虑与用户交互的
item
的特征(如,类目、品牌)。然而,用户对item
的“动作”action
也应该受到关注。例如,用户点击一个item
之后,其详情页(称作item page-view
)中的操作(例如,添加到收藏夹、添加到购物车)反映了用户对该item
的真实偏好。此外,尽管用户没有点击某个item
,但是对该item
曝光的操作(例如滚动速度和曝光)可以代表该item
被视为“负反馈” 的程度。有时,如果用户长时间聚焦于某个item
曝光而没有点击它,这并不能绝对表明用户不喜欢该item
。在目前瀑布流推荐系统中,item
展示的信息量越来越大,例如图片更大、关键词更多、甚至自动播放视频,因此点击已经成为一些用户非常“奢侈”的正反馈。最后,基于我们提出的
EdgeRec
系统,所有的用户行为特征都在edge
(即用户的移动设备)上收集、抽取、和消费。与当前的基于cloud-to-edge
的推荐系统相比,这有可能突破网络延迟和带宽的限制。因此,可以结合丰富的、详细的用户行为以更实时的方式推断用户偏好。此外,在用户自己的移动设备上处理和利用用户的原始行为,可以在一定程度上缓解用户数据隐私问题。总而言之,我们工作中的特征系统是新颖的,并且从 “仅依赖正反馈交互” 到 “同时关注正负反馈交互”,从“仅关注交互
item
” 到 “同时考虑交互的item
及其相应的动作”, 从“准实时方式” 到 “超实时方式”。item
曝光用户行为特征Item Exposure User Action Feature
:item
曝光Item Exposure: IE
用户行为揭示了用户在推荐系统当前展示页面中的item
曝光上的行为。下图(a)
说明了手机淘宝瀑布流推荐系统中的item
曝光。相应用户行为特征可以分类为(下表给出了更详细的细节):
item
曝光统计信息(e1~e2
)、用户滚动统计信息(e3~e5
)、用户删除反馈信息(e6
)、时间衰减(e7
)。这里我们将item
$ i $ 对应的e1 ~ e7
拼接起来,作为item
$ i $ 的曝光行为特征向量exposure action feature vector
$ \mathbf{\vec a}_\text{IE}^i $ 。下表中,
e1 ~ e7
为item
曝光用户行为特征,d1 ~ d12
为item
详情页用户行为特征,p1~p7
为item
特征。item
详情页用户行为特征Item Page-View User Action Feature
:Item Page-View: IPV
用户行为揭示了用户在点击item
后在item
详情页中的行为。上图(b)
说明了手机淘宝中的item
详情页,并且相应用户行为特征可以分类为(下表给出了更详细的细节):item
详情页统计信息 (d1
)、每个区域是否点击(d2 ~ d11
)、时间衰减(d12
)。这里我们将item
$ i $ 对应的d1 ~ d12
拼接起来,作为item
$ i $ 的详情页行为特征向量page-view action feature vector
$ \mathbf{\vec a}_\text{IPV}^i $ 。item
特征Item Feature
:除了用户行为特征,我们还需要相应item
的特征。item
特征可以分类为:离散特征(p1~p6
,它们将学习embedding
)、从base ranking
模型提供的原始特征 (p7
)。这里我们将item
$ i $ 对应的p1 ~ p7
拼接起来,作为item
$ i $ 的item feature vector
$ \mathbf{\vec p}^i $ 。
b. 异质用户行为序列建模
这里我们将介绍如何对定义为 $ \mathcal C $ 的实时用户行为上下文
real-time user behavior context
进行建模。根据以前的工作,我们也应用序列建模方法。然而,之前的工作仅考虑用户的positive
交互item
,正如我们前面所讨论的,因此他们不能很好地处理基于我们提出的特征系统的用户行为序列建模。挑战来源于用户行为数据存在两个方面的异质性heterogeneity
。因此在我们的工作中,我们提出了异质用户行为序列建模Heterogeneous User Behavior Sequence Modeling: HUBSM
,具体而言是针对以下两个异质性:第一个异质性是
item
曝光行为和item
详情页行为的异质性。由于和item
曝光行为相比,item
点击行为要稀疏得多(item
详情页就是点击之后带来的),如果曝光行为和点击行为以一个序列编码在一起,那么我们相信item
曝光行为将占据主导地位。所以我们选择分别对item
曝光行为和item
详情页行为进行建模,即Item Exposure Behavior Sequence Modeling
和Item Page-View Behavior Sequence Modeling
。Item
曝光行为刻画的是用户的负向意图,而Item
详情页行为刻画的是用户的正向意图。所以在构建特征体系的时候,Item
曝光用户行为特征描述了哪些行为能够体现用户的 “不喜欢”,Item
详情页用户行为特征描述了哪些行为能够体现用户的 “喜欢”。第二个异质性是用
user behavior action
和对应的user interacted item
的异质性,这代表了两种特征空间。用户行为动作特征揭示了用户在item
上行为的分布,而item
特征代表了item
属性的分布。我们选择首先对用户行为动作和用户交互
item
进行独立编码,然后在接下来的上下文感知重排模型中进行关于行为注意力机制Behavior Attention mechanism
的融合。
曝光行为和点击行为分开独立建模可以理解,但是将动作序列和
item
序列分开独立建模好像讲不通?只有动作、而没有被作用的item
无法刻画用户的偏好,只有动作和item
结合在一起才能完整地刻画用户偏好。因此第二个异质性是否不成立?item
曝光行为序列建模:我们将Item Exposure
动作特征向量输入序列定义为 $ \mathcal A_\text{IE} = \left\{\mathbf{\vec a}_\text{IE}^i\right\}_{i=1}^m $ ,对应的item
特征向量输入序列为 $ \mathcal P_\text{IE} = \left\{\mathbf{\vec p}^i_\text{IE}\right\}_{i=1}^m $ 。其中 $ m $ 为Item Exposure
行为序列的预定义最大长度,对于较短的序列我们用零来填充。通过以下方程我们得到了动作编码输出序列 $ \hat {\mathcal A}_\text{IE} $ 、
$ \left(\hat{\mathcal A}_\text{IE},\_\right) = \text{GRU}(\mathcal A_\text{IE}),\quad \left(\hat{\mathcal P}_\text{IE},\_\right) = \text{GRU}(\mathcal P_\text{IE}),\quad \hat{\mathcal B}_\text{IE} = \text{concat}\left(\hat{\mathcal A}_{IE},\hat{\mathcal P}_\text{IE}\right)\\ \hat{\mathcal A}_\text{IE} = \left\{\mathbf{\hat{\vec a}}_\text{IE}^i\right\}_{i=1}^m,\quad\hat{\mathcal P}_\text{IE} = \left\{\mathbf{\hat{\vec p}}_\text{IE}^i\right\}_{i=1}^m,\quad \hat{\mathcal B}_\text{IE} = \left\{\mathbf{\hat{\vec b}}_\text{IE}^i\right\}_{i=1}^m $item
编码输出序列 $ \hat{\mathcal P}_\text{IE} $ 、融合的行为编码输出序列 $ \hat{\mathcal B}_\text{IE} $ :其中 $ \hat{\mathbf{\vec a}}_\text{IE}^i,\hat{\mathbf{\vec p}}_\text{IE}^i,\hat{\mathbf{\vec b}}_\text{IE}^i $ 为编码后的动作特征向量、
item
特征向量、融合行为向量。item
详情页行为序列建模:我们将Item Page-View
动作特征向量输入序列定义为 $ \mathcal A_\text{IPV} = \left\{\mathbf{\vec a}_\text{IPV}^i\right\}_{i=1}^n $ ,对应的item
特征向量输入序列为 $ \mathcal P_\text{IPV} = \left\{\mathbf{\vec p}^i_\text{IPV}\right\}_{i=1}^n $ 。其中 $ n $ 为Item Page-View
行为序列的预定义最大长度,对于较短的序列我们用零来填充。通过以下方程我们得到了动作编码输出序列 $ \hat {\mathcal A}_\text{IPV} $ 、
$ \left(\hat{\mathcal A}_\text{IPV},\_\right) = \text{GRU}(\mathcal A_\text{IPV}),\quad \left(\hat{\mathcal P}_\text{IPV},\_\right) = \text{GRU}(\mathcal P_\text{IPV}),\quad \hat{\mathcal B}_\text{IPV} = \text{concat}\left(\hat{\mathcal A}_{IPV},\hat{\mathcal P}_\text{IPV}\right)\\ \hat{\mathcal A}_\text{IPV} = \left\{\mathbf{\hat{\vec a}}_\text{IPV}^i\right\}_{i=1}^m,\quad\hat{\mathcal P}_\text{IPV} = \left\{\mathbf{\hat{\vec p}}_\text{IPV}^i\right\}_{i=1}^m,\quad \hat{\mathcal B}_\text{IPV} = \left\{\mathbf{\hat{\vec b}}_\text{IPV}^i\right\}_{i=1}^m $item
编码输出序列 $ \hat{\mathcal P}_\text{IPV} $ 、融合的行为编码输出序列 $ \hat{\mathcal B}_\text{IPV} $ :其中 $ \hat{\mathbf{\vec a}}_\text{IPV}^i,\hat{\mathbf{\vec p}}_\text{IPV}^i,\hat{\mathbf{\vec b}}_\text{IPV}^i $ 为编码后的动作特征向量、
item
特征向量、融合行为向量。如前所述,在
$ \left(\hat{\mathcal X},\mathbf{\vec s}\right) = \text{GRU}(\mathcal X) $item
曝光行为序列建模和item
详情页行为序列建模中,对于户行为动作、用户交互item
,我们都采用常用的gate recurrent unit: GRU
作为我们的编码器函数。我们用多层GRU
网络定义序列编码器函数为:其中 $ \mathcal X=\left\{\mathbf{\vec x}^{i}\right\}_{i=1}^n $ 为输入序列, $ \hat{\mathcal X} = \left\{\mathbf{\hat{\vec x}}^{i}\right\}_{i=1}^n $ 为编码的输出序列, $ \mathbf{\vec s} $ 为
RNN
的最终状态。我们采用向量拼接来作为融合函数
$ \hat{\mathbf{\vec b}}^i = \text{concat}\left(\hat{\mathbf{\vec a}}^i , \hat{\mathbf{\vec p}}^i \right) $fusion function
,即:其中 $ \hat{\mathbf{\vec a}}^i $ 为编码后的动作特征向量, $ \hat{\mathbf{\vec p}}^i $ 为编码后的
item
特征向量, $ \hat{\mathbf{\vec b}}^i $ 为融合后的特征向量。当然,这里可以采用更复杂的编码模型(例如
Transformer
),也可以采用更复杂的融合函数(例如DNN
)。考虑到移动设备上模型的大小,我们在实现中分别使用了GRU
和拼接。最终用户行为上下文 $ \mathcal C $ 由两个元组构成: $ \left(\hat{\mathcal P}_\text{IE},\hat{\mathcal B}_\text{IE}\right),\left(\hat{\mathcal P}_\text{IPV},\hat{\mathcal B}_\text{IPV}\right) $ 。我们在
EdgeRec
的设备上部署HUBSM
。基于RNN
的循环计算特性,我们对online incoming
用户行为进行同步地、实时地建模,如前面内容所述。
c. 上下文感知重排
这里我们研究了我们的
reranking
方法的细节,该方法称作行为注意力网络的上下文感知重排Context-aware Reranking with Behavior Attention Networks
,以共同捕获local ranking
上下文以及候选item
,与实时用户行为上下文之间的交互。我们使用
GRU
网络对由初始ranking
模型排序的候选item
序列进行编码,并将最终状态作为local ranking
上下文 $ \mathcal s $ 。借助于注意力技术,我们的reranking
模型可以自动搜索与target item
排序相关的用户行为上下文部分。以前的
CTR
预估模型(如DIN
和DUPN
)仅学习与target item
相关的attend
用户历史交互item
,因此它们无法基于上述注意力机制对用户行为动作进行建模。作为比较,我们的方法首先从用户行为上下文中attend
相关的交互item
(也就是找到相似的交互item
),然后attentively
结合相应的用户行为动作(这些用户行为动作表明用户对这些item
的潜在意图),一起作为上下文表示从而指导target item
预测。我们在这里称之为Behavior Attention
,它特别地同时使用了item
曝光行为上下文和item
详情页行为上下文。简而言之,首先找到目标
item
相似的用户交互item
,然后找到对于该item
的动作。Candidate Item Sequence Encoder
:我们将候选item
序列定义为 $ \mathcal P_\text{CND} = \left\{\mathbf{\vec p}_\text{CND}^i\right\}_{i=1}^K $ ,它是由推荐系统服务器中的prior
模型生成和排序的。这里的 $ K $ 是候选item
序列的预定义最大长度,对于较短的item
序列我们使用零来填充。候选
item
序列如何生成?猜测可能就是常规的ranking
模型得到的。因此EdgeRec
需要两套模型:一套是服务器端的常规ranking
模型,另一个是EdgeRec
模型。我们应用
$ \left(\hat{\mathcal P}_\text{CND},\mathbf{\vec s}_\text{CND}\right) = \text{GRU}(\mathcal P_\text{CND}) $GRU
网络对其进行编码,并将RNN
的最终状态表示为local ranking
上下文,即:其中: $ \hat{\mathcal P}_\text{CND} = \left\{\mathbf{\hat{\vec p}}_\text{CND}^i\right\}_{i=1}^K $ 为候选
item
编号后的embedding
向量, $ \mathbf{\vec s}_\text{CND} $ 为local ranking
上下文。因为服务器返回的是有序的
item list
,所以这里用GRU
网络来捕获序列关系。Behavior Attention
:具体到编码为 $ \hat {\mathbf{\vec p}}^t_\text{CND} $ 的target
候选item
$ t $ :我们首先分别关注
item
曝光行为item
编码序列 $ \hat {\mathcal P}_\text{IE} $ 和item
详情页item
动作编码序列 $ \hat {\mathcal P}_\text{IPV} $ 。然后我们根据
Bahdanau
注意力机制将将注意力分布表示为 $ \left\{\text{att}_\text{IE}^{t,j}\right\}_{j=1}^m $ 以及 $ \left\{\text{att}_\text{IPV}^{t,j}\right\}_{j=1}^n $ 。即,计算曝光行为
item
/ 详情页行为item
和目标item
$ t $ 的相似度。最后,我们通过结合注意力分布,以及用户行为序列的融合行为编码
fused behavior encoding
$ \hat {\mathcal B}_\text{IE} $ 和 $ \hat {\mathcal B}_\text{IPV} $ ,从而生成用户行为上下文 $ \mathbf{\vec c}_\text{IE}^t $ 和 $ \mathbf{\vec c}_\text{IPV}^t $ 。
具体而言,遵循
Transformer
中的三元组(Query,Key,Value)
的符号,我们在模型中定义 $ \hat {\mathbf{\vec p}}^t_\text{CND} $ 为Query
、 $ \hat {\mathcal P}_\text{IE}/\hat {\mathcal P}_\text{IPV} $ 为Key
、 $ \hat {\mathcal B}_\text{IE}/\hat {\mathcal B}_\text{IPV} $ 为Value
。我们认为,这里的注意力计算是为了搜索相似或相关的item
,因此比较的两个特征空间的representation
应该是同质的。这就是为什么我们选择对user behavior actions
和相应的user interacted items
分别进行编码,并以用户行为item
序列作为Key
、target item
作为Query
。比较的两个特征空间也可以是异质的,可以通过一个参数矩阵映射到相同的空间中来。但是论文中的方法是否更好,可以通过实验来比较。
详细信息可以参考以下公式:
$ \text{att}_\text{IE}^{t,j} = \text{softmax}\left(\mathbf{\vec v}_1\cdot \tanh\left(\mathbf W_1\hat {\mathbf{\vec p}}^t_\text{CND}+ \mathbf W_2\hat {\mathbf{\vec p}}_\text{IE}^j\right)\right),1\le j\le m\\ \mathbf{\vec c}_\text{IE}^t = \sum_{j=1}^m \text{att}_\text{IE}^{t,j} \times \hat {\mathbf{\vec b}}_\text{IE}^j\\ \text{att}_\text{IPV}^{t,j} = \text{softmax}\left(\mathbf{\vec v}_2\cdot \tanh\left(\mathbf W_3\hat {\mathbf{\vec p}}^t_\text{CND} + \mathbf W_4\hat {\mathbf{\vec p}}_\text{IPV}^j\right)\right),1\le j\le m\\ \mathbf{\vec c}_\text{IPV}^t = \sum_{j=1}^n \text{att}_\text{IPV}^{t,j}\times \hat {\mathbf{\vec b}}_\text{IPV}^j $其中 $ \mathbf W_1,\mathbf W_2,\mathbf W_3,\mathbf W_4,\mathbf{\vec v}_1,\mathbf{\vec v}_2 $ 为训练的参数。
模型学习:为了建模 $ \phi(\cdot) $ ,我们首先简单地将
IPV
、IE
上的上下文(即 $ \mathbf{\vec c}_\text{IE}^t,\mathbf{\vec c}_\text{IPV}^t $ )、target
候选的representation
(即 $ \hat {\mathbf{\vec p}}^t_\text{CND} $ )、local ranking
上下文(即 $ \mathbf{\vec s}_\text{CND} $ )拼接起来,并将它们馈入多层感知机MLP
中进行非线性变换,随后使用交叉熵损失进行模型训练。
24.2 实验
- 这里我们通过离线和在线评估,在真实的淘宝推荐系统数据集上验证了我们模型的有效性。
24.2.1 离线评估
数据集:我们从手机淘宝的
EdgeRec
系统收集在线日志以及相应的item
特征。具体而言,我们从两个不同日期(2019-11-14
和2019-11-15
)的日志中随机抽样,并将它们分为训练集(22072671
个样本)和测试集(200000
个样本)。此外,我们收集的数据集的Item
曝光行为序列平均长度为56
、Item
详情页行为序列的平均长度为26
。baseline
方法:我们将我们的模型和两种在工业application
中广泛应用的代表性方法进行比较,即DNN-rank
和DLCM
。为了检查我们提出的异质用户行为序列建模
HUBSM
和使用行为注意力网络的上下文感知重排CRBAN
的有效性,除了我们的完整方法CRBAN+HUBSM(IE&PV)
之外,我们还准备了CRBAN
的以下变体:CRBAN+HUBSM(IE)
:仅仅考虑Item
曝光行为序列建模IE-BSM
。CRBAN+HUBSM(IPV)
:仅仅考虑Item
详情页行为序列建模IPV-BSM
。CRBAN+HUISM(IE&IPV)
:尽管IE
曝光行为序列和Item
详情页行为序列都被考虑,但是使用DIN
而不是HUBSM
对用户行为上下文建模。DIN
仅考虑历史行为序列和目标item
相关性,没有利用到序列的顺序特性。
配置:我们使用
PAI
支持的分布式Tensorflow
训练模型,训练配置如下:batch size = 512
、学习率为0.005
、GRU
隐单元数量为32
、attention
隐单元数量为32
、MLP
隐单元数量为32
、优化器为Adam
。注意:
DNN-rank
和DLCM
仅利用云端的特征,因为它们无法捕获edge
特征。评估指标:
$ \text{GAUC} = \frac{\text{imp}_r \times \text{AUC}_r}{\sum_{r\in \mathcal R } \text{imp}_r} $GAUC
是一种广泛使用的推荐指标,通过对用户的AUC
取平均。在我们的论文中,我们通过对EdgeRec
系统中的本地客户端请求 $ r\in \mathcal R $ 取平均AUC
来扩展GAUC
,这可以视为一个reranking session
,计算如下:其中: $ \text{imp}_r $ 为请求 $ r $ 的
item
曝光量, $ \text{AUC}_r $ 为请求 $ r $ 的AUC
。不同方法的
GAUC
性能如下表所示。这里*
表示和baseline
(DLCM
) 相比,通过t-test
在p-value=0.05
的统计显著性提升。可以看到:
DLCM
优于DNN-rank
,这验证了将local ranking context
纳入reranking
模型的有效性。所有基于
CRBAN
的方法都显著优于DLCM
。特别地,我们的完整方法CRBAN+HUBSM(IE&IPV)
实现了GAUC
的2%
的显著相对提升。这证明了在reranking
模型中考虑实时用户行为上下文的优势。因此,如何对用户行为上下文进行建模是我们将在以下讨论中重点讨论的内容。为了验证我们提出的异质用户行为序列建模方法,我们将
HUBSM(IE&IPV)
与HUBSM(IE)
、HUBSM(IPV)
进行了比较。结果表明:正反馈(即IPV
)和负反馈(即IE
)的用户行为都有助于对用户行为上下文进行建模。我们还发现
HUBSM(IPV)
优于HUBSM(IE)
,这表明Item
详情页用户行为可能比Item
曝光用户行为更重要。最后,通过比较
HUBSM(IE&IPV)
和HUISM(IE&IPV)
的结果表明:通过同时考虑交互item
及其相应action
的行为注意力机制可以带来效果提升。
24.2.2 在线评估
在线
A/B test
:我们在手机淘宝上部署的EdgeRec
系统上进行了在线实验(A/B test
)。在淘宝瀑布流推荐系统中,在线指标包括PV、CTR、CLICK、GMV
,这些指标评估用户在推荐系统中查看(PV
)、点击(CTR,CLICK
)、购买(GMV
)的意愿有多大。EdgeRec
已经全面部署在手机淘宝application
中,服务于数十亿用户。baseline
(即A test
)是没有EdgeRec
的常规淘宝推荐系统。在这里,数百万不同的随机用户同时分别进行在线A/B test
。在2019-10-26
到2019-11-08
近两周的测试中,拥有完整模型CRBAN+HUBSM(IE&IPV)
的EdgeRec
平均贡献高达1.57% PV
、7.18% CTR
、8.87% CLICK
、10.92% GMV
的提升。这绝对是一项重大的改进,并证明了我们提出的系统的有效性。此外,我们还回顾了淘宝推荐系统中不同展示位置
display position
的在线平均item
点击率。从下图可以看到:部署EdgeRec
后,当前页面末尾的CTR
会有很大的提升。这说明在推荐系统中加入实时感知和实时反馈可以大大提高用户的点击意愿,因为推荐系统能够及时满足用户的在线需求。在线系统性能:除了在线
A/B test
以展示生产中的业务效果之外,我们还在手机淘宝中进行了EdgeRec
的效率测试,从三个关键方面揭示了部署EdgeRec
后系统效率的显著提升。用户行为的延迟时间会影响系统捕获用户对
item
个性化偏好的及时性,从而影响用户在推荐系统中的体验。由于网络带宽和延迟的限制,仅仅基于
cloud-to-edge
框架的推荐系统可能会导致捕获用户行为的延迟时间长达1
分钟。然而,部署Edge
之后,用户行为可以在设备上被收集和消费,无需任何网络通信开销,这可以使延迟时间在300
毫秒以内(例如,从设备上的数据库读取用户行为的时间)。系统的响应时间是影响推荐系统用户体验的另一个因素。当本地客户端随着用户在推荐系统场景中滚动并向系统发送请求时,系统应该及时响应并将已排序的
item
提供给用户,否则用户将等待并可能导致用户离开。由于为淘宝上亿用户提供如此复杂的推荐系统模型的计算开销,仅基于云端计算的推荐系统可能会导致包括网络传输在内的
1
秒的响应时间。而在EdgeRec
中,model serving
在每个用户的移动设备上,解决了集中计算开销的问题,使得响应时间在100
毫秒以内,无需任何网络通信。系统对用户的平均反馈次数是影响推荐系统用户体验的另一个关键因素。它反映了当用户在推荐系统中浏览时,系统可以调整向用户展示的
item
排名的频率。系统调整结果的频率越高,就越能够满足用户在推荐系统中的各种需求。然而,没有
EdgeRec
的推荐系统不能使系统反馈的次数变得更大,因为这会加重云端服务器上的计算开销。所以在目前cloud-to-edge
的框架下,没有EdgeRec
的淘宝推荐系统中用户的平均系统反馈次数为3
次,平均分页大小为50
(即用户平均发出3
次分页请求)。相比之下,EdgeRec
中没有显式的分页点,而是根据用户行为由本地客户端来触发。在不增加云端额外计算开销的情况下,EdgeRec
中系统反馈的平均次数可以达到15
次(即本地客户端平均在一个页面中触发了5
次reranking
请求,因此总数为15
次)。
带
EdgeRec
和不带EdgeRec
的推荐系统在这三个方面的性能如下表所示。结果数据是在流量高峰时观察到的,并且通过对用户取平均来计算。
24.2.3 案例研究
我们在下图中对手机淘宝进行了案例研究,以展示异质用户行为序列建模和行为注意力网络的上下文感知重排的有效性。总之,我们有以下观察:
用户在
item
详情页中的行为表明用户具有positive intention degree
的item
偏好,例如添加到购物车或者和客服咨询;而item
曝光中的用户行为通常推断出对item
的negative intention
,如快速划过或删除。这意味着异质用户行为序列建模能够捕获用户对历史交互
item
的潜在正向和负向意图。借助于
item
详情页中两件相似的衬衫,候选衬衫被预测为postive
;借助于item
曝光中具有lower negative intention degree
的两个相似的交互item
,候选帽子被预测为negative
。这表明行为注意力网络的上下文感知重排能够利用用户行为上下文对候选
item
之间的交互进行建模,从而更好地指导target item
的预测。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论