本文主要记录了这篇文章的主要方法和贡献,以及个人的一些思考和想法,欢迎讨论!
最开始是在语雀写的,导出后可能格式有点问题,欢迎移步语雀:https://www.yuque.com/docs/share/fee366de-68ba-4254-9a57-cccfe3edd356?#
Alibaba, KDD 2019
https://arxiv.org/abs/1905.09248
Contribution
- 解耦了用户兴趣捕捉模块,UIC
- traffic request Vs. trigger event
- 设计了memory-based模型MIMN来从长序列行为数据中建模用户兴趣
- Sequence up to 1000 (120 days
- based on NTM ( Alex Graves, Greg Wayne, and Ivo Danihelka. 2014. Neural turing machines. arXiv preprint arXiv:1410.5401 (2014).
- implemented with UIC module
User Interest Center Architecture
A是目前的推荐服务架构,B是本文设计了UIC的服务架构。
他们的区别在于B将UIC解耦出来,用户兴趣特征的计算不再由广告服务请求触发,而是由用户的实时动作触发,因此在广告服务请求发生时,这部分特征已经计算好了。
Long Sequential Modeling
粉色部分为文章对sequence的建模,灰色部分为利用sequence建模后的特征以及其他常规特征进行最后的预测
对sequence的建模分为两部分,一部分为对长期序列运用神经图灵机机制进行建模,另一部分是在这一基础上再进行high-order 信息的建模,用于刻画用户兴趣的变化。
Nerual Turing Machine
文章主要基于原始的神经图灵机,使用神经图灵机来对用户行为序列进行建模。
Alex Graves, Greg Wayne, and Ivo Danihelka. 2014. Neural turing machines. arXiv preprint arXiv:1410.5401 (2014).
神经图灵机的直观理解:
一个可微的memory机制,由controller、read head、write head、memory组成。
有两个操作,读操作和写操作
- 读的时候,由controller给出“地址”,将对应地址的数据读出来
是 controller给出的“地址”,是一个向量;
是t时刻的i-th memory slot;
是一个权重,是i-th memory slot在读写时的权重,和
越像的memory slot的权重越高
最后输出的是所有memory slot的加权和(因为做了soft max所以近似取了某一个最像的memory slot
- 写的时候,由controller给出“地址”,将对应地址的数据进行更新
controller 是一个rnn
神经图灵机是如何完成对序列的建模的:
- memory里存的是什么?从理论分析,memory里很有可能存放了序列中有代表性的几个特征,相当于对sequence先做了聚类,然后将聚类的中心或mean存在了memory里。(实验部分没有分析,需要对神经图灵机进一步了解
- Vs. pooling?基于上一点的分析,pooling只能存放一个特征,可能是用户长期动作的一个倾向;神经图灵机可以存放多个特征,可能是用户长期动作中的多个倾向,比如好几个品类的商品。
- Vs. attention? 神经图灵机对应于attention的k,v部分,attention是在所有item中算weight,而神经图灵机为item做了聚类、筛选
Memory Utilization Regularization
文章对神经图灵机做的一个改进,使得memory的利用更为balance
Memory Induction Unit
MIU也会维护一个memory S, 和 memory M对应。
在t-th时刻,MIU会对memory M进行一次read,将memory slot按照w排序,选M中前K个memory slot更新自己的memory S中对应的部分。
更新方法如下:
使用GRU,基于上一时刻的S(i)作为hidden state,使用这一时刻排序后的i-th M,和这一时刻的用户动作特征,来更新S(i)。
理解:
MIU中的memory存放的是用户兴趣的变化。
Experiments
- 在公开数据集(Taobao, Amazon)上相较DIEN AUC上涨1%左右
- Ablation Study
- Slot Number of Memory:长序列需要slot数更多,短序列需要slot数更少。但文章这里只是对tabao和amazon上的number实验结果不同做了分析(tabao sequence长,Amazon短)。这样的分析没有说服力,应该在tabao数据集上调整sequence长度,分析长度和memory slot number的数量的关系,才能给出一个令人信服的结果。
- Memory utilization:用了memory utiliza- tion regularization trick后,memory slot的利用更均衡,auc更好。
- Memory Induction Unit:用了MIU,AUC有0.005%的提升。
用了MUR神经图灵机建模用户行为序列的方法才work;
直接长序建模和high-order信息建模带来的增益一半一半
- Industrial Dataset
- 性能效率:
-
- A/B Testing: CTR 7.5%, RPM 6%
- 部署的实践经验
- todo
Comments
采用memory-based的方法进行用户长序行为建模的做法十分新颖,也符合一些对用户长序行为建模的启发式经验。将user interest解耦的做法可以被广泛应用。这种memory-based&解耦user interest的架构看起来是长序用户行为数据建模的一种解决方案。
但是神经图灵机的技术不太流行,对于它的复现效果还是存疑。