相关召回算法推荐

简介

《Learning Tree-based Deep Model for Recommender Systems》是阿里妈妈算法团队于2018年发表的一篇论文,其中创新性地将树结构索引和深度神经网络结合,在推荐系统召回阶段,通过树结构索引实现海量商品的快速检索和高效剪枝

TDM召回算法详解(Tree-based Deep Model)

TDM是为大规模推荐系统设计的、能够承载任意先进模型(也就是可以通过任何深度学习推荐模型来训练树)来高效检索用户兴趣的推荐算法解决方案。TDM基于树结构,提出了一套对用户兴趣度量进行层次化建模与检索的方法论,使得系统能直接利高级深度学习模型在全库范围内检索用户兴趣。其基本原理是使用树结构对全库item进行索引,然后训练深度模型以支持树上的逐层检索,从而将大规模推荐中全库检索的复杂度由O(n)(n为所有item的量级)下降至O(log n)。

模型结构

avatar

树结构

树中的每一个叶节点对应一个item;非叶节点表示item的集合。这样的一种层次化结构,体现了粒度从粗到细的item架构。此时,推荐任务转换成了如何从树中检索一系列叶节点,作为用户最感兴趣的item返回。

基于树高效检索

采用 beam-search的方法,根据用户对每层节点的兴趣挑选 topK,将每层 topK 节点的子节点作为下一层挑选的候选集合逐层展开,直到最终的叶子层。比如上图中,第一层挑选的 Top2 是 LN1 和 LN2,展开的子节点是 SN1 到 SN4,在这个侯选集里挑选 SN2 和 SN3 是它的 Top2,沿着 SN2 和 SN3 它的整个子节点集合是 ITEM3 到 ITEM6,在这样一个子结合里去挑 Top2,最后把 ITEM4 和 ITEM6 挑出来。

兴趣建模

假设用户对叶子层 ITEM6 节点是感兴趣的,那么可认为它的兴趣是 1,同层其他的节点兴趣为 0,从而也就可以认为 ITEM6 的这个节点上述的路径的父节点兴趣都为 1,那么这一层就是 SN3 的兴趣为 1,其他的为 0,这层就是 LN2 的兴趣为 1,其他为 0。也就是需要从叶子层确定正样本节点,然后沿着正样本上溯确定每一层的正样本,其他的同层采样一些负样本,构建用于每一层偏序学习模型的样本。

构造完训练样本后,可以利用DIN(这里可以是任何先进的模型)承担用户兴趣判别器的角色,输入就是每层构造的正负样本,输出的是(用户,节点)对的兴趣度,将被用于检索过程作为寻找每层Top K的评判指标。如下图:在用户特征方面仅使用用户历史行为,并对历史行为根据其发生时间,进行了时间窗口划分。在节点特征方面,使用的是节点经过embedding后的向量作为输入。此外,模型借助attention结构,将用户行为中和本次判别相关的那部分筛选出来,以实现更精准的判别。

模型和树联合训练

优化模型和优化样本标签交替进行。具体过程:最开始先生成一个初始的树,根据这个初始的树去训练模型,有了模型之后,再对数据进行判别,找出哪些样本标签打错了,进行标签的调整,相当于做树结构的调整。完成一轮新的树的结构的调整之后,我们再来做新的模型学习,实现整个交替的优化。

模型训练、优化样本标签过程迭代进行,最终得到稳定的结构与模型。

参考

  • https://juejin.cn/post/7317957339012284416
  • https://zhuanlan.zhihu.com/p/78941783