TDM: 基于树的深度学习模型在阿里推荐系统中的应用

Posted 雨石记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TDM: 基于树的深度学习模型在阿里推荐系统中的应用相关的知识,希望对你有一定的参考价值。

广告推荐算法系列文章:

  • TDM: 基于树的深度学习模型在阿里推荐系统中的应用(本篇)

Overall

推荐系统一般分为两个部分,即matching和ranking,matching层负责从大规模的商品中找出最相关的数百个,而ranking层则对这几百个商品进行更准确的排序。

前面我们也介绍过几篇阿里推荐相关的论文。其中,和是在ranking层的工作,而则是在matching层的工作,本文所介绍的工作也是在matching层,是和十亿级商品embedding是并行的工作,同样都是在KDD 2018上发表的论文。

本文提出了一种基于树的深度推荐模型,为的是将在ranking层工作的很好的神经网络算法下沉到matching层,同时又不要带来计算瓶颈问题。

系统架构

淘宝的广告推荐系统如下图,在收到用户的请求后,系统会将用户特征,商品特征,上下文特征结合起来去生成一个小的候选集合,TDM就是在这个过程中起作用。在得到候选集合后,real-time prediction部分就会使用比较复杂的模型对CTR和转化率进行预测。然后再经过排序策略,候选集合就被展示给用户了。

作为最初始的步骤,matching层非常重要,它直接决定了系统CTR的上限。且这一层因为要处理大规模数据,所以效果和性能都是需要解决的问题。

推荐系统中的树结构

首先需要对推荐系统中的树结构进行定义,整棵树包含N个节点,每个节点代表叶子节点或者非叶子节点。其中具体的某个商品必须对应的是叶子节点。

为了通用性,我们定义n1为整棵树的根节点。下图给出了一个例子,每个节点都有一个索引编号,例子中的这棵树有四层八个叶子节点。注意,虽然例子是一个完全二叉树,但是并没有这个要求。

TDM: 基于树的深度学习模型在阿里推荐系统中的应用

树模型的形式化

更具体的,这棵树有什么性质呢?

将这棵树定义为最大堆类似的结构,不过每个节点上的值是概率。公式如下,公式中j代表树的层数索引,αj是第j层的归一化系数,可以保证第j层所有节点的概率值加起来是1。

TDM: 基于树的深度学习模型在阿里推荐系统中的应用

这个公式的含义如下:对于第j层的一个节点,其概率值是其所有子节点的最大值除以归一化系数。

根据这个性质,如果我们想找top-K结果,可以在树的每一层找top-k节点,然后将这k个节点的所有子节点都找出来排序取top-k,以此类推,最后得到的叶子节点就是top-K结果。

损失函数

根据我们刚才所讲的过程,在每层中,我们需要知道的是节点的顺序,具体的概率值则并不那么重要。而对顺序进行估计,使用二分类模型和负例采样就可以了。

还是如上图的那个二叉树,其中,我们需要找到的节点是13,那么13以及它的祖先都是正例,即上面绿色背景的节点。然后再随机采样出负例,即上面红色的节点。

因此,损失函数如下,就是标准的二分类损失。

TDM: 基于树的深度学习模型在阿里推荐系统中的应用

用这种方法构建了模型以后,在inference的时候,只需要对每一层的候选做二分类概率估计,用得到的概率去排序即可。

假如使用的树是二叉树,需要得到的结果是k个,那么整个搜索过程中,需要遍历的节点数则是 2 x k x log|C|,C是样本数目。

搜索算法

有了上面的树结构和损失函数,整个搜索过程如下,正如我们刚才所言,需要在每层找到top-K结果,直到叶子节点。

TDM: 基于树的深度学习模型在阿里推荐系统中的应用

模型结构

整个模型结构如下图,受DIN的启发,在这里我们为每一个节点学习一个embedding。同时使用类似attention的机制来获得更好的用户表达。

TDM: 基于树的深度学习模型在阿里推荐系统中的应用

用户的特征就是用户之前的行为数据,在这里,使用时间窗口对用户行为进行划分,得到N个窗口。然后进行如下操作:

  1. 对于每个窗口,用Node的embedding和用户行为中商品的embedding进行attention权重的计算,得到加权的平均值。
  2. 将不同窗口的结果和Node的embedding一起拼接起来
  3. 将拼接后的embedding输入给DNN,得到分类估计。
  4. 用上述的Loss进行反向传播。

在这个图中,只显示了用户特征,其他特征也可以很方便的引入到模型中来。可以这样说,在树结构的前提下,几乎任何在ranking层使用的深度模型都可以集成到matching层来。

树的构建和学习

前面讲了那么多,那么这个树是如何构建的呢?

首先,使用商品原来的分类结构进行树的初始化,将所有种类随机排序,然后对于所有的商品,将其划到其对应的分类中去,如果一个商品属于多个分类,那么就随机选一个。这样就得到的按照类别分好的商品集合,对于每个类别中的商品,一路随机二等分,构建一个完全二叉树。这样就得到了一个树结构,其中第一层是多叉(有多个类别),再之下的每一层都是二叉树。

这里以二叉树为例,但可以轻松扩展到k叉树上。

得到初始的树结构之后,就可以进行embedding的学习。

得到embedding之后,再用K-means来进行聚类,这样相近的embedding就聚合在一起。聚类的时候,每一次都聚成两类,这样,就得到一个新的二叉树。然后再重新学习embedding。

实验效果

与其他算法的对比,以及与自身算法的变种的对比结果如下,可以看到,本文提出的模型表现最为优异。

其中,TDM算法的变种有三个:

  • TDM product-DNN:将模型中的attention模块去掉,同时node embedding也从输入中去掉,将用户行为embedding输入给DNN后得到的embedding和node embedding做内积的结果经过sigmoid作为输出
  • TDM DNN: 只移除attention模块,这个可以验证attention的影响
  • TDM attention-DNN-HS: HS是Hierarchical softmax的缩写,在这个版本中,使用正例相邻的样本作为负例而不是随机选择的样本。

线上效果如下,提升CTR 2.1%,提升千次展示收益 RPM达到6.4%。

总结与思考

本文的核心依然是通过提高召回效果来提升最后的结果,为了将ranking层的复杂模型结构高效的应用到matching层,论文巧妙的提出了基于树的模型,并提出了一套模型结构和训练方法,可以很好的训练节点的embedding。

勤提问,多思考是Engineer的良好品德。

  1. TDM和层次Softmax的区别是什么?

参考文献

  • [1]. Zhu, Han, et al. "Learning tree-based deep model for recommender systems." Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. 2018.

以上是关于TDM: 基于树的深度学习模型在阿里推荐系统中的应用的主要内容,如果未能解决你的问题,请参考以下文章

基于任意深度学习+树状全库搜索的新一代推荐系统

推荐系统推荐系统数据流的经典技术架构+微软阿里微软等10大深度学习CTR模型最全演化图谱

基于实时深度学习的推荐系统架构设计和技术演进

基于实时深度学习的推荐系统架构设计和技术演进

推荐实践深度学习在阿里B2B电商推荐系统中的实践

深度学习在阿里B2B电商推荐系统中的实践