每周一文(二)阿里TDM模型

核心思想

本论文提出模型TDM算法解决两个核心问题:

  1. 抛弃以往通过计算user和item embedding相似度(cos or其他)作为user和item相似标准,来召回与user最相似的topK的item的做法。
  2. 设计一个可插拔的通用召回模型。

具体思路

论文的总体思路是训练一个树模型,并将这个树模型推送至线上进行召回,分为三大步:

  1. 初始化树模型
  2. 训练树模型
  3. 推送至线上,选取topK item作为召回

如下会对上述三个核心分别进行介绍。

初始化树模型

文章构建的树模型如下所示:
在这里插入图片描述
每个叶子节点对应一个item,每个item的embedding可以通过pre-train的方式进行初始化。每个非叶子节点对应一个类目,这里类目可以是item的具体类别信息(手机、鞋等),也可以是抽象的类别信息(embedding的抽象聚类表示),不同类目划分标准对应不同构建树的方式:

  1. 利用item本身的类别标签去构建树,例如从树的根节点到叶子节点,每个节点代表意义为:商品 -> 鞋服 -> 鞋 -> 女士鞋 -> 女士高跟鞋,每个非叶子节点的embedding是其子节点embedding的平均(也可以用其他聚合方式)。
  2. 利用训练好的item_embedding进行分层级聚类,例如在根节点处将所有的item聚类(kmeans)成两部分,作为根节点的左右两个节点,每个节点的embedding为分到这个节点所有item的embedding的平均(也可以用其他聚合方式)。

训练树模型

经过第一步的初始化,已经将树的每个节点用embedding来表示(node_emb)。训练树模型核心步骤如下:

  1. 确定正负样本
  2. 训练模型

确定正负样本

论文中提到的是一个user对某些item有过行为,那么这个item对应的从根节点到叶子节点路径中所有的节点都为正样本,之后在非正样本中其他样本都为负样本,之后随机采集一批负样本与上述正样本搭配进行学习。
在这里插入图片描述

训练模型

整体的训练过程如下所示:
在这里插入图片描述
解释一下,将User的交互历史对应的item_embeddings和树的node_emb组成样本,进行学习,学习的过程解释可以参照DIN和DIEN模型,这样模型训练收敛后就可以将模型推送至线上了。

通过上图可以发现,左侧的训练模型可以任意替换,也就是说树的整体训练过程只是一个框架,框架中的模型可插拔,这样整套框架的可扩展性就会很强;而且User与item之间的交互学习更加抽象,因为原先的模型都是直接通过User的交互历史和item_emb去学习,而现在是用User的交互历史和node_emb去学习,学习到的模型更加鲁棒和抽象。

推送至线上,选取topK item作为召回

线上的召回过程如下所示:
在这里插入图片描述
其核心思想在于从树的根节点开始层次遍历,每层选取topK个节点,之后只遍历这些节点的子节点,然后再在这些子节点中选择topK的节点,直到选出topK个叶子节点为止,这样能够保证搜索的效率是最高的。

如果树的结构是二叉树,最多遍历 2 ∗ K ∗ l o g ( C ) 2 * K * log(C) 2Klog(C)个节点就能找到指定的候选叶子节点,其中 C C C代表corpus size,因为从根节点到叶子节点路径长度为 l o g ( C ) log(C) log(C),每个非叶子节点遍历完成后会把2个子节点加入 Q Q Q中,这样在下一层遍历过程中最多需要遍历 2 ∗ K 2*K 2K个节点。

参考链接

  1. 阿里开源实现
  2. DIN模型
  3. DIEN模型
  4. TDM模型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值