基于树的召回框架(三):Learning Optimal Tree Models under Beam Search

本系列其他文章:

1、基于树的召回框架(一):Learning Tree-based Deep Model for Recommender Systems

2、基于树的召回框架(二):Joint Optimization of Tree-based Index and Deep Model for Recommender Systems

本文为阿里妈妈团队发表的第三篇关于树结构的召回框架的论文,发表于 ICML 2020,论文原文链接

以下内容摘自卓靖炜博士在DataFunTalk年终的推荐大会上的演讲资料(视频、PPT以及 公众号推文)。

背景

在这里插入图片描述
不论是 TDM 还是 JTM 都有一个问题,就是模型在线下训练和线上进行Serving时是存在目标偏差的。线下训练时,我们实际上将其看成了一个逐层的多分类问题,并通过使用上溯路径节点构造的正样本+同层随机负采样构造的负样本(细节见 基于树的召回框架(一):Learning Tree-based Deep Model for Recommender Systems),把它转换成彼此独立的各层的多分类问题。而在线上 Serving 时,我们会对树进行 Beam Search,关心的是检索得到的 Top-k 结果是否是最优的(使用召回率等衡量指标)。我们可以看到训练和Serving的时候是存在明显不一致的,一个典型的例子是,训练时使用的样本是通过上溯路径得到的正样本以及随机采样得到的负样本,而这种样本构造的方法没有考虑到,我们在线上检索时采用的是自顶而下进行拓展的方式,因此每一层我们用到的节点,实际上是打分比较高的那部分,这就导致我们在检索得到的某些节点在训练过程没有得到充分的训练。

我们希望把线上检索的目标以及过程完全考虑到训练中,保证我们离线训练以及线上 Serving 的一致性。这样的话,实际上我们又从兴趣分类建模这件事情重新回到对于集合召回建模这个事情上。

方法升级

为了解决前文中提到的问题,我们做了以下两件事情。

一是升级样本的构造方式,不再使用“正样本上溯+随机采样得到负样本”的方式来构造样本。我们直接使用当前的打分模型对这棵树进行 Beam Search 检索,然后以检索出来的这些 Top-k 节点集合作为我们的训练样本。这样我们在离线训练时和在线 Serving 的样本产生逻辑以及样本分布是完全保持一致的。

在这里插入图片描述

由于升级后的样本构造方法与之前不同,我们也要相应设计节点标签的确定方法。所以我们做的第二件事情,也就是对于模型学习的目标做了一次改造,确保能够满足最大堆约束,也就是保证 Beam Search 的局部最优一定是全局最优。我们与之前的方法做一个对比:在之前的方法,我们对于节点的标签的设定就是对于叶子节点中的正样本它的上溯路径的节点全部标为1,然后剩下的节点全部标为0,并在这些样本里面进行随机采样得到负样本。我们后来发现这样一个设定方式,其实并不符合最大堆的需求,我们以这种方式构造样本训练出来的模型,即便是在最优的情况,Beam Search 得到的 Top-k 也不是全局的 Top-k。所以我们换了一个标签确定的方式。每个非叶子节点的标签,依赖于两部分:从它的最大的子节点上溯的标签,以及模型对于它的子节点的预估分数。具体来说,只有当某节点的孩子节点中的正样本的预估分数比负样本的预估分数更高时,该节点才会被标为正样本。如下图所示,比如右边的树中,蓝色节点都是我们检索到的集合,而 Item 6 是我们实际的正样本,考虑节点 SN3,只有当 Item 6 节点的预估分数比 Item 5 节点的预估分数更高时(例如图中的 0.9>0.7),其父节点才会被标为正样本,如果图中 Item 6的打分改为 0.4<0.7,则 SN3 就会被标记为负样本。我们可以证明,在这样的设定下,我们构造的样本训练得到的最优模型,通过 Beam Search 得到的近似的 Top-k 一定是全局的 Top-k。

在这里插入图片描述

训练方式

我们做了上述两个升级,就得到了一个在 Beam Search 下理论最优的一个训练范式,具体来说,我们以 Beam Search 来构造我们的样本集合,通过基于打分上溯的方式去设计每一层样本的拟合目标,建模得到的还是一个 H 层的但是存在上下层依赖的这样一个分类问题。模型的训练方法也是一个循环迭代的方式,输入就是原始样本的 mini-batch,使用当前的模型做一遍采样,就是做一遍 Beam Search 检索,得到每层的样本,然后采用目标构建的方式,对于这个样本里面的每一个节点得到它的标签,得到标签之后,与原来类似,当做一个二分类问题设计 loss,然后对 这个 loss 优化,进行参数更新,然后如此反复迭代,直到收敛。

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值