简介
MIMN(Multi-channel user Interest Memory Network)是阿里妈妈于2019年提出的点击率模型。MIMN通过算法、工程架构的协同设计,解决延迟、存储问题,作为工业界第一个在长达1000长度的用户行为序列上进行用户兴趣建模并取得了SOTA效果的落地实践
应用场景
阿里妈妈的展示广告的CTR排序,相比DIEN离线AUC绝对值+0.01,在线取得了7.5%CTR、6%RPM的提升
提出的背景
已有的CTR预估的工作可以分为如下两类:
(1)将用户行为序列中的item视为独立的,基于sum/max/attention操作聚合用户的兴趣表征;
(2)将用户行为序列中的item视为序列化的,基于LSTM/GRU操作聚合用户的兴趣表征
当用户行为序列长度>=1000时,因为系统的耗时、存储的增长和用户行为序列的长度增长成近似正比关系,而且现有的序列建模的工作支持的用户行为序列的长度在<=50,所以无法直接使用目前的算法、工程架构。
解决的方案
通过算法、工程架构的协同设计,解决CTR预估中的延迟、存储问题。具体如下:
(1)工程
解决延迟问题:设计UIC(User Interest Center),以保留每个用户最新的兴趣状态。通过依赖实时的用户行为触发事件实现更新,而非依赖于实时的通信请求,因而可以保证在实时CTR预估中保证UIC是无延迟的
(2)算法
解决存储问题:借鉴NTM中的memory network,增加memory utilization regularization(MUT)、memory induction unit(MIU)的设计,构建MIMN(Multi-channel user Interest Memory Network),结合UIC,实现在有限的存储下更有效地从用户的长期行为序列捕捉用户兴趣,并保证模型的性能
本文工作
(1)通过算法、工程架构的协同设计,实现对于用户长期行为序列行为的用户兴趣建模,并应用在在线展示广告场景下的CTR预估中
(2)设计UIC,将用户兴趣计算过程从整个CTR预估任务中解耦出来,并可以保证在实时CTR预估中UIC是无延迟
(3)借鉴NTM中的memory network,增加memory utilization regularization(MUT)、memory induction unit(MIU)的设计,构建MIMN(Multi-channel user Interest Memory Network),结合UIC,实现在有限的存储下更有效地从用户的长期行为序列捕捉用户兴趣,并保证模型的性能(4)经过在公开数据集、阿里妈妈在线展示广告的数据集上展开严密实验、分析,并分享相关经验
实时的CTR预估系统
离线的模型提升
- 特征现状
在系统中,由于90%左右的特征是用户行为特征,10%是用户人口学统计特征和广告特征,用户行为特征含有丰富的信息,以及对用户兴趣建模是有价值的。
- 论证增加用户行为序列长度的必要性
如下是基于Embedding&MLP模型,在不同用户行为序列长度上的离线AUC指标
从中,可以看到在长度为100时的AUC+0.6%。在我们场景下AUC+0.3%是很明显的提升了,说明增加用户行为序列长度具有较大的价值
系统对延迟、存储的需求
延迟:工业场景下要求RTP的整体耗时在10ms以内。DIEN在QPS=500、最大序列长度达1000时的延迟在200ms,不满足在线展示广告系统中QPS=500下的最大延迟为30ms的要求
存储:存储和用户行为序列长度成正比。如:6亿用户,最大序列长度达1000,存储包含商品id、店铺id、品牌id等的信息,上述总占用存储量是6T。对于系统来说,这是一个很大的存储消耗
系统改进
- 新旧系统对比
其中,A是旧系统,B是新系统,两者的关键差异点在于用户兴趣表征的计算。A中,用户兴趣表征是在RTP中计算;在B中,是由实时的用户行为事件触发再由UIC Server计算。从而,保证在实时CTR预估中UIC是无延迟的
- User Interest Center
保留每个用户最新的兴趣状态。通过依赖实时的用户行为触发事件实现更新,而非依赖于实时的通信请求,因而可以保证在实时CTR预估中保证UIC是无延迟的。
最终,可以实现在QPS=500、用户行为序列长度在1000的情况下,UIC将DIEN延迟从200->19ms
MIMN
整体结构
如下所示,包含Memory Utilization Regularization(MUR)、Memory Induction Unit(MIU):
从用户长期行为序列学习的挑战
目前,由于在推理阶段需要存储用户的长期行为,对于线上系统,采用DIN需要较大的存储,采用attention需要难以承受的计算压力。采用RNN存在“记忆衰减”,而且需要存储较多的中间状态。
解决方案
- 子模块结构
采用如下的子模块结构,包括MUR、MIU:
- NTM
NTM的实现:包含两个环节,即Memory Read、Memory Write
NTM的效果:在论文【1】中提出了NTM(Neural Turing Machine)来捕捉行为序列中的信息,以及按照固定大小的存储空间进行存储,在很多长序列建模任务上相比RNN均有提升。
在UIC中只采用NTM的不足之处:虽然相比于原始的行为序列,UIC存储了固定长度的memory tensor,但是为了满足存储的要求,必须限制memory tensor的维度
- Memory Utilization Regularization(MUR)
目标:保证memory tensor存储更多的信息量,增强memory tensor的表达能力
引入MUR的必要性:对于热门的item倾向于经常出现在用户的行为序列中,在memory更新中占据主导地位,只基于NTM会导致memory的不合理利用。
已有的解决方案和不足:在NLP中通常采用LRU的方式解决短周期内的memory的利用问题,可以保证相邻时间戳内不会往同一个slot中写入数据。不足之处在于,用户会有同属于同一个兴趣点的多个行为,这些行为会被写入到同一个slot中。因而,提出了Memory Utilization Regulation(MUR)。
- Memory Induction Unit(MIU)
目标:捕捉随时间演变的用户兴趣
方案:通过引入GRU,实现多通道兴趣建模
MIMN的适用场景
论文中提到适合如下两个场景:
(1)丰富的用户行为数据;
(2)实时用户行为的传输规模不明显超过实时的CTR预估请求
模型效果
数据集
数据集 | 行为类型 | 行为序列周期 | 行为序列长度 |
Amazon Dataset | review | 20<=action_length<=100 | >=20 & <= 100 |
Taobao Dataset | click | <=200 | <=200 |
阿里巴巴在线展示广告 Dataset | click | 训练集:49天数据,每天的样本中都包含长期样本(最近60天行为)测试集:训练集样本中的后一天数据 | max_length = 1000 |
数据规模如下所示:
评估
离线:AUC
包含四个方面:
1)和baseline的对比;
2)对UIC只采取baisic NTM下的不同的slot number of memory(public datasets)的对比;
3)对UIC是否采用Memory Utilization Regularization(MUR)(public datasets)的对比;
4)对UIC是否采用Memory Induction Unit(MIU)(public datasets)的对比;
5)在工业数据集上的对比
离线效果
- 和baseline的对比(public datasets)
结论:对于CTR预估,考虑用户长期行为序列有较大提升
- 对UIC只采取baisic NTM下的不同的slot number of memory的对比(public datasets)
结论:不同数量的设置影响最终的效果,因而又不要引入Memory Utilization Regularization(MUR)
- 对UIC是否采用Memory Utilization Regularization(MUR)的对比(public datasets)
结论:实现了更高效的应用
- 对UIC是否采用Memory Induction Unit(MIU)的对比(public datasets)
结论:实现了更好的效果
- 在工业数据集上的对比
结论:相比DIEN,离线AUC+0.01,相当显著
具体数据如下:
说明:
MIMN under out-synch setting (within one day):T+1异步更新(是工业界常用的方式)。在实际的线上,要求小时级延迟,降低风险。相比MIMN(非异步),两者没有差异,主要是因为MIMN学习到了稳定的用户兴趣表征
MIMN trained with big-sale data:用双11当天这一异常日子的大数据得到的离线效果。结果表明,虽然和平时相比样本的分布不同,但是依然取得了不错的效果
在线效果
在线:在2019-03-30~2019-05-10的线上AB实验中,取得了7.5%CTR、6%RPM的显著提升
如下所示:
最终在展示广告上的应用
(1)采用了Warm Up Strategy。基于用户行为序列平均长度超过1000的过去120天内的历史行为,通过离线训练好的MIMN得到用户兴趣表征的初始值,并初始化UIC。通过上述机制,保证后续的持续更新
(2)Rollback Strategy(回滚策略)。为了防止UIC更新出现问题,设计了回滚策略在每天的00:00存储学习得到的用户兴趣表征的拷贝,并保存最近7天的回滚策略的结果
代码实现
参考文献
- Alex Graves, Greg Wayne, and Ivo Danihelka. 2014. Neural turing machines. arXiv preprint arXiv:1410.5401 (2014).
结尾
亲爱的读者朋友:感谢您在繁忙中驻足阅读本期内容!您的到来是对我们最大的支持❤️
正如古语所言:"当局者迷,旁观者清"。您独到的见解与客观评价,恰似一盏明灯💡,能帮助我们照亮内容盲区,让未来的创作更加贴近您的需求。
若此文给您带来启发或收获,不妨通过以下方式为彼此搭建一座桥梁: ✨ 点击右上角【点赞】图标,让好内容被更多人看见 ✨ 滑动屏幕【收藏】本篇,便于随时查阅回味 ✨ 在评论区留下您的真知灼见,让我们共同碰撞思维的火花
我始终秉持匠心精神,以键盘为犁铧深耕知识沃土💻,用每一次敲击传递专业价值,不断优化内容呈现形式,力求为您打造沉浸式的阅读盛宴📚。
有任何疑问或建议?评论区就是我们的连心桥!您的每一条留言我都将认真研读,并在24小时内回复解答📝。
愿我们携手同行,在知识的雨林中茁壮成长🌳,共享思想绽放的甘甜果实。下期相遇时,期待看到您智慧的评论与闪亮的点赞身影✨!
万分感谢🙏🙏您的点赞👍👍、收藏⭐🌟、评论💬🗯️、关注❤️💚~
自我介绍:一线互联网大厂资深算法研发(工作6年+),4年以上招聘面试官经验(一二面面试官,面试候选人400+),深谙岗位专业知识、技能雷达图,已累计辅导15+求职者顺利入职大中型互联网公司。熟练掌握大模型、NLP、搜索、推荐、数据挖掘算法和优化,提供面试辅导、专业知识入门到进阶辅导等定制化需求等服务,助力您顺利完成学习和求职之旅(有需要者可私信联系)
友友们,自己的知乎账号为“快乐星球”,定期更新技术文章,敬请关注!