0%

论文阅读-阿里系推荐系统(三)天猫MIMN

论文链接:Practice on Long Sequential User Behavior Modeling for Click-Through Rate Prediction

论文详情:2019年天猫的推荐系统MIMN

论文收录在KDD2019的会议上

出发点和贡献

  1. 长时间序列的用户行为数据,带来较大的系统延迟和存储消耗,设计了一种方案可以处理无限制增长的序列行为数据,比如DIEN最多可以接纳小于50的序列数据
  2. 一般针对用户行为序列的处理方法有:
    • pooling-based:对不同行为做pooling
    • 序列建模方法
  3. 为了解决这个问题,本文提出了两种不同的方案:
    • 服务系统的视角:设计一个用户兴趣中心模块(UIC),只记录最新的兴趣特征,设计了独特的更新方案,可以做到实时且准确(不再与request有关,而取决于最近的点击数)
    • 机器学习视角:记忆网络,设计了MIMN,用类似增量学习的方式学习,包括两个独特的设计:memory utilization regularization和memory induction unit

模型方法

image
image

  1. RTP系统:图1可以看到,用户画像和广告特征(还包括context特征),以及实时更新的用户行为特征,用于预测ctr
  2. 为什么不用RNN?RNN的hidden state不是用来捕捉所有过往信息的,而是建模预测最终输出,可能有灾难性遗忘的问题。因此借鉴了近期来 NTM记忆网络的经验来设计MIMN网络
  3. NTM(Neural Turing Machine):
    • 基本结构:t时刻具有m个插槽的记忆特征M,每一个操作分为Read和Write
    • Memory Read:将t时刻的行为特征输入,使用该行为特征计算各个记忆插槽的权重,得到输出的兴趣特征
    • Memory Write:通过t时刻的行为特征,更新所有记忆插槽(使用擦除矩阵E和插入矩阵A计算)$M_t=(1-E_t)\circ M_{t-1}+A_t$
  4. memory utilization regularization:
    • 通过限定每个插槽的更新权重,使得相邻几次更新情况下,已经被更新过的插槽更新的权重会更小
  5. memory induction unit(MIU):
    • 在之前的NTM之上,再加一个NTM,但是读写操作略有不同,使用之前NTM的插槽值来更新MIU的插槽值
    • 将每个插槽看做multi channel 的interest
    • 在每个t时刻,把读权重最大的k个M插槽特征取出,然后使用GRU更新对应的第i个S插槽
  6. 部署:
    • 分为两块,一块RTP服务器,一块MIU和NTM服务器
    • 不用存储用户行为数据

实验

  1. ablation study:
    • 记忆网络插槽的个数:也不一定是越多越好,在小数据集上反而少一点插槽收益更大,不过在天猫的场景中还是打点好
    • memoryutilization regularization:有效增加了插槽的复用
    • MIU:提升还是比较明显的
  2. practical experience:
    • UIC服务器和RTP服务器的同步:一天以内的不同步也是不会有太大影响的
    • 大规模数据的影响:比如双11,那天的数据比较反常,会带来AUC的下降
    • warm up策略:用过往120天的行为数据离线训练然后再上线
    • 回滚策略:对于异常策略,设计了回滚策略可以记录7天以内的模型情况

总结

  1. 相比起前两篇的论文,这篇明显充斥着浓浓的industrial感,更符合实际情况下的使用和部署
  2. 具体的卖点在于引入了一个两层的NTM网络,通过存储插槽的方式避免存储过多的冗余的行为特征,但这样的处理还是会导致丢失特征,而且性能严重依赖于插槽的替换/更新策略