今天分享的论文是阿里妈妈广告团队发表在KDD 2019的《Practice on Long Sequential User Behavior Modeling for Click-Through Rate Prediction》[1],通过系统设计解决用户超长行为序列下CTR建模与在线预测性能瓶颈,效果好于GRU4Rec和DIEN。
论文下载地址:https://arxiv.org/abs/1905.09248。
源代码地址:https://github.com/UIC-Paper/MIMN。
背景
当前工业界大规模CTR预估任务中深度模型变得越来越复杂,对模型的线上实时预估与存储性能面临的挑战越来越大。尤其是在针对用户超长行为序列进行建模时,系统的耗时与存储负载随着用户行为序列长度近似线性增长。本文的创新点:
线上预估系统方面,设计UIC模块专门用于维护用户最新兴趣建模,将耗时大头从CTR模型实时预估中分离出来。UIC模块的更新只依赖于用户行为的变化而不是流量请求,用以解决模型耗时挑战;
用户兴趣建模方面,借用NTM[3]思想提出多通道用户兴趣记忆网络MIMN(Multi-chanel user Interest Memory Network)针对用户超长行为序列进行建模。MIMN会在UIC单元结构基础上进行预估,用以解决模型存储挑战。
理论上来说,UIC + MIMN的联合设计可以允许无限长度的用户行为序列建模。这是推荐广告工业界首次能够将超长用户行为序列建模扩展到千级别长度。
UIC
如下图所示是CTR任务中实时预估系统的概览图。通常它包含三个核心的模块:特征管理模块;模型管理模块以及预估服务。下图A是目前业界通用的版本;下图B则是引入了UIC模块的更新版本。关键的区别在于用户兴趣表示的计算上。
UIC模块负责异步地根据用户行为的变化进行用户兴趣表示的更新,因此从线上实时预估流程中分离出来。UIC模块的引入可以将DIEN模型在用户序列长度为1000且QPS为500的设定中的耗时从200ms降低为19ms。
MIMN
MIMN模型的网络结构如下左图所示,专注于使用序列行为进行用户兴趣建模,下右图则是深度CTR模型中经典的Embedding + MLP范式。主要包含两部分:基本的NTM记忆单元;以及使用多通道GRU的记忆推导单元。
Memory Utilization Regularization
标准的NTM使用记忆网络来捕捉和存储序列信息,但是容易遇到内存利用率不均衡问题,特别是在用户兴趣建模场景下。举例来说,热门的item容易出现在用户行为序列中就会频繁占用内存的读取与写入。
之前有工作使用LRU策略来平衡内存的利用率,但是LRU策略适用的场景是短时间周期而且它假设相邻步骤的写入操作几乎不会写进同一个内存slot。但是用户行为序列场景不符合这个假设,因为多个相邻的用户行为序列极有可能属于同一个兴趣slot。Memory Utilization Regularization的思想是约束不同memory slot之间写入权重的方差,从而让内存使用较为平衡。
Memory Induction Unit
NTM中的memory的设计是为了尽可能地存储序列数据的原始信息,但是可能存在的问题是它可能错失了一些高阶信息的捕捉。因此本文设计了MIU单元来加强用户兴趣提取的能力。MIU单元中同样包含一个m slot的memory S,这m个slot表示的是不同的用户兴趣channel。并使用GRU来建模更新用户行为序列中t时刻的用户兴趣channel。
实验结果
本文主要在两个公开数据集上做实验对比,实验结果数据无需多言。
Amazon Product Data:http://jmcauley.ucsd.edu/data/amazon/
Taobao User Behavior Data: https://tianchi.aliyun.com/dataset/dataDetail?dataId=649&userId=1
实战经验
UIC单元与RTP预测服务同步问题。线上环境是按小时周期更新模型,经过试验测试发现UIC单元的user representation和RTP模型之间在一天以内的版本差异对最终效果的影响可以忽略不计;
促销活动日消费数据的影响。电商网站往往都会有类似阿里“双11”之类的促销活动,经过测试发现最好去除促销活动日作为训练数据模型效果会更好;
UIC单元的预热策略。虽然UIC单元是增量训练更新的,但是我们发现为了加快模型趋于稳定的迭代速度,实际上本文中会先使用过去120天的历史行为数据训练处一个离线版本然后在此基础上继续增量训练;
回滚策略。为了方便UIC单元中user representation的回滚,本文中会连续过去7天每天针对UIC中用户的兴趣表示进行备份。
批判思考
论文都有一个特点:对文中贡献点和创新性翻来覆去地描述而且会带有一定的主观偏差。但对实际实践中遇到的问题如果没有很好解决方案的地方可能避而不谈。对于这部分我们期待也能有一定的讨论与思考,从而加深对论文思想的理解。
这篇论文虽然包装得性能、效果方面的提升很大,在工业界应用上看起来也较为实用。但是从创新性来说真的有宣称的那样突破吗?还是只是在经典的双塔模型上的扩展?性能的明显提升是否只是baseline选择不合理,效果的明显提升是否主要因为用户行为序列数量的增加?
UIC + MIMN的模型结构虽然套进了Embedding+MLP的经典范式中,但在排序层应用上会有一个显而易见的特征规模上的问题,你能想到的是什么?
UIC模块中用户兴趣表示的更新基于每一次用户行为的变化来触发实际真的可行和高效吗?[2]
使用GRU来建模真的合适吗?从业务场景中用户行为序列的特性来说你能想到有哪些显而易见不合理的假设?
欢迎大家留言一起讨论。
参考文献
[1] Practice on Long Sequential User Behavior Modeling for Click-Through Rate Prediction
[2] 从阿里的User Interest Center看模型线上实时serving方法:https://zhuanlan.zhihu.com/p/111929212
[3] Neural turing machines
推荐阅读
数学之美中盛赞的 Michael Collins 教授,他的NLP课程要不要收藏?
From Word Embeddings To Document Distances 阅读笔记
模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法
可解释性论文阅读笔记1-Tree Regularization
关于AINLP
AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。