最近两年大公司在推荐系统的研究热点,当属是用户行为建模。
阿里在最近三年内不断的升级用户序列的建模方式,从最早只使用了attention 的 Deep Interest Network, 到兴趣进化网络 DIEN,再到session 兴趣网络DSIN,一步步的深入挖掘用户行为的兴趣价值。而这些模型也只是利用了用户上百量级的短期行为,用户的浏览序列长度可能达到上千甚至上万个,怎么高效且有效的利用这种长序列信息呢?
SIM 提供了 Lifelong 超长行为序列线上服务化的可行性方案。
背景
用户的历史行为序列中蕴藏着丰富的用户”兴趣点“,用户的行为序列有巨大的价值。
- DIN:使用attention机制针对target 给不同行为不同权重
- DIEN:行为之间的时间关系非常重要,采用GRU建模兴趣的演变
- MIND:召回中使用多个向量分别代表用户不同的兴趣
阿里之前的一篇论文MIMN,首次把建模行为序列长度扩大到千级别,但是由于将所有用户历史行为编码到一个固定大小的记忆矩阵中,造成记忆单元中包含许多噪声,并且MIMN 放弃了候选target 与历史行为的交互,所以MIMN很难针对候选集捕获对应的用户兴趣。
模型结构
SIM (search-based user interest modeling with lifelong sequential behavior data) 与DIN 思想相同,只关注与候选target 相关的行为。
SIM 采用两阶段检索结构。先经过 GSU (General Search Unit) 模块在上万量级的历史行为中筛选出与候选target 相关的上百量级的子序列,之后把子序列传递给 ESU (Exact Search Unit)模块做 ctr 预估。
General Search Unit
第一阶段是利用GSU模块,从上万的长期序列中检索出与候选 target 相关的上百个行为。其中有 hard-search 和 soft-search 两种检索方式。
在电商场景下,category是一个很直接的商品相似度度量属性。hard-search 就是直接选出与候选 target 类目相同的历史子序列。
soft-search 需要另外离线训练一个包含长期行为序列的DNN模型来得到用户行为及广告的embedding表达,然后线上计算候选广告和历史行为 embedding 的内积作为相似度,并利用近似最近邻检索方法来得到 topK 的子序列。
论文中对于soft-search 公式的介绍有些含糊,只是说Wb 和 Wa 是模型参数,这里有必要详细说明下。
由于长期序列和短期序列数据分布有差异,在soft-search中直接使用短期序列的模型中的embedding 会误导长期兴趣的检索,所以需要另外建立一个如下图的用长期序列训练得到的辅助 ctr 模型。soft-search 公式中的Wb、Wa 、ei、ea 都由该模型的参数导出的,ri 代表用户行为ei 和 target ea 的相似度,辅助模型中 attention 相似度计算就是用的上面 soft-search 公式中的 ri ,通过辅助模型 attention 的训练保证了soft-search 检索的正确性。
理论上使用soft-search 的效果会更好一点,作者实践发现soft-search 与 hard-search 产生的topk 子序列非常相似,所以出于性能的考虑采用了hard-search这种规则式的方法。
Extract Search Unit
第二阶段是进行点击率预估,同时会对长期和短期用户序列进行建模:
- 用户短期序列使用DIEN建模
- 上一阶段传递过来的长期子序列 与 候选target 进行multi-head attention.
multi-head attention
先明确符号含义,E* = [e*1 ,e*2 ,......,e*k] 代表用户行为embedding, Et = [et1 ,et2 ,......,etk] 代表行为之间时间间隔对应的embedding。zb = concat(e*b, etb), e*b 和 etb concat到一起作为用户行为最终的表达,引入了序列中的时间属性。
下图的公式论文中没有明确说明,我理解 Zb 是包含所有子序列行为的矩阵。整个attention 就是把候选target ea 当做 query,历史行为相当是key 和 value, query 与不同的key 的相关度通过softmax 归一化。
针对不同的head, query 和 key 有不同的映射矩阵,单个head 就是 value 的加权求和。最后不同的head concat 到一起作为长期用户兴趣的表达,再进入多层mlp。
线上架构
阿里的预估系统需要在百万qps 的压力下延迟低于30ms,论文给出了如下图的上线方案:
hard-search和soft-search选取的topk序列,非常相似,所以考虑到性能资源,就采用hard-search的方式上线。既然用hard-search,就要找与目标item相同category的序列,所以论文提出了user behavior tree(UBT),就是两层索引,第一层key为userid,第二层key为category,最后value为行为序列。UBT用分布式系统实现,占用了22TB空间。
评价指标
SIM 优异的表现真的是由于对于用户长期兴趣精确的建模?SIM真的更倾向于推荐符合用户长期兴趣的商品吗?
对于灵魂拷问,只用通过数据来验证。比较惊艳的是,论文提出了dcategory (Days till Last Same Category Behavior)指标,该指标是对于点击样本计算距离上一次点击同类目商品的天数,统计点击样本在dcategory 上的分布可以验证模型对于长期 or 短期兴趣 推荐倾向程度。
如下图,可以看发现 SIM 相比于 DIEN 模型,在较长的兴趣间隔上点击数量有明显的提升,这说明我们的推荐系统的视野变得“开阔”起来,能够给用户推荐更符合长期兴趣的商品。并且对于短期行为的预估准确度SIM和DIEN是几乎一样的,因为SIM中包含了DIEN的建模。
参考
[1].Search-based User Interest Modeling with Lifelong Sequential Behavior Data for Click-Through Rate Prediction,2020.