【推荐系统】专栏历史文章:
作为【推荐系统】系列文章的第七篇,将以CIKM2020中的一篇论文“Search-based User Interest Modeling with Lifelong Sequential Behavior Data for Click-Through Rate Prediction”作为今天的主角,主要介绍针对Lifelong用户行为序列建模的方案,用户行为长度可以达到上万,而且可以像DIN那样,对于不同的候选商品从用户行为里查找有效的信息建模用户的特殊兴趣。
从上图中可以发现,当用户行为序列长度增加到1000时,AUC会有1.5%的提升,用户历史行为数据对ctr的预估是有很大帮助的,而且越丰富用户行为数据对ctr模型的帮助越大。
本文的主要工作:
目前,对于用户行为数据的利用分为两方面:
这说明如果想更准确地建模超长的用户行为,对候选item的利用是很有必要的。
本文借鉴了DIN的思想,也就是用与候选item相关的用户行为建模用户对当前预估目标item相关的兴趣。同时又考虑到线上根据候选item直接对全序列进行搜索性能肯定是扛不住的,所以就把整个搜索过程分成了两个阶段,即General Search Unit和Exact Search Unit。General Search Unit是将长度上千的用户行为数据缩减至几百,其中的大部分计算可以离线完成,Exact Search Unit是将缩减后的用户行为进一步进行信息提取,建模出用户对于候选item的兴趣。
General Search Unit的两种实现思路:
给定用户行为集合B=[b_1; b_2; ,,, ; b_T] ,其中b_i是第i个用户行为, T是用户行为的长度。GSU为每个行为b_i计算关于候选商品的相关性分数 r_i,然后根据r_i选择Top-K相关的行为得到行为序列 B^*。hard-search和soft-search不同点是r_i的计算公式:
hard-search是无参数的,只有和候选广告类目相同的用户行为数据才会被选出送到下一级进行建模。其他C_a代表了候选广告类目,C_i代表了第i个用户行为的类目。虽然hard-search是一种基于数据特征的一种比较直观的方案。但是它非常容易部署到实际工业界在线预估系统中。在soft-search中,我们将用户行为序列B映射成为embedding表达E=[e_1; e_2; ......; e_T]。W_b和W_a都是模型参数,其中e_a代表了候选广告的embedding,e_i代表了第i个用户行为embedding。为了加速上万个用户行为的Top-K检索,采用基于内积的近似最近邻检索出Top_K个相关的行为,比如Maximum Inner Product Search (MIPS)。
在工业数据上,Hard Search可以覆盖Soft Search中75%的行为,线上考虑性能使用了Hard Search。
Exact Search unit直接使用multi-head Attention的结构对GSU中提取出的topK的用户行为进行建模,得到用户的长期兴趣的表示。因为长期行为中的时间跨度较大,文中也将历史行为与候选行为之间的时间间隔建模进来。
Multi-head attention
最后,其中第一阶段和第二阶段是采用交叉熵 loss 联合学习。Loss 函数如下:
工业推荐系统和广告系统需要在1秒内处理巨量流量请求,需要CTR模型实时响应。serving耗时应该少于30ms。上图简要说明了CTR任务的Real Time Prediction (RTP) system。考虑lifelong用户行为,长期用户兴趣模型的serving在实时系统中更加困难。存储和耗时是长期用户兴趣模型的瓶颈。流量会随着用户行为序列长度线性增长。并且,在流量高峰每秒会有100万的用户请求。部署长期兴趣模型到线上挑战巨大。
对于GSU里的两种search-model:soft-search model和hard-search model,用阿里的数据集做了大量离线实验。可以观察到soft-search model和hard-search model得到的Top-K行为极度相似,也就是soft-search得到的大多数top-K行为和目标商品的类目是一样的。这是我们场景里数据的一个典型特征。鉴于此,尽管soft-search model在离线实验中比hard-search model稍微好些,权衡收益和资源消耗,最终选择在我们系统中用hard-search model部署SIM。General Search的选择:Hard Search选出的用户行为可以覆盖soft Search选出的用户行为中的75%,实验效果为Hard Search比Soft Search略差。考虑到平衡serving的效果和性能,最终选择Hard Search的方式离线构建搜索树。
数据集 | 最大长度 | 短期行为 | 长期行为 |
---|---|---|---|
Amazon(Book) | 100 | 最近10个 | 前90个 |
Taobao | 500 | 最近100个 | 前400个 |
Industrial | 30%超过10000,最大54000 | 近14天 | 180天 |
Avg-Pooling Long DIN,直接将长期用户行为Embedding avg-pooling与其他特征embedding拼接。SIM相比其他使用长期用户行为的模型提升比较多,分析原因是因为MIMN和Avg-pooling Long DIN将长期行为建模成固定长度的向量,难以获取用户多样的兴趣使用时间信息也有一定的帮助。
实验(公开数据集结果,其中optimizer为Adam,lr为0.001,FCN为200*80*2)
实验(公开数据集结果-消融实验)
消融实验验证两阶段搜索框架的有效性,Only first stage(Soft)内积相似度top50,有搜索的要优于没有进行搜索的 => 长期行为存在噪音,进行初步搜索是有必要的。两阶段搜索优于只有第一阶段搜索的 => 精确的建模与候选item相关的用户长期兴趣对ctr预估是有帮助的。
实验(真实数据)
Soft比hard提升不是很大,soft线上使用最近邻搜索,需要更大的计算和存储开销,所以最后是用了Hard-search。实验(线上)
CTR响应不超过30ms,QPS500时,SIM响应时长提升不超过5ms。进一步分析SIM是否在用户长期兴趣建模上表现更好?能否推荐更多与用户长期兴趣相关的item?
d_category定义为距离用户上一次点击同类目的item的天数。例如用户5天前点击了手机类目下的item1,今天又点击了手机类目下的item2,则d_category=5。如果之前没有点击过同类目下的item,则d_category = -1。文中统计了DIEN和SIM在实际在线的推荐结果。横纵为d_category,并将过去14天内的行为类目覆盖的点击行为定义为短期,超过14天的定义为长期,纵轴表示SIM的推荐且被点击的item数量的分布和SIM相对DIEN提升的百分比。
可以看到SIM和DIEN主要的推荐结果还是集中于近期部分,而且在近期上,SIM和DIEN基本没有差别,这是因为SIM和DIEN都建模了短期行为。在长期部分SIM的推荐且被点击的结果是显著高于DIEN的。这说明SIM真正更多的推荐出了用户偏向长期行为相关的结果,且用户进行了点击,侧面说明SIM相对更好的建模了长期兴趣。