论文: 论文题目:《Search-based User Interest Modeling with Lifelong Sequential Behavior Data for Click-Through Rate Prediction》 地址: 这是阿里妈妈发表在2020SIGIR上面的又一篇佳作,让我们来阅读一下这篇论文吧。 在CTR/CVR预估领域中,用户历史行为对CTR/CVR预估的建模是很有指导意义的,用户的历史行为序列中潜藏着用户丰富的”兴趣点“,用户的每一次行为都是某个方面兴趣的一种反应。比如我喜欢各种口红产品、喜欢洗面奶、但是又对某个牌子不是特别感兴趣,基于这些兴趣的驱动,我可能浏览、点击过很多相关领域的内容或商品,那这些历史行为是否对我未来行为的预测有帮助呢,答案是肯定的。正是基于上述这种主观的行为模式,我们才需要对用户的历史行为进行建模,用户行为队列越长,包含的用户兴趣也就越丰富,但是同样也会带来更大的挑战,其实用户的兴趣是发散的多元的,如何从发散多元的用户兴趣中找到真正对当前任务有帮助的兴趣是十分重要的。 在介绍这篇论文之前建议先去看一下阿里的另一篇论文MIMN,也是基于用户长序列进行CTR预估的论文,但是MIMN存在着几个问题,一个是因为,当用户行为序列的长度进一步增加(例如,增加10倍或比十倍更多)时,MIMN无法精确捕获给定特定候选项的用户兴趣。另一个是因为,MIMN不能很好的解决延时和存储这两个瓶颈上的棘手问题,也就是说部署到线上到时候如何才能做到延时跟其他轻量模型相近。 在淘宝中,用户的浏览序列长度可能达到上千甚至上万个,怎么高效且有效的利用这种长序列信息呢?阿里妈妈提出了SIM模型来进一步从用户丰富的长期历史行为队列中挖掘用户有价值的兴趣点,并且提供一种长行为序列线上服务化的可行性方案,接下来就来看看这篇论文吧。 模型总览: SIM分为两个阶段,这两个阶段都有自己的核心部分,文章中将长序列用户行为特征的建模分为了两个模块,即Genral Search Unit(GSU)和Exact Search Unit(ESU),这两部分就是两个阶段的核心模块了。先简单的介绍下这两个模块的作用吧。GSU如图所示,简单理解就是从几百上千的用户长序列中挑选出TopK个跟候选Item最相似的K个Item,类比与推荐系统中的召回模块,先降低长序列物品的长度,在进行后续任务。另一个是ESU,这个模块的作用是对刚刚GSU抽取出来对K个物品进行序列建模,得到一个能代表用户长序列兴趣对向量,并利用这个向量进行后面对排序。 GSU的主要任务是从长度为T的序列中抽取出K个跟候选item相似的item,GSU有两种方式来选取TopK个物品,分别是hard-search 和soft-search。前面也提到了GSU类比于推荐系统中的召回阶段,而在多路召回中,一般也有基于Embedding的召回和基于策略规则的召回,其中hard-search就是基于规则的召回,soft-search就是基于Embedding的召回,下面来详细讲一下这两种方法。 这种方法比较直观而且实施起来比较简单,就是我们从候选行为序列中按照给定规则筛选出与当前目标任务相关的候选集,举个例子,我在淘宝上历史浏览过很不同种类的商品(比如电子产品、口红、男鞋等等),当候选广告是iphone12时,hard-search方法会从我历史行为队列中筛选出电子产品相关的行为进行建模,用于PCTR预估,而口红、男鞋大概率就不会对这次预估产生影响,通过上面这个例子大家应该能明白这种基于规则和策略的思路。论文中指出hard-search方法使用的是商品类别作为筛选的标准。 这种方法是基于Embedding的抽取方式,从上面的模型图的左侧可以看到整个soft-search的结构。这个部分也是一个子模型,模型的输入是候选Item和长序列,目标是CTR预估,用这种方式来学习候选Item和长序列Item的embedding信息。有了Embedding后,就可以将候选广告embedding和历史行为中的embedding算一个内积相似度,利用近似最近邻检索方法(论文中用的是ALSH)来得到topK相关的候选行为序列。 在这个子model中,DNN的输入是候选item 和Ur的concat,其中Ur:注意,如果用户行为增长到一定程度,则不可能将整个用户行为直接输入模型。 在这种情况下,可以从长序列用户行为中随机采样子序列集,这些行为仍需遵循原始序列的相同分布。 这种方法的缺点就是计算开销比较大,不如基于规则的hard-search方便,优点就是效果应该会更好一些。但是论文中也提到了两种方法在效果上的差异不是特别的大,所以最后基于性能和效果的折中,采用了hard-search这种比较简单的方式。 从模型整体上来看,这部分主要是利用从GSU抽取出来的K个Item得到一个能代表用户长期兴趣的向量,并配合其他特征送的DNN里面做整体的CTR预估任务。 论文中对这K个来自GSU对item是用self-attention进行序列建模的: 其中 为: concat中第一个是原始的embedding,第二个是关于时间的embedding。 根据self-attention的方式,我们又得到了一个向量h(K)。 这里,第二个子model也进行了ctr预估,特征是模型图上面画出来 input,还有个dien,dien前面的文章以及介绍过了,就不再赘述。 最后的loss是: 其中α和β是控制损耗权重的超参数。 在我们的实验中,如果GSU使用软搜索模型,则将α和β都设置为1。具有硬搜索模型的GSU是非参数的,并且α设置为0。 广告推荐系统对线上的计算耗时要求还是比较严格的,因为要保证用户最基本的用户体验。随着用户行为序列的进一步增长,采用传统的方式直接对长序列用户行为进行计算耗时和内存占用会增长的特别快,所以需要有针对性的对线上系统进行一定的升级和改造。文章提到在hard-search和soft-search的选择中,是基于大量的离线实验结果最终决定采用hard-search这种方便快捷有效的方式,同时信息损失也在可以接受的范围内。 一般的线上部署的系统架构图是这样: 为了让SIM能更好的给用户带来低延时的体验,阿里构建了SIM的Online Seving结构: 可以看到对于用户的行为序列,论文采用的是对每个用户采用的是两层索引的结构:key-key-value,第一个key是user_id,第二个key是category ids,value是用户行为序列中属于对应类别的item。用这种方式可以很快的通过这个索引树找到属于统一category的物品。线上A/B Test实验效果: 用户的历史行为对于整个CTR/CVR预估任务越来越重要了,如果不考虑时间和存储,那么把所有的序列输入到模型中作为长期兴趣关键点是可以精确的定位出用户的长期兴趣的,但是由于性能的原因就不得不考虑用特殊的方法对这个长序列进行一次筛选,筛选的K个物品都是跟候选Item相似的物品,能做到裁剪的效果还不会带来CTR预估的损失。在进行筛选过程中还分为了两种方法,但是为了部署到线上,就要考虑性能最好的hard-search方式进行TopK筛选任务,这种方式跟Embedding筛选的效果是差不多的,但是速度比Embedding快,所以采用这种方式。 未来应该还会有更多针对序列推荐的论文,单纯的对长序列阶段还带来一定的兴趣偏差,所以如何有效挖掘用户更丰富行为特征背后的商业价值是需要好好思考的。