数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
十、JTM [2019](用于检索)
推荐问题
recommendation problem
本质上是从整个语料库中为每个用户请求检索一组最相关most relevant
或者最喜欢most preferred
的item
。在大规模推荐的实践中,算法设计需要在准确性accuracy
和效率efficiency
之间取得平衡。在拥有数千万或数亿个item
的语料库中,需要为每个用户请求user request
线性扫描每个item
的偏好分preference score
,这在计算上是难以实现的。为了解决这个问题,通常使用索引结构
index structure
来加速检索过程。在早期的推荐系统中,item-based
协同过滤item-based collaborative filtering: Item-CF
和倒排索引inverted index
是一种克服计算障碍的流行解决方案。然而,候选集合的范围scope
是有限的,因为最终只能推荐那些与用户历史行为相似的item
。近年来,向量表示学习
vector representation learning
方法得到了积极的研究。这种方法可以学习用户向量representation
和item
向量representation
,然后向量的内积表示user-item
偏好。对于使用vector representation-based
方法的系统,推荐集合生成generation
等价于k
近邻搜索问题k-nearest neighbor: kNN serach problem
。用于近似kNN
搜索的quantization-based
索引被广泛用于加速检索过程。然而,在上述解决方案中,向量表示学习和kNN
搜索索引构造search index construction
分别针对不同的目标进行优化。目标差异objective divergence
导致次优sub-optimal
的向量表示和索引结构。一个更重要的问题是,向量kNN
搜索索引依赖于用户偏好建模的内积形式,而这种内积形式限制了模型的能力。像Deep Interest Network: DIN
、Deep Interest Evolution Network: DIEN
、xDeepFM
这样的模型已经被证明在用户偏好预测方面是有效的,但是不能用于生成推荐候选集合。为了打破内积形式的限制,使得任意高级的用户偏好模型在计算上能够易于处理,从而可以从整个语料库中检索候选
item
,之前的工作Tree-based Deep Model: TDM
创新性地使用树结构作为索引,并大大提高了推荐的准确性accuracy
。TDM
使用一个树索引tree index
来组织item
,树中的每个叶节点对应于一个item
。像最大堆max-heap
,TDM
假设每个user-node
偏好等价于该用户在该节点的所有子节点上最大偏好。- 在训练阶段,训练
user-node
偏好预测模型从而拟合max-heap like
的偏好分布。不同于基于向量kNN
搜索的方法,其中索引结构要求用户偏好建模的内积形式,在TDM
中对偏好模型的形式没有限制。 - 在预测阶段,由训练模型给出的偏好分
preference score
被用于在树索引中执行layer-wise
的beam search
从而检索候选item
。
树索引中的
beam search
的时间复杂度相对于语料库大小是对数的,并且对模型结构没有限制,这是使得高级的用户偏好模型在推荐中检索候选item
可行的先决条件。索引结构在基于
kNN
搜索的方法和基于树的方法中扮演不同的角色。- 在基于
kNN
搜索的方法中,首先学习用户的向量表示和item
的向量表示,然后建立向量搜索索引vector search index
。 - 在基于树的方法中,树索引的层级
hierarchy
也会影响检索模型的训练,二者相互依赖。因此,如何联合学习树索引和用户偏好模型是一个重要的问题
基于树的方法也是极端分类
extreme classification
的文献中的一个活跃的研究主题,而极端分类有时也被认为是一种推荐。在现有的基于树的方法中,树结构被学习从而为了在样本空间或label
空间中有更好的层级hierarchy
。然而,树学习阶段的样本划分任务或label
划分任务的目标并不完全符合最终目标,即准确地推荐。索引学习index learning
和预测模型训练之间的目标不一致导致整个系统处于次优sub-optimal
状态。为了应对这一挑战,并促进树索引和用户偏好预测模型的更好协作,论文
《Joint Optimization of Tree-based Index and Deep Model for Recommender Systems》
开发了一种通过优化统一性能指标来同时学习树索引和用户偏好预测模型的方法。论文的主要贡献:- 提出了一个联合优化框架
joint optimization framework
来学习tree-based
推荐中的树索引和用户偏好预测模型,其中优化了统一的性能指标,即用户偏好预测的准确性accuracy
。 - 证明了所提出的树学习算法等价于二部图
bipartite graph
的加权最大匹配weighted maximum matching
问题,并给出了树学习的近似算法。 - 提出了一种新的方法,该方法可以更好地利用树索引生成层级
hierarchical
的用户representation
,有助于学习更准确accurate
的用户偏好预测模型。 - 证明了树索引学习和层级用户表示都可以提高推荐准确性
accuracy
,并且这两个模块甚至可以相互促进,从而实现更显著的性能提升。
在两个大规模的真实世界数据集上进行的实验评估表明,论文的方法可以显著提高推荐的准确性
accuracy
。在展示广告平台display advertising platform
上的在线A/B test
结果也证明了论文的方法在生产环境中的有效性。- 在训练阶段,训练
10.1 模型
我们首先简要回顾
TDM
,然后我们提出了tree-based
索引和深度模型的联合学习框架。最后,我们介绍了模型训练中使用的层级用户偏好表示hierarchical user preference representation
。改进点:直接优化损失函数的树学习算法;用户历史行为的
item
在不同level
使用不同的representation
。
10.1.1 TDM
在大规模语料库的推荐系统中,如何有效地检索候选
$ p^{(l)}(n\mid u) = \frac{\max_{n_c\in \{n's \text{ children in level } l+1 \}}p^{(l+1)}(n_c\mid u)}{\alpha^{(l)}} $item
是一个具有挑战性的问题。Tree-based Deep RecommendationModel: TDM
使用一棵树作为索引,并在树中提出了一个max-heap like
的概率公式。其中,在level
$ l $ 中每个非叶节点 $ n $ 的用户偏好为:其中:
- $ p^{(l)}(n\mid u) $ 为用户 $ u $ 对节点 $ n $ 偏好的
ground truth
概率。 - $ \alpha^{(l)} $ 为
level
的归一化项,使得 $ \sum_{n\text{ in level } l} p^{(l)}(n\mid u) = 1.0 $ 。
上述公式意味着:节点 $ n $ 的
ground truth
的user-node
概率,等于节点 $ n $ 的所有子节点中的user-node
概率最大值除以归一化项。因此:level
$ l $ 的top-k
节点必须包含在level
$ l-1 $ 的top-k
节点的子节点中。- 对
top-k
叶节点的检索可以严格限制为自顶向下地、递归地检索每个level
的top-k
节点,而不会损失准确性accuracy
。
有鉴于此,
TDM
将推荐任务转变为分层检索问题hierarchical retrieval problem
,从粗粒度到细粒度逐步地选择候选item
。- $ p^{(l)}(n\mid u) $ 为用户 $ u $ 对节点 $ n $ 偏好的
TDM
的候选生成过程candidate generating process
如下图所示。其中:图
(a)
表示用户偏好预估模型user preference prediction model
。首先将用户行为在相应
level
进行分层抽象hierarchically abstract
,得到层级的表示 。然后,层级的表示和目标节点以及其它特征(如用户画像)被用作模型的输入。图
(b)
表示树层级tree hierarchy
。首先将每个
item
分配给具有映射函数 $ \pi(\cdot) $ 的不同叶节点。在检索阶段,在leaf level
分配了红色节点的item
被选择为候选集。
候选生成过程首先将每个
item
分配给树层级tree hierarchy
$ \mathcal T $ 中的叶节点leaf node
,然后执行图(b)
所示的layer-wise
的beam search
策略:对于level
$ l $ ,仅对level
$ l-1 $ 中具有top-k
概率的节点的子节点进行评分和排序,从而选择level
$ l $ 中的top-k
候选节点。这个过程一直持续直到达到top-k
叶节点为止。通过树索引,用户请求的整体检索复杂度从相对于语料库大小的线性降低到对数,并且对偏好模型结构
preference model structure
没有任何限制。这使得TDM
打破了向量kNN
搜索索引带来的用户偏好建模内积形式的限制,并使得任意高级深度模型能够从整个语料库中检索候选item
,大大提高了推荐准确性accuracy
。
10.1.2 联合优化框架
假设包含 $ N $ 个样本的训练集为 $ \mathbb D = \left\{\left(u^{(i)},c^{(i)}\right)\right\}_{i=1}^N $ ,其中第 $ i $ 个样本 $ \left(u^{(i)},c^{(i)}\right) $ 表示用户 $ u^{(i)} $ 对
target item
$ c^{(i)} $ 感兴趣。对样本 $ \left(u^{(i)},c^{(i)}\right) $ ,树层级tree hierarchy
$ \mathcal T $ 决定了预估模型 $ \mathcal M $ 为用户 $ u^{(i)} $ 选择的、到达item
$ c^{(i)} $ 的路径。我们提出在全局损失函数下共同学习 $ \mathcal M $ 和 $ \mathcal T $ 。正如我们将在实验中看到的那样,共同优化 $ \mathcal M $ 和 $ \mathcal T $ 可以提高最终推荐的准确性
accuracy
。给定一个
user-item
的pair
对 $ (u,c) $ ,令 $ p(\pi(c)\mid u;\pi) $ 表示用户 $ u $ 对于叶节点 $ \pi(c) $ 的偏好概率。其中 $ \pi(c) $ 是一个映射函数,它将一个item
映射到 $ \mathcal T $ 中的叶节点。注意: $ \pi(\cdot) $ 完全决定了树层级 $ \mathcal T $ ,并且优化 $ \mathcal T $ 实际上是在优化 $ \pi(\cdot) $ 。模型 $ \mathcal M $ 在给定模型参数 $ \theta $ 的情况下预估
user-node
偏好 $ \hat p(\pi(c)\mid u;\theta,\pi) $ 。如果 $ (u,c) $pair
对是一个正样本,那么我们有ground truth
$ p(\pi(c)\mid u;\pi) = 1 $ 。根据最大堆max-heap
的属性,所有 $ \pi(c) $ 的祖先节点的用户偏好概率(即 $ \left\{p(b_j(\pi(c))\mid u;\pi)\right\}_{j=0}^{l_\max} $ )也应该是1
。其中 $ b_j(\cdot) $ 为一个映射函数,它将一个节点映射到level
$ j $ 的祖先节点, $ l_\max $ 为 $ \mathcal T $ 中的最大level
。这里假设每个用户仅有一个互动
item
。如果有多个互动item
,实际上由于level
的归一化项 $ \alpha^{(l)} $ 的存在,子节点 $ p(\pi(c)\mid u;\pi) = 1 $ 但是祖先节点的 $ p(b_j(\pi(c))\mid u;\pi) $ 不一定为1
。只能保证祖先节点的 $ p(b_j(\pi(c))\mid u;\pi) \gt 0 $ 。为了拟合这样的
$ \mathcal L(\theta,\pi) = -\sum_{i=1}^N\sum_{j=0}^{l_\max}\log \hat p\left(b_j\left(\pi\left(c^{(i)}\right)\right)\mid u^{(i)};\theta,\pi\right) $user-node
偏好分布,全局损失函数公式化为:这里我们将所有正样本(即 $ \mathbb D $ )和它们的祖先
user-node pair
对上的预估user-node
偏好概率的负对数之和作为全局经验损失global empirical loss
。优化 $ \pi(\cdot) $ 是一个组合优化问题,很难同时与 $ \theta $ 使用基于梯度的算法进行优化。为了解决这个问题,我们提出了一种联合学习框架
joint learning framework
,它交替地针对用户偏好模型以及树层级来优化全局损失函数 $ \mathcal L(\theta,\pi) $ 。模型训练和树学习tree learning
中训练损失的一致性促进了框架的收敛。实际上,由于 $ \{\mathcal L(\theta_t,\pi_t)\} $ 是一个递减序列并且下界为0
,因此模型训练和树学习都可以减小 $ \mathcal L(\theta,\pi) $ 的值,联合训练算法肯定会收敛。在模型训练中, $ \min_\theta \mathcal L(\theta,\pi) $ 就是学习一个适用于所有
level
的user-node
偏好模型,这个模型可以通过神经网络的流行优化算法(如SGD, Adam
等)来求解。在标准化的
normalized
用户偏好设置中,由于节点数量随着level
呈指数增长,因此噪声对比估计Noise-contrastive estimation
是估计 $ \hat p(b_j(\pi(c))\mid u;\theta,\pi) $ 的替代方法,以避免通过采样策略来计算归一化项。树学习的任务是在给定 $ \theta $ 的条件下求解 $ \max_\pi - \mathcal L(\theta,\pi) $ 。 $ \max_\pi - \mathcal L(\theta,\pi) $ 等价于二部图
bipartite graph
的最大加权匹配问题maximum weighted matching problem
,其中二部图由语料库 $ \mathcal C $ 和 $ \mathcal T $ 的叶节点组成。补充材料显示了详细的证明。
树索引和深度模型的联合学习框架:
输入:
- 损失函数 $ \mathcal L(\theta,\pi) $
- 深度模型 $ \mathcal M $
- 树 $ \mathcal T $
输出:训练好的模型 $ \mathcal M $ 、训练好的树 $ \mathcal T $
算法步骤:
迭代 $ \text{ for } t=0,1,\cdots $ :
- 通过优化 $ \mathcal M $ 来求解 $ \min_\theta \mathcal L(\theta,\pi) $ 。
- 通过使用树学习算法
tree learning algorithm
优化树层级来求解 $ \max_\pi - \mathcal L(\theta,\pi) $ 。
输出 $ \mathcal M,\mathcal T $ 。
诸如经典的匈牙利算法
Hungarian algorithm
之类的用于分配问题assignment problem
的传统算法由于其高度复杂性而难以应用于大型语料库。即使是贪心的选择权重最大的未赋值边unassigned edge
的朴素贪心算法naive greedy algorithm
,也需要预先计算并存储一个大的权重矩阵,这是无法接受的。为了解决这个问题,我们提出了一种分段树学习算法segmented tree learning algorithm
。我们不是直接将
$ \mathcal L_{c_k}^{s,e}(\pi) = \sum_{(u,c)\in \mathcal A_k} \sum_{j=s}^e \log \hat p\left(b_j(\pi(c))\mid u;\theta,\pi\right) $item
分配给叶节点,而是从根节点到leaf level
一级一级地实现achieve
。给定一个映射 $ \pi $ 以及语料库中的第 $ k $ 个item
$ c_k $ ,令:其中:
- $ \mathcal A_k = \left\{\left(u^{(i)},c^{(i)}\right)\mid c^{(i)} = c_k\right\}_{i=1}^N $ 为
target item
为 $ c_k $ 的训练样本集合。 - $ s $ 为
start level
, $ e $ 为end level
。
我们首先针对 $ \pi $ 来最大化 $ \sum_{k=1}^{|\mathcal C|} \mathcal L_{c_k}^{1,d}(\pi) $ ,这等效于将所有
item
分配给level
$ d $ 中的节点。对于最大level
为 $ l_\max $ 的完全二叉树 $ \mathcal T $ ,level
$ d $ 中的每个节点被分配了不超过 $ 2^{l_\max -d} $ 个item
。注意:根节点的
level
最高,为 $ l_\max $ 。叶节点的level
最低,为1
。这也是可以通过贪心算法
greedy algorithm
有效解决的最大匹配问题,因为如果很好地选择了 $ d $ ,则每个item
的可能位置的数量大大减少了。例如,对于 $ d=7 $ ,数量为 $ 2^d=128 $ ,即item
可能的位置为它后代的128
个叶节点之一。将这一步找到的最佳映射记作 $ \pi^* $ 。然后我们接下来在约束 $ \forall c\in \mathcal C, b_d(\pi(c)) = b_d(\pi^*(c)) $ 的条件下最大化 $ \sum_{k=1}^{|\mathcal C|} \mathcal L_{c_k}^{d+1,2d}(\pi) $ 。这意味着在
level
$ d $ 中保持每个item
的相应祖先节点不变。一直递归,直到每个item
都分配给叶节点。- $ \mathcal A_k = \left\{\left(u^{(i)},c^{(i)}\right)\mid c^{(i)} = c_k\right\}_{i=1}^N $ 为
树学习算法
tree learning algorithm
:输入:
gap
$ d $- 最大的树
level
$ l_\max $ - 原始
original
的映射 $ \pi_{\text{old}} $
输出:优化的映射 $ \pi_{\text{new}} $
算法步骤:
设置当前的
level
$ l\leftarrow d $ ,初始化 $ \pi_{\text{new}}\leftarrow \pi_{\text{old}} $ 。迭代 $ \text{ while } d\gt 0 ,\text{ do } $ :
对于
level
$ l-d $ 中的每个节点 $ n_i $ ,迭代:记 $ \mathcal C_{n_i} $ 为在 $ \pi_{new} $ 中 $ n_i $ 的所有后继子孙节点。即 $ \forall c\in \mathcal C_{n_i}, b_{l-d}(\pi_{\text{new}}(c)) = n_i $ 。
寻找 $ \pi^* $ ,使得:
$ \max -\sum_{c\in \mathcal C_{n_i}} \mathcal L_c^{l-d+1,l}(\pi)\\ s.t.\quad \forall c\in \mathcal C_{n_i},\; b_{l-d}(\pi^*(c)) = n_i $这里我们使用一个带有重新平衡策略
rebalance strategy
的贪心算法greedy algorithm
来解决这个子问题。每个item
$ c\in \mathcal C_{n_i} $ 首先以最大权重 $ \mathcal L_c^{l-d+1,l}(\cdot) $ 分配给 $ n_i $ 在level
$ l $ 的子节点。然后,应用重新平衡过程以确保每个子节点被分配不超过 $ 2^{l_\max -1} $ 个item
。更新 $ \pi_{\text{new}} $ :
$ \forall c\in \mathcal C_{n_i},\;\pi_{\text{new}}(c) \leftarrow \pi^*(c) $
更新 $ d $ : $ d\leftarrow \min(d,l_{\max}-l) $
更新 $ l $ : $ l\leftarrow l+d $
返回 $ \pi_{\text{new}} $ 。
10.1.3 层级的用户偏好表示
如前所述,
TDM
是一个层级的检索模型hierarchical retrieval model
,用于从粗粒度到细粒度逐层地生成候选item
。在检索中,用户偏好预测模型 $ \mathcal M $ 通过树索引执行layer-wise
的自上而下的beam search
。因此, $ \mathcal M $ 在每个level
的任务都是异质的heterogeneous
。有鉴于此,必须提供level-specific
输入从而提高 $ \mathcal M $ 的推荐准确性accuracy
。一系列相关工作表明:用户的历史行为在预测用户兴趣方面起着关键作用。然而,在我们的
tree-based
方法中,我们甚至可以以新颖novel
和有效effective
的方式扩大这个关键作用key role
。给定用户行为序列 $ \mathbf c=\{c_1,c_2,\cdots,c_m\} $ ,其中 $ c_i $ 是用户交互的第 $ i $ 个
item
,我们提出使用 $ \mathbf c^l=\{b_l(\pi(c_1)),b_l(\pi(c_2)),\cdots,b_l(\pi(c_m))\} $ 作为level
$ l $ 中的用户行为特征。 $ \mathbf c^l $ 和目标节点以及其它可能的特征(如用户画像)一起被用作level
$ l $ 中的 $ \mathcal M $ 的输入,从而预测user-node
偏好。另外,由于每个节点或
item
都是一个one-hot ID
特征,我们按照常见的方式将它们嵌入到连续的特征空间中。这样,用户交互的item
的祖先节点被用作层级的用户偏好表示hierarchical user preference representation
。一般而言,层级的表示带来两个主要好处:
level
独立level independence
:与通常的方式一样,在不同level
之间共享item embedding
会在训练用户偏好预测模型 $ \mathcal M $ 时带来噪声,因为不同level
的target
不同。一种显式的解决方案是为每个
level
为item
附加一个独立的embedding
。但是,这将大大增加参数的数量,并使得系统难以优化和应用。我们提出的层级的表示
hierarchical representation
使用相应level
中的node embedding
作为 $ \mathcal M $ 的输入,从而在不增加参数数量的情况下实现了训练的level independence
。精确描述
precise description
: $ \mathcal M $ 通过树来分层地生成候选item
。随着检索level
的增加,每个level
中的候选节点将从粗粒度到细粒度描述最终推荐的item
,直到达到leaf level
。我们提出的层级的用户偏好表示抓住了检索过程的本质,并给出了用户行为的精确描述,其中节点位于相应的
level
。通过减少过于详细或过于粗糙的描述所带来的混乱,这种方法提高了用户偏好的可预测性。例如,在训练和预测中, $ \mathcal M $ 在
upper level
的任务是粗略地选择一个候选集合,并且在相同的upper level
中用户行为用同质的homogeneous
节点embedding
也是粗略地描述的。
10.2 实验
这里我们将研究所提出方法的离线性能和在线性能。
- 我们首先将所提出的方法的整体性能和其它
baseline
进行对比。 - 然后我们进行实验来验证各部分的贡献和框架的收敛性。
- 最后我们在具有真实流量的在线展示广告平台
online display advertising platform
上验证该方法的性能。
- 我们首先将所提出的方法的整体性能和其它
数据集:
Amazon Books
:来自于Amazon
的产品评论组成的user-book
评论数据集。这里我们使用最大的子集Books
。UserBehavior
:这是淘宝用户行为数据的子集。
这两个数据集均包含数百万个
item
,并且数据以user-item
交互的形式进行组成。每个user-item
交互包含用户ID
、item ID
、category ID
、以及时间戳。对于上述两个数据集,我们仅保留互动次数不少于
10
的用户。baseline
方法:为了评估我们提出框架的性能,我们对比了以下方法:Item-CF
:一种basic
的协同过滤方法,广泛用于个性化推荐,尤其是大规模语料库。YouTube product-DNN
:是YouTube
视频推荐中使用的一种实用方法,这是基于向量kNN
搜索方法的代表性工作。学到的用户向量表示和item
向量表示之间的内积反映了偏好。我们使用精确的
kNN
搜索来检索预估中的候选item
。HSM
:是分层的softmax
模型。它采用layer-wise
条件概率的乘积来获得归一化的item
偏好概率。TDM
:是tree-based
的深度推荐模型。它允许任意高级模型使用树索引来检索用户兴趣。我们使用
TDM
的basic DNN
版本,没有tree learning
、没有attention
。DNN
:是没有树索引tree index
的TDM
的变体。唯一区别是在于,它可以直接学习user-item
偏好模型,并且线性扫描所有item
,以检索预估中的top-k
候选item
。在在线系统中,这在计算上是不可行的。但是在离线比较中,这是一个很强的
baseline
。JTM
:是树索引和用户偏好预测模型的联合学习框架。JTM-J
和JTM-H
是两个变体:JTM-J
:联合优化了树索引和用户偏好预测模型,但是没有采用层级的用户偏好表示。JTM-H
:采用了层级的用户偏好表示,但是使用固定的初始树索引fixed initial tree index
,而没有tree learning
。
配置:
遵循
TDM
,我们将用户拆分为训练集、验证集、测试集。- 训练集中的每个
user-item
交互都是一个训练样本,交互前的用户行为就是对应的特征。 - 对于验证集和测试集中的每个用户,我们将沿时间线将前一半行为作为已知特征、后一半行为作为
ground truth
。
- 训练集中的每个
利用
TDM
的开源工作,我们在阿里巴巴的深度学习平台X-DeepLearning: XDL
中实现了所有方法。HSM,DNN,JTM,TDM
采用相同的用户偏好预测模型。我们为
Item-CF
以外的所有方法都采用负采样,并使用相同的负采样率。对于每个训练样本,Amazon Books
中负采样100
个负item
、UserBehavior
中负采样200
个负item
。HSM,TDM,JTM
在训练过程之前需要一颗初始树。遵从TDM
的工作,我们使用类目信息category information
来初始化树结构,其中来自相同类目的item
在leaf level
进行聚合。
补充材料中列出了更多关于数据预处理和训练的细节和代码。
评估指标:我们采用
Precision, Recall, F-Measure
来评估不同方法的性能。令用户 $ u $ 召回的
item
集合为 $ \mathbb P_u $ (其中 $ |\mathbb P_u|=M $ ),用户的ground truth
集合为 $ \mathbb G_u $ 。
$ \text{Precision@M}(u) = \frac{|\mathbb P_u\cap \mathbb G_u|}{|\mathbb P_u|} $Precision@M
定义为:
$ \text{Precision@M}(u) = \frac{|\mathbb P_u\cap \mathbb G_u|}{|\mathbb G_u|} $Recall@M
定义为:
$ \text{F-Measure@M}(u) = \frac{2\times \text{Precision@M}(u) \times \text{Precision@M}(u)}{\text{Precision@M}(u)+ \text{Precision@M}(u)} $F-Measure@M
定义为:
每个指标在测试集中对所有用户取平均,并且每个实验执行五次取均值。
下表给出了两个数据集上所有方法的结果,其中 $ M=200 $ 。可以看到:我们提出的
JTM
在所有指标上均优于其它baseline
。和两个数据集上最佳的DNN
模型相比,JTM
在Amazon books
和UserBehavior
上的召回率分别提升了45.3%
和9.4%
。如前所述,虽然在线系统上计算量难以实现,但是
DNN
是离线比较的一个非常强的baseline
。DNN
和其它方法的比较结果给出了许多方面的洞察insight
。首先,
YouTube product-DNN
和DNN
之间的差距显示了内积形式的局限性。这两种方法的唯一区别是:
YouTube product-DNN
使用用户向量和item
向量的内积来计算偏好分,而DNN
使用全连接网络来计算偏好分。这种变化带来了显著的提升,验证了高级神经网络相比于内积形式的有效性。其次,采用普通
ordinary
但是未优化的树层级tree hierarch
的情况下,TDM
性能比DNN
更差。树层级在训练和预测过程中都起作用。
user-node
样本沿着树生成从而拟合max-heap like
的偏好分布,并且在预测时在树索引中部署layer-wise beam search
。如果没有一个定义良好的树层级,用户偏好预测模型可能会收敛到一个次优sub-optimal
版本,其中生成的样本是混乱的confused
,并且可能丢失non-leaf level
中的target
,从而可能返回不正确的候选集。特别是在像
Amazon Books
这样的稀疏数据集中,树层级中每个节点学到的embedding
没有足够的可区分性distinguishable
,因此TDM
的性能不如其它baseline
。这个现象说明了树的影响、以及
tree learning
的必要性。此外,
HSM
的结果比TDM
差很多。这与TDM
报告的一致。当处理大型语料库时,由于layer-wise
概率乘积和beam search
的结果,HSM
无法保证最终召回的集合是最优的。
通过联合学习树索引和用户偏好模型,
JTM
在两个数据集中的所有指标上均优于DNN
,而检索复杂度要低得多。在JTM
中可以获得更精确precise
的用户偏好预测模型和更好的树层级,从而可以实现更好的item
集合的选择。- 层级的用户偏好表示缓解了
upper level
的数据稀疏性问题,因为在具有相同样本数的情况下,upper level
用户行为特征的特征空间要小得多。并且它有助于以layer-wise
的方式进行模型训练,从而减少噪声在各个level
之间的传播。 - 此外,树层级学习使得相似的
item
在leaf level
上聚合,从而使得内部的level model
可以获得分布更加一致consistent
的、明确unambiguous
的训练样本。
得益于上述两个原因,
JTM
提供了比DNN
更好的结果。上表中虚线下方的结果表明了各部分的贡献及其在
JTM
中的联合性能。以召回率指标为例:在UserBehavior
数据集中,和TDM
相比,树学习和用户偏好的层级表示分别带来了0.88%
和2.09%
的绝对增益。此外,在一个统一的目标下,两种优化的组合实现了3.87%
的绝对召回率提升。Amazon Books
也观察到了类似的收益。以上结果清楚地表明了层级表示和树学习以及联合学习框架的有效性。
- 层级的用户偏好表示缓解了
迭代联合学习的收敛性
Convergence of Iterative Joint Learning
:树层级决定了样本的生成和搜索路径,一棵合适的树将极大地有利于模型训练和推断。下图给出了在
TDM
中提出的基于聚类的树学习算法,以及我们提出的联合学习方法的比较。为了公平起见,这两种方法都采用层级的用户表示。其中 $ M=200 $ ,(a),(b),(c)
为Amazon Books
数据集的结果,(d),(e),(f)
为UserBehavior
数据集的结果。横轴表示迭代次数。TDM
树学习算法是基于聚类来实现的,其目标是聚类间距离。JTM
树学习算法是逐级分段优化目标函数来实现,其目标是最小化损失。由于我们提出的树学习算法与用户偏好预测模型具有相同的目标,因此从结果来看,这具有两个优点:能够稳定低收敛到最优树;最终推荐准确性
accuracy
高于基于聚类的方法。从下图中我们可以看到:所有三个指标的结果都在不断地增加。此外,模型在两个数据集上均稳定地收敛,而基于聚类的方法最终会过拟合。以上结果从经验上证明了迭代联合学习的有效性
effectiveness
和收敛性convergence
。一些细心的读者可能已经注意到:在最初的几轮迭代中,聚类算法的性能优于
JTM
。原因是JTM
的树学习算法涉及一种惰性策略lazy strategy
,即尝试减少每次迭代中树结构修改的程度(详细内容在补充材料中给出)。在线结果:我们还在生产环境中评估了
JTM
,其中生产环境为淘宝App
首页的“猜你喜欢”栏目的展示广告display advertising
场景。我们使用
click-through rate: CTR
和revenue per mille: RPM
来衡量效果,这是关键的效果指标。其中CTR
定义为:点击量/曝光量。RPM
定义为:广告收入/曝光量 *1000
。在广告平台,广告主可以对大量的粒度进行出价,如
ad cluster
、item
、shop
等等。所有粒度中,几个同时运行的推荐方法产生候选集合,它们的组合会被传递到后续阶段,如CTR
预估、ranking
等等。比较的baseline
是所有运行的推荐方法得到的这种组合。为了评估
JTM
的有效性,我们部署了JTM
来替代Item-CF
,这是平台中item
粒度的主要候选生成方法之一。TDM
的评估方法和JTM
相同。要处理的语料库包含数千万个item
。每个比较的bucket
都有2%
的在线流量,考虑到整体页面请求量,这已经足够大了。下表给出了两个主要在线指标的提升情况。
CTR
增长了11.3%
,这表明JTM
推荐了更精准precise
的商品。RPM
提高了12.9%
,这表明JTM
可以为平台带来更多收入。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论